SELF_MeshRefinement_3D Module

Mesh-level h-refinement operations for 3-D hexahedral meshes, the direct analogue of SELF_MeshRefinement_2D.

This module assembles a refined Mesh3D_t from the element-local primitives in SELF_RefinementPrimitives_3D. The currently supported operation is uniform refinement - splitting every element 2:1 in each direction into eight children - which keeps the mesh conforming (no hanging faces) and therefore needs neither the mortar machinery nor 2:1 balancing. Adaptive (flagged) refinement with hanging faces and mortar generation lives in SELF_AdaptiveMesh_3D. Uniform refinement is restricted to a single rank here, and guards against multi-rank input.


Uses

  • module~~self_meshrefinement_3d~~UsesGraph module~self_meshrefinement_3d SELF_MeshRefinement_3D module~self_constants SELF_Constants module~self_meshrefinement_3d->module~self_constants module~self_lagrange SELF_Lagrange module~self_meshrefinement_3d->module~self_lagrange module~self_mesh_3d~2 SELF_Mesh_3D module~self_meshrefinement_3d->module~self_mesh_3d~2 module~self_refinementprimitives_3d SELF_RefinementPrimitives_3D module~self_meshrefinement_3d->module~self_refinementprimitives_3d iso_fortran_env iso_fortran_env module~self_constants->iso_fortran_env iso_c_binding iso_c_binding module~self_constants->iso_c_binding module~self_lagrange->module~self_constants module~self_lagrange->iso_fortran_env module~self_lagrange_t SELF_Lagrange_t module~self_lagrange->module~self_lagrange_t module~self_lagrange->iso_c_binding module~self_mesh_3d_t SELF_Mesh_3D_t module~self_mesh_3d~2->module~self_mesh_3d_t module~self_refinementprimitives_3d->module~self_constants module~self_refinementprimitives_3d->module~self_lagrange module~self_lagrange_t->module~self_constants module~self_lagrange_t->iso_fortran_env module~self_lagrange_t->iso_c_binding module~self_quadrature SELF_Quadrature module~self_lagrange_t->module~self_quadrature module~self_supportroutines SELF_SupportRoutines module~self_lagrange_t->module~self_supportroutines HDF5 HDF5 module~self_lagrange_t->HDF5 module~self_hdf5 SELF_HDF5 module~self_lagrange_t->module~self_hdf5 module~self_mesh_3d_t->module~self_constants module~self_mesh_3d_t->module~self_lagrange module~self_mesh_3d_t->iso_c_binding module~self_mesh_3d_t->module~self_quadrature module~self_mesh_3d_t->module~self_supportroutines module~self_mesh_3d_t->HDF5 module~self_mesh SELF_Mesh module~self_mesh_3d_t->module~self_mesh module~self_mesh_3d_t->module~self_hdf5 module~self_domaindecomposition~2 SELF_DomainDecomposition module~self_mesh_3d_t->module~self_domaindecomposition~2 module~self_quadrature->module~self_constants module~self_quadrature->iso_fortran_env module~self_supportroutines->module~self_constants module~self_supportroutines->iso_fortran_env module~self_mesh->module~self_constants module~self_mesh->iso_c_binding module~self_mesh->module~self_domaindecomposition~2 module~self_hdf5->module~self_constants module~self_hdf5->iso_fortran_env module~self_hdf5->HDF5 mpi mpi module~self_hdf5->mpi module~self_domaindecomposition_t SELF_DomainDecomposition_t module~self_domaindecomposition~2->module~self_domaindecomposition_t module~self_domaindecomposition_t->module~self_constants module~self_domaindecomposition_t->module~self_lagrange module~self_domaindecomposition_t->iso_c_binding module~self_domaindecomposition_t->module~self_supportroutines module~self_domaindecomposition_t->mpi

Contents


Subroutines

public subroutine UniformRefineMesh(meshIn, meshOut)

Produce meshOut, a uniformly refined copy of meshIn: every element is split into eight children. Child geometry is generated by exact isoparametric subdivision of the parent geometry (so the refined mesh represents the identical curved domain), and connectivity / flips are inherited deterministically from the base mesh. meshOut is a fully-formed, conforming Mesh3D_t with 8x the elements, ready for geometry generation and time stepping. Refined globalNodeIDs are left zero: the solver reads flips from sideInfo directly and no 3-D consumer requires them.

Read more…

Arguments

TypeIntentOptionalAttributesName
type(Mesh3D), intent(in) :: meshIn
type(Mesh3D), intent(out) :: meshOut