Exemplo n.º 1
0
tensor RMC01YieldSurface::dFods(const EPState *EPS) const 
  {
  
    tensor dFoverds( 2, def_dim_2, 0.0);

//    double p = EPS->getStress().p_hydrostatic();
    double q = EPS->getStress().q_deviatoric();
    double theta = EPS->getStress().theta(); 
//    double temp_phi = EPS->getScalarVar(1)*3.14159265358979/180.0;
//    double temp_cohesive = EPS->getScalarVar(2);
    tensor DpoDs = EPS->getStress().dpoverds(); // dp/ds
    tensor DqoDs = EPS->getStress().dqoverds(); // dq/ds
    tensor DthetaoDs = EPS->getStress().dthetaoverds();  // d(theta)/ds
//    double a1 = -6*sin(temp_phi)/(3.0-sin(temp_phi));
//    double a2 = -6*temp_cohesive*cos(temp_phi)/(3.0-sin(temp_phi));
    double alfa = EPS->getScalarVar(1);
//    double k = EPS->getScalarVar(2);
    double a1 = (3.0*1.7320508076*alfa) / (2.0+1.7320508076*alfa);
    double e = (3.0-a1)/(3.0+a1);
    double Frou = g_0(theta, e);
    double Frou_prime = g_prime(theta, e);
    double dFoverdp = alfa*(-3.0);
//    double dFoverdq = Frou;
//    double dFoverdtheta = q*Frou_prime;    
    double dFoverdq = Frou/1.7320508076;
    double dFoverdtheta = q*Frou_prime/1.7320508076;

    dFoverds = DpoDs  * dFoverdp +
               DqoDs  * dFoverdq +
               DthetaoDs * dFoverdtheta; // dF/ds

    return dFoverds;

  }
