Layered1DMaster System

Description

The Layered1D Master Action is a convenience object that simplifies part of the mechanics system setup for Layered1D case. It performs

  • Add StressDivergenceRZ and GeneralizedPlaneStrainOffDiag Kernels

  • Add GeneralizedPlaneStrain ScalarKernels

  • Add GeneralizedPlaneStrainUserObject UserObjects

  • Add Strain calculation material (for the chosen strain model)

  • Add ScalarStrainAux AuxKernel to assemble the scalar out-of-plane strain(s) into one single given out-of-plane strain AuxVariable

  • Correctly set use of displaced mesh

  • Optional: Setup of radial displacement variable (with the correct order for the current mesh)

  • Optional: Setup of scalar out-of-plane-strain variable(s)

  • Optional: Add coupling between temperature variable with out-of-plane strain scalar variable(s) in the GeneralizedPlaneStrainOffDiag Kernel

  • Optional: Setup GeneralizedPlaneStrainReferenceResidual problem

Table 1: Correspondence Among Action Functionality and MooseObjects for the Layered1DMaster Action

FunctionalityReplaced ClassesAssociated Parameters
In-plane equilibrium conditions for RZ coordinate systemStress Divergence RZ Tensors Kerneldisplacements : a string of the displacement field variables
Scalar out-of-plan strain coupling with in-plane field variablesGeneralized Plane Strain Off-diagonal Kernelscalar_out_of_plane_strain: a list of the scalar variables for the out-of-plane strain direction
displacements : a string of the displacement field (in-plane) variable
temperature: a string of the temperature field variable
Out-of-plane scalar variable equilibrium conditionGeneralized Plane Strain ScalarKernelscalar_out_of_plane_strain: a list of the scalar variables for the out-of-plane strain direction
Residual and diagonal Jacobian calculation for scalar out-of-plane strain variablesGeneralized Plane Strain UserObjectscalar_out_of_plane_strain: a list of the scalar variables for the out-of-plane strain direction
Add the displacement variableVariablesadd_variables: boolean
Add the out-of-plane strain scalar variable(s)ScalarVariablesadd_scalar_variables: boolean
Calculation of in-plane strainCompute Axisymmetric 1D Finite Strainstrain: MooseEnum to select finite or small strain formulations
Compute Axisymmetric 1D Small Strain
Compute Axisymmetric 1D Incremental Strainincremental : boolean for using a incremental strain formulation
Add AuxVariable and AuxKernel to gather scalar out-of-plane strainsAuxVariable and ScalarStrainAuxout_of_plane_strain_name: Name provided by user to gather scalar_out_of_plane_strains
Add AuxScalarKernel for refrence residual problemGeneralized Plane Strain Reference Residual AuxScalarKernelsave_in: List of names of auxiliary variables to save this Kernel's residual contributions to

Example Input File Syntax

Input file syntax without reference residual problem, no save_in parameter is set:

[./Layered1DMaster]
  [./fuel_1]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = fuel_1
    out_of_plane_pressure = fuel_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'fuelthermal_strain'
    save_in = saved_x
  [../]
  [./fuel_2]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = fuel_2
    out_of_plane_pressure = fuel_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'fuelthermal_strain'
    save_in = saved_x
  [../]
  [./fuel_3]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = fuel_3
    out_of_plane_pressure = fuel_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'fuelthermal_strain'
    save_in = saved_x
  [../]
  [./clad]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = clad
    out_of_plane_pressure = clad_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'clad_thermal_eigenstrain'
    save_in = saved_x
  [../]
[../]
(test/tests/layered_1D/multi_block.i)

Input file syntax with reference residual problem, with required parameter save_in provided:


