25 #ifndef _GEMA_PLUGIN_MECHANICALMATERIAL_MDCREEP_H_ 26 #define _GEMA_PLUGIN_MECHANICALMATERIAL_MDCREEP_H_ 29 #include <gmpFemPhysics.h> 41 B1_ID = GmpMaterialDPCreep::ElementPropertyIds::NUM_PROPERTY_IDS,
57 zeta_GA_ID = GmpMaterialDPCreep::GaussAttributeIds::NUM_GA_IDS,
92 m[
"properties"] = m[
"properties"].value<GmpFemPhysicsCommon::ValueList>()
93 <<GmpFemPhysicsCommon::ScalarValue(B1_ID,
"B1",
QObject::tr(
"Structure factor for DGL 1"),
"1/s",
true)
94 <<GmpFemPhysicsCommon::ScalarValue(B2_ID,
"B2",
QObject::tr(
"Structure factor for DGL 2"),
"1/s",
true)
95 <<GmpFemPhysicsCommon::ScalarValue(Xq_ID,
"Xq",
QObject::tr(
"Stress constant"),
"",
true)
96 <<GmpFemPhysicsCommon::ScalarValue(Xc_ID,
"Xc",
QObject::tr(
"Theoretical constant"),
"1/K",
true)
97 <<GmpFemPhysicsCommon::ScalarValue(Xm_ID,
"Xm",
QObject::tr(
"Theoretical power"),
"",
true)
98 <<GmpFemPhysicsCommon::ScalarValue(XKo_ID,
"XKo",
QObject::tr(
"Transient parameter"),
"",
true)
99 <<GmpFemPhysicsCommon::ScalarValue(alphaH_ID,
"alphaH",
QObject::tr(
"Fitting parameter for hardening 1"),
"",
true)
100 <<GmpFemPhysicsCommon::ScalarValue(betaH_ID,
"betaH",
QObject::tr(
"Fitting parameter for hardening 2"),
"",
true)
101 <<GmpFemPhysicsCommon::ScalarValue(deltaMin_ID,
"deltaMin",
QObject::tr(
"Softening parameter"),
"",
true);
104 m[
"gaussAttributes"] = m[
"gaussAttributes"].value<GmpFemPhysicsCommon::ValueList>()
105 << GmpFemPhysicsCommon::ScalarValue(zeta_GA_ID,
"zeta",
QObject::tr(
"Isotropic hardening variable"),
" ",
true,
false, 2,
"12.4f")
106 << GmpFemPhysicsCommon::HistoryValue(zetaOld_GA_ID, zeta_GA_ID, 1,
true)
107 << GmpFemPhysicsCommon::ScalarValue(FT_GA_ID,
"Ft",
QObject::tr(
"Hardening parameter"),
" ",
true,
false, 1,
"12.4f")
108 << GmpFemPhysicsCommon::ScalarValue(EcSS_GA_ID,
"Ecss",
QObject::tr(
"Steady-state creep rate"),
" ",
true,
false, 1,
"12.4f");
119 double eE, eNU, eG, TEMP, Rg, A1, n1, Q1, A2, n2, Q2, B1, B2, So, Xq;
120 double Xc, Xm, XKo, alphaH, betaH, deltaMin, zeta, dzeta, creepTrLim, deltaMai;
121 double dTime, creepRate, creepSSRate, creepSSRateDCL, creepSSRateUMC, creepSSRateDGL, creepTrFunction;
129 dTime = Time(0)-Time(1);
139 B1 = structureFactorDGL1(e, coord, mp->_index);
140 B2 = structureFactorDGL2(e, coord, mp->_index);
142 Xq = stressConstant(e, coord, mp->_index);
145 Xc = theoreticalConstant(e, coord, mp->_index);
146 Xm = theoreticalPower(e, coord, mp->_index);
147 XKo = transientParameter(e, coord, mp->_index);
148 alphaH = fittingParamHard1(e, coord, mp->_index);
149 betaH = fittingParamHard2(e, coord, mp->_index);
150 deltaMin = softParameter(e, coord, mp->_index);
155 zeta = zetaOldAcc->scalarValueAt(e, mp->_index, coord);
164 if (nodeAttrAc(T_NA_ID)!= NULL)
174 creepSSRateDCL = A1 * exp(-1.0 * Q1/(Rg*TEMP)) * pow(MISES/eG , n1);
175 creepSSRateUMC = A2 * exp(-1.0 * Q2/(Rg*TEMP)) * pow(MISES/eG , n2);
176 creepSSRateDGL = 0.0;
180 creepSSRateDGL = (B1 * exp(-1.0 * Q1/(Rg * TEMP)) + B2 * exp(-1.0 * Q2/(Rg * TEMP))) * sinh(Xq * (MISES-So)/eG);
184 creepSSRate = creepSSRateDCL + creepSSRateUMC + creepSSRateDGL;
187 creepTrLim = XKo * pow((MISES / eG), Xm) * exp(Xc * TEMP);
190 deltaMai = alphaH + betaH * log10(MISES / eG);
193 if (zeta <= creepTrLim)
195 creepTrFunction = exp(deltaMai*pow((1.0 - zeta / creepTrLim), 2.0));
199 creepTrFunction = exp(-1.0*deltaMin*pow((1.0 - zeta / creepTrLim), 2.0));
203 dzeta = (creepTrFunction - 1.0)*(creepSSRate)*dTime;
205 zetaAcc->setScalarValue(e, mp->_index, zeta);
207 gaussAttrAc(FT_GA_ID)->setScalarValue(e, mp->_index, creepTrFunction);
209 gaussAttrAc(EcSS_GA_ID)->setScalarValue(e, mp->_index, creepSSRate);
212 creepRate = creepTrFunction * creepSSRate;
220 return propertyAc(B1_ID)->scalarValueAt(e, coord, ip);
226 return propertyAc(B2_ID)->scalarValueAt(e, coord, ip);
232 return propertyAc(Xq_ID)->scalarValueAt(e, coord, ip);
238 return propertyAc(Xc_ID)->scalarValueAt(e, coord, ip);
244 return propertyAc(Xm_ID)->scalarValueAt(e, coord, ip);
250 return propertyAc(XKo_ID)->scalarValueAt(e, coord, ip);
256 return propertyAc(alphaH_ID)->scalarValueAt(e, coord, ip);
262 return propertyAc(betaH_ID)->scalarValueAt(e, coord, ip);
268 return propertyAc(deltaMin_ID)->scalarValueAt(e, coord, ip);
double thermalActivEnergyDCL(const GmElement *e, const GmVector *coord, int ip) const
Returns the Thermal activation energy for DCL.
Definition: gmpMaterialDPCreep.h:136
Id for retrieving the stress constant accessor.
Definition: gmpMaterialMDCreep.h:43
virtual double elasticModulus(const GmElement *e, const GmVector *coord, int ip) const
Returns the material elastic modulus.
Definition: gmpMaterialCreep.h:114
The number of property ids above.
Definition: gmpMaterialMDCreep.h:51
ElementPropertyIds
IDs for material element properties.
Definition: gmpMaterialCreep.h:39
GaussAttributeIds
IDs for material Gauss attributes.
Definition: gmpMaterialCreep.h:51
virtual double poissonRatio(const GmElement *e, const GmVector *coord, int ip) const
Returns the material poisson ratio.
Definition: gmpMaterialCreep.h:119
GmpMaterialMDCreep(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition: gmpMaterialMDCreep.h:68
virtual const QVariantMap * materialMetaDataMap()
Returns a pointer to the material attribute map, built when the function is called for the first time...
Definition: gmpMaterialDPCreep.h:72
The number of Gauss attribute ids above.
Definition: gmpMaterialMDCreep.h:62
double structureFactorDGL1(const GmElement *e, const GmVector *coord, int ip) const
Returns the structure factor for DGL1.
Definition: gmpMaterialMDCreep.h:218
double transientParameter(const GmElement *e, const GmVector *coord, int ip) const
Returns the Transient parameter.
Definition: gmpMaterialMDCreep.h:248
Base Id for Gauss attribute(s) used to store the transient function.
Definition: gmpMaterialMDCreep.h:59
QString tr(const char *sourceText, const char *disambiguation, int n)
Declaration of the gmpMaterialDPCreep class.
Id for retrieving the softening parameter accessor.
Definition: gmpMaterialMDCreep.h:49
Id for retrieving the theoretical constant accessor.
Definition: gmpMaterialMDCreep.h:44
double universalGasConstant(const GmElement *e, const GmVector *coord, int ip) const
Returns the Universal gas constant R.
Definition: gmpMaterialDPCreep.h:172
Definition: gmpMechanicPoint.h:32
virtual double fillTemperatureFromNodalAttr(const GmElement *e, const GmVector *coord) const
Return temperature at integration point using the nodal Temperature field.
Definition: gmpMaterialCreep.cpp:400
double stressPowerDCL(const GmElement *e, const GmVector *coord, int ip) const
Returns the stress power for DCL.
Definition: gmpMaterialDPCreep.h:142
static GmpFemPhysicsCommonMaterial * instance(GmSimulationData *simulation, int typeIndex, QString typeName, const GmLogCategory &logger)
A "factory" function used to register the material with the physics material factory.
Definition: gmpMaterialMDCreep.h:75
virtual double temperatureProperty(const GmElement *e, const GmVector *coord, int ip) const
Returns the Temperature from property table.
Definition: gmpMaterialCreep.h:124
Definition: gmpMaterialDPCreep.h:36
double stressPowerUMC(const GmElement *e, const GmVector *coord, int ip) const
Returns the stress power for UMC.
Definition: gmpMaterialDPCreep.h:160
double structureFactorUMC(const GmElement *e, const GmVector *coord, int ip) const
Returns the structure factor for UMC.
Definition: gmpMaterialDPCreep.h:148
virtual double theoreticalConstant(const GmElement *e, const GmVector *coord, int ip) const
Returns the Theoretical constant.
Definition: gmpMaterialMDCreep.h:236
double shearModulus(double E, double nu)
Returns the shear modulus (G) from Young's modulus (E) and Poisson's Coefficient (nu)
Definition: gmpMechanicalMaterial.cpp:44
double stressConstant(const GmElement *e, const GmVector *coord, int ip) const
Returns the stress constant for DGL.
Definition: gmpMaterialMDCreep.h:230
Declaration of the GmpMechanicPoint class.
Declaration of usefull configuration definitions for the plugin library.
Definition: gmpMaterialMDCreep.h:35
virtual double fillCreepStrainRate(const GmElement *e, const GmpMechanicPoint *mp, const GmVector *coord, const GmVector &Time, double MISES) const
Computes the creep deformation rate.
Definition: gmpMaterialMDCreep.h:114
double softParameter(const GmElement *e, const GmVector *coord, int ip) const
Returns the Softening parameter.
Definition: gmpMaterialMDCreep.h:266
virtual const QVariantMap * materialMetaDataMap()
Returns a pointer to the material attribute map, built when the function is called for the first time...
Definition: gmpMaterialMDCreep.h:82
Id for retrieving the theoretical power accessor.
Definition: gmpMaterialMDCreep.h:45
Id for retrieving the transient parameter accessor.
Definition: gmpMaterialMDCreep.h:46
double thresholdDevStress(const GmElement *e, const GmVector *coord, int ip) const
Returns the Threshold deviatoric stress.
Definition: gmpMaterialDPCreep.h:166
double structureFactorDGL2(const GmElement *e, const GmVector *coord, int ip) const
Returns the structure factor for DGL2.
Definition: gmpMaterialMDCreep.h:224
double theoreticalPower(const GmElement *e, const GmVector *coord, int ip) const
Returns the Theoretical power.
Definition: gmpMaterialMDCreep.h:242
double fittingParamHard2(const GmElement *e, const GmVector *coord, int ip) const
Returns the Fitting parameter for hardening 2.
Definition: gmpMaterialMDCreep.h:260
double thermalActivEnergyUMC(const GmElement *e, const GmVector *coord, int ip) const
Returns the Thermal activation energy for UMC.
Definition: gmpMaterialDPCreep.h:154
Id for retrieving the structure factor 2 for DGL accessor.
Definition: gmpMaterialMDCreep.h:42
Id for retrieving the fitting parameter for hardening accessor.
Definition: gmpMaterialMDCreep.h:47
virtual ~GmpMaterialMDCreep()
Virtual destructor.
Definition: gmpMaterialMDCreep.h:72
double structureFactorDCL(const GmElement *e, const GmVector *coord, int ip) const
Returns the structure factor for DCL.
Definition: gmpMaterialDPCreep.h:130
Base Id for Gauss attribute(s) used to store the steady-state creep rate.
Definition: gmpMaterialMDCreep.h:60
Id for retrieving the fitting parameter for hardening accessor.
Definition: gmpMaterialMDCreep.h:48
Id for retrieving the hardening parameter accessor at the previous state (old Zeta)
Definition: gmpMaterialMDCreep.h:58
double fittingParamHard1(const GmElement *e, const GmVector *coord, int ip) const
Returns the Fitting parameter for hardening 1.
Definition: gmpMaterialMDCreep.h:254