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.
constitutive_model_data.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosConstitutiveModelsApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: April 2017 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_CONSTITUTIVE_MODEL_DATA_H_INCLUDED )
11 #define KRATOS_CONSTITUTIVE_MODEL_DATA_H_INCLUDED
12 
13 // System includes
14 #include <string>
15 #include <iostream>
16 
17 // External includes
18 
19 // Project includes
20 #include "includes/define.h"
21 #include "includes/serializer.h"
22 #include "includes/properties.h"
23 
25 
26 namespace Kratos
27 {
30 
33 
37 
41 
45 
49 
51 
53  class KRATOS_API(CONSTITUTIVE_MODELS_APPLICATION) ConstitutiveModelData
54  {
55  public:
56 
59  using VoigtIndexType = const unsigned int(*)[2];
60  using SizeType = std::size_t;
63 
64  //state flags
65  KRATOS_DEFINE_LOCAL_FLAG( IMPLEX_ACTIVE );
66  KRATOS_DEFINE_LOCAL_FLAG( STRAIN_COMPUTED );
67  KRATOS_DEFINE_LOCAL_FLAG( STRESS_COMPUTED );
68  KRATOS_DEFINE_LOCAL_FLAG( CONSTITUTIVE_MATRIX_COMPUTED );
69  KRATOS_DEFINE_LOCAL_FLAG( PLASTIC_REGION );
70  KRATOS_DEFINE_LOCAL_FLAG( PLASTIC_RATE_REGION );
71  KRATOS_DEFINE_LOCAL_FLAG( RETURN_MAPPING_COMPUTED );
72  KRATOS_DEFINE_LOCAL_FLAG( UPDATE_INTERNAL_VARIABLES );
73 
74  enum class StrainMeasureType //supplied cauchy green strain measure
75  {
76  CauchyGreen_None, //no strain measure supplied
77  CauchyGreen_Left, //left cauchy-green tensor
78  CauchyGreen_Right, //right cauchy-green tensor
79  };
80 
81 
82  enum class StressMeasureType //required stress measure
83  {
84  StressMeasure_PK1, //stress related to reference configuration non-symmetric
85  StressMeasure_PK2, //stress related to reference configuration
86  StressMeasure_Kirchhoff, //stress related to current configuration
87  StressMeasure_Cauchy //stress related to current configuration
88  };
89 
90 
91  struct MaterialData
92  {
93  public:
94 
95  //general elastic material properties
97  double YoungModulus;
98  double LameMu;
99  double LameMuBar;
100  double LameLambda;
101  double BulkModulus;
102 
103  //general hyperelastic material properties
104  std::vector<double> ModelParameters;
105 
106  public:
107 
108  //Get const Data
109  const double& GetPoissonCoefficient() const {return PoissonCoefficient;};
110  const double& GetYoungModulus () const {return YoungModulus;};
111  const double& GetLameMu () const {return LameMu;};
112  const double& GetLameMuBar () const {return LameMuBar;};
113  const double& GetLameLambda () const {return LameLambda;};
114  const double& GetBulkModulus () const {return BulkModulus;};
115 
116  const std::vector<double>& GetModelParameters () const {return ModelParameters;};
117 
118  };
119 
120 
121  template <class T>
123  {
124  private:
125 
126  const Variable<T> *mpVariable;
127  T *mpValue;
128 
129  public:
130 
131  //constructors
133  VariableValue(const Variable<T>& rVariable, T& rValue){mpVariable = &rVariable; mpValue = &rValue;};
134 
135  //Set Data Pointers
136  void SetVariableValue (const Variable<T>& rVariable, T& rValue) {mpVariable = &rVariable; mpValue = &rValue;};
137  void SetVariable (const Variable<T>& rVariable) {mpVariable = &rVariable;};
138 
139  //Get-Set Data
140  bool HasVariable (const Variable<T>& rVariable) const {return (rVariable == *mpVariable);};
141 
142  void SetValue (T& rValue) {*mpValue = rValue;};
143 
144  };
145 
146 
148  {
149  private:
150 
151  enum class VarType { INTEGER, DOUBLE, VECTOR, MATRIX, ARRAY3, ARRAY6, NONE };
152 
153  VarType mType;
154  VariableValue<int> *mpIntVariable;
155  VariableValue<double> *mpDoubleVariable;
156  VariableValue<Vector> *mpVectorVariable;
157  VariableValue<Matrix> *mpMatrixVariable;
158  VariableValue<array_1d<double,3> > *mpArray3Variable;
159  VariableValue<array_1d<double,6> > *mpArray6Variable;
160 
161  public:
162 
163  //Constructor
165  {
166  mType = VarType::NONE;
167  mpIntVariable = nullptr;
168  mpDoubleVariable = nullptr;
169  mpVectorVariable = nullptr;
170  mpMatrixVariable = nullptr;
171  mpArray3Variable = nullptr;
172  mpArray6Variable = nullptr;
173  }
174 
175  // Destructor
177  {
178  switch(mType)
179  {
180  case VarType::INTEGER:
181  delete mpIntVariable;
182  break;
183  case VarType::DOUBLE:
184  delete mpDoubleVariable;
185  break;
186  case VarType::VECTOR:
187  delete mpVectorVariable;
188  break;
189  case VarType::MATRIX:
190  delete mpMatrixVariable;
191  break;
192  case VarType::ARRAY3:
193  delete mpArray3Variable;
194  break;
195  case VarType::ARRAY6:
196  delete mpArray6Variable;
197  break;
198  case VarType::NONE:
199  break;
200  default:
201  break;
202  }
203  }
204 
205  //Set Data
206 
207  void SetIntVariableValue(const Variable<int>& rVariable, int& rValue)
208  {
209  mType = VarType::INTEGER;
210  typedef VariableValue<int> VariableValueType;
211  mpIntVariable = new VariableValueType(rVariable,rValue);
212  }
213 
214  void SetDoubleVariableValue(const Variable<double>& rVariable, double& rValue)
215  {
216  mType = VarType::DOUBLE;
217  typedef VariableValue<double> VariableValueType;
218  mpDoubleVariable = new VariableValueType(rVariable,rValue);
219  }
220 
221  void SetVectorVariableValue(const Variable<Vector>& rVariable, Vector& rValue)
222  {
223  mType = VarType::VECTOR;
224  typedef VariableValue<Vector> VariableValueType;
225  mpVectorVariable = new VariableValueType(rVariable,rValue);
226  }
227 
228  void SetMatrixVariableValue(const Variable<Matrix>& rVariable, Matrix& rValue)
229  {
230  mType = VarType::MATRIX;
231  typedef VariableValue<Matrix> VariableValueType;
232  mpMatrixVariable = new VariableValueType(rVariable,rValue);
233  }
234 
236  {
237  mType = VarType::ARRAY3;
238  typedef VariableValue<array_1d<double,3> > VariableValueType;
239  mpArray3Variable = new VariableValueType(rVariable,rValue);
240  }
241 
243  {
244  mType = VarType::ARRAY6;
245  typedef VariableValue<array_1d<double,6> > VariableValueType;
246  mpArray6Variable = new VariableValueType(rVariable,rValue);
247  }
248 
249  //Get Data
250  template<class T>
251  bool GetVariableValue(VariableValue<T>& rVariableValue)
252  {
253  if( std::is_same<T,int>::value ){
254  if(mpIntVariable != nullptr){
255  rVariableValue = &mpIntVariable;
256  return true;
257  }
258  else{
259  return false;
260  }
261 
262  }
263  else if( std::is_same<T,double>::value ){
264  if(mpDoubleVariable != nullptr){
265  rVariableValue = &mpDoubleVariable;
266  return true;
267  }
268  else{
269  return false;
270  }
271  }
272  else if( std::is_same<T,Vector>::value ){
273  if(mpVectorVariable != nullptr){
274  rVariableValue = &mpVectorVariable;
275  return true;
276  }
277  else{
278  return false;
279  }
280  }
281  else if( std::is_same<T,Matrix>::value ){
282  if(mpMatrixVariable != nullptr){
283  rVariableValue = &mpMatrixVariable;
284  return true;
285  }
286  else{
287  return false;
288  }
289  }
290  else if( std::is_same<T,array_1d<double,3> >::value ){
291  if(mpArray3Variable != nullptr){
292  rVariableValue = &mpArray3Variable;
293  return true;
294  }
295  else{
296  return false;
297  }
298  }
299  else if( std::is_same<T,array_1d<double,6> >::value ){
300  if(mpArray6Variable !=nullptr){
301  rVariableValue = &mpArray6Variable;
302  return true;
303  }
304  else{
305  return false;
306  }
307  }
308  else{
309  return false;
310  }
311  }
312 
313  void SetValue(const Variable<int>& rVariable, int& rValue)
314  {
315  if(mpIntVariable != nullptr)
316  if( mpIntVariable->HasVariable(rVariable) )
317  mpIntVariable->SetValue(rValue);
318  }
319 
320  void SetValue(const Variable<double>& rVariable, double& rValue)
321  {
322  if(mpDoubleVariable != nullptr)
323  if( mpDoubleVariable->HasVariable(rVariable) )
324  mpDoubleVariable->SetValue(rValue);
325  }
326 
327  void SetValue(const Variable<Vector>& rVariable, Vector& rValue)
328  {
329  if(mpVectorVariable != nullptr)
330  if( mpVectorVariable->HasVariable(rVariable) )
331  mpVectorVariable->SetValue(rValue);
332  }
333 
334  void SetValue(const Variable<Matrix>& rVariable, Matrix& rValue)
335  {
336  if(mpMatrixVariable != nullptr)
337  if( mpMatrixVariable->HasVariable(rVariable) )
338  mpMatrixVariable->SetValue(rValue);
339 
340  }
341 
342  void SetValue(const Variable<array_1d<double,3> >& rVariable, array_1d<double,3>& rValue)
343  {
344  if(mpArray3Variable != nullptr)
345  if( mpArray3Variable->HasVariable(rVariable) )
346  mpArray3Variable->SetValue(rValue);
347  }
348 
349  void SetValue(const Variable<array_1d<double,6> >& rVariable, array_1d<double,6>& rValue)
350  {
351  if(mpArray6Variable != nullptr)
352  if( mpArray6Variable->HasVariable(rVariable) )
353  mpArray6Variable->SetValue(rValue);
354  }
355 
356 
357 
358  };
359 
360 
362  {
363  public:
364 
365  //elemental data
366  double Pressure;
367  double Temperature;
369  double DeltaDeformationDet; //wildcard for the determinant of the deformation increment (usually detF )
370  double TotalDeformationDet; //wildcard for the determinant of the total deformation (usually detF0)
371 
372  //model data
373  StressMeasureType StressMeasure; //stress measure requested
374  StrainMeasureType StrainMeasure; //strain measure provided
375 
376  //deformation
377  MatrixType DeltaDeformationMatrix; //wildcard deformation increment (usually incremental F)
378  MatrixType TotalDeformationMatrix; //wildcard total deformation (usually total F := F0)
379  };
380 
381 
382  struct ModelData
383  {
384  private:
385 
386  const Flags* mpOptions;
387  const Properties* mpProperties;
388  const ProcessInfo* mpProcessInfo;
389 
390  SizeType mVoigtSize;
391  VoigtIndexType mIndexVoigtTensor;
392 
393  ConstitutiveLawData mConstitutiveLawData;
394 
395  PropertiesLayout::Pointer mpPropertiesLayout;
396 
397  public:
398 
400 
401  MatrixType StressMatrix; //wildcard stress (isochoric stress tensor)
402  MatrixType StrainMatrix; //wildcard strain (cauchy green tensors or infinitessimal tensor)
404 
405  VariableValueData InternalVariable; //internal variable to compute and return
406 
407  //Set Data Pointers
408  void SetOptions (const Flags& rOptions) {mpOptions = &rOptions;};
409  void SetProperties (const Properties& rProperties) {mpProperties = &rProperties;};
410  void SetPropertiesLayout (PropertiesLayout::Pointer pPropertiesLayout) {mpPropertiesLayout = pPropertiesLayout;};
411 
412  void SetProcessInfo (const ProcessInfo& rProcessInfo) {mpProcessInfo = &rProcessInfo;};
413  void SetVoigtSize (const SizeType& rVoigtSize) {mVoigtSize = rVoigtSize;};
414  void SetVoigtIndexTensor (VoigtIndexType rIndexVoigtTensor) {mIndexVoigtTensor = rIndexVoigtTensor;};
415 
416  void SetIntVariableData (const Variable<int>& rVariable, int& rValue) {InternalVariable.SetIntVariableValue(rVariable,rValue);};
417  void SetDoubleVariableData (const Variable<double>& rVariable, double& rValue) {InternalVariable.SetDoubleVariableValue(rVariable,rValue);};
418  void SetVectorVariableData (const Variable<Vector>& rVariable, Vector& rValue) {InternalVariable.SetVectorVariableValue(rVariable,rValue);};
419  void SetMatrixVariableData (const Variable<Matrix>& rVariable, Matrix& rValue) {InternalVariable.SetMatrixVariableValue(rVariable,rValue);};
420  void SetArray3VariableData (const Variable<array_1d<double,3> >& rVariable, array_1d<double,3>& rValue) {InternalVariable.SetArray3VariableValue(rVariable,rValue);};
421  void SetArray6VariableData (const Variable<array_1d<double,6> >& rVariable, array_1d<double,6>& rValue) {InternalVariable.SetArray6VariableValue(rVariable,rValue);};
422 
423  void SetStressMeasure (StressMeasureType Measure) {mConstitutiveLawData.StressMeasure = Measure;};
424  void SetStrainMeasure (StrainMeasureType Measure) {mConstitutiveLawData.StrainMeasure = Measure;};
425 
426  //Has Data Pointers
427  bool HasPropertiesLayout () const {return (!mpPropertiesLayout) ? false : true;};
428 
429  //Get Data Pointers
430  const Flags& GetOptions () const {return *mpOptions;};
431  const Properties& GetProperties () const {return *mpProperties;};
432 
433  const PropertiesLayout& GetPropertiesLayout () const {return *mpPropertiesLayout.get();};
434 
435  const ProcessInfo& GetProcessInfo () const {return *mpProcessInfo;};
436  const SizeType& GetVoigtSize () const {return mVoigtSize;};
437  const VoigtIndexType& GetVoigtIndexTensor () const {return mIndexVoigtTensor;};
438 
439  //Acces non const Data
440  ConstitutiveLawData& rConstitutiveLawData () {return mConstitutiveLawData;};
441  MatrixType& rStrainMatrix () {return StrainMatrix;};
442  MatrixType& rStressMatrix () {return StressMatrix;};
443  MaterialData& rMaterialParameters () {return MaterialParameters;};
444 
445  //Get const Data
446  const double& GetPressure () const {return mConstitutiveLawData.Pressure;};
447  const double& GetTemperature () const {return mConstitutiveLawData.Temperature;};
448  const double& GetDeltaDeformationDet () const {return mConstitutiveLawData.DeltaDeformationDet;};
449  const double& GetTotalDeformationDet () const {return mConstitutiveLawData.TotalDeformationDet;};
450  const double& GetCharacteristicSize () const {return mConstitutiveLawData.CharacteristicSize;};
451 
452  const StressMeasureType& GetStressMeasure () const {return mConstitutiveLawData.StressMeasure;};
453  const StrainMeasureType& GetStrainMeasure () const {return mConstitutiveLawData.StrainMeasure;};
454 
455  const MatrixType& GetDeltaDeformationMatrix () const {return mConstitutiveLawData.DeltaDeformationMatrix;};
456  const MatrixType& GetTotalDeformationMatrix () const {return mConstitutiveLawData.TotalDeformationMatrix;};
457 
458  const ConstitutiveLawData& GetConstitutiveLawData () const {return mConstitutiveLawData;};
459 
460  const MatrixType& GetStrainMatrix () const {return StrainMatrix;};
461  const MatrixType& GetStressMatrix () const {return StressMatrix;};
462  const MaterialData& GetMaterialParameters () const {return MaterialParameters;};
463 
464  };
465 
466 
467  // struct ThermalParameters
468  // {
469  // //general thermal properties
470  // double ThermalExpansionCoefficient;
471  // double ReferenceTemperature;
472  // }
473 
474 
477 
481 
484 
487 
489  ConstitutiveModelData::Pointer Clone() const
490  {
491  return Kratos::make_shared<ConstitutiveModelData>(*this);
492  }
493 
496 
497 
501 
502 
506 
507 
511 
512  static inline void CalculateMaterialParameters(ModelData& rValues)
513  {
514  KRATOS_TRY
515 
516  //material properties
517  const Properties& rProperties = rValues.GetProperties();
518 
519  //if previously computed LameMu / LameLambda / BulkModulus
520  // rValues.MaterialParameters.LameMu = rProperties[LAME_MU];
521  // rValues.MaterialParameters.LameLambda = rProperties[LAME_LAMBDA];
522  // rValues.MaterialParameters.BulkModulus = rProperties[BULK_MODULUS];
523 
524  // compute material properties
525 
526  // const double& YoungModulus = rProperties[YOUNG_MODULUS];
527  // const double& PoissonCoefficient = rProperties[POISSON_RATIO];
528 
529  // temperature dependent parameters:
530 
531  if( rValues.HasPropertiesLayout() )
532  {
533  const PropertiesLayout& rPropertiesLayout = rValues.GetPropertiesLayout();
534 
535  rPropertiesLayout.GetValue(YOUNG_MODULUS, rValues.MaterialParameters.YoungModulus);
536  rPropertiesLayout.GetValue(POISSON_RATIO, rValues.MaterialParameters.PoissonCoefficient);
537  }
538  else{
539 
540  ConstitutiveLawData& rConstitutiveLawData = rValues.rConstitutiveLawData();
541  if( rProperties.HasTable(TEMPERATURE,YOUNG_MODULUS) ){
542  const Table<double>& YoungModulusTable = rProperties.GetTable(TEMPERATURE,YOUNG_MODULUS);
543  rValues.MaterialParameters.YoungModulus = YoungModulusTable[rConstitutiveLawData.Temperature];
544  }
545  else{
546  rValues.MaterialParameters.YoungModulus = rProperties[YOUNG_MODULUS];
547  }
548 
549  if( rProperties.HasTable(TEMPERATURE,POISSON_RATIO) ){
550  const Table<double>& PoissonCoefficientTable = rProperties.GetTable(TEMPERATURE,POISSON_RATIO);
551  rValues.MaterialParameters.PoissonCoefficient = PoissonCoefficientTable[rConstitutiveLawData.Temperature];
552  }
553  else{
554  rValues.MaterialParameters.PoissonCoefficient = rProperties[POISSON_RATIO];
555  }
556 
557  }
558 
561 
562  //rValues.MaterialParameters.BulkModulus = rValues.MaterialParameters.LameLambda + (2.0/3.0) * rValues.MaterialParameters.LameMu;
563 
564  //hyperelastic model parameters
565  if( rProperties.Has(MATERIAL_PARAMETERS) ){
566  Vector ModelParameters = rProperties[MATERIAL_PARAMETERS];
567  for(unsigned int i=0; i<ModelParameters.size(); i++)
568  {
569  rValues.MaterialParameters.ModelParameters.push_back(ModelParameters[i]);
570  }
571  }
572  else{
573 
574  if( rProperties.Has(C10) ){
575  rValues.MaterialParameters.ModelParameters.push_back(rProperties[C10]);
576 
577  //make neo-hookean consistent with the parameters:
578  rValues.MaterialParameters.LameMu = 2.0 * rProperties[C10];
579  }
580 
581  if( rProperties.Has(C20) )
582  rValues.MaterialParameters.ModelParameters.push_back(rProperties[C20]);
583 
584  if( rProperties.Has(C30) )
585  rValues.MaterialParameters.ModelParameters.push_back(rProperties[C30]);
586 
587  }
588 
589  if( rProperties.Has(BULK_MODULUS) ){
590  rValues.MaterialParameters.BulkModulus = rProperties[BULK_MODULUS];
591 
592  //make neo-hookean consistent with the parameters:
594  }
595  else{
597  }
598 
599  //std::cout<<" Mu "<<rValues.MaterialParameters.LameMu<<" Lambda "<<rValues.MaterialParameters.LameLambda<<" BulkModulus "<<rValues.MaterialParameters.BulkModulus<<std::endl;
600 
601 
602  //infinitessimal strain (plasticity mu_bar := mu)
604 
605  //std::cout<<" B: Mu "<<rValues.MaterialParameters.LameMu<<" Lambda "<<rValues.MaterialParameters.LameLambda<<" BulkModulus "<<rValues.MaterialParameters.BulkModulus<<std::endl;
606 
607  KRATOS_CATCH(" ")
608  }
609 
613 
614 
618 
620  virtual std::string Info() const
621  {
622  std::stringstream buffer;
623  buffer << "ConstitutiveModelData";
624  return buffer.str();
625  }
626 
628  virtual void PrintInfo(std::ostream& rOStream) const
629  {
630  rOStream << "ConstitutiveModelData";
631  }
632 
634  virtual void PrintData(std::ostream& rOStream) const
635  {
636  rOStream << "ConstitutiveModelData Data";
637  }
638 
639 
643 
644 
646 
647  protected:
650 
651 
655 
656 
660 
661 
665 
666 
670 
671 
675 
676 
680 
681 
683 
684  private:
685 
688 
689 
693 
694 
698 
701 
705 
706 
710 
711 
715 
716 
720 
722 
723  }; // Class ConstitutiveModelData
724 
726 
729 
730 
734 
735 
737  inline std::istream& operator >> (std::istream& rIStream,
738  ConstitutiveModelData& rThis);
739 
741  inline std::ostream& operator << (std::ostream& rOStream,
742  const ConstitutiveModelData& rThis)
743  {
744  rThis.PrintInfo(rOStream);
745  rOStream <<" : " << std::endl;
746  rThis.PrintData(rOStream);
747 
748  return rOStream;
749  }
751 
753 
754 } // namespace Kratos.
755 
756 #endif // KRATOS_CONSTITUTIVE_MODEL_DATA_H_INCLUDED defined
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Short class definition.
Definition: constitutive_model_data.hpp:54
KRATOS_DEFINE_LOCAL_FLAG(STRESS_COMPUTED)
StressMeasureType
Definition: constitutive_model_data.hpp:83
ConstitutiveModelData()
Default constructor.
Definition: constitutive_model_data.hpp:483
KRATOS_DEFINE_LOCAL_FLAG(STRAIN_COMPUTED)
KRATOS_DEFINE_LOCAL_FLAG(UPDATE_INTERNAL_VARIABLES)
virtual ~ConstitutiveModelData()
Destructor.
Definition: constitutive_model_data.hpp:495
KRATOS_DEFINE_LOCAL_FLAG(RETURN_MAPPING_COMPUTED)
virtual std::string Info() const
Turn back information as a string.
Definition: constitutive_model_data.hpp:620
static void CalculateMaterialParameters(ModelData &rValues)
Definition: constitutive_model_data.hpp:512
std::size_t SizeType
Definition: constitutive_model_data.hpp:60
KRATOS_DEFINE_LOCAL_FLAG(PLASTIC_REGION)
KRATOS_DEFINE_LOCAL_FLAG(IMPLEX_ACTIVE)
KRATOS_DEFINE_LOCAL_FLAG(PLASTIC_RATE_REGION)
StrainMeasureType
Definition: constitutive_model_data.hpp:75
ConstitutiveModelData::Pointer Clone() const
Clone.
Definition: constitutive_model_data.hpp:489
KRATOS_DEFINE_LOCAL_FLAG(CONSTITUTIVE_MATRIX_COMPUTED)
ConstitutiveModelData(ConstitutiveModelData const &rOther)
Copy constructor.
Definition: constitutive_model_data.hpp:486
virtual void PrintInfo(std::ostream &rOStream) const
Print information about this object.
Definition: constitutive_model_data.hpp:628
const unsigned int(*)[2] VoigtIndexType
Definition: constitutive_model_data.hpp:59
virtual void PrintData(std::ostream &rOStream) const
Print object's data.
Definition: constitutive_model_data.hpp:634
KRATOS_CLASS_POINTER_DEFINITION(ConstitutiveModelData)
Pointer definition of ConstitutiveModelData.
Definition: flags.h:58
Definition: amatrix_interface.h:41
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
PropertiesLayout.
Definition: properties_layout.hpp:51
void GetValue(const TVariableType &rVariable, typename TVariableType::Type &rValue) const
Definition: properties_layout.hpp:139
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
REACTION_CHECK_STIFFNESS_FACTOR int
Definition: contact_structural_mechanics_application_variables.h:75
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
integer i
Definition: TensorModule.f:17
Definition: constitutive_model_data.hpp:362
double TotalDeformationDet
Definition: constitutive_model_data.hpp:370
StrainMeasureType StrainMeasure
Definition: constitutive_model_data.hpp:374
double Pressure
Definition: constitutive_model_data.hpp:366
double Temperature
Definition: constitutive_model_data.hpp:367
MatrixType TotalDeformationMatrix
Definition: constitutive_model_data.hpp:378
double DeltaDeformationDet
Definition: constitutive_model_data.hpp:369
double CharacteristicSize
Definition: constitutive_model_data.hpp:368
StressMeasureType StressMeasure
Definition: constitutive_model_data.hpp:373
MatrixType DeltaDeformationMatrix
Definition: constitutive_model_data.hpp:377
Definition: constitutive_model_data.hpp:92
const double & GetLameMu() const
Definition: constitutive_model_data.hpp:111
double LameMuBar
Definition: constitutive_model_data.hpp:99
std::vector< double > ModelParameters
Definition: constitutive_model_data.hpp:104
double LameLambda
Definition: constitutive_model_data.hpp:100
double YoungModulus
Definition: constitutive_model_data.hpp:97
const double & GetYoungModulus() const
Definition: constitutive_model_data.hpp:110
double LameMu
Definition: constitutive_model_data.hpp:98
const double & GetLameMuBar() const
Definition: constitutive_model_data.hpp:112
double BulkModulus
Definition: constitutive_model_data.hpp:101
const double & GetBulkModulus() const
Definition: constitutive_model_data.hpp:114
const double & GetLameLambda() const
Definition: constitutive_model_data.hpp:113
double PoissonCoefficient
Definition: constitutive_model_data.hpp:96
const std::vector< double > & GetModelParameters() const
Definition: constitutive_model_data.hpp:116
const double & GetPoissonCoefficient() const
Definition: constitutive_model_data.hpp:109
Definition: constitutive_model_data.hpp:383
void SetVoigtIndexTensor(VoigtIndexType rIndexVoigtTensor)
Definition: constitutive_model_data.hpp:414
const StrainMeasureType & GetStrainMeasure() const
Definition: constitutive_model_data.hpp:453
const ConstitutiveLawData & GetConstitutiveLawData() const
Definition: constitutive_model_data.hpp:458
void SetPropertiesLayout(PropertiesLayout::Pointer pPropertiesLayout)
Definition: constitutive_model_data.hpp:410
const PropertiesLayout & GetPropertiesLayout() const
Definition: constitutive_model_data.hpp:433
void SetDoubleVariableData(const Variable< double > &rVariable, double &rValue)
Definition: constitutive_model_data.hpp:417
void SetArray3VariableData(const Variable< array_1d< double, 3 > > &rVariable, array_1d< double, 3 > &rValue)
Definition: constitutive_model_data.hpp:420
const double & GetTemperature() const
Definition: constitutive_model_data.hpp:447
const double & GetPressure() const
Definition: constitutive_model_data.hpp:446
void SetVectorVariableData(const Variable< Vector > &rVariable, Vector &rValue)
Definition: constitutive_model_data.hpp:418
ConstitutiveLawData & rConstitutiveLawData()
Definition: constitutive_model_data.hpp:440
const MatrixType & GetDeltaDeformationMatrix() const
Definition: constitutive_model_data.hpp:455
void SetStrainMeasure(StrainMeasureType Measure)
Definition: constitutive_model_data.hpp:424
const Properties & GetProperties() const
Definition: constitutive_model_data.hpp:431
void SetStressMeasure(StressMeasureType Measure)
Definition: constitutive_model_data.hpp:423
void SetProcessInfo(const ProcessInfo &rProcessInfo)
Definition: constitutive_model_data.hpp:412
void SetIntVariableData(const Variable< int > &rVariable, int &rValue)
Definition: constitutive_model_data.hpp:416
const ProcessInfo & GetProcessInfo() const
Definition: constitutive_model_data.hpp:435
VariableValueData InternalVariable
Definition: constitutive_model_data.hpp:405
const MaterialData & GetMaterialParameters() const
Definition: constitutive_model_data.hpp:462
void SetArray6VariableData(const Variable< array_1d< double, 6 > > &rVariable, array_1d< double, 6 > &rValue)
Definition: constitutive_model_data.hpp:421
const double & GetCharacteristicSize() const
Definition: constitutive_model_data.hpp:450
MaterialData & rMaterialParameters()
Definition: constitutive_model_data.hpp:443
const StressMeasureType & GetStressMeasure() const
Definition: constitutive_model_data.hpp:452
const MatrixType & GetStrainMatrix() const
Definition: constitutive_model_data.hpp:460
void SetOptions(const Flags &rOptions)
Definition: constitutive_model_data.hpp:408
void SetProperties(const Properties &rProperties)
Definition: constitutive_model_data.hpp:409
bool HasPropertiesLayout() const
Definition: constitutive_model_data.hpp:427
const double & GetDeltaDeformationDet() const
Definition: constitutive_model_data.hpp:448
const Flags & GetOptions() const
Definition: constitutive_model_data.hpp:430
const SizeType & GetVoigtSize() const
Definition: constitutive_model_data.hpp:436
const double & GetTotalDeformationDet() const
Definition: constitutive_model_data.hpp:449
const MatrixType & GetTotalDeformationMatrix() const
Definition: constitutive_model_data.hpp:456
MatrixType StressMatrix
Definition: constitutive_model_data.hpp:401
MatrixType & rStressMatrix()
Definition: constitutive_model_data.hpp:442
const VoigtIndexType & GetVoigtIndexTensor() const
Definition: constitutive_model_data.hpp:437
MatrixType & rStrainMatrix()
Definition: constitutive_model_data.hpp:441
void SetMatrixVariableData(const Variable< Matrix > &rVariable, Matrix &rValue)
Definition: constitutive_model_data.hpp:419
void SetVoigtSize(const SizeType &rVoigtSize)
Definition: constitutive_model_data.hpp:413
Flags State
Definition: constitutive_model_data.hpp:399
MaterialData MaterialParameters
Definition: constitutive_model_data.hpp:403
MatrixType StrainMatrix
Definition: constitutive_model_data.hpp:402
const MatrixType & GetStressMatrix() const
Definition: constitutive_model_data.hpp:461
Definition: constitutive_model_data.hpp:148
void SetValue(const Variable< array_1d< double, 3 > > &rVariable, array_1d< double, 3 > &rValue)
Definition: constitutive_model_data.hpp:342
bool GetVariableValue(VariableValue< T > &rVariableValue)
Definition: constitutive_model_data.hpp:251
~VariableValueData()
Definition: constitutive_model_data.hpp:176
void SetMatrixVariableValue(const Variable< Matrix > &rVariable, Matrix &rValue)
Definition: constitutive_model_data.hpp:228
void SetValue(const Variable< int > &rVariable, int &rValue)
Definition: constitutive_model_data.hpp:313
void SetArray6VariableValue(const Variable< array_1d< double, 6 > > &rVariable, array_1d< double, 6 > &rValue)
Definition: constitutive_model_data.hpp:242
void SetValue(const Variable< Vector > &rVariable, Vector &rValue)
Definition: constitutive_model_data.hpp:327
void SetVectorVariableValue(const Variable< Vector > &rVariable, Vector &rValue)
Definition: constitutive_model_data.hpp:221
VariableValueData()
Definition: constitutive_model_data.hpp:164
void SetArray3VariableValue(const Variable< array_1d< double, 3 > > &rVariable, array_1d< double, 3 > &rValue)
Definition: constitutive_model_data.hpp:235
void SetValue(const Variable< Matrix > &rVariable, Matrix &rValue)
Definition: constitutive_model_data.hpp:334
void SetIntVariableValue(const Variable< int > &rVariable, int &rValue)
Definition: constitutive_model_data.hpp:207
void SetValue(const Variable< array_1d< double, 6 > > &rVariable, array_1d< double, 6 > &rValue)
Definition: constitutive_model_data.hpp:349
void SetValue(const Variable< double > &rVariable, double &rValue)
Definition: constitutive_model_data.hpp:320
void SetDoubleVariableValue(const Variable< double > &rVariable, double &rValue)
Definition: constitutive_model_data.hpp:214
Definition: constitutive_model_data.hpp:123
void SetVariable(const Variable< T > &rVariable)
Definition: constitutive_model_data.hpp:137
void SetValue(T &rValue)
Definition: constitutive_model_data.hpp:142
void SetVariableValue(const Variable< T > &rVariable, T &rValue)
Definition: constitutive_model_data.hpp:136
VariableValue()
Definition: constitutive_model_data.hpp:132
VariableValue(const Variable< T > &rVariable, T &rValue)
Definition: constitutive_model_data.hpp:133
bool HasVariable(const Variable< T > &rVariable) const
Definition: constitutive_model_data.hpp:140