- block_idSubdomain id to set for inside of the combinatorialC++ Type:unsigned short Controllable:No Description:Subdomain id to set for inside of the combinatorial 
- combinatorial_geometryFunction expression encoding a combinatorial geometryC++ Type:std::string Controllable:No Description:Function expression encoding a combinatorial geometry 
- inputThe mesh we want to modifyC++ Type:MeshGeneratorName Controllable:No Description:The mesh we want to modify 
ParsedSubdomainMeshGenerator
Uses a parsed expression (combinatorial_geometry) to determine if an element (via its centroid) is inside the region defined by the expression and assigns a new block ID.
Example
The desired example mesh is a 1-by-1 2D square which contains Block 1 (a centered 0.8-by-0.8 square) and Block 2 (a 0.4-by-0.4 square located in the bottom left quarter of Block 1). The remaining edge of the square can be Block 0.
The combinatorial expression that defines Block 1 is below.
x > 0.1 & x < 0.9 & y > 0.1 & y < 0.9
The expression
x < 0.5 & y < 0.5
can partially define Block 2, but the region outside Block 1 also needs to be excluded. The input file syntax needed to generate this example is shown below.
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
  [gmg]
    type = GeneratedMeshGenerator<<<{"description": "Create a line, square, or cube mesh with uniformly spaced or biased elements.", "href": "GeneratedMeshGenerator.html"}>>>
    dim<<<{"description": "The dimension of the mesh to be generated"}>>> = 2
    nx<<<{"description": "Number of elements in the X direction"}>>> = 10
    ny<<<{"description": "Number of elements in the Y direction"}>>> = 10
    xmax<<<{"description": "Upper X Coordinate of the generated mesh"}>>> = 1
    ymax<<<{"description": "Upper Y Coordinate of the generated mesh"}>>> = 1
  []
  [subdomains]
    type = ParsedSubdomainMeshGenerator<<<{"description": "Uses a parsed expression (`combinatorial_geometry`) to determine if an element (via its centroid) is inside the region defined by the expression and assigns a new block ID.", "href": "ParsedSubdomainMeshGenerator.html"}>>>
    input<<<{"description": "The mesh we want to modify"}>>> = gmg
    combinatorial_geometry<<<{"description": "Function expression encoding a combinatorial geometry"}>>> = 'x > 0.1 & x < 0.9 & y > 0.1 & y < 0.9'
    block_id<<<{"description": "Subdomain id to set for inside of the combinatorial"}>>> = 1
  []
  [subdomains2]
    type = ParsedSubdomainMeshGenerator<<<{"description": "Uses a parsed expression (`combinatorial_geometry`) to determine if an element (via its centroid) is inside the region defined by the expression and assigns a new block ID.", "href": "ParsedSubdomainMeshGenerator.html"}>>>
    combinatorial_geometry<<<{"description": "Function expression encoding a combinatorial geometry"}>>> = 'x < 0.5 & y < 0.5'
    excluded_subdomains<<<{"description": "A set of subdomain names that will not changed even if they are inside/outside the combinatorial geometry"}>>> = '0'
    block_id<<<{"description": "Subdomain id to set for inside of the combinatorial"}>>> = 2
    input<<<{"description": "The mesh we want to modify"}>>> = subdomains
  []
[]The final mesh output is:

Input Parameters
- block_nameSubdomain name to set for inside of the combinatorialC++ Type:SubdomainName Controllable:No Description:Subdomain name to set for inside of the combinatorial 
- constant_expressionsVector of values for the constants in constant_names (can be an FParser expression)C++ Type:std::vector<std::string> Controllable:No Description:Vector of values for the constants in constant_names (can be an FParser expression) 
- constant_namesVector of constants used in the parsed functionC++ Type:std::vector<std::string> Controllable:No Description:Vector of constants used in the parsed function 
- epsilon0Fuzzy comparison toleranceDefault:0 C++ Type:double Unit:(no unit assumed) Controllable:No Description:Fuzzy comparison tolerance 
- excluded_subdomainsA set of subdomain names that will not changed even if they are inside/outside the combinatorial geometryC++ Type:std::vector<SubdomainName> Controllable:No Description:A set of subdomain names that will not changed even if they are inside/outside the combinatorial geometry 
- extra_element_id_namesExtra element integers used in the parsed expressionC++ Type:std::vector<ExtraElementIDName> Controllable:No Description:Extra element integers used in the parsed expression 
Optional Parameters
- disable_fpoptimizerFalseDisable the function parser algebraic optimizerDefault:False C++ Type:bool Controllable:No Description:Disable the function parser algebraic optimizer 
- enable_ad_cacheTrueEnable caching of function derivatives for faster startup timeDefault:True C++ Type:bool Controllable:No Description:Enable caching of function derivatives for faster startup time 
- enable_auto_optimizeTrueEnable automatic immediate optimization of derivativesDefault:True C++ Type:bool Controllable:No Description:Enable automatic immediate optimization of derivatives 
- enable_jitTrueEnable just-in-time compilation of function expressions for faster evaluationDefault:True C++ Type:bool Controllable:No Description:Enable just-in-time compilation of function expressions for faster evaluation 
- evalerror_behaviornanWhat to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exceptionDefault:nan C++ Type:MooseEnum Controllable:No Description:What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception 
Parsed Expression Advanced Parameters
- enableTrueSet the enabled status of the MooseObject.Default:True C++ Type:bool Controllable:No Description:Set the enabled status of the MooseObject. 
- save_with_nameKeep the mesh from this mesh generator in memory with the name specifiedC++ Type:std::string 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 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 meshDefault:False C++ Type:bool 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 Controllable:No Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)