PatchSidesetGenerator

Description

This mesh generator splits a given sideset (sideset parameter) into n pieces (n_patches). The pieces are referred to as patches. Patches are used for net radiation transfer method via view factors. The sideset is divided into n patches using partitioner that are available from libMesh. The new sidesets are named <old_side_name>_<id>, where <id> is a number running from 0 to n - 1.

In addition to libMesh partitioners, this mesh generator also supports a grid partitioner. The grid partitioner superimposes a 3-dimensional (where is the dimensionality of the problem) uniform, orthogonal grid over the sideset and partitions the elements according to where the centroids of the sideset faces fall on the orthogonal grid. The superimposed grid is congruent to the bounding box of the sideset to ensure that the sideset is completely encompassed within the superimposed grid.

The superimposed orthogonal grid is _always_ 3-dimensional because the sideset (surface in 3D and line in 2D problems) does not need to be orthogonal to any of the coordinate axes. The superimposed 3-dimensional mesh is aligned with the coordinate axis and will have a single element in 1 (2) directions for 3 (2)-dimensional problems. These are discussed in turn:

  • for 2-dimensional problems, sidesets are a collection of line segments so sidesets are 1-dimensional. The bounding box of the sideset is computed and the largest distance along any of the three axes is computed (i.e. ). The superimposed mesh has n_patches subdivisions along the longest axis and a single subdivision along the two shorter axes.

  • for 3-dimensional problems, sidesets are a collection of faces so sidesets are 2-dimensional. The bounding box of the sideset is computed and the two largest distance along any of the three axes is computed (i.e. two largest from set ). The superimposed mesh has a single subdivision along the axes with the smallest extent. The number of elements along the two larger dimensions are determined as follows:

    where and are the subdivisions along the longest and second longest axes and is equal to n_patches. Due to the rounding, the does not need to be equal to n_patches so the number of patches might be adjusted. A warning is printed if that happens.

Example Input Syntax

  [patch]
    type = PatchSidesetGenerator
    boundary = 0
    n_patches = 10
    input = cmg
  []
(moose/modules/heat_transfer/test/tests/generate_radiation_patch/generate_radiation_patch.i)

Input Parameters

  • boundaryThe boundary that will be divided into patches

    C++ Type:BoundaryName

    Unit:(no unit assumed)

    Controllable:No

    Description:The boundary that will be divided into patches

  • inputThe mesh we want to modify

    C++ Type:MeshGeneratorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The mesh we want to modify

  • n_patchesNumber of patches

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:Number of patches

Required Parameters

  • centroid_partitioner_directionSpecifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:x, y, z, radial

    Controllable:No

    Description:Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial

  • partitionerdefaultSpecifies a mesh partitioner to use when splitting the mesh for a parallel computation.

    Default:default

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:default, metis, parmetis, linear, centroid, hilbert_sfc, morton_sfc, grid

    Controllable:No

    Description:Specifies a mesh partitioner to use when splitting the mesh for a parallel computation.

Partitioning Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

  • save_with_nameKeep the mesh from this mesh generator in memory with the name specified

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Keep the mesh from this mesh generator in memory with the name specified

Advanced Parameters

  • nemesisFalseWhether or not to output the mesh file in the nemesisformat (only if output = true)

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to output the mesh file in the nemesisformat (only if output = true)

  • outputFalseWhether or not to output the mesh file after generating the mesh

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to output the mesh file after generating the mesh

  • show_infoFalseWhether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)

Debugging Parameters