Exemplo n.º 2
0
tensor RMC01PotentialSurface::dQods(const EPState *EPS) const
{
  tensor dQoverds( 2, def_dim_2, 0.0);
//  double p = EPS->getStress().p_hydrostatic(); // p
  double q = EPS->getStress().q_deviatoric(); // q
  double theta = EPS->getStress().theta(); // theta
//  double temp_phi = EPS->getScalarVar(1)*3.14159265358979/180.0; // frictional angle
//  double temp_cohesive = EPS->getScalarVar(2); // cohesion
  tensor DpoDs = EPS->getStress().dpoverds(); // dp/ds
  tensor DqoDs = EPS->getStress().dqoverds(); // dq/ds
  tensor DthetaoDs = EPS->getStress().dthetaoverds(); // d(theta)/ds
  double alfa = EPS->getScalarVar(1); // Take alfa & k as internal variables
//  double k = EPS->getScalarVar(2);    // instead of phi & conhesive
  double a1 = (3.0*1.7320508076*alfa) / (2.0+1.7320508076*alfa);  
//  double a1 = -6*sin(temp_phi)/(3.0-sin(temp_phi));
//  double a2 = -6*temp_cohesive*cos(temp_phi)/(3.0-sin(temp_phi));
  double e = (3.0-a1)/(3.0+a1);
  double Frou = g_0(theta, e); // r(theta)
  double Frou_prime = g_prime(theta, e); // r'(theta)
//  double dQoverdp = a1; // dQ/dp
//  double dQoverdq = Frou; // dQ/dq
//  double dQoverdtheta = q*Frou_prime; // dQ/d(theta)
  double dQoverdp = alfa*(-3.0); // dQ/dp
  double dQoverdq = Frou/1.7320508076; // dQ/dq
  double dQoverdtheta = q*Frou_prime/1.7320508076; // dQ/d(theta)
  
  dQoverds = DpoDs  * dQoverdp +
             DqoDs  * dQoverdq +
             DthetaoDs * dQoverdtheta;

  return dQoverds;

}
Exemplo n.º 3
0
TEST(CrvFunctionalTest, UnsatCommunication)
{
  crv::tracer().reset();
  crv::Encoder encoder;

  crv::Channel<int> s, t;
  crv::Thread f(sat_communication_f, s, t);
  crv::Thread g_prime(sat_communication_g_prime, s, t);

  EXPECT_TRUE(crv::tracer().errors().empty());
  EXPECT_EQ(smt::unsat, encoder.check_deadlock(crv::tracer()));
}
Exemplo n.º 4
0
tensor RMC01PotentialSurface::d2Qods2( const EPState *EPS ) const
{
  tensor d2Qoverds2( 4, def_dim_4, 0.0); // d2Q/ds2(pqmn)

//  double p = EPS->getStress().p_hydrostatic(); // p
  double q = EPS->getStress().q_deviatoric(); // q
  double theta = EPS->getStress().theta(); // theta
//  double temp_phi = EPS->getScalarVar(1)*3.14159265358979/180.0; // frictional angle
//  double temp_cohesive = EPS->getScalarVar(2); // conhesion
  double alfa = EPS->getScalarVar(1);
//  double k = EPS->getScalarVar(2);
  double a1 = (3.0*1.7320508076*alfa) / (2.0+1.7320508076*alfa);
  tensor DpoDs = EPS->getStress().dpoverds(); // dp/ds
  tensor DqoDs = EPS->getStress().dqoverds(); // dq/ds
  tensor DthetaoDs = EPS->getStress().dthetaoverds(); // d(theta)/ds
  tensor D2poDs2 = EPS->getStress().d2poverds2(); // d2p/ds2
  tensor D2qoDs2 = EPS->getStress().d2qoverds2(); // d2q/ds2
  tensor D2thetaoDs2 = EPS->getStress().d2thetaoverds2(); // d2(theta)/ds2
//  double a1 = -6*sin(temp_phi)/(3.0-sin(temp_phi));
//  double a2 = -6*temp_cohesive*cos(temp_phi)/(3.0-sin(temp_phi));
  double e = (3.0-a1)/(3.0+a1);
  double Frou = g_0(theta, e); // r(theta)
  double Frou_prime = g_prime(theta, e); // r'(theta)
  double Frou_second = g_second(theta, e); // r"(theta)
//  double dQoverdp = a1; // dQ/dp
//  double dQoverdq = Frou; // dQ/dq
//  double dQoverdtheta = q*Frou_prime; // dQ/d(theta)
  double dQoverdp = alfa*(-3.0); // dQ/dp
  double dQoverdq = Frou/1.7320508076; // dQ/dq
  double dQoverdtheta = q*Frou_prime/1.7320508076; // dQ/d(theta)
//  double a23 = Frou_prime; // d2Q/dqd(theta)
//  double a32 = a23; // d2Q/d(theta)dq
//  double a33 = q * Frou_second; // d2Q/d(theta)2
  double a23 = Frou_prime/1.7320508076; // d2Q/dqd(theta)
  double a32 = a23/1.7320508076; // d2Q/d(theta)dq
  double a33 = q * Frou_second/1.7320508076; // d2Q/d(theta)2  
  
//  d2Qoverds2 =  DthetaoDs("mn") * DqoDs("pq")     *  a23 +
//                DqoDs("mn") * DthetaoDs("pq")     *  a32 +
//                DthetaoDs("mn") * DthetaoDs("pq") *  a33 +
//                D2poDs2("pqmn")  * dQoverdp +
//                D2qoDs2("pqmn")  * dQoverdq +
//                D2thetaoDs2("pqmn") * dQoverdtheta;
  d2Qoverds2 =  DqoDs("pq") * DthetaoDs("mn")      *  a23 +
                DthetaoDs("pq") * DqoDs("mn")      *  a32 +
                DthetaoDs("pq") * DthetaoDs("mn")  *  a33 +
                D2poDs2("pqmn")  * dQoverdp +
                D2qoDs2("pqmn")  * dQoverdq +
                D2thetaoDs2("pqmn") * dQoverdtheta;
  return d2Qoverds2;

}