Gas Gap Conductance Constraint

Calculates the LWR fuel-cladding gap conductance through a Mortar approach to solving the thermal contact problem.

warningwarning

GasGapConductanceConstraint is Work In Progress and lacks full functionality and verification.

Description

The object GasGapConductanceConstraint is used to model gap heat transfer. Its functionality is intended to reproduce the behavior of GasGapHeatTransfer using automatic differentiation and a mortar approach to thermal contact.

In its current form, this class computes the overall gap conductance in the following way where is the overall gas conductance, which takes into account the various gases present, is the conductance due to radiation, and is the contribution to conductance due to solid-solid contact.

Example Input Syntax

[ThermalContactMortar<<<{"href": "../../syntax/ThermalContactMortar/index.html"}>>>]
  [thermal_contact]
    secondary_variable<<<{"description": "The secondary variable"}>>> = temperature
    primary_boundary<<<{"description": "The primary surface"}>>> = 100
    secondary_boundary<<<{"description": "The secondary surface"}>>> = 101

    emissivity_primary<<<{"description": "The emissivity of the fuel surface"}>>> = 0.5
    emissivity_secondary<<<{"description": "The emissivity of the cladding surface"}>>> = 0.8
    gascond_scalef<<<{"description": "Scaling factor for gas conductivity."}>>> = 1.0
    contact_pressure<<<{"description": "The contact pressure variable."}>>> = mechanical_normal_lm
    min_gap<<<{"description": "A minimum gap (denominator) size"}>>> = 1e-3
    meyer_hardness_model<<<{"description": "Meyer hardness model of the softer material: DIRECT=specify hardness directly;MATPRO=computed as a function of temperature"}>>> = MATPRO
    use_displaced_mesh<<<{"description": "Whether or not this object should use the displaced mesh for computation.  Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used."}>>> = true
    correct_edge_dropping<<<{"description": "Whether to enable correct edge dropping treatment for mortar constraints. When disabled any Lagrange Multiplier degree of freedom on a secondary element without full primary contributions will be set (strongly) to 0."}>>> = true
    # Force thermal conductivities for contact conductance
    #thermal_conductivity = 750
  []
[]
(test/tests/gap_heat_transfer_mortar_action/gap_heat_transfer_mortar_transient_action.i)

Input Parameters

  • displacementsDisplacement variables

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Displacement variables

  • primary_boundaryThe name of the primary boundary sideset.

    C++ Type:BoundaryName

    Controllable:No

    Description:The name of the primary boundary sideset.

  • primary_subdomainThe name of the primary subdomain.

    C++ Type:SubdomainName

    Controllable:No

    Description:The name of the primary subdomain.

  • secondary_boundaryThe name of the secondary boundary sideset.

    C++ Type:BoundaryName

    Controllable:No

    Description:The name of the secondary boundary sideset.

  • secondary_subdomainThe name of the secondary subdomain.

    C++ Type:SubdomainName

    Controllable:No

    Description:The name of the secondary subdomain.

