Using the function "getRotationFromPseudoNormalForFiniteDeformation" to deal with the large deformation problem
rukawaaaaaaa opened this issue · comments
Describe the bug
When I use the function "getRotationFromPseudoNormalForSmallDeformation", the large deformation can not be simulate, e.g the results of the case 3d_arch will be like
I have a solution for the "getRotationFromPseudoNormalForSmallDeformation".
After we get the dpseudo_n_d2t_ , transfer it to local current,
Matd current_transformation_matrix = getTransformationMatrix(pseudo_n_[index_i]);
Vecd local_dpseudo_n_d2t = current_transformation_matrix * dpseudo_n_d2t_[index_i];
and then use the function "getRotationFromPseudoNormalForSmallDeformation". We will get the dangular_vel_dt_[index_i] in the local current configuration. The angular_vel_[index_i] and rotation_[index_i] are in the local initial configuration. So when we update the angular_vel_[index_i], we need
Matd current_transformation_matrix = getTransformationMatrix(pseudo_n_[index_i]);
angular_vel_[index_i] += ( transformation_matrix_[index_i] * (current_transformation_matrix.transpose() * dangular_vel_dt_[index_i])) * dt;
after that the old “getVectorChangeRateAfterThinStructureRotation" is not correct anymore, make the corresponding change.
In this way, the "getRotationFromPseudoNormalForSmallDeformation" can be used for the large deformation case. The results is shown here,
.
I put the results of "getRotationFromPseudoNormalForSmallDeformation" of this improved version and "getRotationFromPseudoNormalForFiniteDeformation" together here.
There is no visible difference between two rotation function.
Thank you very much! This is important for us.
Could you show details about how you modify the function “getVectorChangeRateAfterThinStructureRotation"?
@rukawaaaaaaa could you also initialize a pull request for this new updating?
Thank you very much! This is important for us. Could you show details about how you modify the function “getVectorChangeRateAfterThinStructureRotation"?
The “getVectorChangeRateAfterThinStructureRotation" now is only used for the rotation around two axis in the initial configuration. I modify the funciton the same as in the slender_structure_math.cpp.
@rukawaaaaaaa could you also initialize a pull request for this new updating?
I'd love to do that.
Thank you very much! This is important for us. Could you show details about how you modify the function “getVectorChangeRateAfterThinStructureRotation"?
The “getVectorChangeRateAfterThinStructureRotation" now is only used for the rotation around two axis in the initial configuration. I modify the funciton the same as in the slender_structure_math.cpp.
Thank you! I will take time to think this through.
@rukawaaaaaaa For the pull request, we expected that CI should be passed.
close due to pull request #413.