31#include "../CNumerics.hpp"
32#include "../../../../Common/include/geometry/elements/CElement.hpp"
65 std::unique_ptr<su2double[]>
E_i;
66 std::unique_ptr<su2double[]>
Nu_i;
180 const auto& Sxx = stress[0];
181 const auto& Syy = stress[1];
182 const auto& Sxy = stress[2];
183 const auto& Szz = stress[3];
189 return sqrt(0.5 * (
pow(Sxx - Syy, 2) +
pow(Syy - Szz, 2) +
pow(Szz - Sxx, 2) + 6 * (Sxy * Sxy + Sxz * Sxz + Syz * Syz)));
217 Mu =
E / (2.0*(1.0 +
Nu));
238 template <
typename Mat1,
typename Mat2>
239 void FillBMat(
unsigned short iNode,
const Mat1& GradNi_Mat, Mat2& B_Mat)
const {
241 B_Mat[0][0] = GradNi_Mat[iNode][0];
242 B_Mat[1][1] = GradNi_Mat[iNode][1];
243 B_Mat[2][0] = GradNi_Mat[iNode][1];
244 B_Mat[2][1] = GradNi_Mat[iNode][0];
247 B_Mat[0][0] = GradNi_Mat[iNode][0];
248 B_Mat[1][1] = GradNi_Mat[iNode][1];
249 B_Mat[2][2] = GradNi_Mat[iNode][2];
250 B_Mat[3][0] = GradNi_Mat[iNode][1];
251 B_Mat[3][1] = GradNi_Mat[iNode][0];
252 B_Mat[4][0] = GradNi_Mat[iNode][2];
253 B_Mat[4][2] = GradNi_Mat[iNode][0];
254 B_Mat[5][1] = GradNi_Mat[iNode][2];
255 B_Mat[5][2] = GradNi_Mat[iNode][1];
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Abstract class for defining finite elements.
Definition CElement.hpp:58
Abstract class for computing the tangent matrix and the residual for structural problems.
Definition CFEAElasticity.hpp:44
void Set_DV_Val(unsigned short i_DV, su2double val_DV) final
Set the value of a design variable.
Definition CFEAElasticity.hpp:136
void SetMaterial_Density(unsigned short iVal, su2double val_Rho, su2double val_Rho_DL) final
Set densities, real and for gravity loading purposes.
Definition CFEAElasticity.hpp:112
void Set_ElectricField(unsigned short i_DV, su2double val_EField) override
Set element electric field.
Definition CFEAElasticity.hpp:122
std::unique_ptr< su2double[]> Alpha_i
Thermal expansion coefficient.
Definition CFEAElasticity.hpp:69
su2double ReferenceTemperature
Reference temperature for thermal expansion.
Definition CFEAElasticity.hpp:71
std::unique_ptr< su2double[]> DV_Val
For optimization cases, value of the design variables.
Definition CFEAElasticity.hpp:75
static su2double VonMisesStress(unsigned short nDim, const T &stress)
Compute VonMises stress from components Sxx Syy Sxy Szz Sxz Syz.
Definition CFEAElasticity.hpp:178
@ NNODES_2D
Maximum number of nodes for 2D problems.
Definition CFEAElasticity.hpp:51
@ NNODES_3D
Definition CFEAElasticity.hpp:52
std::unique_ptr< su2double[]> Nu_i
Poisson's ratio.
Definition CFEAElasticity.hpp:66
su2double Compute_Averaged_NodalStress(CElement *element_container, const CConfig *config) override
Compute averaged nodal stresses (for post processing).
Definition CFEAElasticity.hpp:171
void Compute_Body_Forces(CElement *element_container, const CConfig *config) final
Compute the nodal inertial loads for an element.
Definition CFEAElasticity.cpp:169
su2double Get_DV_Val(unsigned short i_DV) const final
Get the value of a design variable.
Definition CFEAElasticity.hpp:143
void Compute_Lame_Parameters(void)
Update the Lame parameters (required in AD to account for all dependencies).
Definition CFEAElasticity.hpp:216
su2double ThermalStressTerm
Aux. variable, Relationship between stress and delta T.
Definition CFEAElasticity.hpp:63
su2double Nu
Aux. variable, Poisson's ratio.
Definition CFEAElasticity.hpp:55
std::unique_ptr< su2double[]> Rho_s_DL_i
Structural density (for dead loads).
Definition CFEAElasticity.hpp:68
su2double Mu
Aux. variable, Lame's coeficient.
Definition CFEAElasticity.hpp:60
su2double Rho_s
Aux. variable, Structural density.
Definition CFEAElasticity.hpp:56
su2double Lambda
Aux. variable, Lame's coeficient.
Definition CFEAElasticity.hpp:61
std::unique_ptr< su2double[]> E_i
Young's modulus of elasticity.
Definition CFEAElasticity.hpp:65
bool plane_stress
Checks if we are solving a plane stress case.
Definition CFEAElasticity.hpp:78
void SetMeshElasticProperties(unsigned long iElem, su2double val_E) override
Set the element-based local Young's modulus in mesh problems.
Definition CFEAElasticity.hpp:129
su2double Kappa
Aux. variable, Compressibility constant.
Definition CFEAElasticity.hpp:62
static passivedouble deltaij(unsigned short iVar, unsigned short jVar)
Kronecker delta.
Definition CFEAElasticity.hpp:234
su2double Alpha
Aux. variable, thermal expansion coefficient.
Definition CFEAElasticity.hpp:58
void ReadDV(const CConfig *config)
Read design variables from file.
Definition CFEAElasticity.cpp:275
void Compute_Tangent_Matrix(CElement *element_container, const CConfig *config) override
Build the tangent stiffness matrix of an element.
Definition CFEAElasticity.hpp:164
void SetMaterial_Properties(unsigned short iVal, su2double val_E, su2double val_Nu) final
Set elasticity modulus and Poisson ratio.
Definition CFEAElasticity.hpp:101
virtual void SetElement_Properties(const CElement *element_container, const CConfig *config)
Set element material properties.
Definition CFEAElasticity.cpp:245
void Compute_Mass_Matrix(CElement *element_container, const CConfig *config) final
Build the mass matrix of an element.
Definition CFEAElasticity.cpp:109
unsigned short n_DV
For optimization cases, number of design variables.
Definition CFEAElasticity.hpp:76
virtual void Compute_Constitutive_Matrix(CElement *element_container, const CConfig *config)=0
Compute the constitutive matrix, must be implemented by derived classes.
CFEAElasticity()=default
Default constructor.
su2double Rho_s_DL
Aux. variable, Structural density (for dead loads).
Definition CFEAElasticity.hpp:57
@ DIM_STRAIN_2D
Exx, Eyy, Gxy.
Definition CFEAElasticity.hpp:48
@ DIM_STRAIN_3D
Definition CFEAElasticity.hpp:49
su2double D_Mat[DIM_STRAIN_3D][DIM_STRAIN_3D]
Constitutive matrix - Auxiliary.
Definition CFEAElasticity.hpp:73
bool linear
Checks if we are solving a linear elasticity case.
Definition CFEAElasticity.hpp:79
std::unique_ptr< su2double[]> Rho_s_i
Structural density.
Definition CFEAElasticity.hpp:67
su2double E
Aux. variable, Young's modulus of elasticity.
Definition CFEAElasticity.hpp:54
void FillBMat(unsigned short iNode, const Mat1 &GradNi_Mat, Mat2 &B_Mat) const
Definition CFEAElasticity.hpp:239
Class for defining the numerical methods.
Definition CNumerics.hpp:48
unsigned short nDim
Definition CNumerics.hpp:52
double passivedouble
Definition code_config.hpp:129
passivedouble su2double
Definition code_config.hpp:181
FORCEINLINE ARRAY_T sqrt(const ARRAY_T &x)
Definition special_vectorization.hpp:116
FORCEINLINE ARRAY_T pow(const ARRAY_T &a, const ARRAY_T &b)
Definition special_vectorization.hpp:179