Hello all,
I am working on implementing some stabilization methods for the
Navier-Stokes equations, these techniques often require the use of the
laplacian of the shape functions. I know I get the hessian of the k'th
shape function at quadratue point q via the following
Tensor<3, dim> hessian_phi = fe_values[velocity_extractor].hessian(k, q);
My question is understanding what does this return, and how to extract the
laplacian from it. Does hessian_phi[ i ][ j ][ k ] = \frac{ \partial
\varphi_{ i } } { \partial x_{ j } \partial x_{ k } }?
If this is the case, is there a way to contract over the last two
components to result in a rank 1 tensor that is the laplacian? My idea was
the following
std::vector< Tensor<1, dim> > laplace_phi_u (dofs_per_cell);
Tensor<3, dim> hessian_phi = fe_values[velocity_extractor].hessian(k, q);
for( int i=0; i<dim; ++i )
laplace_phi_u[ k ][ i ] = trace( hessian_phi[ i ] )
This doesn't work, because at runtime it tells me that only 0 assignment is
allowed.
I've also seen that I can use shape_hessian_component since I am using
standard Q2-Q1 elements,
int component_i = fe.system_to_component( k ).first;
Tensor<2, dim> hessian_phi = fe_values.shape_hessian_component( k, q,
component_i );
In this case I can get the laplacian of the i'th component of the k'th
shape function at quadrature point q by trace( hessian_phi ). But this will
result in a rank 0 tensor. It would be much more convenient if I could
convert this back into a rank 1 tensor as the laplacian of the k'th shape
function. Again though I run into the same problem as above with only 0
assignment is allowed.
Thanks
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.