Presentation is loading. Please wait.

Presentation is loading. Please wait.

Reading a constitutive law Nelson Lafontaine

Similar presentations


Presentation on theme: "Reading a constitutive law Nelson Lafontaine"— Presentation transcript:

1 Reading a constitutive law Nelson Lafontaine

2 Outlook Definition Element Level Structure and main methods
Reading a constitutive law Examples

3 Constitutive Law Definition Matematical Models
Fysical and fenomenological Termodynamics Principles

4 Constitutive Law Each element knows the kinematic. Element Level
Deformation Gradient Rate of Deformation Properties Geometry * Gauss Points * Shape Function Element Level

5 Constitutive Law Element Level
Each element has its own constitutive law by each gauss point. Usually constitutive laws is expresed in rate form.

6 Constitutive Law Structure. Base Class Constitutive Law (Base class
Elastic Models (Derivated Class ) Plastic Models (Derivated Class) Other Models Damage Models

7 Constitutive Law Structure
Some Input Data (Is defined by the constructor) Flow Criteria. Properties. Sofening or Hardening Behavior. Main Methods: Called Once Initialize Material. Called in each steps during the each iterations loop of equilibrium Initialize Solution Step. Calculate Material Response. Finalize Solution Step. Get Values. Set Values.

8 Constitutive Law Structure. A 2D J2 perfect plastic example.
Parameter: Member of class double mE : Young Modulus double mNU : Poisson Ratio double mDE : Density mpFluencyCriteria : The flow Criteria (Von Mises ) Plastic Strain * Current * New Accumulated plastic strain Disipated Energy

9 Constitutive Law Structure. A 2D plasticity exemple
Initialize Material: Called during the initialization of the elements. Model requires any initialization. Internal variables and parameters. void Plasticity2D::InitializeMaterial( const Properties& props, const GeometryType& geom, const Vector& ShapeFunctionsValues ) { mE = (*mpProperties)[YOUNG_MODULUS]; mNU = (*mpProperties)[POISSON_RATIO]; mDE = (*mpProperties)[DENSITY]; mpFluencyCriteria->InitializeMaterial(*mpProperties); double he = geom.Length(); } Access to properties. Flow Initialize Access to Geometry and all methods

10 Constitutive Law Structure. A 2D plasticity exemple
Initialize Solution Step: Called prior to each solution step. If any solution step Initialization is required thiis fuction has to be implemented by the derived class. void Plasticity2D::InitializeSolutionStep( const Properties& props, const GeometryType& geom, const Vector& ShapeFunctionsValues , const ProcessInfo& CurrentProcessInfo ) { mpFluencyCriteria->UpdateMaterial(); } Accumulated_plastic_strain_new = Accumulated_plastic_strain_old; Plastic_Strain_New = Plastic_Strain_old;

11 Constitutive Law Structure. A 2D plasticity exemple
Calculate Material Response: This is the basic function for the computation of the material response. This function has to be implemented by each derived class. It made for computing the stress tensor and the tangent stiffnes matrix or aproximation of it.

12 Sometimes it is very difficult to compute
void Plasticity2D::CalculateMaterialResponse( const Vector& StrainVector, const Matrix& DeformationGradient, Vector& StressVector, Matrix& AlgorithmicTangent, const ProcessInfo& CurrentProcessInfo, const Properties& props, const GeometryType& geom, const Vector& ShapeFunctionsValues, bool CalculateStresses, int CalculateTangent, bool SaveInternalVariables) { if (CalculateStresses==true){CalculateStress(StrainVector, StressVector);} if(CalculateTangent==1){CalculateTangentMatrix(StressVector,StrainVector, AlgorithmicTangent);} } Constitutive Equation Integration Sometimes it is very difficult to compute

13 Constitutive Law Finalize Solution Step:
Called to finalize a solution step after the iteration has been completed. If any finalizing steps are required, this function has to be implemented by the derived class. Store the new data and update the state of varibles. void Plasticity2D::FinalizeSolutionStep( const Properties& props, const GeometryType& geom, const Vector& ShapeFunctionsValues , const ProcessInfo& CurrentProcessInfo ) { mpFluencyCriteria->FinalizeSolutionStep(); } Acumulated_plastic_strain_old = Acumulated_plastic_strain_new Plastic_Strain_old = Plastic_Strain_new

14 Constitutive Law Get Values and Set Values: returns or set the value of the specified variable. double& Plasticity2D::GetValue( const Variable<double>& rThisVariable, double& rValue ) { if ( rThisVariable == DAMAGE ) mpFluencyCriteria->GetValue(rThisVariable, rValue); } if ( rThisVariable == YIELD_STRESS) return rValue; void Plasticity2D::SetValue( const Variable<double>& rThisVariable, double& rValue ) mpFluencyCriteria->SetValue(rThisVariable, rValue); mpFluencyCriteria->SetValue(rThisVariable, rValue);

15 Constitutive Law Reading constitutive law When the constitutive
Constructing the constitutive law object Create a material.py file. Import structural Aplication from KratosMultiphysics import * from KratosMultiphysics.StructuralApplication import * PlaneStainMaterial = PlaneStrain(); PlaneStressMaterial = Isotropic2D(); Isotropic3DMaterial = Isotropic3D(); When the constitutive law is exported to python, the creation and call Is very simple.

16 Constitutive Law Reading constitutive law
More complicated constitutive laws Softening Laws : post-peak behavior Cohe_Soft = CohesionSoftening() Friction_Soft = FrictionSoftening() Dilatancy_Soft = DilatancySoftening() Exponential_Soft = ExponentialSoftening() Linear_Soft = LinearSoftening() FLow Criteria : Elastic domain . MohrCoulomb = MohrCoulombYieldFunction(Cohe,Friction, Dilatancy, State.Plane_Strain, PotencialPlastic.Not_Associated) Rankine = IsotropicRankineYieldFunction(Ft, State.Plane_Strain) Combined = ModifiedMohrCoulombYieldFunction(State.Plane_Strain, fluency_1, fluency_2)

17 Constitutive Law Reading constitutive law
More complicated constitutive laws Setting Properties : * Array Properties Model Part: Properties[index] Index = 1, 2, 3 number of properties Properties[index].SetValue(VARIBLE NAME, Value); Exemple: Properties[1].SetValue(DENSITY, 1000) Properties[1].SetValue(CONSTITUTIVE_LAW, Material) Constitutive law : Constructor form exemples. Damage_Material = IsotropicDamage2D(Fluency, Properties[1] ) Brittle_Material = BrittleMaterial2D(Fluency, Properties[1]) Plastic_Material = Plasticity2D(Fluency, Properties[1] )

18 Constitutive Law Material python file example. A body, two material. 1
from KratosMultiphysics import * from KratosMultiphysics.StructuralApplication import * def AssignProperties(Properties): State = State.Plane_Starin Cohe = CohesionSoftening() Friction = FrictionSoftening() Dilatancy = DilatancySoftening() Fluency = MorhCoulombYieldFunction(Cohe,Friction, Dilatancy, State.Plane, PotencialPlastic.Not_Associated) Properties[1].SetValue(DENSITY,2700); Properties[1].SetValue(POISSON_RATIO, 0.25); Properties[1].SetValue(YOUNG_MODULUS, 50E9); Properties[1].SetValue(THICKNESS, 1.00); Properties[1].SetValue(DAMPING_RATIO, 0.0) Properties[1].SetValue(FRACTURE_ENERGY, 50); Properties[1].SetValue(CRUSHING_ENERGY, 500); Properties[1].SetValue(INTERNAL_FRICTION_ANGLE,fric); Properties[1].SetValue(DILATANCY_ANGLE, dil); Properties[1].SetValue(COHESION, cohe); Mat1 = BrittleMaterial2D(fluency_3, Properties[1]) Properties[1].SetValue(CONSTITUTIVE_LAW, Mat1) 1 2 Properties : Array Properties model part.

19 Constitutive Law Material python file example. A body, two material.
Properties[2].SetValue(DENSITY,2700); Properties[2].SetValue(POISSON_RATIO, 0.25); Properties[2].SetValue(YOUNG_MODULUS, 50E9); Properties[2].SetValue(THICKNESS, 1.00); Mat2 = PlainStrain(]) Properties[2].SetValue(CONSTITUTIVE_LAW, Mat2)

20 Constitutive Law Advantages
The call to the constructor is easy and clear. Parameter control. Encapsulation. Can combine different materials, constitutive models, yield criteria and softening behavior without much effort.

21 THANKS


Download ppt "Reading a constitutive law Nelson Lafontaine"

Similar presentations


Ads by Google