FrontISTR  5.9.0
Large-scale structural analysis program with finit element method
m_fstr_nodalkinematics Module Reference

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...
 

Detailed Description

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.

Function/Subroutine Documentation

◆ fstr_apply_solution_increment()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_begin_nodal_kinematics_step()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_commit_solution_increment()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_ensure_finite_rotation_state()

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.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fstr_store_shell_triad_node()

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.

Here is the caller graph for this function: