Skip to content
Snippets Groups Projects
Commit f382b407 authored by Ujwal Kishore Jinaga's avatar Ujwal Kishore Jinaga :clown:
Browse files

changed_dHsquareDH_still_Jtol_noConvergenceforlargedeformations

parent c8b2ff77
No related branches found
No related tags found
1 merge request!390AddedNumericalTangentstoCheck_dGamma_dDgamma_dCepr_dT_derivatives___PLEASEcomm...
...@@ -1021,6 +1021,11 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe ...@@ -1021,6 +1021,11 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe
Ke = KT; Ge = GT; KTsum = KT; GTsum = GT; Ke = KT; Ge = GT; KTsum = KT; GTsum = GT;
DKe = DKDT; DGe = DGDT; DKDTsum = DKDT; DGDTsum = DGDT; DKe = DKDT; DGe = DGDT; DKDTsum = DKDT; DGDTsum = DGDT;
// Kelvin-Voight
double invGe = 1./GT;
double invKe = 1./KT;
STensor3 D(0.);
double V= 0.;
// Main Loop for Maxwell Branches // Main Loop for Maxwell Branches
if ((_Ki.size() > 0) or (_Gi.size() > 0)){ if ((_Ki.size() > 0) or (_Gi.size() > 0)){
...@@ -1055,6 +1060,7 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe ...@@ -1055,6 +1060,7 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe
// double expdtgby2 = exp(-dtg/2.); // double expdtgby2 = exp(-dtg/2.);
double expdtgby2 = exp(-dtg2); double expdtgby2 = exp(-dtg2);
// Maxwell
if (_TemFuncOpt == 0){ // Use Shift Factor if (_TemFuncOpt == 0){ // Use Shift Factor
getGi(GiT,T_set); // Removed 2*_gi[i] getGi(GiT,T_set); // Removed 2*_gi[i]
DGiDT[i] = -_Gi[i]/(_gi[i]) * Ddt_shiftDT*expdtgby2; DGiDT[i] = -_Gi[i]/(_gi[i]) * Ddt_shiftDT*expdtgby2;
...@@ -1094,7 +1100,39 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe ...@@ -1094,7 +1100,39 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe
devOi[i] = 2*GiT[i]*q1->_A[i]; // + q1->_C[i]; devOi[i] = 2*GiT[i]*q1->_A[i]; // + q1->_C[i];
devK += devOi[i]; devK += devOi[i];
// Kelvin-Voight
/*
invGe += (1.-expdtgby2)/_Gi[i];
for (int k=0; k<3; k++){
for (int l=0; l<3; l++){
D(k,l) += q0->_A[i](k,l)*(expdtg-1.);
} }
}*/
}
/*
// Kelvin-Voight
Ge = 1./invGe;
// stress increment
static STensor3 DdevK;
DdevK = devDE; // dev corotational kirchoff stress predictor
DdevK += D;
DdevK *= (2.*Ge);
for (int i=0; i< _Gi.size(); i++){
double dtg = dt_shift_1/(_gi[i]);
double dtg2 = dt_shift_2/(_gi[i]);
double expdtg = exp(-dtg);
double expdtgby2 = exp(-dtg2);
STensorOperation::zero(q1->_A[i]);
for (int k=0; k<3; k++){
for (int l=0; l<3; l++){
q1->_A[i](k,l) += expdtg*q0->_A[i](k,l) + expdtgby2*DdevK(k,l)/(2.*_Gi[i]);
}
}
}
STensorOperation::zero(devK);
devK += DdevK;*/
// Tr Q_i // Tr Q_i
...@@ -1109,6 +1147,7 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe ...@@ -1109,6 +1147,7 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe
double expdtkby2 = exp(-dtk2); double expdtkby2 = exp(-dtk2);
// double expdtkby2 = exp(-dtk/2.); // double expdtkby2 = exp(-dtk/2.);
// Maxwell
if (_TemFuncOpt == 0){ // Use Shift Factor if (_TemFuncOpt == 0){ // Use Shift Factor
getKi(KiT,T_set); getAlphai(AlphaiT,T_set); // Removed 2*_ki[i] getKi(KiT,T_set); getAlphai(AlphaiT,T_set); // Removed 2*_ki[i]
DKiDT[i] = -_Ki[i]/(_ki[i]) * Ddt_shiftDT *expdtkby2; DKiDT[i] = -_Ki[i]/(_ki[i]) * Ddt_shiftDT *expdtkby2;
...@@ -1158,7 +1197,29 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe ...@@ -1158,7 +1197,29 @@ void mlawNonLinearTVE::ThermoViscoElasticPredictor(const STensor3& Ee, const STe
} }
p += trOi[i]; p += trOi[i];
/*
// Kelvin-Voight
invKe += (1.-expdtkby2)/_Ki[i];
V += q0->_B[i]*(expdtk-1.);
* */
}
/*
// Kelvin-Voight
Ke = 1./invKe;
double Dp = Ke*(trDE+ V); // pressure predictor
for (int i=0; i< _Ki.size(); i++){
double dtk = dt_shift_1/(_ki[i]);
double dtk2 = dt_shift_2/(_ki[i]);
double expdtk = exp(-dtk);
double expdtkby2 = exp(-dtk2);
q1->_B[i] = 0.;
q1->_B[i] += expdtk*q0->_B[i] + expdtkby2*Dp/(_Ki[i]);
} }
p = 0.;
p += Dp;
* */
} }
if (calculateStress){ if (calculateStress){
......
This diff is collapsed.
...@@ -47,11 +47,14 @@ class mlawNonLinearTVP : public mlawNonLinearTVE{ ...@@ -47,11 +47,14 @@ class mlawNonLinearTVP : public mlawNonLinearTVE{
virtual void getFreeEnergyTVM(const IPNonLinearTVP *q0, IPNonLinearTVP *q1, const double& T0, const double& T, virtual void getFreeEnergyTVM(const IPNonLinearTVP *q0, IPNonLinearTVP *q1, const double& T0, const double& T,
double *psiTVM = NULL, double *DpsiTVMdT = NULL, double *DDpsiTVMdTT = NULL) const; double *psiTVM = NULL, double *DpsiTVMdT = NULL, double *DDpsiTVMdTT = NULL) const;
virtual void getIterated_DdevPhi(const double& u, const double& Gamma, const double& Cxdev, const STensor3 devXn, const STensor3& Cepr, const STensor3& Ce, virtual void getIterated_DPhi(const double& u, const double& v, const double& Gamma, const double& Cxtr, const double& Cxdev, const STensor3& Phipr,
const STensor3& Kepr, const STensor43& Dho, const STensor3& devPhipr, STensor3& devPhi) const; const double& trXn, const STensor3& devXn, const STensor3& Cepr, const STensor3& Kepr, double& ptilde, STensor3& devPhi,
STensor3& Phi, STensor3& N, STensor3& expGN, STensor43& dexpAdA,
STensor43& Dho3, STensor43& Dho4inv, STensor43& Dho4_u_inv, STensor3& Dho4_v_inv) const;
virtual void getIterated_DdevPhi_and_Normal(const double& u, const double& Gamma, const double& Cxdev, const double& ptilde, const STensor3 devXn, const STensor3& Cepr, const STensor3& Ce, virtual void getIterated_DdevPhi(const double& u, const double& Gamma, const double& Cxdev, const double& ptilde,
const STensor3& Kepr, const STensor43& Dho, const STensor3& devPhipr, STensor3& devPhi, STensor3& N) const; const STensor3 devXn, const STensor3& Cepr, const STensor3& Kepr, const STensor3& devPhipr,
STensor3& devPhi, STensor3& N, STensor3& expGN, STensor43& dexpAdA, STensor43& Dho, STensor43& Dho2inv) const;
virtual void getIterated_DdevPhi_and_Normal(const double& u, const double& Gamma, const double& Cxdev, const double& ptilde, const STensor3 devXn, const STensor3& Cepr, virtual void getIterated_DdevPhi_and_Normal(const double& u, const double& Gamma, const double& Cxdev, const double& ptilde, const STensor3 devXn, const STensor3& Cepr,
const STensor3& Kepr, const STensor3& devPhipr, STensor3& devPhi, STensor3& N, STensor3& expGN, STensor43& dexpAdA, STensor43& Dho, STensor43& Dho2inv) const; const STensor3& Kepr, const STensor3& devPhipr, STensor3& devPhi, STensor3& N, STensor3& expGN, STensor43& dexpAdA, STensor43& Dho, STensor43& Dho2inv) const;
...@@ -59,13 +62,17 @@ class mlawNonLinearTVP : public mlawNonLinearTVE{ ...@@ -59,13 +62,17 @@ class mlawNonLinearTVP : public mlawNonLinearTVE{
virtual void updateDho(const double& u, const double& Gamma, const STensor3& Cepr, const STensor3& Kepr, virtual void updateDho(const double& u, const double& Gamma, const STensor3& Cepr, const STensor3& Kepr,
const STensor3& expGN, const STensor43& dexpAdA, STensor43& Dho, STensor43& Dho2inv) const; const STensor3& expGN, const STensor43& dexpAdA, STensor43& Dho, STensor43& Dho2inv) const;
virtual void getDho3(const double& u, const double& v, const double& Gamma, const STensor3& Cepr, const STensor3& Ceinvpr, const STensor3& Kepr,
const STensor3& expGN, const STensor43& dexpAdA, STensor43& Dho3, STensor43& Dho4inv,
STensor43& Dho4_u_inv, STensor3& Dho4_v_inv) const;
virtual void getG2Tensor(const STensor3& Cepr, const STensor3& Kepr, const STensor3& expGN, virtual void getG2Tensor(const STensor3& Cepr, const STensor3& Kepr, const STensor3& expGN,
const STensor43& DCeinvprDCepr, const STensor43& DKeprDCepr, STensor43& G2) const; const STensor43& DCeinvprDCepr, const STensor43& DKeprDCepr, STensor43& G2) const;
virtual void getG2TTensor(const STensor3& Cepr, const STensor3& expGN, const STensor3& dKeprDT, STensor3& G2T) const; virtual void getG2TTensor(const STensor3& Cepr, const STensor3& expGN, const STensor3& dKeprDT, STensor3& G2T) const;
/*virtual void predictorCorrector_TVP_nonAssociatedFlow(const STensor3& F0, const STensor3& F, const IPNonLinearTVP *q0_, IPNonLinearTVP *q1, virtual void predictorCorrector_TVP_nonAssociatedFlow(const STensor3& F0, const STensor3& F, const IPNonLinearTVP *q0_, IPNonLinearTVP *q1,
STensor3&P, const bool stiff, STensor43& Tangent, STensor43& dFedF, STensor43& dFpdF, STensor3& dFedT, STensor3& dFpdT, STensor3&P, const bool stiff, STensor43& Tangent, STensor43& dFedF, STensor43& dFpdF, STensor3& dFedT, STensor3& dFpdT,
const double T0, const double T1, const double T0, const double T1,
const SVector3 &gradT0, // previous temperature gradient const SVector3 &gradT0, // previous temperature gradient
...@@ -80,7 +87,7 @@ class mlawNonLinearTVP : public mlawNonLinearTVE{ ...@@ -80,7 +87,7 @@ class mlawNonLinearTVP : public mlawNonLinearTVE{
STensor3 &dthermalSourcedF, STensor3 &dthermalSourcedF,
double &mechanicalSource, // mechanical source--> convert to heat double &mechanicalSource, // mechanical source--> convert to heat
double &dmechanicalSourcedT, double &dmechanicalSourcedT,
STensor3 &dmechanicalSourceF) const;*/ STensor3 &dmechanicalSourceF) const;
virtual void predictorCorrector_TVP_nonAssociatedFlow2(const STensor3& F0, const STensor3& F, const IPNonLinearTVP *q0_, IPNonLinearTVP *q1, virtual void predictorCorrector_TVP_nonAssociatedFlow2(const STensor3& F0, const STensor3& F, const IPNonLinearTVP *q0_, IPNonLinearTVP *q1,
STensor3&P, const bool stiff, STensor43& Tangent, STensor43& dFedF, STensor43& dFpdF, STensor3& dFedT, STensor3& dFpdT, STensor3&P, const bool stiff, STensor43& Tangent, STensor43& dFedF, STensor43& dFpdF, STensor3& dFedT, STensor3& dFpdT,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment