NeoPZ
TPZYCCamClayPV.h
Go to the documentation of this file.
1 /*
2  * File: TPZYCCamClayPV.h
3  * Author: quinelato
4  *
5  * Created on August 14, 2017, 5:18 PM
6  */
7 
8 #ifndef TPZYCCAMCLAYPV_H
9 #define TPZYCCAMCLAYPV_H
10 
11 #include "pzreal.h"
12 #include "pzvec.h"
13 #include "TPZElasticResponse.h"
14 #include "pzfmatrix.h"
15 #include "TPZPlasticCriterion.h"
16 
18 public:
19 
20  enum {
21  NYield = 1
22  };
23 
25  TPZYCCamClayPV(const TPZYCCamClayPV& other);
26  void SetUp(const TPZElasticResponse &ER, REAL gamma, REAL m, REAL pt, REAL logHardening, REAL logBulkModulus, REAL a0, REAL e0);
27  void SetElasticResponse(const TPZElasticResponse &ER);
28  virtual int ClassId() const override;
29  void Read(TPZStream& buf, void* context) override;
30  void Write(TPZStream& buf, int withclassid) const override;
31  REAL bFromP(const REAL p, const REAL a) const;
32  REAL bFromTheta(REAL theta) const;
33  void Phi(TPZVec<REAL> sigmaPV, REAL a, TPZVec<REAL> &phi) const;
34 
41  void SurfaceInCyl(const REAL theta, const REAL beta, const REAL a, TPZVec<REAL> &returnValue) const;
42 
43  REAL ResLFunc(const TPZVec<STATE> &sigma_trial_pv, STATE theta, STATE beta, REAL a, REAL aPrev) const;
44 // REAL DResLFunc(const TPZVec<STATE> &sigma_trial_pv, STATE theta, STATE beta, REAL a, REAL aPrev) const;
45 
46  REAL DistanceToSurface(const TPZVec<REAL> &sigma_trial_pv, const REAL theta, const REAL beta, const REAL a) const;
47 
53  REAL InitialDamage(const TPZVec<REAL> &stress_p) const;
54 
62  void DDistanceToSurface(const TPZVec<STATE> &sigma_trial_pv, const STATE theta, const STATE beta, const REAL a, const REAL aPrev, TPZVec<STATE> &fxn) const;
63 
71  void D2DistanceToSurface(const TPZVec<STATE> &sigma_trial_pv, const STATE theta, const STATE beta, const REAL a, TPZFNMatrix<9, STATE> &jac) const;
72 
73  void ProjectToSurfaceConstantBeta(const TPZVec<REAL> &sigma_trial_pv, const REAL aPrev, TPZVec<REAL> &sigma_pv, REAL &aProj, const REAL tol) const;
74  void ProjectToSurface(const TPZVec<REAL> &sigma_trial, const REAL aPrev, TPZVec<REAL> &sigma, REAL &aProj, const REAL tol) const;
75  void ProjectSigma(const TPZVec<REAL> &sigma_trial, const REAL aPrev, TPZVec<REAL> &sigma, REAL &aProj, int &m_type, TPZFMatrix<REAL> * gradient = NULL) const;
76 
77  void SurfaceParam(const TPZVec<STATE> &sigma_pv, const STATE a, STATE &theta, STATE &beta) const;
78 
79  void GradSigmaTrial(const TPZVec<REAL> &sigma_trial_pv, const REAL theta, const REAL beta, const REAL aProj, TPZFNMatrix<9, STATE> &ddist_dsigmatrial) const;
80 
81  /* \frac{\partial \sigma}{\partial (theta, beta, a)}*/
82  void DFuncCart(STATE theta, STATE beta, STATE a, TPZFNMatrix<9, STATE> &DFunccart) const;
83 
84  void ProjectSigmaDep(const TPZVec<REAL> &sigma_trial, const REAL aPrev, TPZVec<REAL> &sigma, REAL &aProj, TPZFMatrix<REAL> &GradSigma) const;
85  STATE PlasticVolumetricStrain(STATE a) const;
86  virtual ~TPZYCCamClayPV();
87 
88  void YieldFunction(const TPZVec<STATE>& sigma, STATE kprev, TPZVec<STATE>& yield) const override{
89  Phi(sigma, kprev, yield);
90  }
91 
92  virtual int GetNYield() const override {
93  return as_integer(NYield);
94  }
95 
96  friend class TPZYCDruckerPragerPV;
97 private:
99 
100  REAL fGamma;
101  REAL fM;
102  REAL fPt;
103  REAL fLogHardening; // Logarithmic hardening constant
104  REAL fLogBulkModulus; // Logarithmic bulk modulus
105  REAL fA0; // Initial size of the yield surface
106  REAL fE0; // initial void ratio
107 
108 };
109 
110 #endif /* TPZYCCAMCLAYPV_H */
111 
void ProjectSigma(const TPZVec< REAL > &sigma_trial, const REAL aPrev, TPZVec< REAL > &sigma, REAL &aProj, int &m_type, TPZFMatrix< REAL > *gradient=NULL) const
REAL DistanceToSurface(const TPZVec< REAL > &sigma_trial_pv, const REAL theta, const REAL beta, const REAL a) const
STATE PlasticVolumetricStrain(STATE a) const
void SurfaceInCyl(const REAL theta, const REAL beta, const REAL a, TPZVec< REAL > &returnValue) const
REAL bFromTheta(REAL theta) const
void SetElasticResponse(const TPZElasticResponse &ER)
virtual int ClassId() const override
Define the class id associated with the class.
Templated vector implementation.
std::underlying_type< Enumeration >::type as_integer(const Enumeration value)
Definition: pzreal.h:37
void SurfaceParam(const TPZVec< STATE > &sigma_pv, const STATE a, STATE &theta, STATE &beta) const
void DDistanceToSurface(const TPZVec< STATE > &sigma_trial_pv, const STATE theta, const STATE beta, const REAL a, const REAL aPrev, TPZVec< STATE > &fxn) const
virtual ~TPZYCCamClayPV()
REAL bFromP(const REAL p, const REAL a) const
void Phi(TPZVec< REAL > sigmaPV, REAL a, TPZVec< REAL > &phi) const
static const double tol
Definition: pzgeoprism.cpp:23
REAL InitialDamage(const TPZVec< REAL > &stress_p) const
REAL ResLFunc(const TPZVec< STATE > &sigma_trial_pv, STATE theta, STATE beta, REAL a, REAL aPrev) const
void Write(TPZStream &buf, int withclassid) const override
Writes this object to the TPZStream buffer. Include the classid if withclassid = true.
void YieldFunction(const TPZVec< STATE > &sigma, STATE kprev, TPZVec< STATE > &yield) const override
Contains TPZMatrixclass which implements full matrix (using column major representation).
void SetUp(const TPZElasticResponse &ER, REAL gamma, REAL m, REAL pt, REAL logHardening, REAL logBulkModulus, REAL a0, REAL e0)
virtual int GetNYield() const override
void ProjectSigmaDep(const TPZVec< REAL > &sigma_trial, const REAL aPrev, TPZVec< REAL > &sigma, REAL &aProj, TPZFMatrix< REAL > &GradSigma) const
long double gamma(unsigned int n)
Evaluate the factorial of a integer.
void ProjectToSurface(const TPZVec< REAL > &sigma_trial, const REAL aPrev, TPZVec< REAL > &sigma, REAL &aProj, const REAL tol) const
void DFuncCart(STATE theta, STATE beta, STATE a, TPZFNMatrix< 9, STATE > &DFunccart) const
void ProjectToSurfaceConstantBeta(const TPZVec< REAL > &sigma_trial_pv, const REAL aPrev, TPZVec< REAL > &sigma_pv, REAL &aProj, const REAL tol) const
void GradSigmaTrial(const TPZVec< REAL > &sigma_trial_pv, const REAL theta, const REAL beta, const REAL aProj, TPZFNMatrix< 9, STATE > &ddist_dsigmatrial) const
Defines the interface for saving and reading data. Persistency.
Definition: TPZStream.h:50
Contains the declaration of TPZFlopCounter class and TPZCounter struct.
clarg::argString m("-m", "input matrix file name (text format)", "matrix.txt")
void D2DistanceToSurface(const TPZVec< STATE > &sigma_trial_pv, const STATE theta, const STATE beta, const REAL a, TPZFNMatrix< 9, STATE > &jac) const
void Read(TPZStream &buf, void *context) override
read objects from the stream
TPZElasticResponse fER