ComponentJunction

Component to join two other components.

The ComponentJunction is an ActionComponent which creates a contiguous junction between two components. The following "junction_method" options are currently supported to join these two components at boundaries selected on each component:

  • stitch_meshes when the two components are already in contact, forming a conformal but not yet "stitched" mesh

  • extrude_boundary for extruding one boundary towards the other and stitching the extruded volume onto both surfaces. See additional information below.

There is currently no support for joining two components when the boundary meshes would not be conformal if they were in contact.

This components inherits from the following interfaces to help facilitate the definition of equations on its geometry:

Additional details on the extrude_boundary option

To find the name of the boundaries to stitch, we recommend setting the verbose parameter on both the "first_component" and "second_component", and examining their intermediate mesh.

The extrude_boundary option has the following characteristics:

  • The spline curve guiding the extrusion uses the direction attribute of the components to set its beginnning and end-direction.

  • Thus, only components that either inherit from the ComponentMeshTransformHelper class or that have a direction input parameter are supported at this time.

  • These directions should be pointing towards the outside of the component.

  • The spline curve guiding the extrusion is created by the BSplineCurveGenerator. It connected the centroids of the two component boundaries.

  • The extrusion of the first component surface follows this spline curve. It is then stitched to the second component surface.

  • Thus, extruding one surface onto the other can only be done if the meshes of the two surfaces would be conformal if they were translated and rotated (using the rotation from one component direction to the other) to be in contact.

It is the responsibility of the user to check that the extruded mesh does not overlap with other parts of the mesh (from other components for example). A MeshDiagnosticsGenerator can be connected to the final generator of the ComponentJunction by setting its input to <junction_name>_stitcher.

Input Parameters

  • first_boundaryFirst boundary to connect to.

    C++ Type:BoundaryName

    Controllable:No

    Description:First boundary to connect to.

  • first_componentFirst component to join

    C++ Type:ComponentName

    Controllable:No

    Description:First component to join

  • second_boundarySecond boundary to connect to.

    C++ Type:BoundaryName

    Controllable:No

    Description:Second boundary to connect to.

  • second_componentSecond component to join

    C++ Type:ComponentName

    Controllable:No

    Description:Second component to join

Required Parameters

  • blockBlock name for the junction, if a block is created.

    C++ Type:SubdomainName

    Controllable:No

    Description:Block name for the junction, if a block is created.

  • enforce_all_nodes_match_on_boundariesTrueOnly stitch if all nodes match on the boundary. Defaults to true because there is a search algorithm that forces nodes to match assuming there are equal number of nodes on each target boundary.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Only stitch if all nodes match on the boundary. Defaults to true because there is a search algorithm that forces nodes to match assuming there are equal number of nodes on each target boundary.

  • junction_methodextrude_boundaryHow to join the two components

    Default:extrude_boundary

    C++ Type:MooseEnum

    Options:stitch_meshes, extrude_boundary

    Controllable:No

    Description:How to join the two components

  • n_elem_normalNumber of elements in the normal direction of the junction

    C++ Type:unsigned int

    Controllable:No

    Description:Number of elements in the normal direction of the junction

  • physicsPhysics object(s) active on the Component

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

    Controllable:No

    Description:Physics object(s) active on the Component

  • verboseFalseWhether the component setup should be verbose

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether the component setup should be verbose

Optional Parameters

  • 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.

Advanced Parameters

  • define_functor_propertiesTrueIf true, define functor properties from the values provided

    Default:True

    C++ Type:bool

    Controllable:No

    Description:If true, define functor properties from the values provided

  • define_material_propertiesTrueIf true, define material properties from the values provided

    Default:True

    C++ Type:bool

    Controllable:No

    Description:If true, define material properties from the values provided

  • property_namesList of material properties that should be defined on this ActionComponent

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

    Controllable:No

    Description:List of material properties that should be defined on this ActionComponent

  • property_valuesFunctors that provide the values of the material property on this ActionComponent. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Functors that provide the values of the material property on this ActionComponent. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • use_ad_for_propertiesTrueWhether to use automatic differentiation for the properties defined

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to use automatic differentiation for the properties defined

Material And Functor Property Parameters

  • edge_element_typeEDGE2Type of the EDGE elements to be generated.

    Default:EDGE2

    C++ Type:MooseEnum

    Options:EDGE2, EDGE3, EDGE4

    Controllable:No

    Description:Type of the EDGE elements to be generated.

  • num_cps6Number of control points used to draw the curve. Miniumum of degree+1 points are required.

    Default:6

    C++ Type:unsigned int

    Controllable:No

    Description:Number of control points used to draw the curve. Miniumum of degree+1 points are required.

  • sharpnessSharpness of curve bend. See BSplineCurveGenerator for explanation of the meaning given to sharpness

    C++ Type:double

    Unit:(no unit assumed)

    Range:sharpness>0 & sharpness<=1

    Controllable:No

    Description:Sharpness of curve bend. See BSplineCurveGenerator for explanation of the meaning given to sharpness

1D Mesh Junction Parameters

  • end_radial_growth_rate0Ending rate of radial expansion.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Ending rate of radial expansion.

  • radial_growth_methodCUBICFunctional form to change radius while extruding along curve.

    Default:CUBIC

    C++ Type:MooseEnum

    Options:LINEAR, CUBIC

    Controllable:No

    Description:Functional form to change radius while extruding along curve.

  • start_radial_growth_rate0Starting rate of radial expansion.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Starting rate of radial expansion.

Radial Expansion In 2D And 3D Junction Parameters

  • fixed_value_bc_boundariesBoundaries on which to apply the fixed value boundary condition(s). Outer ordering is variables, inner order is surfaces

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

    Controllable:No

    Description:Boundaries on which to apply the fixed value boundary condition(s). Outer ordering is variables, inner order is surfaces

  • fixed_value_bc_valuesFunctors that provide the fixed value boundary condition(s) values. Outer ordering is variables, inner order is surfaces. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Functors that provide the fixed value boundary condition(s) values. Outer ordering is variables, inner order is surfaces. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • fixed_value_bc_variablesList of variables that have fixed value boundary condition(s) defined on this component

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

    Unit:(no unit assumed)

    Controllable:No

    Description:List of variables that have fixed value boundary condition(s) defined on this component

  • flux_bc_boundariesBoundaries on which to apply the flux boundary condition(s). Outer ordering is variables, inner order is surfaces

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

    Controllable:No

    Description:Boundaries on which to apply the flux boundary condition(s). Outer ordering is variables, inner order is surfaces

  • flux_bc_valuesFunctors that provide the flux boundary condition(s) values. Outer ordering is variables, inner order is surfaces. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Functors that provide the flux boundary condition(s) values. Outer ordering is variables, inner order is surfaces. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • flux_bc_variablesList of variables that have flux boundary condition(s) defined on this component

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

    Unit:(no unit assumed)

    Controllable:No

    Description:List of variables that have flux boundary condition(s) defined on this component

Variable Boundary Conditions Parameters

  • initial_condition_valuesFunctors that provide the initial values of the variables on this ActionComponent. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Functors that provide the initial values of the variables on this ActionComponent. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • initial_condition_variablesList of variables that should have an initial condition defined on the blocks of this ActionComponent

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

    Unit:(no unit assumed)

    Controllable:No

    Description:List of variables that should have an initial condition defined on the blocks of this ActionComponent

Variable Initialization Parameters