1 #include "fe_values_shape_hessian.h" 8 jacobian_inverse = dealii::Tensor<2,dim,double>(fe_values_volume.inverse_jacobian(iquad));
9 const dealii::Tensor<3,dim,double> jacobian_pushed_forward_grad = fe_values_volume.jacobian_pushed_forward_grad(iquad);
11 ref_point = fe_values_volume.get_quadrature().point(iquad);
15 derivative_jacobian_inverse_wrt_phys_q = 0;
16 for(
unsigned int i_phys=0; i_phys<dim; ++i_phys)
18 for(
unsigned int j_ref=0; j_ref<dim; ++j_ref)
20 for(
unsigned int k_phys=0; k_phys<dim; ++k_phys)
22 for(
unsigned int n_phys=0; n_phys<dim; ++n_phys)
24 derivative_jacobian_inverse_wrt_phys_q[j_ref][i_phys][k_phys] -= jacobian_pushed_forward_grad[n_phys][i_phys][k_phys]*jacobian_inverse[j_ref][n_phys];
36 const unsigned int idof,
38 const unsigned int istate,
39 const dealii::FESystem<dim,dim> &fe_ref)
const 41 dealii::Tensor<1,dim,double> shape_grad_ref = fe_ref.shape_grad_component(idof, ref_point, istate);
42 dealii::Tensor<2,dim,double> shape_hessian_ref = fe_ref.shape_grad_grad_component(idof, ref_point, istate);
48 dealii::Tensor<2,dim,double> phys_hessian_term1;
49 for(
unsigned int i_phys=0; i_phys<dim; ++i_phys)
51 for(
unsigned int j_phys=0; j_phys<dim; ++j_phys)
53 for(
unsigned int k_ref=0; k_ref<dim; ++k_ref)
55 for(
unsigned int l_ref=0; l_ref<dim; ++l_ref)
57 phys_hessian_term1[i_phys][j_phys] += jacobian_inverse[k_ref][i_phys] * shape_hessian_ref[k_ref][l_ref] * jacobian_inverse[l_ref][j_phys];
65 dealii::Tensor<2,dim,double> phys_hessian_term2;
66 for(
unsigned int i_phys=0; i_phys<dim; ++i_phys)
68 for(
unsigned int j_phys=0; j_phys<dim; ++j_phys)
70 for(
unsigned int k_ref=0; k_ref<dim; ++k_ref)
72 phys_hessian_term2[i_phys][j_phys] += shape_grad_ref[k_ref] * derivative_jacobian_inverse_wrt_phys_q[k_ref][i_phys][j_phys];
77 dealii::Tensor<2,dim,double> shape_hessian_phys = phys_hessian_term1;
78 shape_hessian_phys += phys_hessian_term2;
79 return shape_hessian_phys;
dealii::Tensor< 2, dim, double > shape_hessian_component(const unsigned int idof, const unsigned int iquad, const unsigned int istate, const dealii::FESystem< dim, dim > &fe_ref) const
Evaluates hessian of shape functions w.r.t. phyical quadrature points.
Files for the baseline physics.
void reinit(const dealii::FEValues< dim, dim > &fe_values_volume, const unsigned int iquad)
Store inverse jacobian and 3rd order tensors which will be the same for a combination of cell/physica...
Class to evaluate hessians of shape functions w.r.t. physical quadrature points.