--
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 dealii+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/02f465df-3cab-4d84-bd48-92ca4a7981efn%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/C2745EC6-0BED-4AFC-A21C-C003D851C869%40gmail.com.
Andrew, thanks for confirming that. The missing 1/2 does not affect the demonstration of functionalities of deal.II but it may change the results.
Jean-Paul, thanks for commenting on my second question. I want to study the pure geometrical nonlinear elasticity (large deformation with linear material). It should be the simplest nonlinear model in elasticity. Step 18 looks like a good start as an updated Lagrangian formulation; but it does not include the nonlinear part of the finite strain. I spent some on Step 44 because “ Quasi-Static Finite-Strain Compressible Elasticity” also mentions it is based on Step 44. To be honest, I have a hard time to understand the three-filed formulation in Step 44. So maybe I should get into “Quasi-Static … Elasticity” first which uses classical one-field formulation. However, I’m still interested in implementing the pure geometrical large finite deformation model. I believe that will make things simpler and help me understand more complex nonlinear models. Meanwhile, I try to compare the results with a reference which only consider the geometrical nonlinearity.
-Michael
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/D7696104-6C14-43F2-8B03-CF7AA0E89391%40gmail.com.
To be honest, I have a hard time to understand the three-filed formulation in Step 44.
However, I’m still interested in implementing the pure geometrical large finite deformation model. I believe that will make things simpler and help me understand more complex nonlinear models. Meanwhile, I try to compare the results with a reference which only consider the geometrical nonlinearity.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/5A41FB64-E568-44C2-82CA-2A7CAE923CD4%40hxcore.ol.
Hi Jean-Paul,
Thank you so much for the deliberate suggestions! It seems the code-gallery example is a good starting point for me to implement St-Venant Kirchhoff hyperelastic model with the help of “push-forward” transformations. I need to dig into this example to understand how the geometric stiffness tangent is embedded for free.
It’s good to know a tutorial that uses one-filed elasticity will be available. I believe that will help a lot for beginners. AD is an interesting tool for nonlinear FEM. In an early discussion, Alex shared his similar codes using AD at Integrated material and spatial traction forces on boundary not equal (google.com). But since I’m a deal.II beginner and not familiar with AD, I have not studied his code further.
So I am going to study your code-gallery example first as it is well documented. I may ask for your further help and will let you know if I get the code roll.
Thank you again for your wonderful help!
Best,
Michael
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/020CCBE9-E8BB-40AC-A205-41E8E2860553%40gmail.com.
If this is wrong in the deal.II code, would you be interested in writing a patch to correct this? It should be an easy fix, and a good first patch to contribute to the library!
--
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 dealii+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/32840123-c6f5-abd9-18bb-03f06b5f918e%40colostate.edu.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/1D258AD6-FC4C-43B7-9056-A4B21114D694%40gmail.com.
Nevertheless, if the material was prestressed in a certain direction, then this direction will be rotated along with the material. To this end, we have to define a rotation matrix R(Δun) that describes, in each point the rotation due to the displacement increments. It is not hard to see that the actual dependence of R on Δun can only be through the curl of the displacement, rather than the displacement itself or its full gradient (as mentioned above, the constant components of the increment describe translations, its divergence the dilational modes, and the curl the rotational modes).
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/CAEyr2zhNeyCO_tyXpw%2Bzgh4DAwzCmAGHG5W9y8RnLMswq_O10A%40mail.gmail.com.
Hi Jean-Paul,
Thank you for the nice explanation and information! It cleared out my concern and helped me understand the related concepts of vorticity and rotation. Vorticity (1/2 curl of velocity) stands for the rotation rate (angular velocity) but the infinitesimal rotation tensor gives the rotation angle (curl of displacement). Do correct me if I’m wrong.
Now I’m excited to learn how to make my first patch.
- Michael
From: Jean-Paul Pelteret
Sent: Saturday, June 26, 2021 2:57 PM
To: dea...@googlegroups.com
Subject: Re: [deal.II] Questions on Step-18
Hi Michael,
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/1ADF3B07-54FB-4DDA-A848-1D7F9168D4A6%40gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/99FD763E-ABDF-46F5-A62C-D4427C562103%40hxcore.ol.
Hi Jean-Paul and All,
I would like to discuss the formulas in step-18 further.
For 2D,
const double curl = (grad_u[1][0] - grad_u[0][1]);
const double angle = std::atan(curl);
For 3D,
const double tan_angle = std::sqrt(curl * curl);
const double angle = std::atan(tan_angle);
I don’t really understand why we need to do the atan operation to get the angle. It seems to me that half of the curl of displacement itself is the rotation angle.
Moreover, for 2D, do we need to do the same as 3D tan_angle = std::sqrt(curl * curl)? I mean we first calculate the magnitude of the curl then calculate the angle. I’m concerned about the sign of the curl in 2D angle = std::atan(curl) (we need the magnitude of the curl).
I wonder what references I can get from these formulas. I hope I can be fully convinced of the stuff.
or
For 2D,
const double curl = (grad_u[1][0] - grad_u[0][1]);
const double angle = 1.0 / 2.0 * std::sqrt(curl * curl); // Half of the magnitude of curl is the rotation angle.
For 3D,
const double angle = 1.0 / 2.0 * std::sqrt(curl * curl);
const double angle = std::atan(tan_angle);
Any comments will be of great help.
Best,
Michael
You received this message because you are subscribed to a topic in the Google Groups "deal.II User Group" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dealii/B-jNRYdzqzs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dealii+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/1AB07F53-AD43-4065-BDA7-C03B1D8F0E57%40gmail.com.
Moreover, for 2D, do we need to do the same as 3D tan_angle = std::sqrt(curl * curl)? I mean we first calculate the magnitude of the curl then calculate the angle. I’m concerned about the sign of the curl in 2D angle = std::atan(curl) (we need the magnitude of the curl).
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/CAEyr2zjnynMo7Ar2eJ-MB%2Bo8PQVkdB270abKHZ7Bq-fbWWMRFg%40mail.gmail.com.
Hi Jean-Paul,
Thank you for your patience and detailed explanation! It did help me understand the formulations. The only thing after reading the Wikipedia (https://en.wikipedia.org/wiki/Rotation_matrix#Axis_and_angle ) I still have doubts is that the angle should be calculated by ½ mag(curl) and we do not need to do the atan operation. And I think the magnitude of curl has the dimension of radians which actually is dimensionless.
Quoted from Wikipedia:
“Near multiples of 180°, care is needed to avoid numerical problems: in extracting the angle, a two-argument arctangent with atan2(sin θ, cos θ) equal to θ avoids the insensitivity of arccos; and in computing the axis magnitude in order to force unit magnitude, a brute-force approach can lose accuracy through underflow .

”
My understanding on the atan above is that it is only used to deal with the case when the angle is near multiples of 180°. So the code I suggest will look like as follows.
const Point<3> curl = …;
const double mag_curl = std::sqrt(curl * curl);
const double angle = 0.5 * mag_curl;
Thank you!
Michael
From: Jean-Paul Pelteret
Sent: Monday, July 5, 2021 11:50 PM
To: dea...@googlegroups.com
Subject: Re: [deal.II] Questions on Step-18
HI Michael,
1. const double tan_angle = std::sqrt(0.5 * curl * 0.5 * curl);
or
2. const double tan_angle = 0.5 * std::sqrt(curl * curl);
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/BFBD4892-0C15-4692-8510-E0009522D4D0%40gmail.com.