![]() |
FrontISTR
5.9.0
Large-scale structural analysis program with finit element method
|
Rigid-body / near-kernel modes from mesh coordinates. More...
Functions/Subroutines | |
| subroutine, public | hecmw_precond_rbm_from_mesh (hecMESH, ndof, rbm) |
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.
| 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 | ||
| ) |
| [out] | rbm | flat (dof, mode), filled for internal nodes |
Definition at line 33 of file hecmw_precond_rbm.f90.