Advanced Multi-Physics (AMP)
On-Line Documentation
IsotropicElasticModel.h
Go to the documentation of this file.
1#ifndef included_AMP_IsotropicElasticModel
2#define included_AMP_IsotropicElasticModel
3
4#include "AMP/operators/mechanics/MechanicsMaterialModel.h"
5
6#include <memory>
7
8
9namespace AMP::Operator {
10
12{
13public:
14 explicit IsotropicElasticModel( std::shared_ptr<MechanicsMaterialModelParameters> );
15
17
18 void getConstitutiveMatrix( double *& ) override;
19
20 void getConstitutiveMatrixUpdatedLagrangian( double[6][6], double[3][3] ) override;
21
22 void getStressForUpdatedLagrangian( double currentStress[6] ) override
23 {
24 for ( int i = 0; i < 6; i++ ) {
25 // currentStress[i] = d_EquilibriumStress[(6*d_gaussPtCnt) + 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
32 void getInternalStress_UL( const std::vector<std::vector<double>> &,
33 double *&,
34 double[3][3],
35 double[3][3],
36 double ) override;
37
38 void preLinearAssembly() override { d_gaussPtCnt = 0; }
39
41
42 void preNonlinearInit( bool, bool ) override;
43
44 void nonlinearInitGaussPointOperation( double ) override;
45
46 void preNonlinearAssembly() override { d_gaussPtCnt = 0; }
47
49
50 void preNonlinearReset() override { d_gaussPtCnt = 0; }
51
53
54 void nonlinearResetGaussPointOperation( const std::vector<std::vector<double>> & ) override;
55
56 void nonlinearResetGaussPointOperation_UL( const std::vector<std::vector<double>> &,
57 double[3][3],
58 double[3][3] ) override;
59
60 void globalReset() override;
61
62 void postNonlinearReset() override;
63
64 void preNonlinearJacobian() override { d_gaussPtCnt = 0; }
65
67
69 {
70 if ( d_E.empty() ) {
71 return default_E;
72 } else {
73 return d_E[d_gaussPtCnt];
74 }
75 }
76
78 {
79 if ( d_Nu.empty() ) {
80 return default_Nu;
81 } else {
82 return d_Nu[d_gaussPtCnt];
83 }
84 }
85
86 void nonlinearJacobianGaussPointOperation( const std::vector<std::vector<double>> & ) override;
87
88 void nonlinearJacobianGaussPointOperation_UL( const std::vector<std::vector<double>> &,
89 double[3][3],
90 double[3][3] ) override;
91
92protected:
93 void computeEvalv( const std::vector<std::vector<double>> & );
94
95 void calculateStress( const std::vector<std::vector<double>> &, double *& );
96
97 void calculateStress( const std::vector<std::vector<double>> &,
98 double *&,
99 double[3][3],
100 double[3][3] );
101
102 void constructConstitutiveMatrix( const double, const double );
103
104 void constructConstitutiveMatrixUpdatedLagrangian( const double, const double );
105
107
109
111
112 std::vector<double> d_E;
113
114 std::vector<double> d_Nu;
115
116 std::vector<double> d_detULF;
117
118 double default_E;
119
121
122 unsigned int d_gaussPtCnt;
123
125
127
128 std::vector<double> d_EquilibriumStress;
129
130 std::vector<double> d_EquilibriumStrain;
131
132 std::vector<double> d_tmp1Stress;
133
134 std::vector<double> d_tmp1Strain;
135
137
139
140 // FILE *fout;
141
142private:
143};
144} // namespace AMP::Operator
145
146#endif
void nonlinearResetGaussPointOperation(const std::vector< std::vector< double > > &) override
void getConstitutiveMatrix(double *&) override
void getInternalStress(const std::vector< std::vector< double > > &, double *&) override
void nonlinearInitGaussPointOperation(double) override
IsotropicElasticModel(std::shared_ptr< MechanicsMaterialModelParameters >)
void constructConstitutiveMatrixUpdatedLagrangian(const double, const double)
void computeEvalv(const std::vector< std::vector< double > > &)
void preNonlinearInit(bool, bool) override
void getInternalStress_UL(const std::vector< std::vector< double > > &, double *&, double[3][3], double[3][3], double) override
void nonlinearJacobianGaussPointOperation(const std::vector< std::vector< double > > &) override
void nonlinearJacobianGaussPointOperation_UL(const std::vector< std::vector< double > > &, double[3][3], double[3][3]) override
void constructConstitutiveMatrix(const double, const double)
void getStressForUpdatedLagrangian(double currentStress[6]) override
void getConstitutiveMatrixUpdatedLagrangian(double[6][6], double[3][3]) override
void calculateStress(const std::vector< std::vector< double > > &, double *&)
void nonlinearResetGaussPointOperation_UL(const std::vector< std::vector< double > > &, double[3][3], double[3][3]) override
void calculateStress(const std::vector< std::vector< double > > &, double *&, double[3][3], double[3][3])



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