[Problem]
  coord_type = RZ
  type = ReferenceResidualProblem
  solution_variables = 'disp_x temp scalar_strain_yy_fuel_10 scalar_strain_yy_fuel_11 scalar_strain_yy_fuel_20 scalar_strain_yy_fuel_21 scalar_strain_yy_fuel_22 scalar_strain_yy_fuel_30 scalar_strain_yy_clad0 scalar_strain_yy_clad1 scalar_strain_yy_clad2 scalar_strain_yy_clad3 scalar_strain_yy_clad4 scalar_strain_yy_clad5 scalar_strain_yy_clad6'
  reference_residual_variables = 'saved_x saved_t saved_scalar_strain_yy_fuel_10 saved_scalar_strain_yy_fuel_11 saved_scalar_strain_yy_fuel_20 saved_scalar_strain_yy_fuel_21 saved_scalar_strain_yy_fuel_22 saved_scalar_strain_yy_fuel_30 saved_scalar_strain_yy_clad0 saved_scalar_strain_yy_clad1 saved_scalar_strain_yy_clad2 saved_scalar_strain_yy_clad3 saved_scalar_strain_yy_clad4 saved_scalar_strain_yy_clad5 saved_scalar_strain_yy_clad6'
[]
(test/tests/layered_1D/multi_block.i)
[./Layered1DMaster]
  [./fuel_1]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = fuel_1
    out_of_plane_pressure = fuel_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'fuelthermal_strain'
    save_in = saved_x
  [../]
  [./fuel_2]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = fuel_2
    out_of_plane_pressure = fuel_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'fuelthermal_strain'
    save_in = saved_x
  [../]
  [./fuel_3]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = fuel_3
    out_of_plane_pressure = fuel_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'fuelthermal_strain'
    save_in = saved_x
  [../]
  [./clad]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = clad
    out_of_plane_pressure = clad_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'clad_thermal_eigenstrain'
    save_in = saved_x
  [../]
[../]
(test/tests/layered_1D/multi_block.i)

Subblocks

The subblocks of the Layered1DMaster action are what triggers MOOSE objects for Layered1D models to be built. If a Layered1D model can be applied for the whole simulation domain, i.e. the whole simulation has one scalar out-of-plane strain, a single subblock should be used.

[./fuel]
  add_variables = true
  add_scalar_variables = true
  fuel_pin_geometry = pin_geometry
  out_of_plane_strain_name = strain_yy
  strain = small
  incremental = true
  eigenstrain_names = eigenstrain
  block = fuel
  outputs = all
  save_in = saved_x
[../]
(test/tests/layered_1D/gps_elastic_2scalar_2slice_1block.i)

If different subdomain has different Layered1D model, multiple subblocks with subdomain restrictions can be used. Generally, the number of subblocks is the same as the number of scalar out-of-plane strains the simulation has.

[./Layered1DMaster]
  [./fuel_1]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = fuel_1
    out_of_plane_pressure = fuel_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'fuelthermal_strain'
    save_in = saved_x
  [../]
  [./fuel_2]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = fuel_2
    out_of_plane_pressure = fuel_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'fuelthermal_strain'
    save_in = saved_x
  [../]
  [./fuel_3]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = fuel_3
    out_of_plane_pressure = fuel_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'fuelthermal_strain'
    save_in = saved_x
  [../]
  [./clad]
    add_variables = true
    add_scalar_variables = true
    out_of_plane_strain_name = strain_yy
    fuel_pin_geometry = pin_geometry
    block = clad
    out_of_plane_pressure = clad_axial_pressure
    use_displaced_mesh = true
    strain = finite
    eigenstrain_names = 'clad_thermal_eigenstrain'
    save_in = saved_x
  [../]
[../]
(test/tests/layered_1D/multi_block.i)

Parameters supplied at the [Modules/TensorMechanics/Layered1DMaster] level act as defaults for the Master action subblocks.

Input Parameters

  • fuel_pin_geometryUser object name which provides subblock index

    C++ Type:UserObjectName

    Description:User object name which provides subblock index

  • displacementsThe nonlinear displacement variables for the problem

    C++ Type:std::vector

    Description:The nonlinear displacement variables for the problem

