11 #include "serac/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.
constexpr SERAC_HOST_DEVICE auto tr(const isotropic_tensor< T, m, m > &I)
calculate the trace of an isotropic tensor
constexpr SERAC_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
constexpr SERAC_HOST_DEVICE auto dev(const tensor< T, n, n > &A)
Calculates the deviator of a matrix (rank-2 tensor)
constexpr SERAC_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
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 alpha0
reference value of thermal expansion coefficient
double nu
Poisson's ratio.
double C_v
volumetric heat capacity
static constexpr int numParameters()
The number of parameters in the model.
double theta_ref
datum temperature for thermal expansion
double E0
Young's modulus.
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.
This is a class that mimics most of std::tuple's interface, except that it is usable in CUDA kernels ...
Implementation of the tensor class used by Functional.
Implements a std::tuple-like object that works in CUDA kernels.