mimesis-inria / caribou

Multi-physics computation library
GNU Lesser General Public License v3.0
29 stars 17 forks source link

Adding MooneyRivlin to SofaCaribou #133

Open Sidaty1 opened 2 years ago

Sidaty1 commented 2 years ago

I created the branch MooneyRivlin attempting to add the constitutive law MooneyRivlin, this could interest many SOFACaribou's users but will also help validating and debugging the implementation of MooneyRivlin in the SOniCS plugin

CC @jnbrunet @Ziemnono

Sidaty1 commented 2 years ago

Hi @jnbrunet , I have pushed MooneyRivlin Material file which contains strain_energy_density() and PK2_stress() I am pretty sure about both. But I am struggling with the PK2_stress_jacobian(), it should return a 6x6 matrix while I am only finding a 3x3 matrix when derivating the PK2 with respect to the Cauchy tensor.

I saw that in NeoHookean you used symmetric_dyad_1() and symmetric_dyad_2() tensors to get this 6x6 matrix output, but am not sure to understand how you translated your PK2_stress_jacobian expression(that should be the derivative of PK2 with respect to C => An expression of C^{-1} and C^{-2}) to an expression that includes symmetric_dyad_1() and symmetric_dyad_2() and get the 6x6 matrix, could you please explain that ?

CC @Ziemnono

jnbrunet commented 2 years ago

Hey @Sidaty1 ,

The derivative of a 2th order tensor w.r.t another 2th order tenser (dS/dE) is a 4th order tensor. However, in our case, this resulting tensor is symmetric and can be "reduced" to a 6x6 matrix. The details of the St-Venant-K. and Neo-Hookean materials can be find in the section 2.3 of my thesis, where I also defined these two symmetric dyad operators.