11 #include "smith/physics/materials/green_saint_venant_thermoelastic.hpp"
63 template <
typename DispGradType,
typename TempType,
typename TempGradType,
typename YoungsType,
typename ConductType,
64 typename CoupleType,
int dim>
67 CoupleType ScaleAlpha)
const
69 auto E =
E0 * get<0>(DeltaE);
70 auto kappa =
kappa0 + get<0>(DeltaKappa);
71 auto alpha =
alpha0 * get<0>(ScaleAlpha);
73 auto K = E / (3.0 * (1.0 - 2.0 *
nu));
74 auto G = 0.5 * E / (1.0 +
nu);
75 static constexpr
auto I = Identity<dim>();
78 const auto trEg =
tr(Eg);
81 const auto S = 2.0 * G *
dev(Eg) + K * (trEg - 3.0 * alpha * (theta -
theta_ref)) * I;
82 const auto Piola =
dot(F, S);
85 const auto s0 = -3.0 * K * alpha * theta * (trEg - state.
strain_trace);
88 const auto q0 = -kappa * grad_theta;
Thermomechanics helper data types.
auto greenStrain(const tensor< T, dim, dim > &grad_u)
Compute Green's strain from the displacement gradient.
mfem::future::tuple< T... > tuple
Expose MFEM tuple in the Smith namespace.
constexpr SMITH_HOST_DEVICE auto dev(const tensor< T, n, n > &A)
Calculates the deviator of a matrix (rank-2 tensor)
constexpr SMITH_HOST_DEVICE auto get_value(const T &arg)
return the "value" part from a given type. For non-dual types, this is just the identity function
constexpr SMITH_HOST_DEVICE auto tr(const isotropic_tensor< T, m, m > &I)
calculate the trace of an isotropic tensor
constexpr SMITH_HOST_DEVICE auto dot(const isotropic_tensor< S, m, m > &I, const tensor< T, m, n... > &A)
dot product between an isotropic and (nonisotropic) tensor
Arbitrary-rank tensor class.
internal variables for the material model
double strain_trace
trace of Green-Saint Venant strain tensor
Green-Saint Venant isotropic thermoelastic material model.
double E0
Young's modulus.
double theta_ref
datum temperature for thermal expansion
double alpha0
reference value of thermal expansion coefficient
double kappa0
thermal conductivity
auto operator()(State &state, const tensor< DispGradType, dim, dim > &grad_u, TempType theta, const tensor< TempGradType, dim > &grad_theta, YoungsType DeltaE, ConductType DeltaKappa, CoupleType ScaleAlpha) const
Evaluate constitutive variables for thermomechanics.
double C_v
volumetric heat capacity
double nu
Poisson's ratio.
static constexpr int numParameters()
The number of parameters in the model.
Implementation of the tensor class used by Functional.
Smith tuple compatibility layer over mfem::future::tuple.