KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
structured_soil_model.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosConstitutiveModelsApplication $
3 // Created by: $Author: LMonforte $
4 // Last modified by: $Co-Author: MCiantia $
5 // Date: $Date: July 2018 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_STRUCTURED_SOIL_MODEL_H_INCLUDED )
11 #define KRATOS_STRUCTURED_SOIL_MODEL_H_INCLUDED
12 
13 // System includes
14 
15 // External includes
16 #include <iostream>
17 #include <fstream>
18 
19 // Project includes
21 
22 
23 
24 //***** the hardening law associated to this Model has ... variables
25 // 0. Plastic multiplier
26 // 1. Plastic Volumetric deformation
27 // 2. Plastic Deviatoric deformation
28 // 3. ps (mechanical)
29 // 4. pt (ageing)
30 // 5. pcSTAR = ps + (1+k) p_t
31 // 6. Plastic Volumetric deformation Absolut Value
32 // 7. NonLocal Plastic Vol Def
33 // 8. NonLocal Plastic Dev Def
34 // 9. NonLocal Plastic Vol Def ABS
35 // ... (the number now is then..., xD)
36 
37 namespace Kratos
38 {
41 
44 
48 
52 
56 
60 
62 
64  template<class TElasticityModel, class TYieldSurface>
65  class KRATOS_API(CONSTITUTIVE_MODELS_APPLICATION) StructuredSoilModel : public NonAssociativePlasticityModel<TElasticityModel, TYieldSurface >
66  {
67  public:
68 
71 
72  //elasticity model
73  typedef TElasticityModel ElasticityModelType;
74 
75  //yield surface
76  typedef TYieldSurface YieldSurfaceType;
77 
78 
79  // derived type
81 
82  //base type
84 
85  //common types
86  typedef typename BaseType::Pointer BaseTypePointer;
87  typedef typename BaseType::SizeType SizeType;
89  typedef typename BaseType::MatrixType MatrixType;
90  typedef typename BaseType::VectorType VectorType;
95 
96 
99 
103 
105  StructuredSoilModel() : DerivedType() { mInitialized = false; }
106 
108  StructuredSoilModel(StructuredSoilModel const& rOther) : DerivedType(rOther), mInitialized(rOther.mInitialized) {}
109 
112  {
113  DerivedType::operator=(rOther);
114  return *this;
115  }
116 
118  ConstitutiveModel::Pointer Clone() const override
119  {
120  return ( StructuredSoilModel::Pointer(new StructuredSoilModel(*this)) );
121  }
122 
124  virtual ~StructuredSoilModel() {}
125 
126 
130 
131 
135 
136 
140  void InitializeModel(ModelDataType& rValues) override
141  {
142  KRATOS_TRY
143 
144  if (mInitialized == false) {
145  PlasticDataType Variables;
146  this->InitializeVariables( rValues, Variables);
147 
148  const ModelDataType & rModelData = Variables.GetModelData();
149  const Properties & rMaterialProperties = rModelData.GetProperties();
150 
151  double k = rMaterialProperties[KSIM];
152 
153  double & rPS = Variables.Internal.Variables[3];
154  double & rPT = Variables.Internal.Variables[4];
155  double & rPCstar = Variables.Internal.Variables[5];
156 
157  rPS = -rMaterialProperties[PS];
158  rPT = -rMaterialProperties[PT];
159  rPCstar = rPS + (1.0+k)*rPT;
160 
162  this->UpdateInternalVariables(rValues, Variables, Stress);
163 
164 
165  mInitialized = true;
166  }
167  this->mElasticityModel.InitializeModel( rValues );
168 
169  KRATOS_CATCH("")
170  }
171 
175  virtual int Check(const Properties& rMaterialProperties, const ProcessInfo& rCurrentProcessInfo) override
176  {
177  KRATOS_TRY
178 
179  //LMV: to be implemented. but should not enter in the base one
180 
181  return 0;
182 
183  KRATOS_CATCH("")
184  }
185 
189 
193  virtual bool Has(const Variable<double>& rThisVariable) override
194  {
195  if(rThisVariable == PLASTIC_STRAIN || rThisVariable == DELTA_PLASTIC_STRAIN )
196  return true;
197 
198  return false;
199  }
200 
201 
205  void SetValue(const Variable<double>& rVariable,
206  const double& rValue,
207  const ProcessInfo& rCurrentProcessInfo) override
208  {
209  KRATOS_TRY
210 
211  if ( rVariable == NONLOCAL_PLASTIC_VOL_DEF) {
212  this->mInternal.Variables[7] = rValue;
213  }
214  else if ( rVariable == NONLOCAL_PLASTIC_DEV_DEF) {
215  this->mInternal.Variables[8] = rValue;
216  }
217  else if ( rVariable == NONLOCAL_PLASTIC_VOL_DEF_ABS) {
218  this->mInternal.Variables[9] = rValue;
219  }
220 
221  KRATOS_CATCH("")
222  }
223 
224 
228  virtual double& GetValue(const Variable<double>& rThisVariable, double& rValue) override
229  {
230  KRATOS_TRY
231 
232  rValue=0;
233 
234  if (rThisVariable==PLASTIC_STRAIN)
235  {
236  rValue = this->mInternal.Variables[0];
237  }
238  else if (rThisVariable==DELTA_PLASTIC_STRAIN)
239  {
240  rValue = this->mInternal.Variables[0]-this->mPreviousInternal.Variables[0];
241  }
242  else if ( rThisVariable == PS)
243  {
244  rValue = this->mInternal.Variables[3];
245  }
246  else if ( rThisVariable == PT)
247  {
248  rValue = this->mInternal.Variables[4];
249  }
250  else if ( rThisVariable == PM)
251  {
252  rValue = this->mInternal.Variables[5];
253  }
254  else if ( rThisVariable == PLASTIC_VOL_DEF)
255  {
256  rValue = this->mInternal.Variables[1];
257  }
258  else if ( rThisVariable == PLASTIC_DEV_DEF)
259  {
260  rValue = this->mInternal.Variables[2];
261  }
262  else if ( rThisVariable == PLASTIC_VOL_DEF_ABS)
263  {
264  rValue = this->mInternal.Variables[6];
265  }
266  else if ( rThisVariable == NONLOCAL_PLASTIC_VOL_DEF)
267  {
268  rValue = this->mPreviousInternal.Variables[7];
269  }
270  else if ( rThisVariable == NONLOCAL_PLASTIC_DEV_DEF)
271  {
272  rValue = this->mPreviousInternal.Variables[8];
273  }
274  else if ( rThisVariable == NONLOCAL_PLASTIC_VOL_DEF_ABS)
275  {
276  rValue = this->mPreviousInternal.Variables[9];
277  }
278  else {
280  }
281  return rValue;
282 
283  KRATOS_CATCH("")
284  }
285 
289 
290 
294 
296  virtual std::string Info() const override
297  {
298  std::stringstream buffer;
299  buffer << "StructuredSoilModel" ;
300  return buffer.str();
301  }
302 
304  virtual void PrintInfo(std::ostream& rOStream) const override
305  {
306  rOStream << "StructuredSoilModel";
307  }
308 
310  virtual void PrintData(std::ostream& rOStream) const override
311  {
312  rOStream << "StructuredSoilModel Data";
313  }
314 
315 
319 
320 
322 
323  protected:
326 
327 
331 
333 
337 
338 
342 
343 
344 
345  //***************************************************************************************
346  //***************************************************************************************
347  // Compute Elasto Plastic Matrix
348  void ComputeElastoPlasticTangentMatrix( ModelDataType & rValues, PlasticDataType & rVariables, Matrix & rEPMatrix) override
349  {
350 
351  KRATOS_TRY
352 
353  // evaluate constitutive matrix and plastic flow
354  Matrix ElasticMatrix(6,6);
355  noalias(ElasticMatrix) = ZeroMatrix(6,6);
356  this->mElasticityModel.CalculateConstitutiveTensor( rValues, ElasticMatrix);
357 
358  VectorType DeltaStressYieldCondition = this->mYieldSurface.CalculateDeltaStressYieldCondition( rVariables, DeltaStressYieldCondition);
359  VectorType PlasticPotentialDerivative;
360  PlasticPotentialDerivative = DeltaStressYieldCondition; // LMV
361 
362 
363  MatrixType PlasticPotDerTensor;
364  PlasticPotDerTensor = ConstitutiveModelUtilities::StrainVectorToTensor( PlasticPotentialDerivative, PlasticPotDerTensor);
365  double H = this->mYieldSurface.GetHardeningRule().CalculateDeltaHardening( rVariables, H, PlasticPotDerTensor);
366 
367  VectorType AuxF = prod( trans(DeltaStressYieldCondition), rEPMatrix);
368  VectorType AuxG = prod( rEPMatrix, PlasticPotentialDerivative);
369 
370  Matrix PlasticUpdateMatrix(6,6);
371  noalias(PlasticUpdateMatrix) = ZeroMatrix(6,6);
372  double denom = 0;
373  for (unsigned int i = 0; i < 6; i++) {
374  denom += AuxF(i)*PlasticPotentialDerivative(i);
375  for (unsigned int j = 0; j < 6; j++) {
376  PlasticUpdateMatrix(i,j) = AuxF(i) * AuxG(j);
377  }
378  }
379 
380  rEPMatrix -= PlasticUpdateMatrix / ( H + denom);
381 
382  KRATOS_CATCH("")
383  }
384  //***********************************************************************************
385  //***********************************************************************************
386  // Compute one step of the elasto-plastic problem
387  void ComputeOneStepElastoPlasticProblem( ModelDataType & rValues, PlasticDataType & rVariables, const MatrixType & rDeltaDeformationMatrix) override
388  {
389  KRATOS_TRY
390 
391 
392  const ModelDataType & rModelData = rVariables.GetModelData();
393  const Properties & rMaterialProperties = rModelData.GetProperties();
394  const double & rhos = rMaterialProperties[RHOS];
395  const double & rhot = rMaterialProperties[RHOT];
396  double k = rMaterialProperties[KSIM];
397 
398  const double & rChis = rMaterialProperties[CHIS];
399  const double & rChit = rMaterialProperties[CHIT];
400 
401  MatrixType StressMatrix;
402  // evaluate constitutive matrix and plastic flow
403  double & rPlasticVolDef = rVariables.Internal.Variables[1];
404  double & rPlasticMultiplier = rVariables.Internal.Variables[0];
405  double & rPlasticDevDef = rVariables.Internal.Variables[2];
406  double & rPS = rVariables.Internal.Variables[3];
407  double & rPT = rVariables.Internal.Variables[4];
408  double & rPCstar = rVariables.Internal.Variables[5];
409 
410  Matrix ElasticMatrix(6,6);
411  noalias(ElasticMatrix) = ZeroMatrix(6,6);
412  this->mElasticityModel.CalculateConstitutiveTensor( rValues, ElasticMatrix);
413 
414  VectorType DeltaStressYieldCondition = this->mYieldSurface.CalculateDeltaStressYieldCondition( rVariables, DeltaStressYieldCondition);
415  VectorType PlasticPotentialDerivative;
416  PlasticPotentialDerivative = DeltaStressYieldCondition; // LMV
417 
418  MatrixType PlasticPotDerTensor;
419  PlasticPotDerTensor = ConstitutiveModelUtilities::StrainVectorToTensor( PlasticPotentialDerivative, PlasticPotDerTensor);
420  double H = this->mYieldSurface.GetHardeningRule().CalculateDeltaHardening( rVariables, H, PlasticPotDerTensor);
421 
422  MatrixType StrainMatrix = prod( rDeltaDeformationMatrix, trans( rDeltaDeformationMatrix) );
423  VectorType StrainVector;
424  this->ConvertCauchyGreenTensorToHenckyVector( StrainMatrix, StrainVector);
425 
426  VectorType AuxVector;
427  AuxVector = prod( ElasticMatrix, StrainVector);
428  double DeltaGamma;
429  DeltaGamma = MathUtils<double>::Dot( AuxVector, DeltaStressYieldCondition);
430 
431  double Denominador = H + MathUtils<double>::Dot( DeltaStressYieldCondition, prod(ElasticMatrix, PlasticPotentialDerivative) );
432 
433  DeltaGamma /= Denominador;
434 
435  if ( DeltaGamma < 0)
436  DeltaGamma = 0;
437 
438  MatrixType UpdateMatrix;
439  this->ConvertHenckyVectorToCauchyGreenTensor( -DeltaGamma * PlasticPotentialDerivative / 2.0, UpdateMatrix);
440  UpdateMatrix = prod( rDeltaDeformationMatrix, UpdateMatrix);
441 
442 
443  rValues.StrainMatrix = prod( UpdateMatrix, rValues.StrainMatrix);
444  rValues.StrainMatrix = prod( rValues.StrainMatrix, trans(UpdateMatrix));
445 
446  this->mElasticityModel.CalculateStressTensor( rValues, StressMatrix);
447 
448  rPlasticMultiplier += DeltaGamma;
449  double VolPlasticIncr = 0.0;
450  for (unsigned int i = 0; i < 3; i++)
451  VolPlasticIncr += DeltaGamma * DeltaStressYieldCondition(i);
452  rPlasticVolDef += VolPlasticIncr;
453 
454  double DevPlasticIncr = 0.0;
455  for (unsigned int i = 0; i < 3; i++)
456  DevPlasticIncr += pow( DeltaGamma * DeltaStressYieldCondition(i) - VolPlasticIncr/3.0, 2.0);
457  for (unsigned int i = 3; i < 6; i++)
458  DevPlasticIncr += 2.0 * pow( DeltaGamma * DeltaStressYieldCondition(i) /2.0 , 2.0);
459  DevPlasticIncr = sqrt(DevPlasticIncr);
460  rPlasticDevDef += DevPlasticIncr;
461 
462 
463  double hs = rhos * ( rPS) * ( VolPlasticIncr + rChis*sqrt(2.0/3.0) * DevPlasticIncr );
464  double ht = rhot * (-rPT) * (fabs(VolPlasticIncr) + rChit*sqrt(2.0/3.0) * DevPlasticIncr );
465 
466  rPS -= hs;
467  rPT -= ht;
468 
469  rPCstar = rPS + (1.0 + k)*rPT;
470 
471  KRATOS_CATCH("")
472  }
473 
474  //********************************************************************
475  //********************************************************************
476  // UpdateInternalVariables
477  virtual void UpdateInternalVariables(ModelDataType& rValues, PlasticDataType& rVariables, const MatrixType& rStressMatrix) override
478  {
479  KRATOS_TRY
480 
481  this->mPreviousInternal.Variables[6] = this->mInternal.Variables[6];
482  this->mInternal.Variables[6] = this->mInternal.Variables[6] + fabs( rVariables.Internal.Variables[1] - this->mInternal.Variables[1]);
483  for (unsigned int i = 0; i < 6; i++) {
484  double & rCurrentPlasticVariable = rVariables.Internal.Variables[i];
485  double & rPreviousPlasticVariable = this->mInternal.Variables[i];
486 
487  this->mPreviousInternal.Variables[i] = rPreviousPlasticVariable;
488  rPreviousPlasticVariable = rCurrentPlasticVariable;
489  }
490 
491 
492  KRATOS_CATCH("")
493  }
494 
495  //***************************************************************************************
496  //***************************************************************************************
497  // Correct Yield Surface Drift According to
498  virtual void ReturnStressToYieldSurface( ModelDataType & rValues, PlasticDataType & rVariables) override
499  {
500  KRATOS_TRY
501 
502 
503 
504  double Tolerance = 1e-7;
505 
506  MatrixType StressMatrix;
507  this->mElasticityModel.CalculateStressTensor( rValues, StressMatrix);
508  double YieldSurface = this->mYieldSurface.CalculateYieldCondition( rVariables, YieldSurface);
509 
510  if ( fabs(YieldSurface) < Tolerance)
511  return;
512 
513  const ModelDataType & rModelData = rVariables.GetModelData();
514  const Properties & rMaterialProperties = rModelData.GetProperties();
515  double rhos = rMaterialProperties[RHOS];
516  double rhot = rMaterialProperties[RHOT];
517  double chis = rMaterialProperties[CHIS];
518  double chit = rMaterialProperties[CHIT];
519  double k = rMaterialProperties[KSIM];
520  // evaluate constitutive matrix and plastic flow
521  double & rPlasticVolDef = rVariables.Internal.Variables[1];
522  //double & rPlasticMultiplier = rVariables.Internal.Variables[0];
523  double & rPlasticDevDef = rVariables.Internal.Variables[2];
524  double & rPS = rVariables.Internal.Variables[3];
525  double & rPT = rVariables.Internal.Variables[4];
526  double & rPCstar = rVariables.Internal.Variables[5];
527 
528  for (unsigned int i = 0; i < 150; i++) {
529 
530  Matrix ElasticMatrix(6,6);
531  noalias(ElasticMatrix) = ZeroMatrix(6,6);
532  this->mElasticityModel.CalculateConstitutiveTensor( rValues, ElasticMatrix);
533 
534  VectorType DeltaStressYieldCondition = this->mYieldSurface.CalculateDeltaStressYieldCondition( rVariables, DeltaStressYieldCondition);
535  VectorType PlasticPotentialDerivative;
536  PlasticPotentialDerivative = DeltaStressYieldCondition; // LMV
537 
538  MatrixType PlasticPotDerTensor;
539  PlasticPotDerTensor = ConstitutiveModelUtilities::StrainVectorToTensor( PlasticPotentialDerivative, PlasticPotDerTensor);
540  double H = this->mYieldSurface.GetHardeningRule().CalculateDeltaHardening( rVariables, H, PlasticPotDerTensor);
541 
542  double DeltaGamma = YieldSurface;
543  DeltaGamma /= ( H + MathUtils<double>::Dot( DeltaStressYieldCondition, prod(ElasticMatrix, PlasticPotentialDerivative) ) );
544 
545  MatrixType UpdateMatrix;
546  this->ConvertHenckyVectorToCauchyGreenTensor( -DeltaGamma * PlasticPotentialDerivative / 2.0, UpdateMatrix);
547 
548  rValues.StrainMatrix = prod( UpdateMatrix, rValues.StrainMatrix);
549  rValues.StrainMatrix = prod( rValues.StrainMatrix, trans(UpdateMatrix));
550 
551  this->mElasticityModel.CalculateStressTensor( rValues, StressMatrix);
552 
553  double VolPlasticIncr = 0.0;
554  for (unsigned int i = 0; i < 3; i++)
555  VolPlasticIncr += DeltaGamma * DeltaStressYieldCondition(i);
556  rPlasticVolDef += VolPlasticIncr;
557 
558  double DevPlasticIncr = 0.0;
559  for (unsigned int i = 0; i < 3; i++)
560  DevPlasticIncr += pow( DeltaGamma * DeltaStressYieldCondition(i) - VolPlasticIncr/3.0, 2.0);
561  for (unsigned int i = 3; i < 6; i++)
562  DevPlasticIncr += 2.0 * pow( DeltaGamma * DeltaStressYieldCondition(i) /2.0 , 2.0);
563  DevPlasticIncr = DeltaGamma/fabs(DeltaGamma) * sqrt(DevPlasticIncr);
564  rPlasticDevDef += DevPlasticIncr;
565 
566 
567  double hs = rhos * rPS * (VolPlasticIncr + chis * sqrt(2.0/3.0)* DevPlasticIncr);
568  double ht = rhot * (-rPT) * ( fabs(VolPlasticIncr) + chit*sqrt(2.0/3.0)*DevPlasticIncr);
569  rPS -= hs;
570  rPT -= ht;
571 
572  rPCstar = rPS + (1.0 + k)*rPT;
573 
574 
575  YieldSurface = this->mYieldSurface.CalculateYieldCondition( rVariables, YieldSurface);
576 
577 
578  if ( fabs( YieldSurface) < Tolerance) {
579  return;
580  }
581  }
582  std::cout << " theStressPointDidNotReturnedCorrectly " << YieldSurface << std::endl;
583 
584  KRATOS_CATCH("")
585  }
589 
590 
594 
595 
599 
600 
602 
603  private:
606 
607 
611 
612 
616 
617 
621 
622 
626 
627 
631 
632 
636  friend class Serializer;
637 
638  virtual void save(Serializer& rSerializer) const override
639  {
641  }
642 
643  virtual void load(Serializer& rSerializer) override
644  {
645  KRATOS_SERIALIZE_LOAD_BASE_CLASS( rSerializer, DerivedType )
646  }
647 
651 
652 
654 
655  }; // Class StructuredSoilModel
656 
658 
661 
662 
666 
667 
671 
672 
674 
676 
677 
678 } // namespace Kratos.
679 
680 #endif // KRATOS_STRUCTURED_SOIL_MODEL_H_INCLUDED defined
681 
682 
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
static MatrixType & StrainVectorToTensor(const array_1d< double, 6 > &rVector, MatrixType &rMatrix)
Definition: constitutive_model_utilities.hpp:619
Definition: amatrix_interface.h:41
static double Dot(const Vector &rFirstVector, const Vector &rSecondVector)
Performs the dot product of two vectors of arbitrary size.
Definition: math_utils.h:669
Short class definition.
Definition: non_associative_plasticity_model.hpp:63
virtual double & GetValue(const Variable< double > &rThisVariable, double &rValue) override
Definition: non_associative_plasticity_model.hpp:139
BaseType::PlasticDataType PlasticDataType
Definition: non_associative_plasticity_model.hpp:86
Short class definition.
Definition: plasticity_model.hpp:50
TYieldSurface::InternalVariablesType InternalVariablesType
Definition: plasticity_model.hpp:69
ConstitutiveModelData::SizeType SizeType
Definition: plasticity_model.hpp:63
ConstitutiveModelData::VoigtIndexType VoigtIndexType
Definition: plasticity_model.hpp:64
TYieldSurface::PlasticDataType PlasticDataType
Definition: plasticity_model.hpp:68
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Short class definition.
Definition: structured_soil_model.hpp:66
BaseType::PlasticDataType PlasticDataType
Definition: structured_soil_model.hpp:93
BaseType::VoigtIndexType VoigtIndexType
Definition: structured_soil_model.hpp:88
TElasticityModel ElasticityModelType
Definition: structured_soil_model.hpp:73
bool mInitialized
Definition: structured_soil_model.hpp:332
virtual void UpdateInternalVariables(ModelDataType &rValues, PlasticDataType &rVariables, const MatrixType &rStressMatrix) override
Definition: structured_soil_model.hpp:477
BaseType::ModelDataType ModelDataType
Definition: structured_soil_model.hpp:91
BaseType::InternalVariablesType InternalVariablesType
Definition: structured_soil_model.hpp:94
BaseType::Pointer BaseTypePointer
Definition: structured_soil_model.hpp:86
ConstitutiveModel::Pointer Clone() const override
Clone.
Definition: structured_soil_model.hpp:118
virtual void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: structured_soil_model.hpp:304
virtual ~StructuredSoilModel()
Destructor.
Definition: structured_soil_model.hpp:124
virtual void ReturnStressToYieldSurface(ModelDataType &rValues, PlasticDataType &rVariables) override
Definition: structured_soil_model.hpp:498
BaseType::VectorType VectorType
Definition: structured_soil_model.hpp:90
virtual std::string Info() const override
Turn back information as a string.
Definition: structured_soil_model.hpp:296
StructuredSoilModel(StructuredSoilModel const &rOther)
Copy constructor.
Definition: structured_soil_model.hpp:108
void SetValue(const Variable< double > &rVariable, const double &rValue, const ProcessInfo &rCurrentProcessInfo) override
Definition: structured_soil_model.hpp:205
NonAssociativePlasticityModel< ElasticityModelType, YieldSurfaceType > DerivedType
Definition: structured_soil_model.hpp:80
virtual bool Has(const Variable< double > &rThisVariable) override
Definition: structured_soil_model.hpp:193
StructuredSoilModel()
Default constructor.
Definition: structured_soil_model.hpp:105
virtual double & GetValue(const Variable< double > &rThisVariable, double &rValue) override
Definition: structured_soil_model.hpp:228
TYieldSurface YieldSurfaceType
Definition: structured_soil_model.hpp:76
StructuredSoilModel & operator=(StructuredSoilModel const &rOther)
Assignment operator.
Definition: structured_soil_model.hpp:111
PlasticityModel< ElasticityModelType, YieldSurfaceType > BaseType
Definition: structured_soil_model.hpp:83
void ComputeOneStepElastoPlasticProblem(ModelDataType &rValues, PlasticDataType &rVariables, const MatrixType &rDeltaDeformationMatrix) override
Definition: structured_soil_model.hpp:387
void InitializeModel(ModelDataType &rValues) override
Definition: structured_soil_model.hpp:140
BaseType::MatrixType MatrixType
Definition: structured_soil_model.hpp:89
void ComputeElastoPlasticTangentMatrix(ModelDataType &rValues, PlasticDataType &rVariables, Matrix &rEPMatrix) override
Definition: structured_soil_model.hpp:348
KRATOS_CLASS_POINTER_DEFINITION(StructuredSoilModel)
Pointer definition of StructuredSoilModel.
BaseType::SizeType SizeType
Definition: structured_soil_model.hpp:87
virtual void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: structured_soil_model.hpp:310
BaseType::MaterialDataType MaterialDataType
Definition: structured_soil_model.hpp:92
virtual int Check(const Properties &rMaterialProperties, const ProcessInfo &rCurrentProcessInfo) override
Definition: structured_soil_model.hpp:175
Short class definition.
Definition: yield_surface.hpp:50
virtual double & CalculateYieldCondition(const PlasticDataType &rVariables, double &rYieldCondition)
Definition: yield_surface.hpp:108
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
void InitializeVariables(TContainerType &rContainer, const Variable< TDataType > &rOutputVariable, const Variable< TDataType > &rReferenceVariable)
Definition: temporal_method_utilities.h:36
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
AMatrix::MatrixProductExpression< TExpression1Type, TExpression2Type > prod(AMatrix::MatrixExpression< TExpression1Type, TCategory1 > const &First, AMatrix::MatrixExpression< TExpression2Type, TCategory2 > const &Second)
Definition: amatrix_interface.h:568
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
AMatrix::TransposeMatrix< const T > trans(const T &TheMatrix)
Definition: amatrix_interface.h:486
H
Definition: generate_droplet_dynamics.py:257
Stress
Definition: isotropic_damage_automatic_differentiation.py:135
def load(f)
Definition: ode_solve.py:307
int k
Definition: quadrature.py:595
int j
Definition: quadrature.py:648
integer i
Definition: TensorModule.f:17
e
Definition: run_cpp_mpi_tests.py:31
Definition: constitutive_model_data.hpp:92
Definition: constitutive_model_data.hpp:383
const Properties & GetProperties() const
Definition: constitutive_model_data.hpp:431
MatrixType StrainMatrix
Definition: constitutive_model_data.hpp:402