![]() |
FrontISTR
5.9.0
Large-scale structural analysis program with finit element method
|
Finite-rotation nodal kinematics for NLGEOM. More...
Functions/Subroutines | |
| subroutine, public | fstr_ensure_finite_rotation_state (hecMESH, fstrSOLID, ndof) |
| Build the per-node reference frames once, by averaging element shell triads at shared nodes. Already-initialized nodes are left untouched, so repeated calls are idempotent. More... | |
| subroutine, public | fstr_begin_nodal_kinematics_step (hecMESH, fstrSOLID, ndof) |
| Snapshot the converged rotation state at the start of a load step and reset the Newton trial state to it. More... | |
| subroutine, public | fstr_apply_solution_increment (hecMESH, fstrSOLID, ndof, x) |
| Apply the linear-solver solution increment x to the step displacement dunode. More... | |
| subroutine, public | fstr_commit_solution_increment (hecMESH, fstrSOLID, ndof) |
| Commit the converged step increment dunode into the total displacement unode. More... | |
| subroutine | fstr_store_shell_triad_node (fstrSOLID, node_id, triad, mode) |
| Store the reference frame into all rotation-state arrays for a fresh node. More... | |
Finite-rotation nodal kinematics for NLGEOM.
This module manages the per-node geometric state (nodal frame / triad plus a drilling scalar) needed when the Newton solution increment cannot be applied as a simple vector addition to the nodal degrees of freedom.
This path is used by elastic MITC4 shell (741) under Total/Updated Lagrangian kinematics. Finite-rotation algebra lives in m_fstr_FiniteRotationKinematics; this module stores and advances the nodal frame state.
| subroutine, public m_fstr_nodalkinematics::fstr_apply_solution_increment | ( | type (hecmwst_local_mesh), intent(in) | hecMESH, |
| type (fstr_solid), intent(inout) | fstrSOLID, | ||
| integer(kind=kint), intent(in) | ndof, | ||
| real(kind=kreal), dimension(:), intent(in) | x | ||
| ) |
Apply the linear-solver solution increment x to the step displacement dunode.
For ordinary nodes this is the usual dunode += x. For finite-rotation shell nodes the translational part is added directly while the rotational part is composed onto the trial nodal frame (dtriad) and drilling scalar.
Definition at line 157 of file fstr_NodalKinematics.f90.
| subroutine, public m_fstr_nodalkinematics::fstr_begin_nodal_kinematics_step | ( | type (hecmwst_local_mesh), intent(in) | hecMESH, |
| type (fstr_solid), intent(inout) | fstrSOLID, | ||
| integer(kind=kint), intent(in) | ndof | ||
| ) |
Snapshot the converged rotation state at the start of a load step and reset the Newton trial state to it.
Definition at line 135 of file fstr_NodalKinematics.f90.
| subroutine, public m_fstr_nodalkinematics::fstr_commit_solution_increment | ( | type (hecmwst_local_mesh), intent(in) | hecMESH, |
| type (fstr_solid), intent(inout) | fstrSOLID, | ||
| integer(kind=kint), intent(in) | ndof | ||
| ) |
Commit the converged step increment dunode into the total displacement unode.
For finite-rotation shell nodes the converged trial frame (dtriad) and drilling scalar become the new reference state.
Definition at line 217 of file fstr_NodalKinematics.f90.
| subroutine, public m_fstr_nodalkinematics::fstr_ensure_finite_rotation_state | ( | type (hecmwst_local_mesh), intent(in) | hecMESH, |
| type (fstr_solid), intent(inout) | fstrSOLID, | ||
| integer(kind=kint), intent(in) | ndof | ||
| ) |
Build the per-node reference frames once, by averaging element shell triads at shared nodes. Already-initialized nodes are left untouched, so repeated calls are idempotent.
Definition at line 32 of file fstr_NodalKinematics.f90.
| subroutine m_fstr_nodalkinematics::fstr_store_shell_triad_node | ( | type (fstr_solid), intent(inout) | fstrSOLID, |
| integer(kind=kint), intent(in) | node_id, | ||
| real(kind=kreal), dimension(3, 3), intent(in) | triad, | ||
| integer(kind=kint), intent(in) | mode | ||
| ) |
Store the reference frame into all rotation-state arrays for a fresh node.
Definition at line 349 of file fstr_NodalKinematics.f90.