5 #ifndef TPZSANDLERDIMAGGIO_H 6 #define TPZSANDLERDIMAGGIO_H 22 #define SANDLERDIMAGGIOSTEP1 TPZPlasticStep<TPZYCSandlerDimaggioL, TPZSandlerDimaggioThermoForceA, TPZElasticResponse> 23 #define SANDLERDIMAGGIOSTEP1TRANSLATOR TPZPlasticStepTranslator<TPZYCSandlerDimaggioLTranslator, TPZSandlerDimaggioThermoForceATranslator, TPZElasticResponseTranslator> 24 #define SANDLERDIMAGGIOSTEP2 TPZPlasticStep<TPZYCSandlerDimaggioL2, TPZSandlerDimaggioThermoForceA, TPZElasticResponse> 25 #define SANDLERDIMAGGIOSTEP2TRANSLATOR TPZPlasticStepTranslator<TPZYCSandlerDimaggioL2Translator, TPZSandlerDimaggioThermoForceATranslator, TPZElasticResponseTranslator> 28 template<
class SANDLERDIMAGGIOPARENT>
39 this->fMaterialTensionSign = 1;
45 this->fMaterialTensionSign = 1;
50 this->fMaterialTensionSign = 1;
51 SANDLERDIMAGGIOPARENT::operator=(source);
56 virtual const char *
Name()
const override 58 return "TPZSandlerDimaggio";
61 virtual void Print(std::ostream & out)
const override 63 out <<
"\n" << this->
Name();
64 out <<
"\n Base Class Data:\n";
65 SANDLERDIMAGGIOPARENT::Print(out);
66 out <<
"\nTPZSandlerDimaggio internal members: None";
73 SANDLERDIMAGGIOPARENT::Write(buf, withclassid);
79 SANDLERDIMAGGIOPARENT::Read(buf, context);
80 this->fPlasticMem.Resize(0);
93 void SetUp(REAL poisson, REAL E,
94 REAL A, REAL B, REAL C, REAL R,
97 SANDLERDIMAGGIOPARENT::fYC.SetUp(A, B, C, D, R, W);
98 SANDLERDIMAGGIOPARENT::fN.m_hardening = this->fYC.InitialDamage();
99 SANDLERDIMAGGIOPARENT::fER.SetEngineeringData(E, poisson);
102 SANDLERDIMAGGIOPARENT::SetUp(epsTotal);
110 return SANDLERDIMAGGIOPARENT::GetState();
121 SANDLERDIMAGGIOPARENT::ApplyLoad_Internal(sigma, epsTotal);
129 SANDLERDIMAGGIOPARENT::ApplyStrain_Internal(epsTotal);
139 SANDLERDIMAGGIOPARENT::ApplyStrainComputeDep_Internal(epsTotal, sigma, Dep);
145 bool require_tangent_Q =
true;
147 require_tangent_Q =
false;
152 if (!(tangent->Rows() == 6 && tangent->Cols() == 6)) {
153 std::cerr <<
"Unable to compute the tangent operator. Required tangent array dimensions are 6x6." << std::endl;
158 SANDLERDIMAGGIOPARENT::ApplyStrainComputeSigma_Internal(epsTotal, sigma);
168 SANDLERDIMAGGIOPARENT::Phi_Internal(epsTotal, phi);
185 const int nyield = this->fYC.NYield;
187 SANDLERDIMAGGIOPARENT::ComputeDep(sigma, Dep);
190 int n = this->fPlasticMem.NElements();
191 REAL deltaAlpha =
fabs(this->fPlasticMem[n-1].m_elastoplastic_state.m_hardening - this->fPlasticMem[1].m_elastoplastic_state.m_hardening);
193 this->IntegrationOverview(plastifLen);
197 if( (plastifLen[0] > 0.9 && plastifLen[1] < 0.1) ||
198 (plastifLen[0] < 1.e-10 && plastifLen[1] > 0.9 && deltaAlpha < 1.e-10) )
202 SANDLERDIMAGGIOPARENT::fER.De(D);
206 #ifdef LOG4CXX_PLASTICITY 208 LoggerPtr logger(Logger::getLogger(
"plasticity.SandlerDimaggio"));
209 std::stringstream sout;
210 sout <<
"*** TPZYCSandlerDimaggio::ComputeDep *** Superimposing a fraction of the Elastic Stiffness Matrix on a perfectly plastic load";
211 cout <<
"\nfPlasticLen = " << plastifLen <<
" deltaAlpha = " << deltaAlpha;
230 #ifdef LOG4CXX_PLASTICITY 231 LoggerPtr loggerSandlerDimaggio(Logger::getLogger(
"plasticity.SandlerDimaggio"));
233 std::stringstream sout;
234 sout <<
">>> TPZSandlerDimaggio::McCormicRanchSand ***";
235 LOGPZ_INFO(loggerSandlerDimaggio,sout.str().c_str());
246 material.fER.
SetUp(E, poisson);
248 material.fResTol = 1.e-12;
249 material.fIntegrTol = 1.e-6;
255 #ifdef LOG4CXX_PLASTICITY 256 LoggerPtr loggerSandlerDimaggio(Logger::getLogger(
"plasticity.SandlerDimaggio"));
258 std::stringstream sout;
259 sout <<
">>> TPZSandlerDimaggio::McCormicRanchSand ***";
260 LOGPZ_INFO(loggerSandlerDimaggio,sout.str().c_str());
271 material.fER.
SetUp(E, poisson);
277 #ifdef LOG4CXX_PLASTICITY 278 LoggerPtr loggerSandlerDimaggio(Logger::getLogger(
"plasticity.SandlerDimaggio"));
280 std::stringstream sout;
281 sout <<
">>> TPZSandlerDimaggio::McCormicRanchSand ***";
282 LOGPZ_INFO(loggerSandlerDimaggio,sout.str().c_str());
293 material.fER.
SetUp(E, poisson);
302 material.fYC.
SetUp(A, B, C, D, R, W);
307 #ifdef LOG4CXX_PLASTICITY 308 LoggerPtr loggerSandlerDimaggio(Logger::getLogger(
"plasticity.SandlerDimaggio"));
310 std::stringstream sout;
311 sout <<
">>> TPZSandlerDimaggio::Unconsolidated Deep Sandstone Reservoir ***";
312 LOGPZ_INFO(loggerSandlerDimaggio,sout.str().c_str());
319 material.fER.
SetUp(E, poisson);
328 material.fYC.
SetUp(A, B, C, D, R, W);
333 #ifdef LOG4CXX_PLASTICITY 334 LoggerPtr loggerSandlerDimaggio(Logger::getLogger(
"plasticity.SandlerDimaggio"));
336 std::stringstream sout;
337 sout <<
">>> TPZSandlerDimaggio::Unconsolidated Deep Sandstone Reservoir ***";
338 LOGPZ_INFO(loggerSandlerDimaggio,sout.str().c_str());
355 material.
SetUp(poisson, E, A, B, C, R, D, W);
360 #ifdef LOG4CXX_PLASTICITY 361 LoggerPtr loggerSandlerDimaggio(Logger::getLogger(
"plasticity.SandlerDimaggio"));
363 std::stringstream sout;
364 sout <<
">>> TPZSandlerDimaggio::Unconsolidated Deep Sandstone Reservoir ***";
365 LOGPZ_INFO(loggerSandlerDimaggio,sout.str().c_str());
372 material.fER.
SetUp(E, poisson);
381 material.fYC.
SetUp(A, B, C, D, R, W);
386 #ifdef LOG4CXX_PLASTICITY 387 LoggerPtr loggerSandlerDimaggio(Logger::getLogger(
"plasticity.SandlerDimaggio"));
389 std::stringstream sout;
390 sout <<
">>> TPZSandlerDimaggio::Unconsolidated Deep Sandstone Reservoir ***";
391 LOGPZ_INFO(loggerSandlerDimaggio,sout.str().c_str());
398 material.fER.
SetUp(E, poisson);
407 material.fYC.
SetUp(A, B, C, D, R, W);
412 #ifdef LOG4CXX_PLASTICITY 413 LoggerPtr loggerSandlerDimaggio(Logger::getLogger(
"plasticity.SandlerDimaggio"));
415 std::stringstream sout;
416 sout <<
">>> TPZSandlerDimaggio::PRSMat MPa ***";
417 LOGPZ_INFO(loggerSandlerDimaggio,sout.str().c_str());
424 material.fER.
SetUp(E, poisson);
433 material.fYC.
SetUp(A, B, C, D, R, W);
440 template<
class SANDLERDIMAGGIOPARENT>
442 return Hash(
"TPZSandlerDimaggio") ^ SANDLERDIMAGGIOPARENT::ClassId() << 1;
445 #endif //TPZSANDLERDIMAGGIO_H
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ fabs
static void UncDeepSandRes(TPZSandlerDimaggio &material)
void ZAXPY(const TVar alpha, const TPZFMatrix< TVar > &p)
Performs an ZAXPY operation being *this += alpha * p.
Contains definitions to LOGPZ_DEBUG, LOGPZ_INFO, LOGPZ_WARN, LOGPZ_ERROR and LOGPZ_FATAL, and the implementation of the inline InitializePZLOG(string) function using log4cxx library or not. It must to be called out of "#ifdef LOG4CXX" scope.
static void UncDeepSandResPSI(TPZSandlerDimaggio &material)
static void McCormicRanchSandMod2(TPZSandlerDimaggio &material)
virtual void Phi(const TPZTensor< REAL > &epsTotal, TPZVec< REAL > &phi) const override
virtual void Print(std::ostream &out) const override
virtual void SetUp(const TPZTensor< REAL > &epsTotal) override
std::underlying_type< Enumeration >::type as_integer(const Enumeration value)
static void McCormicRanchSand(TPZSandlerDimaggio &material)
static void UncDeepSandTest(TPZSandlerDimaggio &material)
#define LOGPZ_WARN(A, B)
Define log for warnings.
static void McCormicRanchSandMod(TPZSandlerDimaggio &material)
static void McCormicRanchSand(TPZYCSandlerDimaggio &material)
int ClassId() const override
void Write(TPZStream &buf, int withclassid) const override
virtual void ApplyStrainComputeSigma(const TPZTensor< REAL > &epsTotal, TPZTensor< REAL > &sigma, TPZFMatrix< REAL > *tangent=NULL) override
#define LOGPZ_INFO(A, B)
Define log for informations.
virtual void ComputeDep(TPZTensor< REAL > &sigma, TPZFMatrix< REAL > &Dep) override
#define DebugStop()
Returns a message to user put a breakpoint in.
virtual const char * Name() const override
virtual void ApplyStrain(const TPZTensor< REAL > &epsTotal) override
TPZSandlerDimaggio(const TPZSandlerDimaggio &source)
void SetUp(REAL poisson, REAL E, REAL A, REAL B, REAL C, REAL R, REAL D, REAL W)
static void UncDeepSandResMPa(TPZSandlerDimaggio &material)
void Read(TPZStream &buf, void *context) override
TPZSandlerDimaggio(REAL alpha=0.)
int32_t Hash(std::string str)
static void PRSMatMPa(TPZSandlerDimaggio &material)
TPZSandlerDimaggio & operator=(const TPZSandlerDimaggio &source)
Defines the interface for saving and reading data. Persistency.
virtual void ApplyLoad(const TPZTensor< REAL > &sigma, TPZTensor< REAL > &epsTotal) override
virtual int GetNYield() const
virtual void ApplyStrainComputeDep(const TPZTensor< REAL > &epsTotal, TPZTensor< REAL > &sigma, TPZFMatrix< REAL > &Dep) override
virtual TPZPlasticState< REAL > GetState() const override
Non abstract class which implements full matrices with preallocated storage with (N+1) entries...