25#ifndef _GEMA_PLUGIN_MECHANICALMATERIAL_MDCREEP_H_
26#define _GEMA_PLUGIN_MECHANICALMATERIAL_MDCREEP_H_
29#include <gmpFemPhysics.h>
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;
123 unsigned pointIndex = mp->_index.
localData();
130 dTime = Time(0)-Time(1);
140 B1 = structureFactorDGL1(e, coord, pointIndex);
141 B2 = structureFactorDGL2(e, coord, pointIndex);
143 Xq = stressConstant(e, coord, pointIndex);
146 Xc = theoreticalConstant(e, coord, pointIndex);
147 Xm = theoreticalPower(e, coord, pointIndex);
148 XKo = transientParameter(e, coord, pointIndex);
149 alphaH = fittingParamHard1(e, coord, pointIndex);
150 betaH = fittingParamHard2(e, coord, pointIndex);
151 deltaMin = softParameter(e, coord, pointIndex);
156 zeta = zetaOldAcc->scalarValueAt(e, pointIndex, coord);
165 if (nodeAttrAc(T_NA_ID)!= NULL)
175 creepSSRateDCL = A1 * exp(-1.0 * Q1/(Rg*TEMP)) * pow(MISES/eG , n1);
176 creepSSRateUMC = A2 * exp(-1.0 * Q2/(Rg*TEMP)) * pow(MISES/eG , n2);
177 creepSSRateDGL = 0.0;
181 creepSSRateDGL = (B1 * exp(-1.0 * Q1/(Rg * TEMP)) + B2 * exp(-1.0 * Q2/(Rg * TEMP))) * sinh(Xq * (MISES-So)/eG);
185 creepSSRate = creepSSRateDCL + creepSSRateUMC + creepSSRateDGL;
188 creepTrLim = XKo * pow((MISES / eG), Xm) * exp(Xc * TEMP);
191 deltaMai = alphaH + betaH * log10(MISES / eG);
194 if (zeta <= creepTrLim)
196 creepTrFunction = exp(deltaMai*pow((1.0 - zeta / creepTrLim), 2.0));
200 creepTrFunction = exp(-1.0*deltaMin*pow((1.0 - zeta / creepTrLim), 2.0));
204 dzeta = (creepTrFunction - 1.0)*(creepSSRate)*dTime;
206 zetaAcc->setScalarValue(e, pointIndex, zeta);
208 gaussAttrAc(FT_GA_ID)->setScalarValue(e, pointIndex, creepTrFunction);
210 gaussAttrAc(EcSS_GA_ID)->setScalarValue(e, pointIndex, creepSSRate);
213 creepRate = creepTrFunction * creepSSRate;
221 return propertyAc(B1_ID)->scalarValueAt(e, coord, ip);
227 return propertyAc(B2_ID)->scalarValueAt(e, coord, ip);
233 return propertyAc(Xq_ID)->scalarValueAt(e, coord, ip);
239 return propertyAc(Xc_ID)->scalarValueAt(e, coord, ip);
245 return propertyAc(Xm_ID)->scalarValueAt(e, coord, ip);
251 return propertyAc(XKo_ID)->scalarValueAt(e, coord, ip);
257 return propertyAc(alphaH_ID)->scalarValueAt(e, coord, ip);
263 return propertyAc(betaH_ID)->scalarValueAt(e, coord, ip);
269 return propertyAc(deltaMin_ID)->scalarValueAt(e, coord, ip);
virtual double fillTemperatureFromNodalAttr(const GmElement *e, const GmVector *coord) const
Return temperature at integration point using the nodal Temperature field.
Definition gmpMaterialCreep.cpp:401
virtual double poissonRatio(const GmElement *e, const GmVector *coord, int ip) const
Returns the material poisson ratio.
Definition gmpMaterialCreep.h:119
virtual double temperatureProperty(const GmElement *e, const GmVector *coord, int ip) const
Returns the Temperature from property table.
Definition gmpMaterialCreep.h:124
virtual double elasticModulus(const GmElement *e, const GmVector *coord, int ip) const
Returns the material elastic modulus.
Definition gmpMaterialCreep.h:114
@ NUM_GA_IDS
The number of Gauss attribute ids above.
Definition gmpMaterialCreep.h:57
Definition gmpMaterialDPCreep.h:37
double stressPowerDCL(const GmElement *e, const GmVector *coord, int ip) const
Returns the stress power for DCL.
Definition gmpMaterialDPCreep.h:143
double stressPowerUMC(const GmElement *e, const GmVector *coord, int ip) const
Returns the stress power for UMC.
Definition gmpMaterialDPCreep.h:161
double structureFactorDCL(const GmElement *e, const GmVector *coord, int ip) const
Returns the structure factor for DCL.
Definition gmpMaterialDPCreep.h:131
double universalGasConstant(const GmElement *e, const GmVector *coord, int ip) const
Returns the Universal gas constant R.
Definition gmpMaterialDPCreep.h:173
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
double thermalActivEnergyDCL(const GmElement *e, const GmVector *coord, int ip) const
Returns the Thermal activation energy for DCL.
Definition gmpMaterialDPCreep.h:137
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpMaterialDPCreep.h:52
double thresholdDevStress(const GmElement *e, const GmVector *coord, int ip) const
Returns the Threshold deviatoric stress.
Definition gmpMaterialDPCreep.h:167
double structureFactorUMC(const GmElement *e, const GmVector *coord, int ip) const
Returns the structure factor for UMC.
Definition gmpMaterialDPCreep.h:149
double thermalActivEnergyUMC(const GmElement *e, const GmVector *coord, int ip) const
Returns the Thermal activation energy for UMC.
Definition gmpMaterialDPCreep.h:155
Definition gmpMaterialMDCreep.h:36
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
double theoreticalPower(const GmElement *e, const GmVector *coord, int ip) const
Returns the Theoretical power.
Definition gmpMaterialMDCreep.h:243
double transientParameter(const GmElement *e, const GmVector *coord, int ip) const
Returns the Transient parameter.
Definition gmpMaterialMDCreep.h:249
ElementPropertyIds
IDs for material element properties.
Definition gmpMaterialMDCreep.h:40
@ Xc_ID
Id for retrieving the theoretical constant accessor.
Definition gmpMaterialMDCreep.h:44
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpMaterialMDCreep.h:51
@ Xm_ID
Id for retrieving the theoretical power accessor.
Definition gmpMaterialMDCreep.h:45
@ deltaMin_ID
Id for retrieving the softening parameter accessor.
Definition gmpMaterialMDCreep.h:49
@ alphaH_ID
Id for retrieving the fitting parameter for hardening accessor.
Definition gmpMaterialMDCreep.h:47
@ betaH_ID
Id for retrieving the fitting parameter for hardening accessor.
Definition gmpMaterialMDCreep.h:48
@ Xq_ID
Id for retrieving the stress constant accessor.
Definition gmpMaterialMDCreep.h:43
@ XKo_ID
Id for retrieving the transient parameter accessor
Definition gmpMaterialMDCreep.h:46
@ B2_ID
Id for retrieving the structure factor 2 for DGL accessor.
Definition gmpMaterialMDCreep.h:42
virtual double theoreticalConstant(const GmElement *e, const GmVector *coord, int ip) const
Returns the Theoretical constant.
Definition gmpMaterialMDCreep.h:237
double fittingParamHard1(const GmElement *e, const GmVector *coord, int ip) const
Returns the Fitting parameter for hardening 1.
Definition gmpMaterialMDCreep.h:255
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
double stressConstant(const GmElement *e, const GmVector *coord, int ip) const
Returns the stress constant for DGL.
Definition gmpMaterialMDCreep.h:231
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 fittingParamHard2(const GmElement *e, const GmVector *coord, int ip) const
Returns the Fitting parameter for hardening 2.
Definition gmpMaterialMDCreep.h:261
GmpMaterialMDCreep(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition gmpMaterialMDCreep.h:68
virtual ~GmpMaterialMDCreep()
Virtual destructor.
Definition gmpMaterialMDCreep.h:72
double structureFactorDGL1(const GmElement *e, const GmVector *coord, int ip) const
Returns the structure factor for DGL1.
Definition gmpMaterialMDCreep.h:219
double softParameter(const GmElement *e, const GmVector *coord, int ip) const
Returns the Softening parameter.
Definition gmpMaterialMDCreep.h:267
GaussAttributeIds
IDs for material Gauss attributes.
Definition gmpMaterialMDCreep.h:56
@ FT_GA_ID
Base Id for Gauss attribute(s) used to store the transient function.
Definition gmpMaterialMDCreep.h:59
@ EcSS_GA_ID
Base Id for Gauss attribute(s) used to store the steady-state creep rate.
Definition gmpMaterialMDCreep.h:60
@ zetaOld_GA_ID
Id for retrieving the hardening parameter accessor at the previous state (old Zeta)
Definition gmpMaterialMDCreep.h:58
@ NUM_GA_IDS
The number of Gauss attribute ids above.
Definition gmpMaterialMDCreep.h:62
double structureFactorDGL2(const GmElement *e, const GmVector *coord, int ip) const
Returns the structure factor for DGL2.
Definition gmpMaterialMDCreep.h:225
Definition gmpMechanicPoint.h:33
Declaration of the gmpMaterialDPCreep class.
Declaration of the GmpMechanicPoint class.
Declaration of useful configuration definitions for the plugin library.
double shearModulus(double E, double nu)
Returns the shear modulus (G) from Young's modulus (E) and Poisson's Coefficient (nu)
Definition gmpMechanicalMaterial.cpp:68
QString tr(const char *sourceText, const char *disambiguation, int n)