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.