# 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 tmin!0 and tmax!2Pi, a sector of an annulus or disc is created. In this case boundary sidesets are also created a tmin and tmax, 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 eminate from the origin.

The minimum and maximum angle may also be specified. These default to zero and , respectively. If other values are chosen, a sector of an annulus, or a sector of a disc will be created. Both angles are measured anticlockwise 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 "tmin" 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 "tmax" 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 and . (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

C++ Type:double

• rminInner radius. If rmin=0 then a disc mesh (with no central hole) will be created.

C++ Type:double

Description:Inner radius. If rmin=0 then a disc mesh (with no central hole) will be created.

• ntNumber of elements in the angular direction

C++ Type:unsigned int

Description:Number of elements in the angular direction

### Required Parameters

Default:0

C++ Type:unsigned short

Description:The subdomain ID given to the QUAD4 elements

• tmin0Minimum angle, measured anticlockwise from x axis

Default:0

C++ Type:double

Description:Minimum angle, measured anticlockwise from x axis

• tmax6.28319Maximum angle, measured anticlockwise from x axis. If tmin=0 and tmax=2Pi an annular mesh is created. Otherwise, only a sector of an annulus is created

Default:6.28319

C++ Type:double

Description:Maximum angle, measured anticlockwise from x axis. If tmin=0 and tmax=2Pi an annular mesh is created. Otherwise, only a sector of an annulus is created

• allow_renumberingTrueIf allow_renumbering=false, node and element numbers are kept fixed until deletion

Default:True

C++ Type:bool

Description:If allow_renumbering=false, node and element numbers are kept fixed until deletion

• 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

Description:The subdomain ID given to the TRI3 elements (these exist only if rmin=0, and they exist at the center of the disc

• parallel_typeDEFAULTDISTRIBUTED: Always use libMesh::DistributedMesh REPLICATED: Always use libMesh::ReplicatedMesh DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line

Default:DEFAULT

C++ Type:MooseEnum

Description:DISTRIBUTED: Always use libMesh::DistributedMesh REPLICATED: Always use libMesh::ReplicatedMesh DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line

• 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

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

Description:The ratio of radial sizes of successive rings of elements

• nr1Number of elements in the radial direction

Default:1

C++ Type:unsigned int

Description:Number of elements in the radial direction

• 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

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.

### Optional Parameters

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

Default:default

C++ Type:MooseEnum

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

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

C++ Type:MooseEnum

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

### Partitioning Parameters

• 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

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

Description:Set the enabled status of the MooseObject.

• 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 slave 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 slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave 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

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 slave 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 slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection.

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

C++ Type:std::vector

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

• 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

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.

• construct_node_list_from_side_listTrueWhether or not to generate nodesets from the sidesets (usually a good idea).

Default:True

C++ Type:bool

Description:Whether or not to generate nodesets from the sidesets (usually a good idea).

• patch_size40The number of nodes to consider in the NearestNode neighborhood.

Default:40

C++ Type:unsigned int

Description:The number of nodes to consider in the NearestNode neighborhood.