Hyperelastic structure ====================== Incompressible -------------- The :math:`p(\det(F)-1)` term in the lagrangian must be derivated with respect to :math:`U` (via :math:`F`) and :math:`P`. See as well the Stokes equation that deals with the incompressibility. The matrix has several blocks: the diagonal energy part, the extradiagonal incompressibility block and the Dirichlet parts: .. figure:: matrix-incompressible-hyperelasticity.png :align: center The finite element is a full degree-2 lagrange element with 27 nodes ("HEXA 27Q2"), with a 27-point integration scheme, which implies some half MFlops per element. .. literalinclude:: ./nvi_IncompressibleHyperElasticity_0.cpp Result ++++++ .. figure:: IncompressibleHyperElas.png :align: center Multimaterial ------------- The structure is divided vertically in three parts. The middle is a less stiff material. We present one way to specify the sub-domains via an ElementSpecificator. It could take a sub-domain name but here a range of elements is given. .. literalinclude:: ./nvi_HyperElasticity_multimat_0.cpp Result ++++++ .. figure:: Multimat.png :align: center Log file ++++++++ The assembly (computation of the elementary matrix and the elementary vector, *and* addition into a CSR matrix and a right-hand side) requires 20 ms for 450 elements with 8 cores - 16 threads. It means a speed of about 0.5 GFlops per second and per thread for 16 concurrent threads. .. literalinclude:: HyperElasticity_multimat_0_grid3.log :language: text