Advanced Multi-Physics (AMP)
On-Line Documentation
VonMisesElastoPlasticModel.h
Go to the documentation of this file.
1#ifndef included_AMP_VonMisesElastoPlasticModel
2#define included_AMP_VonMisesElastoPlasticModel
3
4#include "AMP/operators/mechanics/MechanicsMaterialModel.h"
5
6#include <memory>
7#include <vector>
8
9
10namespace AMP::Operator {
11
12
14{
15public:
16 explicit VonMisesElastoPlasticModel( std::shared_ptr<MechanicsMaterialModelParameters> );
17
19
20 void getConstitutiveMatrix( double *& ) override;
21
22 void getConstitutiveMatrixUpdatedLagrangian( double[6][6], double[3][3] ) override;
23
24 void getStressForUpdatedLagrangian( double currentStress[6] ) override
25 {
26 for ( int i = 0; i < 6; i++ ) {
27 currentStress[i] = d_tmp1Stress[( 6 * d_gaussPtCnt ) + i];
28 }
29 }
30
31 void getInternalStress( const std::vector<std::vector<double>> &, double *& ) override;
32
33 void getInternalStress_UL( const std::vector<std::vector<double>> &,
34 double *&,
35 double[3][3],
36 double[3][3],
37 double ) override;
38
39 void getEffectiveStress( double *& ) override;
40
41 void getEquivalentStrain( double *& ) override;
42
43 void preLinearAssembly() override { d_gaussPtCnt = 0; }
44
46
47 void preNonlinearInit( bool, bool ) override;
48
49 void nonlinearInitGaussPointOperation( double ) override;
50
51 void preNonlinearAssembly() override
52 {
54 d_gaussPtCnt = 0;
55 }
56
57 void postNonlinearAssembly() override;
58
60
61 void preNonlinearReset() override { d_gaussPtCnt = 0; }
62
64
65 void nonlinearResetGaussPointOperation( const std::vector<std::vector<double>> & ) override;
66
67 void nonlinearResetGaussPointOperation_UL( const std::vector<std::vector<double>> &,
68 double[3][3],
69 double[3][3] ) override;
70
71 void globalReset() override;
72
73 void postNonlinearReset() override;
74
75 void preNonlinearJacobian() override { d_gaussPtCnt = 0; }
76
78
79 void nonlinearJacobianGaussPointOperation( const std::vector<std::vector<double>> & ) override;
80
81 void nonlinearJacobianGaussPointOperation_UL( const std::vector<std::vector<double>> &,
82 double[3][3],
83 double[3][3] ) override;
84
86
87 unsigned int getLocalGaussPointCount() { return Total_Gauss_Point; }
88
90 {
91 double Plastic_Fraction = ( (double) Plastic_Gauss_Point ) / ( (double) Total_Gauss_Point );
92 Plastic_Fraction = Plastic_Fraction * 100.0;
93 return Plastic_Fraction;
94 }
95
96protected:
97 void radialReturn( const double *stra_np1,
98 double *stre_np1,
99 double *ystre_np1,
100 double *eph_bar_plas_np1,
101 const std::vector<std::vector<double>> &strain,
102 double R_n[3][3],
103 double R_np1[3][3] );
104
106
108
110
112
113 std::vector<double> d_E;
114
115 std::vector<double> d_Nu;
116
117 std::vector<double> d_detULF;
118
119 double default_E;
120
122
123 double d_H;
124
125 double d_Sig0;
126
128
129 unsigned int
132 unsigned int Plastic_Gauss_Point;
135 unsigned int d_gaussPtCnt;
136
138
139 std::vector<double> d_EquilibriumStress;
140
141 std::vector<double> d_EquilibriumStrain;
142
143 std::vector<double> d_EquilibriumYieldStress;
144
146
147 std::vector<double> d_Lambda;
148
149 std::vector<int> d_ElPl;
150
151 std::vector<double> d_tmp1Stress;
152
153 std::vector<double> d_tmp1Strain;
154
155 std::vector<double> d_tmp1YieldStress;
156
157 std::vector<double> d_tmp1EffectivePlasticStrain;
158
159 std::vector<double> d_tmp2Stress;
160
161 std::vector<double> d_tmp2YieldStress;
162
163 std::vector<double> d_tmp2EffectivePlasticStrain;
164
166
168
169private:
170};
171} // namespace AMP::Operator
172
173#endif
void nonlinearResetGaussPointOperation_UL(const std::vector< std::vector< double > > &, double[3][3], double[3][3]) override
void nonlinearJacobianGaussPointOperation_UL(const std::vector< std::vector< double > > &, double[3][3], double[3][3]) override
void getEffectiveStress(double *&) override
void nonlinearResetGaussPointOperation(const std::vector< std::vector< double > > &) override
void nonlinearJacobianGaussPointOperation(const std::vector< std::vector< double > > &) override
void getConstitutiveMatrix(double *&) override
void getStressForUpdatedLagrangian(double currentStress[6]) override
VonMisesElastoPlasticModel(std::shared_ptr< MechanicsMaterialModelParameters >)
void preNonlinearInit(bool, bool) override
void getEquivalentStrain(double *&) override
void radialReturn(const double *stra_np1, double *stre_np1, double *ystre_np1, double *eph_bar_plas_np1, const std::vector< std::vector< double > > &strain, double R_n[3][3], double R_np1[3][3])
void getInternalStress_UL(const std::vector< std::vector< double > > &, double *&, double[3][3], double[3][3], double) override
void nonlinearInitGaussPointOperation(double) override
void getConstitutiveMatrixUpdatedLagrangian(double[6][6], double[3][3]) override
void getInternalStress(const std::vector< std::vector< double > > &, double *&) override



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:41.
Comments on this page