Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
Arquivo: EL_NLEp.cpp Projeto: lcpt/xc
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;

}