# CSMm 2.5.Constitutive Laws

From KratosWiki

(Difference between revisions)

(12 intermediate revisions by 2 users not shown) | |||

Line 1: | Line 1: | ||

+ | [[Category: CSMm 2.Structure]] | ||

[[Category: CSMm 2.5.Constitutive_Laws]] | [[Category: CSMm 2.5.Constitutive_Laws]] | ||

+ | |||

+ | For the moment one can use a simple elastic model or a more complex elasto-plastic model with a VonMisses yield criterion: | ||

+ | |||

+ | |||

+ | *'''Elastic model''' | ||

+ | |||

+ | |||

+ | <math>\boldsymbol{\sigma = D \cdot \epsilon} </math> | ||

+ | |||

+ | |||

+ | *'''Elasto-Plastic model:''' | ||

+ | |||

+ | |||

+ | It uses a '''Von Mises''' yield criterion: plastic yielding starts when the elastic energy stored in changes of shape reaches a critical value. | ||

+ | |||

+ | |||

+ | <!-- The following text is commented--> | ||

+ | |||

+ | <!-- | ||

The constitutive law class is a core class of kratos. Located in kratos/kratos/includes/constitutive_law.h. | The constitutive law class is a core class of kratos. Located in kratos/kratos/includes/constitutive_law.h. | ||

Line 7: | Line 27: | ||

== ConstitutiveLaw derives from Flags == | == ConstitutiveLaw derives from Flags == | ||

− | + | Right now, the flags used are only local flags (options) for the computation of the material response. | |

− | + | * '''Current Avaliable Flags:''' * | |

+ | List of ''LOCAL'' flags, they will be used in the Parameters.mOptions: | ||

+ | '''COMPUTE_STRAIN''' | ||

+ | '''COMPUTE_STRESS''' | ||

− | + | '''COMPUTE_CONSTITUTIVE_TENSOR''' | |

+ | |||

+ | '''ISOCHORIC_TENSOR_ONLY''' | ||

+ | |||

+ | '''VOLUMETRIC_TENSOR_ONLY''' | ||

+ | |||

+ | '''TOTAL_TENSOR''' | ||

+ | |||

+ | '''INITIAL_CONFIGURATION''' | ||

+ | |||

+ | '''LAST_KNOWN_CONFIGURATION''' | ||

+ | |||

+ | '''FINAL_CONFIGURATION''' | ||

+ | |||

+ | '''FINALIZE_MATERIAL_RESPONSE''' | ||

+ | |||

+ | |||

+ | |||

+ | There is also a definition of the strain and stress measures that we are going to work with. | ||

+ | |||

+ | * '''Strain and stress working measures:''' * | ||

+ | |||

+ | |||

+ | They are defined in to two '''''enum''''' arrays: | ||

+ | |||

+ | * '''STRAIN MEASURES:''' * | ||

'''StrainMeasure_Infinitesimal''', Infinitesimal strain measure related to small displacements | '''StrainMeasure_Infinitesimal''', Infinitesimal strain measure related to small displacements | ||

Line 22: | Line 70: | ||

'''StrainMeasure_Almansi''', Almansi strain measure related to the current configuration | '''StrainMeasure_Almansi''', Almansi strain measure related to the current configuration | ||

− | ''true strain'': | + | ''* true strain measures'': |

'''StrainMeasure_Hencky_Material''', Hencky strain measure expressed in the reference configuration | '''StrainMeasure_Hencky_Material''', Hencky strain measure expressed in the reference configuration | ||

Line 28: | Line 76: | ||

'''StrainMeasure_Hencky_Spatial''', Hencky strain measure expressed in the current configuration | '''StrainMeasure_Hencky_Spatial''', Hencky strain measure expressed in the current configuration | ||

− | + | * '''STRESS MEASURES:''' * | |

− | + | ||

'''StressMeasure_PK1''', First Piola-Kirchhoff stress related to the reference configuration non-symmetric | '''StressMeasure_PK1''', First Piola-Kirchhoff stress related to the reference configuration non-symmetric | ||

Line 38: | Line 85: | ||

'''StressMeasure_Cauchy''', Cauchy stress related to the current configuration | '''StressMeasure_Cauchy''', Cauchy stress related to the current configuration | ||

+ | |||

+ | |||

+ | == Constitutive law parameters Struct == | ||

+ | |||

+ | |||

+ | Structure '''''Parameters''''' is used by the element to pass the parameters into the constitutive law: | ||

+ | |||

