20 #ifndef __mast_plate_bending_section_property_h__ 21 #define __mast_plate_bending_section_property_h__ 29 namespace Elasticity {
31 template <
typename ScalarType,
32 typename MaterialType,
33 typename ThicknessType,
51 const ThicknessType& th) {
68 m *= pow(
_th->value(c), 3)/12.;
72 template <
typename ScalarFieldType>
74 const ScalarFieldType &f,
79 typename MaterialType::value_t
85 dm *= pow(
_th->value(c), 3)/12.;
86 m *= pow(
_th->value(c), 2)/4.*
_th->derivative(c, f);
100 template <
typename ScalarFieldType>
102 const ScalarFieldType &f,
108 m(0, 0) = m(1, 1) = (
_material->G_derivative(c, f) *
_th->value(c) +
120 template <
typename ScalarType,
121 typename DensityType,
122 typename ThicknessType,
123 typename ContextType>
138 const ThicknessType& th) {
154 Assert0(_density &&
_th,
"Material and thickness not provided");
156 m = _density->value(c) *
_th->value(c);
160 template <
typename ScalarFieldType>
162 const ScalarFieldType &f,
165 Assert0(_density &&
_th,
"Material and thickness not provided");
167 m = (_density->value(c) *
_th->derivative(c, f) +
168 _density->derivative(c, f) *
_th->value(c));
174 Assert0(_density &&
_th,
"Material and thickness not provided");
176 m = _density->value(c) * pow(
_th->value(c), 3)/12.;
180 template <
typename ScalarFieldType>
182 const ScalarFieldType &f,
185 Assert0(_density &&
_th,
"Material and thickness not provided");
187 m = (_density->derivative(c, f) * pow(
_th->value(c), 3)/12. +
188 _density->value(c) * pow(
_th->value(c), 2)/4. *
_th->derivative(c, f));
205 #endif // __mast_plate_bending_section_property_h__ typename MAST::DeducedScalarType< typename MAST::DeducedScalarType< density_scalar_t, thickness_scalar_t >::type, ScalarType >::type scalar_t
typename DensityType::scalar_t density_scalar_t
typename MaterialType::scalar_t material_scalar_t
void translation_inertia(ContextType &c, scalar_t &m) const
const DensityType & get_density() const
void rotation_inertia_derivative(ContextType &c, const ScalarFieldType &f, scalar_t &m) const
void shear_value(ContextType &c, shear_value_t &m) const
const ThicknessType * _th
typename ThicknessType::scalar_t thickness_scalar_t
void inplane_value(ContextType &c, inplane_value_t &m) const
typename ThicknessType::scalar_t thickness_scalar_t
void inplane_derivative(ContextType &c, const ScalarFieldType &f, inplane_value_t &m) const
const MaterialType * _material
typename Eigen::Matrix< scalar_t, 2, 2 > shear_value_t
const ThicknessType * _th
void set_density_and_thickness(const DensityType &density, const ThicknessType &th)
typename Eigen::Matrix< scalar_t, 3, 3 > inplane_value_t
const ThicknessType & get_thickness() const
PlateInertiaSectionProperty()
#define Assert0(cond, msg)
void rotation_inertia(ContextType &c, scalar_t &m) const
void translation_inertia_derivative(ContextType &c, const ScalarFieldType &f, scalar_t &m) const
void set_material_and_thickness(const MaterialType &material, const ThicknessType &th)
PlateBendingSectionProperty()
const MaterialType & get_material() const
const DensityType * _density
virtual ~PlateInertiaSectionProperty()
typename MAST::DeducedScalarType< typename MAST::DeducedScalarType< material_scalar_t, thickness_scalar_t >::type, ScalarType >::type scalar_t
virtual ~PlateBendingSectionProperty()
const ThicknessType & get_thickness() const
void shear_derivative(ContextType &c, const ScalarFieldType &f, shear_value_t &m) const