Advanced Multi-Physics (AMP)
On-Line Documentation
ThermalStrainMaterialModel.h
Go to the documentation of this file.
1#ifndef included_AMP_ThermalStrainMaterialModel
2#define included_AMP_ThermalStrainMaterialModel
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 ThermalStrainMaterialModel( 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 getExternalStress( double *& ) override;
31
32 void getInternalStress( const std::vector<std::vector<double>> &, double *& ) override;
33
34 void getInternalStress_UL( const std::vector<std::vector<double>> &,
35 double *&,
36 double[3][3],
37 double[3][3],
38 double ) override;
39
40 void preLinearAssembly() override { d_gaussPtCnt = 0; }
41
43
44 void preNonlinearInit( bool, bool ) override;
45
46 void nonlinearInitGaussPointOperation( double ) override;
47
48 void preNonlinearAssembly() override { d_gaussPtCnt = 0; }
49
51
52 void preNonlinearReset() override { d_gaussPtCnt = 0; }
53
55
56 void nonlinearResetGaussPointOperation( const std::vector<std::vector<double>> & ) override;
57
58 void nonlinearResetGaussPointOperation_UL( const std::vector<std::vector<double>> &,
59 double[3][3],
60 double[3][3] ) override;
61
62 void globalReset() override;
63
64 void postNonlinearReset() override;
65
66 void preNonlinearJacobian() override { d_gaussPtCnt = 0; }
67
69
70 void nonlinearJacobianGaussPointOperation( const std::vector<std::vector<double>> & ) override;
71
72 void nonlinearJacobianGaussPointOperation_UL( const std::vector<std::vector<double>> &,
73 double[3][3],
74 double[3][3] ) override;
75
76protected:
77 void Thermal_Strain_Gauss_Point( const double *stra_np1,
78 const double Temp,
79 double *stre_np1,
80 const std::vector<std::vector<double>> &strain,
81 double R_n[3][3],
82 double R_np1[3][3] );
83
84 void computeEvalv( const std::vector<std::vector<double>> &strain );
85
86 void constructConstitutiveMatrix( const double, const double );
87
88 void constructConstitutiveMatrixUpdatedLagrangian( const double, const double );
89
91
93
95
96 // Thermal expansion coefficient.
97 std::vector<double> d_alpha;
98
99 std::vector<double> d_E;
100
101 std::vector<double> d_Nu;
102
103 double default_E;
104
106
108
109 unsigned int d_gaussPtCnt;
110
112
114
115 std::vector<double> d_EquilibriumStress;
116
117 std::vector<double> d_EquilibriumStrain;
118
119 std::vector<double> d_EquilibriumTemperature;
120
121 std::vector<double> d_tmp1Stress;
122
123 std::vector<double> d_tmp1Strain;
124
125 std::vector<double> d_tmp1Temperature;
126
127 std::vector<double> d_detULF;
128
130
132
133 // If Source then TRUE, if Material_Model then FALSE
135
136private:
137};
138} // namespace AMP::Operator
139
140#endif
void constructConstitutiveMatrix(const double, const double)
ThermalStrainMaterialModel(std::shared_ptr< MechanicsMaterialModelParameters >)
void nonlinearJacobianGaussPointOperation(const std::vector< std::vector< double > > &) override
void getInternalStress(const std::vector< std::vector< double > > &, double *&) override
void nonlinearInitGaussPointOperation(double) override
void preNonlinearInit(bool, bool) override
void getExternalStress(double *&) override
void constructConstitutiveMatrixUpdatedLagrangian(const double, const double)
void getInternalStress_UL(const std::vector< std::vector< double > > &, double *&, double[3][3], double[3][3], double) override
void nonlinearResetGaussPointOperation_UL(const std::vector< std::vector< double > > &, double[3][3], double[3][3]) override
void computeEvalv(const std::vector< std::vector< double > > &strain)
void getConstitutiveMatrixUpdatedLagrangian(double[6][6], double[3][3]) override
void getStressForUpdatedLagrangian(double currentStress[6]) override
void nonlinearJacobianGaussPointOperation_UL(const std::vector< std::vector< double > > &, double[3][3], double[3][3]) override
void nonlinearResetGaussPointOperation(const std::vector< std::vector< double > > &) override
void Thermal_Strain_Gauss_Point(const double *stra_np1, const double Temp, double *stre_np1, const std::vector< std::vector< double > > &strain, double R_n[3][3], double R_np1[3][3])
void getConstitutiveMatrix(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