+ | { | ||

+ | |||

+ | * PARAMETER OPIONS: | ||

+ | |||

+ | '''mOptions''' flags for the current Constitutive Law Parameters (input data) | ||

+ | |||

+ | * KINEMATIC PARAMETERS: | ||

+ | |||

+ | '''mDeterminantF''' copy of the determinant of the Current DeformationGradient (although Current F is also included as a matrix) (input data) | ||

+ | |||

+ | '''mDeterminantF0''' copy of the determinant of the Total DeformationGradient (although Total F0 is also included as a matrix) (input data) | ||

+ | |||

+ | |||

+ | ''--NOTE: Pointers are used only to point to a certain variable, no ''new'' or ''malloc'' can be used for this Parameters--'' | ||

+ | |||

+ | '''mpDeformationGradientF''' pointer to the current deformation gradient (can be an empty matrix if a linear strain measure is used) (input data) | ||

+ | |||

+ | '''mpDeformationGradientF0''' pointer to the total deformation gradient (can be an empty matrix if a linear strain measure is used) (input data) | ||

+ | |||

+ | '''mpStrainVector''' pointer to the current strains (total strains) (input data) (can be also an output with COMPUTE_STRAIN flag) | ||

+ | |||

+ | '''mpStressVector''' pointer to the current stresses (output with COMPUTE_STRESS flag) | ||

+ | |||

+ | '''mpConstitutiveMatrix''' pointer to the material tangent matrix (output with COMPUTE_CONSTITUTIVE_TENSOR flag) | ||

+ | |||

+ | |||

+ | * GEOMETRIC PARAMETERS: | ||

+ | |||

+ | '''mpShapeFunctionsValues''' pointer to the shape functions values in the current integration point (input data) | ||

+ | |||

+ | '''mpShapeFunctionsDerivatives''' pointer to the shape functions derivaties values in the current integration point (input data) | ||

+ | |||

+ | '''mpElementGeometry''' pointer to the element's geometry (input data) | ||

+ | |||

+ | |||

+ | * MATERIAL PROPERTIES: | ||

+ | |||

+ | '''mpMaterialProperties''' pointer to the material Properties object (input data) | ||

+ | |||

+ | |||

+ | * PROCESS PROPERTIES: | ||

+ | |||

+ | '''mpCurrentProcessInfo''' pointer to current ProcessInfo instance (input data) | ||

+ | |||

+ | } | ||

+ | |||

+ | |||

+ | == ConstitutiveLaw Methods == | ||

+ | |||

+ | The constitutive law is evaluated at integration point level. The '''struct ''Parameters''''' must be set and passed to the constitutive law for the material response calculation. | ||

+ | |||

+ | |||

+ | General Method to get the material response in a specific ''StressMeasure'': | ||

+ | |||

+ | '''CalculateMaterialResponse( ''Parameters&'' , ''StressMeasure'' )''' | ||

+ | |||

+ | |||

+ | Specific Methods for the requested stress measures: | ||

+ | |||

+ | '''CalculateMaterialResponsePK1( ''Parameters&'' )''' | ||

+ | |||

+ | '''CalculateMaterialResponsePK2( ''Parameters&'' )''' | ||

+ | |||

+ | '''CalculateMaterialResponseKirchhoff( ''Parameters&'' )''' | ||

+ | |||

+ | '''CalculateMaterialResponseCauchy( ''Parameters&'' )''' | ||

+ | |||

+ | |||

+ | ---- | ||

+ | |||

+ | |||

+ | General Method to finalize the material response in a specific ''StressMeasure'': | ||

+ | |||

+ | '''FinalizeMaterialResponse( ''Parameters&'' , ''StressMeasure'' )''' | ||

+ | |||

+ | |||

+ | Specific Methods for the requested stress measures finalization: | ||

+ | |||

+ | '''FinalizeMaterialResponsePK1( ''Parameters&'' )''' | ||

+ | |||

+ | '''FinalizeMaterialResponsePK2( ''Parameters&'' )''' | ||

+ | |||

+ | '''FinalizeMaterialResponseKirchhoff( ''Parameters&'' )''' | ||

+ | |||

+ | '''FinalizeMaterialResponseCauchy( ''Parameters&'' )''' | ||

+ | |||

+ | --- to be continued | ||

+ | |||

+ | --> |

## Latest revision as of 11:22, 3 October 2013

For the moment one can use a simple elastic model or a more complex elasto-plastic model with a VonMisses yield criterion:

**Elastic model**

**Elasto-Plastic model:**

It uses a **Von Mises** yield criterion: plastic yielding starts when the elastic energy stored in changes of shape reaches a critical value.