-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add Neo-Hookean solid #559
base: master
Are you sure you want to change the base?
Conversation
scalar I_1 = trace(C); | ||
|
||
tensor F_inv = invert(deformation_gradient); | ||
tensor C_inv = invert(C); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use tensor C_inv = F_inv * transpose(F_inv);
|
||
scalar one_over_J_times_Dd_J = trace(F_inv * gradient_increment); | ||
tensor Dd_F_inv = -F_inv * (gradient_increment * F_inv); | ||
tensor Dd_C_inv = Dd_F_inv * transpose(F_inv) + F_inv * transpose(Dd_F_inv); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use scalar Dd_I_1 = 2.0 * trace(transpose(gradient_increment) * deformation_gradient);
|
||
scalar one_over_J_times_Dd_J = trace(F_inv * gradient_increment); | ||
tensor Dd_F_inv = -F_inv * (gradient_increment * F_inv); | ||
tensor Dd_C_inv = Dd_F_inv * transpose(F_inv) + F_inv * transpose(Dd_F_inv); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use tensor Dd_F_inv_times_transpose_F_inv = -F_inv * (gradient_increment * F_inv) * transpose(F_inv);
and then tensor Dd_C_inv = Dd_F_inv_times_transpose_F_inv + transpose(Dd_F_inv_times_transpose_F_inv);
* and | ||
* | ||
* Psi_iso = shear_modulus / 2 * ( I_1_bar - 3 ) | ||
* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this 3
should be trace(I)
this adds a first version of the Neo-Hookean solid to the material library. It is quasi incompressible, meaning the Poisson ratio can be chosen closer to 0.5 compared to other displacement-based formulations and locking is reduced. I tested it in the structure/bar application, where the
QuasiStatic
solver performed rather well. In general we immediately see the increased integration effort and increased iteration counts (linear solver, depending on the problem also nonlinear solver) -- both of these aspects should be tackled in the future. For now, we focus on the functionality. Also, I added some tests, taking the nonlinear rod solution as reference.