Required Parameters

  • add_scalar_variablesFalseAdd the scalar_out_of_plane_strain variables

    Default:False

    C++ Type:bool

    Description:Add the scalar_out_of_plane_strain variables

  • decomposition_methodTaylorExpansionMethods to calculate the finite strain and rotation increments

    Default:TaylorExpansion

    C++ Type:MooseEnum

    Description:Methods to calculate the finite strain and rotation increments

  • strain_base_nameThe base name used for the strain. If not provided, it will be set equal to base_name

    C++ Type:std::string

    Description:The base name used for the strain. If not provided, it will be set equal to base_name

  • base_nameMaterial property base name

    C++ Type:std::string

    Description:Material property base name

  • use_displaced_meshFalseWhether to use displaced mesh in the kernels

    Default:False

    C++ Type:bool

    Description:Whether to use displaced mesh in the kernels

  • incrementalFalseUse incremental or total strain

    Default:False

    C++ Type:bool

    Description:Use incremental or total strain

  • scalar_out_of_plane_strain_variablesList of scalar_out_of_plane_strain variables

    C++ Type:std::vector

    Description:List of scalar_out_of_plane_strain variables

  • eigenstrain_namesList of eigenstrains to be applied in this strain calculation

    C++ Type:std::vector

    Description:List of eigenstrains to be applied in this strain calculation

  • strainSMALLStrain formulation

    Default:SMALL

    C++ Type:MooseEnum

    Description:Strain formulation

  • add_variablesFalseAdd the displacement variables

    Default:False

    C++ Type:bool

    Description:Add the displacement variables

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector

    Description:If specified blocks matching these identifiers will be skipped.

  • volumetric_locking_correctionFalseFlag to correct volumetric locking

    Default:False

    C++ Type:bool

    Description:Flag to correct volumetric locking

  • out_of_plane_strain_namescalar_strain_yyName provided by user for aux variable to gather scalar_out_of_plane_strains

    Default:scalar_strain_yy

    C++ Type:AuxVariableName

    Description:Name provided by user for aux variable to gather scalar_out_of_plane_strains

  • use_finite_deform_jacobianFalseJacobian for corrotational finite strain

    Default:False

    C++ Type:bool

    Description:Jacobian for corrotational finite strain

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector

    Description:If specified only the blocks named will be visited and made active

  • temperatureThe temperature

    C++ Type:NonlinearVariableName

    Description:The temperature

Optional Parameters

  • generate_outputAdd scalar quantity output for stress and/or strain

    C++ Type:MultiMooseEnum

    Description:Add scalar quantity output for stress and/or strain

  • additional_generate_outputAdd scalar quantity output for stress and/or strain (will be appended to the list in `generate_output`)

    C++ Type:MultiMooseEnum

    Description:Add scalar quantity output for stress and/or strain (will be appended to the list in `generate_output`)

Output Parameters

  • outputsnone Vector of output names were you would like to restrict the output of variables(s) associated with this object

    Default:none

    C++ Type:std::vector

    Description:Vector of output names were you would like to restrict the output of variables(s) associated with this object

  • save_inThe displacement residuals

    C++ Type:std::vector

    Description:The displacement residuals

  • blockThe list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to

    C++ Type:std::vector

    Description:The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to

  • diag_save_inThe displacement diagonal preconditioner terms

    C++ Type:std::vector

    Description:The displacement diagonal preconditioner terms

Advanced Parameters

  • scalar_out_of_plane_strainScalar variable for the out-of-plane strain (in y direction for 1D Axisymmetric or in z direction for 2D Cartesian problems)

    C++ Type:NonlinearVariableName

    Description:Scalar variable for the out-of-plane strain (in y direction for 1D Axisymmetric or in z direction for 2D Cartesian problems)

  • out_of_plane_pressure0Function used to prescribe pressure in the out-of-plane direction (y for 1D Axisymmetric or z for 2D Cartesian problems)

    Default:0

    C++ Type:FunctionName

    Description:Function used to prescribe pressure in the out-of-plane direction (y for 1D Axisymmetric or z for 2D Cartesian problems)

  • out_of_plane_directionzThe direction of the out-of-plane strain.

    Default:z

    C++ Type:MooseEnum

    Description:The direction of the out-of-plane strain.

  • planar_formulationNONEOut-of-plane stress/strain formulation

    Default:NONE

    C++ Type:MooseEnum

    Description:Out-of-plane stress/strain formulation

  • pressure_factor1Scale factor applied to prescribed pressure

    Default:1

    C++ Type:double

    Description:Scale factor applied to prescribed pressure

Out-Of-Plane Stress/Strain Parameters

Associated Actions

  • Layered1DActionSet up (Aux)variables, materials and (Aux)kernels for layered one dimensional simulations