40struct IncompressibleNeoHookeanData :
public MaterialData
42 IncompressibleNeoHookeanData(
43 MaterialType
const & type,
44 double const & shear_modulus,
45 double const & bulk_modulus,
46 Type2D
const & type_two_dim,
47 std::shared_ptr<dealii::Function<dim>>
const shear_modulus_function =
nullptr)
49 shear_modulus(shear_modulus),
50 shear_modulus_function(shear_modulus_function),
51 bulk_modulus(bulk_modulus),
52 type_two_dim(type_two_dim)
57 std::shared_ptr<dealii::Function<dim>> shear_modulus_function;
64class IncompressibleNeoHookean :
public Material<dim, Number>
67 typedef typename Material<dim, Number>::VectorType VectorType;
68 typedef typename Material<dim, Number>::Range Range;
69 typedef typename Material<dim, Number>::IntegratorCell IntegratorCell;
71 typedef typename Material<dim, Number>::scalar scalar;
72 typedef typename Material<dim, Number>::tensor tensor;
73 typedef typename Material<dim, Number>::symmetric_tensor symmetric_tensor;
75 IncompressibleNeoHookean(dealii::MatrixFree<dim, Number>
const & matrix_free,
76 unsigned int const dof_index,
77 unsigned int const quad_index,
110 second_piola_kirchhoff_stress(tensor
const & gradient_displacement,
111 unsigned int const cell,
112 unsigned int const q)
const final;
115 second_piola_kirchhoff_stress_displacement_derivative(tensor
const & gradient_increment,
116 tensor
const & deformation_gradient,
117 unsigned int const cell,
118 unsigned int const q)
const final;
125 cell_loop_set_coefficients(dealii::MatrixFree<dim, Number>
const & matrix_free,
127 VectorType
const & src,
128 Range
const & cell_range)
const;
130 unsigned int dof_index;
131 unsigned int quad_index;
135 mutable scalar shear_modulus_stored;
138 bool shear_modulus_is_variable;
141 Number
static constexpr one_third = 1.0 / 3.0;