Advanced Multi-Physics (AMP)
On-Line Documentation
PericElastoViscoPlasticModel.h
Go to the documentation of this file.
1#ifndef included_AMP_PericElastoViscoPlasticModel
2#define included_AMP_PericElastoViscoPlasticModel
3
4#include "AMP/operators/mechanics/MechanicsMaterialModel.h"
5
6#include <memory>
7#include <vector>
8
9
10namespace AMP::Operator {
11
13{
14public:
15 explicit PericElastoViscoPlasticModel( std::shared_ptr<MechanicsMaterialModelParameters> );
16
18
19 void getConstitutiveMatrix( double *& ) override;
20
21 void getConstitutiveMatrixUpdatedLagrangian( double[6][6], double[3][3] ) override;
22
23 void getStressForUpdatedLagrangian( double currentStress[6] ) override
24 {
25 for ( int i = 0; i < 6; i++ ) {
26 currentStress[i] = d_tmp1Stress[( 6 * d_gaussPtCnt ) + i];
27 }
28 }
29
30 void getInternalStress( const std::vector<std::vector<double>> &, double *& ) override;
31
33 const std::vector<std::vector<double>> &, double *&, double[3][3], double[3][3], double );
34
35 void getEffectiveStress( double *& ) override;
36
37 void getEquivalentStrain( double *& ) override;
38
39 void preLinearAssembly() override { d_gaussPtCnt = 0; }
40
42
43 void preNonlinearInit( bool, bool ) override;
44
45 void nonlinearInitGaussPointOperation( double ) override;
46
47 void preNonlinearAssembly() override
48 {
50 d_gaussPtCnt = 0;
51 }
52
53 void postNonlinearAssembly() override;
54
56
57 void preNonlinearReset() override { d_gaussPtCnt = 0; }
58
60
61 void nonlinearResetGaussPointOperation( const std::vector<std::vector<double>> & ) override;
62
63 void nonlinearResetGaussPointOperation( const std::vector<std::vector<double>> &,
64 double[3][3],
65 double[3][3] );
66
67 void globalReset() override;
68
69 void postNonlinearReset() override;
70
71 void preNonlinearJacobian() override { d_gaussPtCnt = 0; }
72
74
75 void nonlinearJacobianGaussPointOperation( const std::vector<std::vector<double>> & ) override;
76
77 void nonlinearJacobianGaussPointOperation( const std::vector<std::vector<double>> &,
78 double[3][3],
79 double[3][3] );
80
81protected:
82 void radialReturn( const double *stra_np1,
83 double *stre_np1,
84 double *ystre_np1,
85 double *eph_bar_plas_np1,
86 const std::vector<std::vector<double>> &strain,
87 double R_n[3][3],
88 double R_np1[3][3] );
89
91
92 double calculate_E1( const double, const double, const double, const double );
93
94 double calculate_dE1_dlambda( const double, const double, const double, const double );
95
97
99
101
102 std::vector<double> d_E;
103
104 std::vector<double> d_Nu;
105
106 std::vector<double> d_detULF;
107
108 double default_E;
109
111
112 double d_H;
113
114 double d_Sig0;
115
117
119
120 double d_Epsilon;
121
123
124 unsigned int
127 unsigned int Plastic_Gauss_Point;
130 unsigned int d_gaussPtCnt;
131
133
134 std::vector<double> d_EquilibriumStress;
135
136 std::vector<double> d_EquilibriumStrain;
137
138 std::vector<double> d_EquilibriumYieldStress;
139
141
142 std::vector<double> d_Lambda;
143
144 std::vector<int> d_ElPl;
145
146 std::vector<double> d_tmp1Stress;
147
148 std::vector<double> d_tmp1Strain;
149
150 std::vector<double> d_tmp1YieldStress;
151
152 std::vector<double> d_tmp1EffectivePlasticStrain;
153
154 std::vector<double> d_tmp2Stress;
155
156 std::vector<double> d_tmp2YieldStress;
157
158 std::vector<double> d_tmp2EffectivePlasticStrain;
159
161
163
164private:
165};
166} // namespace AMP::Operator
167
168#endif
void preNonlinearInit(bool, bool) override
void getConstitutiveMatrix(double *&) override
void nonlinearInitGaussPointOperation(double) override
void nonlinearResetGaussPointOperation(const std::vector< std::vector< double > > &, double[3][3], double[3][3])
void getConstitutiveMatrixUpdatedLagrangian(double[6][6], double[3][3]) override
PericElastoViscoPlasticModel(std::shared_ptr< MechanicsMaterialModelParameters >)
double calculate_dE1_dlambda(const double, const double, const double, const double)
void nonlinearJacobianGaussPointOperation(const std::vector< std::vector< double > > &) override
double calculate_E1(const double, const double, const double, const double)
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 getEquivalentStrain(double *&) override
void getInternalStress(const std::vector< std::vector< double > > &, double *&) override
void getInternalStress(const std::vector< std::vector< double > > &, double *&, double[3][3], double[3][3], double)
void nonlinearResetGaussPointOperation(const std::vector< std::vector< double > > &) override
void nonlinearJacobianGaussPointOperation(const std::vector< std::vector< double > > &, double[3][3], double[3][3])
void getEffectiveStress(double *&) override
void getStressForUpdatedLagrangian(double currentStress[6]) 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