- ntNumber of elements in the angular direction
C++ Type:unsigned int
Controllable:No
Description:Number of elements in the angular direction
- rmaxOuter radius
C++ Type:double
Controllable:No
Description:Outer radius
- rminInner radius. If rmin=0 then a disc mesh (with no central hole) will be created.
C++ Type:double
Controllable:No
Description:Inner radius. If rmin=0 then a disc mesh (with no central hole) will be created.
AnnularMesh
For rmin>0: creates an annular mesh of QUAD4 elements. For rmin=0: creates a disc mesh of QUAD4 and TRI3 elements. Boundary sidesets are created at rmax and rmin, and given these names. If dmin!0 and dmax!360, a sector of an annulus or disc is created. In this case boundary sidesets are also created a dmin and dmax, and given these names
Description
The AnnularMesh
mesh generator builds simple 2D annular and disc meshes. They are created by drawing radial lines and concentric circles, and the mesh consists of the quadrilaterals thus formed. Therefore, no sophisticated paving is used to construct the mesh.
The inner radius and the outer radius must be specified. If the inner radius is zero a disc mesh is created, while if it is positive an annulus is created. The annulus has just one subdomain (block number = 0), whereas the disc has two subdomains: subdomain zero consists of the outer quadrilaterals, while the other (block number = 1) consists of the triangular elements that emanate from the origin.
The minimum and maximum angle may also be specified. These default to zero and 360, respectively. If other values are chosen, a sector of an annulus, or a sector of a disc will be created. Both angles are measured anti-clockwise from the axis.
The number of elements in the radial direction and the angular direction may be specified. In addition, a growth factor on the element size in the radial direction may be chosen. The element-size (in the radial direction) is multiplied by this factor for each concentric ring of elements, moving from the inner to the outer radius.
Sidesets are also created:
* Sideset 0 is called "rmin" and is the set of sides at the minimum radius (which is zero for the disc). * Sideset 1 is called "rmax" and is the set of sides at the maximum radius. * Sideset 2 is called "dmin" and is the set of sides at the minimum angle, which is created only in the case of a sector of an annulus (or disc) * Sideset 3 is called "dmax" and is the set of sides at the maximum angle, which is created only in the case of a sector of an annulus (or disc)
Example Syntax
A full annulus with minimum radius 1 and maximum radius 5, with smaller elements near the inside of the annulus. (A disc would be created by setting rmin to zero.) !listing test/tests/mesh/mesh_generation/annulus.i block=Mesh
A sector of an annulus, sitting between 45 and 135 degrees. (A sector of a disc would be created by setting rmin to zero.) !listing test/tests/mesh/mesh_generation/annulus_sector.i block=Mesh
An example of using sidesets !listing test/tests/mesh/mesh_generation/annulus_sector.i block=BCs
Input Parameters
- add_subdomain_idsThe listed subdomains will be assumed valid for the mesh. This permits setting up subdomain restrictions for subdomains initially containing no elements, which can occur, for example, in additive manufacturing simulations which dynamically add and remove elements.
C++ Type:std::vector<unsigned short>
Controllable:No
Description:The listed subdomains will be assumed valid for the mesh. This permits setting up subdomain restrictions for subdomains initially containing no elements, which can occur, for example, in additive manufacturing simulations which dynamically add and remove elements.
- allow_renumberingTrueIf allow_renumbering=false, node and element numbers are kept fixed until deletion
Default:True
C++ Type:bool
Controllable:No
Description:If allow_renumbering=false, node and element numbers are kept fixed until deletion
- build_all_side_lowerd_meshFalseTrue to build the lower-dimensional mesh for all sides.
Default:False
C++ Type:bool
Controllable:No
Description:True to build the lower-dimensional mesh for all sides.
- coord_blockBlock IDs for the coordinate systems. If this parameter is specified, then it must encompass all the subdomains on the mesh.
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:Block IDs for the coordinate systems. If this parameter is specified, then it must encompass all the subdomains on the mesh.
- dmax360Maximum angle, measured in degrees anticlockwise from x axis. If dmin=0 and dmax=360 an annular mesh is created. Otherwise, only a sector of an annulus is created
Default:360
C++ Type:double
Controllable:No
Description:Maximum angle, measured in degrees anticlockwise from x axis. If dmin=0 and dmax=360 an annular mesh is created. Otherwise, only a sector of an annulus is created
- dmin0Minimum degree, measured in degrees anticlockwise from x axis
Default:0
C++ Type:double
Controllable:No
Description:Minimum degree, measured in degrees anticlockwise from x axis
- ghosting_patch_sizeThe number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size.
C++ Type:unsigned int
Controllable:No
Description:The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size.
- growth_r1The ratio of radial sizes of successive rings of elements
Default:1
C++ Type:double
Controllable:No
Description:The ratio of radial sizes of successive rings of elements
- max_leaf_size10The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower.
Default:10
C++ Type:unsigned int
Controllable:No
Description:The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower.
- nr1Number of elements in the radial direction
Default:1
C++ Type:unsigned int
Controllable:No
Description:Number of elements in the radial direction
- parallel_typeDEFAULTDEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh
Default:DEFAULT
C++ Type:MooseEnum
Controllable:No
Description:DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh
- quad_subdomain_id0The subdomain ID given to the QUAD4 elements
Default:0
C++ Type:unsigned short
Controllable:No
Description:The subdomain ID given to the QUAD4 elements
- skip_refine_when_use_splitTrueTrue to skip uniform refinements when using a pre-split mesh.
Default:True
C++ Type:bool
Controllable:No
Description:True to skip uniform refinements when using a pre-split mesh.
- tri_subdomain_id1The subdomain ID given to the TRI3 elements (these exist only if rmin=0, and they exist at the center of the disc
Default:1
C++ Type:unsigned short
Controllable:No
Description:The subdomain ID given to the TRI3 elements (these exist only if rmin=0, and they exist at the center of the disc
Optional Parameters
- alpha_rotationThe number of degrees that the domain should be alpha-rotated using the Euler angle ZXZ convention from https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix in order to align with a canonical physical space of your choosing.
C++ Type:double
Controllable:No
Description:The number of degrees that the domain should be alpha-rotated using the Euler angle ZXZ convention from https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix in order to align with a canonical physical space of your choosing.
- beta_rotationThe number of degrees that the domain should be beta-rotated using the Euler angle ZXZ convention from https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix in order to align with a canonical physical space of your choosing.
C++ Type:double
Controllable:No
Description:The number of degrees that the domain should be beta-rotated using the Euler angle ZXZ convention from https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix in order to align with a canonical physical space of your choosing.
- gamma_rotationThe number of degrees that the domain should be gamma-rotated using the Euler angle ZXZ convention from https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix in order to align with a canonical physical space of your choosing.
C++ Type:double
Controllable:No
Description:The number of degrees that the domain should be gamma-rotated using the Euler angle ZXZ convention from https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix in order to align with a canonical physical space of your choosing.
- length_unitHow much distance one mesh length unit represents, e.g. 1 cm, 1 nm, 1 ft, 5inches
C++ Type:std::string
Controllable:No
Description:How much distance one mesh length unit represents, e.g. 1 cm, 1 nm, 1 ft, 5inches
- up_directionSpecify what axis corresponds to the up direction in physical space (the opposite of the gravity vector if you will). If this parameter is provided, we will perform a single 90 degree rotation of the domain--if the provided axis is 'x' or 'z', we will not rotate if the axis is 'y'--such that a point which was on the provided axis will now lie on the y-axis, e.g. the y-axis is our canonical up direction. If you want finer grained control than this, please use the 'alpha_rotation', 'beta_rotation', and 'gamma_rotation' parameters.
C++ Type:MooseEnum
Controllable:No
Description:Specify what axis corresponds to the up direction in physical space (the opposite of the gravity vector if you will). If this parameter is provided, we will perform a single 90 degree rotation of the domain--if the provided axis is 'x' or 'z', we will not rotate if the axis is 'y'--such that a point which was on the provided axis will now lie on the y-axis, e.g. the y-axis is our canonical up direction. If you want finer grained control than this, please use the 'alpha_rotation', 'beta_rotation', and 'gamma_rotation' parameters.
Transformations Relative To Parent Application Frame Of Reference Parameters
- coord_typeXYZType of the coordinate system per block param
Default:XYZ
C++ Type:MultiMooseEnum
Controllable:No
Description:Type of the coordinate system per block param
- rz_coord_axisYThe rotation axis (X | Y) for axisymmetric coordinates
Default:Y
C++ Type:MooseEnum
Controllable:No
Description:The rotation axis (X | Y) for axisymmetric coordinates
- rz_coord_blocksBlocks using general axisymmetric coordinate systems
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:Blocks using general axisymmetric coordinate systems
- rz_coord_directionsAxis directions for each block in 'rz_coord_blocks'
C++ Type:std::vector<libMesh::VectorValue<double>>
Controllable:No
Description:Axis directions for each block in 'rz_coord_blocks'
- rz_coord_originsAxis origin points for each block in 'rz_coord_blocks'
C++ Type:std::vector<libMesh::Point>
Controllable:No
Description:Axis origin points for each block in 'rz_coord_blocks'
Coordinate System Parameters
- centroid_partitioner_directionSpecifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial
C++ Type:MooseEnum
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
Controllable:No
Description:Specifies a mesh partitioner to use when splitting the mesh for a parallel computation.
Partitioning Parameters
- construct_node_list_from_side_listTrueWhether or not to generate nodesets from the sidesets (usually a good idea).
Default:True
C++ Type:bool
Controllable:No
Description:Whether or not to generate nodesets from the sidesets (usually a good idea).
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- dim1This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes!
Default:1
C++ Type:MooseEnum
Controllable:No
Description:This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes!
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:No
Description:Set the enabled status of the MooseObject.
- nemesisFalseIf nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO.
Default:False
C++ Type:bool
Controllable:No
Description:If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO.
- patch_size40The number of nodes to consider in the NearestNode neighborhood.
Default:40
C++ Type:unsigned int
Controllable:No
Description:The number of nodes to consider in the NearestNode neighborhood.
- patch_update_strategyneverHow often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all secondary nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all secondary nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of secondary nodes for which penetration is not detected. If there can be substantial relative motion between the primary and secondary surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection.
Default:never
C++ Type:MooseEnum
Controllable:No
Description:How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all secondary nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all secondary nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of secondary nodes for which penetration is not detected. If there can be substantial relative motion between the primary and secondary surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection.