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

Rigid-body / near-kernel modes from mesh coordinates. More...

Functions/Subroutines

subroutine, public hecmw_precond_rbm_from_mesh (hecMESH, ndof, rbm)
 

Detailed Description

Rigid-body / near-kernel modes from mesh coordinates.

Shared by the ML and SA-AMG preconditioners (single source of truth for the near-kernel used to seed smoothed-aggregation coarsening). Builds the translational + rotational rigid-body modes from the nodal coordinates of the INTERNAL nodes, in the flat column-major (dof, mode) layout both callers use: mode k occupies rbm((k-1)*vec_leng+1 : k*vec_leng), vec_leng = nn_internal*ndof.

ndof = 1 -> 1 mode (constant; heat / scalar diffusion) ndof = 2 -> 3 modes (trans-x, trans-y, rot-z; plane elasticity) ndof = 3 -> 6 modes (trans*3, rot*3; solid, incl. 33struct shell) ndof = 6 -> 6 modes (as ndof=3 plus the rotational-DOF identity for shells)

33struct shell rotation nodes (the latter-half nodes of each 33struct element) carry only the rotational modes. Coordinates are shifted to the GLOBAL centroid (allreduce over hecMESH) so the rotation modes stay well-conditioned far from the origin; this does not change the spanned near-kernel space.

Function/Subroutine Documentation

◆ hecmw_precond_rbm_from_mesh()

subroutine, public hecmw_precond_rbm::hecmw_precond_rbm_from_mesh ( type(hecmwst_local_mesh), intent(in)  hecMESH,
integer(kind=kint), intent(in)  ndof,
real(kind=kreal), dimension(*), intent(out)  rbm 
)
Parameters
[out]rbmflat (dof, mode), filled for internal nodes

Definition at line 33 of file hecmw_precond_rbm.f90.

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