double CC_Ev::H(const PlasticFlow& plastic_flow, const stresstensor& Stre, const straintensor& Stra, const MaterialParameter& material_parameter) { // this is \bar{p_0} // Make sure f = Q = q*q - M*M*p*(po - p) = 0 double p0 = getp0(material_parameter); double lambda = getlambda(material_parameter); double kappa = getkappa(material_parameter); double e0 = gete0(material_parameter); double e = e0 + (1.0 + e0) *Stra.Iinvariant1(); //// One way //straintensor PF = plastic_flow.PlasticFlowTensor(Stre, Stra, material_parameter); //double d_Ev = - PF.Iinvariant1(); // note "minus" // Another way double M = getM(material_parameter); double p = Stre.p_hydrostatic(); // double d_Ev = -M*M*(p0-2.0*p); // Zhao's version // double d_Ev = (-1.0)*M*M*(p0 - 2.0*p); // Mahdi and Boris 27April2007 double d_Ev = M*M*(2.0*p - p0); return (1.0 + e) * p0 * d_Ev / (lambda - kappa); }
double CC_Ev::DH_Diso(const PlasticFlow& plastic_flow, const stresstensor& Stre, const straintensor& Stra, const MaterialParameter& material_parameter) { // this is d \bar{p_0} / d p_0 double M = getM(material_parameter); double p0 = getp0(material_parameter); double lambda = getlambda(material_parameter); double kappa = getkappa(material_parameter); double e0 = gete0(material_parameter); double e = e0 + (1.0 + e0) *Stra.Iinvariant1(); double p = Stre.p_hydrostatic(); // double scalar1 = (1.0+e)*p0*M*M*(p0-p)/(lambda-kappa); // Zhao's version double scalar1 = (-2.0)*(1.0+e)*p0*M*M*(p0-p)/(lambda-kappa); // Mahdi return scalar1; }
const tensor& CC_Ev::DH_Ds(const PlasticFlow& plastic_flow, const stresstensor& Stre, const straintensor& Stra, const MaterialParameter& material_parameter) { // this is d \bar{p_0} / d sigma_ij tensor I2("I", 2, def_dim_2); double M = getM(material_parameter); double p0 = getp0(material_parameter); double lambda = getlambda(material_parameter); double kappa = getkappa(material_parameter); double e0 = gete0(material_parameter); double e = e0 + (1.0 + e0) *Stra.Iinvariant1(); double scalar1 = (1.0+e)*p0*M*M*(-2.0/3.0)/(lambda-kappa); ScalarEvolution::SE_tensorR2 = I2 * scalar1; return ScalarEvolution::SE_tensorR2; }
double XC::EvolutionLaw_NL_Ep::h_s( EPState *EPS, PotentialSurface *PS){ //========================================================================= // Getting de_eq / dLambda XC::stresstensor dQods = PS->dQods( EPS ); //dQods.reportshort("dQods"); //Evaluate the norm of the deviator of dQods //temp1 = dQods("ij")*dQods("ij"); double dQods_p = dQods.p_hydrostatic(); double de_podL = dQods_p; //Evaluating dSodeeq double po = EPS->getScalarVar( 1 ); double dSodep = (1.0+geteo())*po/( getlambda()-getkappa() ); double h = dSodep * de_podL; return h; }