Required Parameters

  • appended_property_nameName appended to material properties to make them unique

    C++ Type:std::string

    Controllable:No

    Description:Name appended to material properties to make them unique

  • aux_lmAuxiliary Lagrange multiplier variable that is utilized together with the Petrov-Galerkin approach.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Auxiliary Lagrange multiplier variable that is utilized together with the Petrov-Galerkin approach.

  • compute_lm_residualsTrueWhether to compute Lagrange Multiplier residuals

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to compute Lagrange Multiplier residuals

  • compute_primal_residualsTrueWhether to compute residuals for the primal variable.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to compute residuals for the primal variable.

  • conductivity_namethermal_conductivityThe name of the MaterialProperty associated with conductivity ("thermal_conductivity" in the case of heat conduction).

    Default:thermal_conductivity

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the MaterialProperty associated with conductivity ("thermal_conductivity" in the case of heat conduction).

  • contact_coef10The leading coefficient on the solid-solid conduction relation (1/sqrt(m)).

    Default:10

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The leading coefficient on the solid-solid conduction relation (1/sqrt(m)).

  • contact_pressureThe contact pressure variable.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The contact pressure variable.

  • correct_edge_droppingFalseWhether to enable correct edge dropping treatment for mortar constraints. When disabled any Lagrange Multiplier degree of freedom on a secondary element without full primary contributions will be set (strongly) to 0.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to enable correct edge dropping treatment for mortar constraints. When disabled any Lagrange Multiplier degree of freedom on a secondary element without full primary contributions will be set (strongly) to 0.

  • cylinder_axis_point_1Start point for line defining cylindrical axis

    C++ Type:libMesh::VectorValue<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Start point for line defining cylindrical axis

  • cylinder_axis_point_2End point for line defining cylindrical axis

    C++ Type:libMesh::VectorValue<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:End point for line defining cylindrical axis

  • debug_meshFalseWhether this constraint is going to enable mortar segment mesh debug information. An exodusfile will be generated if the user sets this flag to true

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether this constraint is going to enable mortar segment mesh debug information. An exodusfile will be generated if the user sets this flag to true

  • derivative_threshold1e-17Threshold to discard automatic differentiation derivatives. This number is chosen on the order of the machine epsilon based on current experience.

    Default:1e-17

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Threshold to discard automatic differentiation derivatives. This number is chosen on the order of the machine epsilon based on current experience.

  • emissivity_primary1The emissivity of the fuel surface

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The emissivity of the fuel surface

  • emissivity_secondary1The emissivity of the cladding surface

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The emissivity of the cladding surface

  • external_pressure0Input external pressure in Pascals.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Input external pressure in Pascals.

  • gap_conductance_modelDEFAULTGap conductance model: DEFAULT=computed according to the original model;TOPTAN=computed according to Toptan et al., 2020

    Default:DEFAULT

    C++ Type:MooseEnum

    Options:DEFAULT, TOPTAN

    Controllable:No

    Description:Gap conductance model: DEFAULT=computed according to the original model;TOPTAN=computed according to Toptan et al., 2020

  • gap_conductivity_functionThermal conductivity of the gap material as a function. Multiplied by gap_conductivity.

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Thermal conductivity of the gap material as a function. Multiplied by gap_conductivity.

  • gap_geometry_typeGap calculation type.

    C++ Type:MooseEnum

    Options:PLATE, CYLINDER, SPHERE

    Controllable:No

    Description:Gap calculation type.

  • gas_mixtureThe name of the VectorPostprocessor that will compute the gas mixture.

    C++ Type:VectorPostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the VectorPostprocessor that will compute the gas mixture.

  • gas_thermal_conductivity_modelDEFAULTFill gas thermal conductivity model: DEFAULT=traditional model from MATPRO-11, =f(T));ADVANCED=model from Toptan et al. (2019), =f(T,P)

    Default:DEFAULT

    C++ Type:MooseEnum

    Options:DEFAULT, ADVANCED

    Controllable:No

    Description:Fill gas thermal conductivity model: DEFAULT=traditional model from MATPRO-11, =f(T));ADVANCED=model from Toptan et al. (2019), =f(T,P)

  • gascond_scalef1Scaling factor for gas conductivity.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Scaling factor for gas conductivity.

  • ghost_higher_d_neighborsFalseWhether we should ghost higher-dimensional neighbors. This is necessary when we are doing second order mortar with finite volume primal variables, because in order for the method to be second order we must use cell gradients, which couples in the neighbor cells.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether we should ghost higher-dimensional neighbors. This is necessary when we are doing second order mortar with finite volume primal variables, because in order for the method to be second order we must use cell gradients, which couples in the neighbor cells.

  • ghost_point_neighborsFalseWhether we should ghost point neighbors of secondary face elements, and consequently also their mortar interface couples.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether we should ghost point neighbors of secondary face elements, and consequently also their mortar interface couples.

  • interpolate_normalsTrueWhether to interpolate the nodal normals (e.g. classic idea of evaluating field at quadrature points). If this is set to false, then non-interpolated nodal normals will be used, and then the _normals member should be indexed with _i instead of _qp

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to interpolate the nodal normals (e.g. classic idea of evaluating field at quadrature points). If this is set to false, then non-interpolated nodal normals will be used, and then the _normals member should be indexed with _i instead of _qp

  • jump_distance_modelDIRECTJump distance model: DIRECT=specify distances directly;LANNING=computed as a function of gas properties (Lanning and Hahn, 1975)TOPTAN=computed as a function of gas properties (Toptan et al., 2019)

    Default:DIRECT

    C++ Type:MooseEnum

    Options:DIRECT, LANNING, TOPTAN

    Controllable:No

    Description:Jump distance model: DIRECT=specify distances directly;LANNING=computed as a function of gas properties (Lanning and Hahn, 1975)TOPTAN=computed as a function of gas properties (Toptan et al., 2019)

  • jumpdistance_primary0The temperature jump distance for the primary surface (m).

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The temperature jump distance for the primary surface (m).

  • jumpdistance_secondary0The temperature jump distance for the secondary surface (m).

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The temperature jump distance for the secondary surface (m).

  • layer_thicknessThe layer thickness variable computed in LayerThickness auxiliary kernel

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The layer thickness variable computed in LayerThickness auxiliary kernel

  • max_gap1e+06A maximum gap (denominator) size

    Default:1e+06

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:A maximum gap (denominator) size

  • meyer_hardness6.8e+08The Meyer hardness of the softer material (Pa).

    Default:6.8e+08

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The Meyer hardness of the softer material (Pa).

  • meyer_hardness_modelDIRECTMeyer hardness model of the softer material: DIRECT=specify hardness directly;MATPRO=computed as a function of temperature

    Default:DIRECT

    C++ Type:MooseEnum

    Options:DIRECT, MATPRO

    Controllable:No

    Description:Meyer hardness model of the softer material: DIRECT=specify hardness directly;MATPRO=computed as a function of temperature

  • min_gap1e-06A minimum gap (denominator) size

    Default:1e-06

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:A minimum gap (denominator) size

  • min_gap_order0Order of the Taylor expansion below min_gap

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:Order of the Taylor expansion below min_gap

  • minimum_projection_angle40Parameter to control which angle (in degrees) is admissible for the creation of mortar segments. If set to a value close to zero, very oblique projections are allowed, which can result in mortar segments solving physics not meaningfully, and overprojection of primary nodes onto the mortar segment mesh in extreme cases. This parameter is mostly intended for mortar mesh debugging purposes in two dimensions.

    Default:40

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Parameter to control which angle (in degrees) is admissible for the creation of mortar segments. If set to a value close to zero, very oblique projections are allowed, which can result in mortar segments solving physics not meaningfully, and overprojection of primary nodes onto the mortar segment mesh in extreme cases. This parameter is mostly intended for mortar mesh debugging purposes in two dimensions.

  • orderFIRSTThe finite element order

    Default:FIRST

    C++ Type:MooseEnum

    Options:CONSTANT, FIRST, SECOND, THIRD, FOURTH

    Controllable:No

    Description:The finite element order

  • paired_boundaryThe boundary to be penetrated

    C++ Type:BoundaryName

    Controllable:No

    Description:The boundary to be penetrated

  • periodicFalseWhether this constraint is going to be used to enforce a periodic condition. This has the effect of changing the normals vector for projection from outward to inward facing

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether this constraint is going to be used to enforce a periodic condition. This has the effect of changing the normals vector for projection from outward to inward facing

  • plenum_pressureThe name of the plenum_pressure postprocessor value.

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the plenum_pressure postprocessor value.

  • primary_variablePrimal variable on primary surface. If this parameter is not provided then the primary variable will be initialized to the secondary variable

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:Primal variable on primary surface. If this parameter is not provided then the primary variable will be initialized to the secondary variable

  • quadratureDEFAULTQuadrature rule to use on mortar segments. For 2D mortar DEFAULT is recommended. For 3D mortar, QUAD meshes are integrated using triangle mortar segments. While DEFAULT quadrature order is typically sufficiently accurate, exact integration of QUAD mortar faces requires SECOND order quadrature for FIRST variables and FOURTH order quadrature for SECOND order variables.

    Default:DEFAULT

    C++ Type:MooseEnum

    Options:DEFAULT, FIRST, SECOND, THIRD, FOURTH

    Controllable:No

    Description:Quadrature rule to use on mortar segments. For 2D mortar DEFAULT is recommended. For 3D mortar, QUAD meshes are integrated using triangle mortar segments. While DEFAULT quadrature order is typically sufficiently accurate, exact integration of QUAD mortar faces requires SECOND order quadrature for FIRST variables and FOURTH order quadrature for SECOND order variables.

  • roughness_coef1.5The coefficient for the roughness summation.

    Default:1.5

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The coefficient for the roughness summation.

  • roughness_primary1e-06The roughness of the primary surface (m).

    Default:1e-06

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The roughness of the primary surface (m).

  • roughness_secondary1e-06The roughness of the secondary surface (m).

    Default:1e-06

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The roughness of the secondary surface (m).

  • secondary_sideTrueWhether the boundary corresponds to the secondary side in mechanical contact.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether the boundary corresponds to the secondary side in mechanical contact.

  • secondary_variablePrimal variable on secondary surface.

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:Primal variable on secondary surface.

  • sphere_originOrigin for sphere geometry

    C++ Type:libMesh::VectorValue<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Origin for sphere geometry

  • thermal_accommodation_modelDEFAULTThermal accommodation model: DEFAULT=traditional model from Lanning and Hahn (1975);TOPTAN=model from Toptan et al. (2019b).

    Default:DEFAULT

    C++ Type:MooseEnum

    Options:DEFAULT, TOPTAN

    Controllable:No

    Description:Thermal accommodation model: DEFAULT=traditional model from Lanning and Hahn (1975);TOPTAN=model from Toptan et al. (2019b).

  • use_petrov_galerkinFalseWhether to use the Petrov-Galerkin approach for the mortar-based constraints. If set to true, we use the standard basis as the test function and dual basis as the shape function for the interpolation of the Lagrange multiplier variable.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to use the Petrov-Galerkin approach for the mortar-based constraints. If set to true, we use the standard basis as the test function and dual basis as the shape function for the interpolation of the Lagrange multiplier variable.

  • variableThe name of the lagrange multiplier variable that this constraint is applied to. This parameter may not be supplied in the case of using penalty methods for example

    C++ Type:NonlinearVariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the lagrange multiplier variable that this constraint is applied to. This parameter may not be supplied in the case of using penalty methods for example

  • warningsFalseWhether to output warning messages concerning nodes not being found

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to output warning messages concerning nodes not being found

Optional Parameters

  • absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution

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

    Controllable:No

    Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution

  • extra_matrix_tagsThe extra tags for the matrices this Kernel should fill

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

    Controllable:No

    Description:The extra tags for the matrices this Kernel should fill

  • extra_vector_tagsThe extra tags for the vectors this Kernel should fill

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

    Controllable:No

    Description:The extra tags for the vectors this Kernel should fill

  • matrix_tagssystemThe tag for the matrices this Kernel should fill

    Default:system

    C++ Type:MultiMooseEnum

    Options:nontime, system

    Controllable:No

    Description:The tag for the matrices this Kernel should fill

  • vector_tagsnontimeThe tag for the vectors this Kernel should fill

    Default:nontime

    C++ Type:MultiMooseEnum

    Options:nontime, time

    Controllable:No

    Description:The tag for the vectors this Kernel should fill

Contribution To Tagged Field Data 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.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

  • kennard_coefficient5756Nominal leading model coefficient for LANNING.

    Default:5756

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Nominal leading model coefficient for LANNING.

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

  • use_displaced_meshTrueWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

Material Property Retrieval Parameters