- base_fileThe file containing macroscopic XS.
C++ Type:std::string
Controllable:No
Description:The file containing macroscopic XS.
- interp_typeThe type of interpolation to perform.
C++ Type:MooseEnum
Controllable:No
Description:The type of interpolation to perform.
- material_keyThe file key where the macroscopic XS can be found.
C++ Type:std::string
Controllable:No
Description:The file key where the macroscopic XS can be found.
- num_groupsThe number of groups the energy spectrum is divided into.
C++ Type:unsigned int
Controllable:No
Description:The number of groups the energy spectrum is divided into.
- num_precursor_groupsThe number of delayed neutron precursor groups.
C++ Type:unsigned int
Controllable:No
Description:The number of delayed neutron precursor groups.
- prop_namesThe names of the properties this material will have
C++ Type:std::vector<std::string>
Controllable:No
Description:The names of the properties this material will have
- prop_valuesThe values associated with the named properties
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:Yes
Description:The values associated with the named properties
MoltresJsonMaterial
Declares material properties based on names and values prescribed by input parameters.
Overview
This material class preloads and interpolates JSON-based group constant data provided at various temperature. MoltresJsonMaterial declares the interpolated group constant data as material properties which may be accessed by the neutron diffusion kernels to model a reactor and simulate temperature reactivity feedback. Refer to the "Materials Block" subsection of the Tutorial 2a for more information.
Table 1: Relevant group constants for neutron energy group or delayed neutron precursor group
| Group constant | Formula | Label |
|---|---|---|
| Macroscopic fission cross section | FISSXS | |
| Macroscopic removal cross section | REMXS | |
| Macroscopic scattering cross section | GTRANSFXS | |
| Neutron diffusion coefficient | DIFFCOEF | |
| Inverse neutron velocity | RECIPVEL | |
| Fission neutron spectrum (total) | CHI_T | |
| Fission neutron spectrum (prompt) | CHI_P | |
| Fission neutron spectrum (delayed) | CHI_D | |
| Effective delayed neutron fraction | BETA_EFF | |
| Delayed neutron precursor decay constant | DECAY_CONSTANT |
Example Input File Syntax
Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Options:NONE, ELEMENT, SUBDOMAIN
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared 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 declared properties. The suffix will be prepended with a '_' character.
- group_constantsREMXS FISSXS NSF FISSE DIFFCOEF RECIPVEL CHI_T CHI_P CHI_D GTRANSFXS BETA_EFF DECAY_CONSTANT Group constants to be determined.
Default:REMXS FISSXS NSF FISSE DIFFCOEF RECIPVEL CHI_T CHI_P CHI_D GTRANSFXS BETA_EFF DECAY_CONSTANT
C++ Type:std::vector<std::string>
Controllable:No
Description:Group constants to be determined.
- sss2_inputTrueWhether serpent 2 was used to generate the input files.
Default:True
C++ Type:bool
Controllable:No
Description:Whether serpent 2 was used to generate the input files.
- temperature937.0The temperature field for determining group constants.
Default:937.0
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The temperature field for determining group constants.
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.
- 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
- search_methodnearest_node_connected_sidesChoice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).
Default:nearest_node_connected_sides
C++ Type:MooseEnum
Options:nearest_node_connected_sides, all_proximate_sides
Controllable:No
Description:Choice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).
- 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_meshFalseWhether 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:False
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
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs 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
Input Files
- (tests/sn/lattice-sn.i)
- (tests/postprocessors/neutron_leakage.i)
- (tests/materials/mjm_linear.i)
- (tests/materials/mjm_none.i)
- (tutorial/PinCell/pin_cell.i)
- (tests/sn/lattice-sn-dnp.i)
- (tests/hybrid/absorber-air-lattice-ref-hybrid.i)
- (tutorial/eigenvalue/nts.i)
- (tests/materials/mjm_monotone_cubic.i)
- (tests/materials/mjm_spline.i)
- (tests/sn/absorber-air-lattice-ref-sn.i)
- (tutorial/eigenvalue/nts-action.i)
- (tests/bcs/vacuum_bc.i)
- (tutorial/transient/transient.i)
Child Objects
(tests/sn/lattice-sn.i)
[GlobalParams]
num_groups = 8
num_precursor_groups = 6
group_fluxes = 'group1 group2 group3 group4 group5 group6 group7 group8'
temperature = 900
sss2_input = true
account_delayed = false
use_exp_form = false
search_value_conflicts = false
[]
[Problem]
type = EigenProblem
bx_norm = bnorm
[]
[Mesh]
second_order = true
[cmg]
type = CartesianMeshGenerator
dim = 1
dx = '1.9375 1.125 3.875 1.125 3.875 1.125 3.875 1.125 1.9375'
ix = '5 4 10 4 10 4 10 4 5'
subdomain_id = '0 1 0 1 0 1 0 1 0'
[]
[]
[AuxVariables]
[drift1]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift2]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift3]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift4]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift5]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift6]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift7]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift8]
order = SECOND
family = MONOMIAL
components = 3
[]
[fission_rate]
order = SECOND
family = MONOMIAL
block = 1
[]
[neutron_source]
order = SECOND
family = MONOMIAL
block = 1
[]
[]
[Nt]
family = LAGRANGE
order = SECOND
var_name_base = group
vacuum_boundaries = ''
fission_blocks = '1'
create_temperature_var = false
eigen = true
[]
[Kernels]
[group1_drift]
type = GroupDrift
variable = group1
group_drift_var = drift1
[]
[group2_drift]
type = GroupDrift
variable = group2
group_drift_var = drift2
[]
[group3_drift]
type = GroupDrift
variable = group3
group_drift_var = drift3
[]
[group4_drift]
type = GroupDrift
variable = group4
group_drift_var = drift4
[]
[group5_drift]
type = GroupDrift
variable = group5
group_drift_var = drift5
[]
[group6_drift]
type = GroupDrift
variable = group6
group_drift_var = drift6
[]
[group7_drift]
type = GroupDrift
variable = group7
group_drift_var = drift7
[]
[group8_drift]
type = GroupDrift
variable = group8
group_drift_var = drift8
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateAux
variable = fission_rate
block = 1
[]
[neutron_source]
type = NeutronSourceAux
variable = neutron_source
block = 1
[]
[]
[Materials]
[fuel]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/lattice.json'
material_key = 'fuel'
interp_type = 'none'
block = '1'
[]
[graphite]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/lattice.json'
material_key = 'graphite'
interp_type = 'none'
block = '0'
[]
[]
[Executioner]
type = Eigenvalue
free_power_iterations = 2
fixed_point_abs_tol = 1e-10
fixed_point_rel_tol = 1e-10
fixed_point_max_its = 20
accept_on_max_fixed_point_iteration = false
nl_abs_tol = 1e-10
nl_rel_tol = 1e-50
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 200'
line_search = 'none'
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
input_files = lattice-sn-sub.i
execute_on = timestep_end
keep_solution_during_restore = true
update_old_solution_when_keeping_solution_during_restore = false
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'group1 group2 group3 group4 group5 group6 group7 group8'
variable = 'group1 group2 group3 group4 group5 group6 group7 group8'
to_multi_app = sub
[]
[to_sub_k]
type = MultiAppPostprocessorTransfer
from_postprocessor = eigenvalue
to_postprocessor = eigenvalue
to_multi_app = sub
[]
[from_sub_drift1]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift1 drift1 drift1'
variable = 'drift1 drift1 drift1'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift2]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift2 drift2 drift2'
variable = 'drift2 drift2 drift2'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift3]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift3 drift3 drift3'
variable = 'drift3 drift3 drift3'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift4]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift4 drift4 drift4'
variable = 'drift4 drift4 drift4'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift5]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift5 drift5 drift5'
variable = 'drift5 drift5 drift5'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift6]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift6 drift6 drift6'
variable = 'drift6 drift6 drift6'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift7]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift7 drift7 drift7'
variable = 'drift7 drift7 drift7'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift8]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift8 drift8 drift8'
variable = 'drift8 drift8 drift8'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[]
[Postprocessors]
[bnorm]
type = ElmIntegTotFissNtsPostprocessor
block = 1
execute_on = 'initial linear timestep_end'
[]
[eigenvalue]
type = VectorPostprocessorComponent
vectorpostprocessor = eigenvalues
vector_name = eigen_values_real
index = 0
[]
[]
[VectorPostprocessors]
[eigenvalues]
type = Eigenvalues
inverse_eigenvalue = true
outputs = console
[]
[]
[Outputs]
[exodus]
type = Exodus
discontinuous = true
[]
[]
(tests/postprocessors/neutron_leakage.i)
[GlobalParams]
group_fluxes = 'group1 group2'
num_groups = 2
num_precursor_groups = 0
use_exp_form = false
temperature = 900
sss2_input = true
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
xmax = 1
ymax = 1
[]
[]
[Variables]
[group1]
[]
[group2]
[]
[]
[Kernels]
[group1_diffusion]
type = GroupDiffusion
variable = group1
group_number = 1
[]
[group2_diffusion]
type = GroupDiffusion
variable = group2
group_number = 2
[]
[]
[BCs]
[group1_left]
type = DirichletBC
variable = group1
boundary = left
value = 3
[]
[group1_right]
type = DirichletBC
variable = group1
boundary = right
value = 2
[]
[group2_left]
type = DirichletBC
variable = group2
boundary = left
value = 30
[]
[group2_right]
type = DirichletBC
variable = group2
boundary = right
value = 20
[]
[]
[Materials]
[mat]
type = MoltresJsonMaterial
base_file = mat.json
material_key = 'mat1'
interp_type = 'none'
group_constants = 'DIFFCOEF'
[]
[]
[Executioner]
type = Steady
[]
[Postprocessors]
[group1_leakage]
type = NeutronLeakage
variable = group1
boundary = 'right'
group_number = 1
[]
[group2_leakage]
type = NeutronLeakage
variable = group2
boundary = 'right'
group_number = 2
[]
[total_leakage]
type = TotalNeutronLeakage
boundary = 'right'
[]
[]
[Outputs]
csv = true
[]
(tests/materials/mjm_linear.i)
[GlobalParams]
num_groups = 2
num_precursor_groups = 6
use_exp_form = false
group_fluxes = 'group1 group2'
temperature = 922
sss2_input = true
account_delayed = false
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Nt]
var_name_base = group
create_temperature_var = false
eigen = true
[]
[Materials]
[fuel]
type = MoltresJsonMaterial
base_file = 'xsdata.json'
material_key = 'fuel'
interp_type = 'linear'
[]
[]
[Executioner]
type = Eigenvalue
initial_eigenvalue = 1
nl_abs_tol = 1e-12
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[k_eff]
type = VectorPostprocessorComponent
index = 0
vectorpostprocessor = k_vpp
vector_name = eigen_values_real
[]
[fiss_neutrons]
type = ElmIntegTotFissNtsPostprocessor
execute_on = linear
[]
[tot_fissions]
type = ElmIntegTotFissPostprocessor
execute_on = linear
[]
[group1diff]
type = ElementL2Diff
variable = group1
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[k_vpp]
type = Eigenvalues
inverse_eigenvalue = true
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = true
[out]
type = Exodus
[]
[]
[Debug]
show_var_residual_norms = true
[]
(tests/materials/mjm_none.i)
[GlobalParams]
num_groups = 2
num_precursor_groups = 6
use_exp_form = false
group_fluxes = 'group1 group2'
temperature = 900
sss2_input = true
account_delayed = false
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Nt]
var_name_base = group
create_temperature_var = false
eigen = true
[]
[Materials]
[fuel]
type = MoltresJsonMaterial
base_file = 'xsdata-900K.json'
material_key = 'fuel'
interp_type = 'none'
[]
[]
[Executioner]
type = Eigenvalue
initial_eigenvalue = 1
nl_abs_tol = 1e-12
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[k_eff]
type = VectorPostprocessorComponent
index = 0
vectorpostprocessor = k_vpp
vector_name = eigen_values_real
[]
[fiss_neutrons]
type = ElmIntegTotFissNtsPostprocessor
execute_on = linear
[]
[tot_fissions]
type = ElmIntegTotFissPostprocessor
execute_on = linear
[]
[group1diff]
type = ElementL2Diff
variable = group1
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[k_vpp]
type = Eigenvalues
inverse_eigenvalue = true
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = true
[out]
type = Exodus
[]
[]
[Debug]
show_var_residual_norms = true
[]
(tutorial/PinCell/pin_cell.i)
global_temperature = 600
[GlobalParams]
num_groups = 2
base_file = 'PinXS.json'
group_fluxes = ' group1 group2'
num_precursor_groups = 6
use_exp_form = false
temperature = ${global_temperature}
[]
[Mesh]
file = pin_cell_mesh.e
[]
[Problem]
type = FEProblem
coord_type = XYZ
[]
[Nt]
var_name_base = group
create_temperature_var = false
eigen = true
account_delayed = 0
sss2_input = 1
[]
[Materials]
[F]
type = MoltresJsonMaterial
block = '1 2'
material_key = 'F'
interp_type = 'NONE'
temperature = 600
prop_names = ''
prop_values = ''
[]
[C]
type = MoltresJsonMaterial
block = 3
material_key = 'C'
interp_type = 'NONE'
temperature = 600
prop_names = ''
prop_values = ''
[]
[W]
type = MoltresJsonMaterial
block = 4
material_key = 'W'
interp_type = 'NONE'
temperature = 600
prop_names = ''
prop_values = ''
[]
[]
[Executioner]
type = NonlinearEigen
max_power_iterations = 50
xdiff = 'group1diff'
bx_norm = 'bnorm'
k0 = 1.0
pfactor = 1e-2
l_max_its = 100
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[bnorm]
type = ElmIntegTotFissNtsPostprocessor
execute_on = linear
[]
[tot_fissions]
type = ElmIntegTotFissPostprocessor
execute_on = linear
[]
[group1norm]
type = ElementIntegralVariablePostprocessor
variable = group1
execute_on = linear
[]
[group1max]
type = NodalExtremeValue
value_type = max
variable = group1
execute_on = timestep_end
[]
[group1diff]
type = ElementL2Diff
variable = group1
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[group2norm]
type = ElementIntegralVariablePostprocessor
variable = group2
execute_on = linear
[]
[group2max]
type = NodalExtremeValue
value_type = max
variable = group2
execute_on = timestep_end
[]
[group2diff]
type = ElementL2Diff
variable = group2
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[]
[Outputs]
[out]
type = Exodus
execute_on = 'timestep_end'
[]
[]
(tests/sn/lattice-sn-dnp.i)
[GlobalParams]
num_groups = 8
num_precursor_groups = 6
group_fluxes = 'group1 group2 group3 group4 group5 group6 group7 group8'
pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
temperature = 900
sss2_input = true
account_delayed = true
use_exp_form = false
search_value_conflicts = false
[]
[Problem]
type = EigenProblem
bx_norm = bnorm
[]
[Mesh]
second_order = true
[cmg]
type = CartesianMeshGenerator
dim = 1
dx = '1.9375 1.125 3.875 1.125 3.875 1.125 3.875 1.125 1.9375'
ix = '5 4 10 4 10 4 10 4 5'
subdomain_id = '0 1 0 1 0 1 0 1 0'
[]
[]
[AuxVariables]
[drift1]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift2]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift3]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift4]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift5]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift6]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift7]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift8]
order = SECOND
family = MONOMIAL
components = 3
[]
[delayed_source]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[]
[Nt]
family = LAGRANGE
order = SECOND
var_name_base = group
vacuum_boundaries = ''
fission_blocks = 1
pre_blocks = 1
create_temperature_var = false
eigen = true
[]
[Precursors]
[pres]
var_name_base = pre
block = 1
outlet_boundaries = ''
u_def = 0
v_def = 0
w_def = 0
nt_exp_form = false
loop_precursors = false
family = MONOMIAL
order = CONSTANT
transient = false
eigen = true
[]
[]
[Kernels]
[group1_drift]
type = GroupDrift
variable = group1
group_drift_var = drift1
[]
[group2_drift]
type = GroupDrift
variable = group2
group_drift_var = drift2
[]
[group3_drift]
type = GroupDrift
variable = group3
group_drift_var = drift3
[]
[group4_drift]
type = GroupDrift
variable = group4
group_drift_var = drift4
[]
[group5_drift]
type = GroupDrift
variable = group5
group_drift_var = drift5
[]
[group6_drift]
type = GroupDrift
variable = group6
group_drift_var = drift6
[]
[group7_drift]
type = GroupDrift
variable = group7
group_drift_var = drift7
[]
[group8_drift]
type = GroupDrift
variable = group8
group_drift_var = drift8
[]
[]
[AuxKernels]
[delayed_neutron_source]
type = DelayedNeutronSourceAux
variable = delayed_source
[]
[]
[Materials]
[fuel]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/lattice.json'
material_key = 'fuel'
interp_type = 'none'
block = '1'
[]
[graphite]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/lattice.json'
material_key = 'graphite'
interp_type = 'none'
block = '0'
[]
[]
[Executioner]
type = Eigenvalue
free_power_iterations = 2
fixed_point_abs_tol = 1e-10
fixed_point_rel_tol = 1e-10
fixed_point_max_its = 20
accept_on_max_fixed_point_iteration = false
nl_abs_tol = 1e-10
nl_rel_tol = 1e-50
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 200'
line_search = 'none'
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
input_files = lattice-sn-dnp-sub.i
execute_on = timestep_end
keep_solution_during_restore = true
update_old_solution_when_keeping_solution_during_restore = false
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'group1 group2 group3 group4 group5 group6 group7 group8 delayed_source'
variable = 'group1 group2 group3 group4 group5 group6 group7 group8 delayed_source'
to_multi_app = sub
[]
[to_sub_k]
type = MultiAppPostprocessorTransfer
from_postprocessor = eigenvalue
to_postprocessor = eigenvalue
to_multi_app = sub
[]
[from_sub_drift1]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift1 drift1 drift1'
variable = 'drift1 drift1 drift1'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift2]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift2 drift2 drift2'
variable = 'drift2 drift2 drift2'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift3]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift3 drift3 drift3'
variable = 'drift3 drift3 drift3'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift4]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift4 drift4 drift4'
variable = 'drift4 drift4 drift4'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift5]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift5 drift5 drift5'
variable = 'drift5 drift5 drift5'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift6]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift6 drift6 drift6'
variable = 'drift6 drift6 drift6'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift7]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift7 drift7 drift7'
variable = 'drift7 drift7 drift7'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift8]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift8 drift8 drift8'
variable = 'drift8 drift8 drift8'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[]
[Postprocessors]
[bnorm]
type = ElmIntegTotFissNtsPostprocessor
block = 1
execute_on = 'initial linear timestep_end'
[]
[eigenvalue]
type = VectorPostprocessorComponent
vectorpostprocessor = eigenvalues
vector_name = eigen_values_real
index = 0
[]
[]
[VectorPostprocessors]
[eigenvalues]
type = Eigenvalues
inverse_eigenvalue = true
outputs = console
[]
[]
[Outputs]
[exodus]
type = Exodus
discontinuous = true
[]
[]
(tests/hybrid/absorber-air-lattice-ref-hybrid.i)
[GlobalParams]
num_groups = 8
num_precursor_groups = 6
group_fluxes = 'group1 group2 group3 group4 group5 group6 group7 group8'
temperature = 900
sss2_input = true
account_delayed = false
use_exp_form = false
set_diffcoef_limit = true
search_value_conflicts = false
bottom_left = '0 0 0'
top_right = '10 0 0'
[]
[Problem]
type = EigenProblem
bx_norm = bnorm
[]
[Mesh]
second_order = true
[cmg]
type = CartesianMeshGenerator
dim = 1
dx = '0.4 0.1 1 1.5625 3.875 1.125 3.875 1.125 3.875 1.125 3.875 1.125 3.875 1.125 3.875 1.125 3.875 1.125 3.875 3.0625 5'
ix = '4 2 4 6 10 4 10 4 10 4 10 4 10 4 10 4 10 4 10 12 32'
subdomain_id = '0 0 1 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 4'
[]
[fuel]
type = SubdomainBoundingBoxGenerator
input = cmg
restricted_subdomains = 2
block_id = 5
bottom_left = '0 0 0'
top_right = '5 0 0'
[]
[graphite]
type = SubdomainBoundingBoxGenerator
input = fuel
restricted_subdomains = 3
block_id = 6
bottom_left = '0 0 0'
top_right = '7.5 0 0'
[]
[fuel_adaptive]
type = SubdomainBoundingBoxGenerator
input = graphite
restricted_subdomains = 2
block_id = 7
bottom_left = '5 0 0'
top_right = '10 0 0'
[]
[]
[AuxVariables]
[drift1]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift2]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift3]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift4]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift5]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift6]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift7]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift8]
order = SECOND
family = MONOMIAL
components = 3
[]
[]
[Nt]
family = LAGRANGE
order = SECOND
var_name_base = group
vacuum_boundaries = 'right'
fission_blocks = '2 5 7'
create_temperature_var = false
eigen = true
[]
[Kernels]
[group1_drift]
type = GroupDrift
variable = group1
block = '0 1 5 6'
group_drift_var = drift1
[]
[group2_drift]
type = GroupDrift
variable = group2
block = '0 1 5 6'
group_drift_var = drift2
[]
[group3_drift]
type = GroupDrift
variable = group3
block = '0 1 5 6'
group_drift_var = drift3
[]
[group4_drift]
type = GroupDrift
variable = group4
block = '0 1 5 6'
group_drift_var = drift4
[]
[group5_drift]
type = GroupDrift
variable = group5
block = '0 1 5 6'
group_drift_var = drift5
[]
[group6_drift]
type = GroupDrift
variable = group6
block = '0 1 5 6'
group_drift_var = drift6
[]
[group7_drift]
type = GroupDrift
variable = group7
block = '0 1 5 6'
group_drift_var = drift7
[]
[group8_drift]
type = GroupDrift
variable = group8
block = '0 1 5 6'
group_drift_var = drift8
[]
[group1_drift_adaptive]
type = GroupDrift
variable = group1
block = '7'
group_drift_var = drift1
adaptive = true
[]
[group2_drift_adaptive]
type = GroupDrift
variable = group2
block = '7'
group_drift_var = drift2
adaptive = true
[]
[group3_drift_adaptive]
type = GroupDrift
variable = group3
block = '7'
group_drift_var = drift3
adaptive = true
[]
[group4_drift_adaptive]
type = GroupDrift
variable = group4
block = '7'
group_drift_var = drift4
adaptive = true
[]
[group5_drift_adaptive]
type = GroupDrift
variable = group5
block = '7'
group_drift_var = drift5
adaptive = true
[]
[group6_drift_adaptive]
type = GroupDrift
variable = group6
block = '7'
group_drift_var = drift6
adaptive = true
[]
[group7_drift_adaptive]
type = GroupDrift
variable = group7
block = '7'
group_drift_var = drift7
adaptive = true
[]
[group8_drift_adaptive]
type = GroupDrift
variable = group8
block = '7'
group_drift_var = drift8
adaptive = true
[]
[]
[Materials]
[absorber]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'ctrlrod'
interp_type = 'none'
block = '0'
[]
[air]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'air'
interp_type = 'none'
block = '1'
[]
[fuel]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'fuel'
interp_type = 'none'
block = '2 5 7'
[]
[graphite]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'graphite'
interp_type = 'none'
block = '3 6'
[]
[inor]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'inor'
interp_type = 'none'
block = '4'
[]
[]
[Executioner]
type = Eigenvalue
free_power_iterations = 2
fixed_point_abs_tol = 1e-10
fixed_point_rel_tol = 1e-8
fixed_point_max_its = 8
accept_on_max_fixed_point_iteration = false
nl_abs_tol = 1e-10
nl_rel_tol = 1e-50
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 200'
line_search = 'none'
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
input_files = absorber-air-lattice-ref-hybrid-sub.i
execute_on = timestep_end
keep_solution_during_restore = true
update_old_solution_when_keeping_solution_during_restore = false
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'group1 group2 group3 group4 group5 group6 group7 group8'
variable = 'group1 group2 group3 group4 group5 group6 group7 group8'
to_multi_app = sub
[]
[to_sub_k]
type = MultiAppPostprocessorTransfer
from_postprocessor = eigenvalue
to_postprocessor = eigenvalue
to_multi_app = sub
[]
[from_sub_drift1]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift1 drift1 drift1'
variable = 'drift1 drift1 drift1'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift2]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift2 drift2 drift2'
variable = 'drift2 drift2 drift2'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift3]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift3 drift3 drift3'
variable = 'drift3 drift3 drift3'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift4]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift4 drift4 drift4'
variable = 'drift4 drift4 drift4'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift5]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift5 drift5 drift5'
variable = 'drift5 drift5 drift5'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift6]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift6 drift6 drift6'
variable = 'drift6 drift6 drift6'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift7]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift7 drift7 drift7'
variable = 'drift7 drift7 drift7'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift8]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift8 drift8 drift8'
variable = 'drift8 drift8 drift8'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[]
[Postprocessors]
[bnorm]
type = ElmIntegTotFissNtsPostprocessor
block = '2 5 7'
execute_on = 'initial linear timestep_end'
[]
[eigenvalue]
type = VectorPostprocessorComponent
vectorpostprocessor = eigenvalues
vector_name = eigen_values_real
index = 0
[]
[]
[VectorPostprocessors]
[eigenvalues]
type = Eigenvalues
inverse_eigenvalue = true
outputs = console
[]
[]
[Outputs]
perf_graph = true
[exodus]
type = Exodus
discontinuous = true
execute_on = 'initial timestep_end failed'
[]
[]
(tutorial/eigenvalue/nts.i)
[GlobalParams]
num_groups = 2
num_precursor_groups = 6
use_exp_form = false
group_fluxes = 'group1 group2'
pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
temperature = 900
sss2_input = true
account_delayed = true
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = 'mesh.e'
[]
[]
[Problem]
type = EigenProblem
bx_norm = bnorm
[]
[Variables]
[group1]
order = FIRST
family = LAGRANGE
[]
[group2]
order = FIRST
family = LAGRANGE
[]
[]
[Precursors]
[pres]
var_name_base = pre
family = MONOMIAL
order = CONSTANT
block = 0
outlet_boundaries = 'fuel_top'
velocity_type = constant
u_def = 0
v_def = 18.085
w_def = 0
nt_exp_form = false
loop_precursors = false
transient = false
eigen = true
[]
[]
[Kernels]
#---------------------------------------------------------------------
# Group 1 Neutronics
#---------------------------------------------------------------------
[sigma_r_group1]
type = SigmaR
variable = group1
group_number = 1
[]
[diff_group1]
type = GroupDiffusion
variable = group1
group_number = 1
[]
[inscatter_group1]
type = InScatter
variable = group1
group_number = 1
[]
[fission_source_group1]
type = CoupledFissionKernel
variable = group1
group_number = 1
block = '0'
extra_vector_tags = 'eigen'
[]
[delayed_group1]
type = DelayedNeutronSource
variable = group1
block = '0'
group_number = 1
[]
#---------------------------------------------------------------------
# Group 2 Neutronics
#---------------------------------------------------------------------
[sigma_r_group2]
type = SigmaR
variable = group2
group_number = 2
[]
[diff_group2]
type = GroupDiffusion
variable = group2
group_number = 2
[]
[fission_source_group2]
type = CoupledFissionKernel
variable = group2
group_number = 2
block = '0'
extra_vector_tags = 'eigen'
[]
[inscatter_group2]
type = InScatter
variable = group2
group_number = 2
[]
[]
[BCs]
[vacuum_group1]
type = VacuumConcBC
boundary = 'fuel_bottom fuel_top mod_bottom mod_top right'
variable = group1
[]
[vacuum_group2]
type = VacuumConcBC
boundary = 'fuel_bottom fuel_top mod_bottom mod_top right'
variable = group2
[]
[]
[Materials]
[fuel]
type = MoltresJsonMaterial
block = '0'
base_file = 'xsdata.json'
material_key = 'fuel'
interp_type = LINEAR
prop_names = ''
prop_values = ''
[]
[graphite]
type = MoltresJsonMaterial
block = '1'
base_file = 'xsdata.json'
material_key = 'graphite'
interp_type = LINEAR
prop_names = ''
prop_values = ''
[]
[]
[Executioner]
type = Eigenvalue
initial_eigenvalue = 1
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
automatic_scaling = true
compute_scaling_once = false
resid_vs_jac_scaling_param = 0.1
line_search = none
[]
[Postprocessors]
[k_eff]
type = VectorPostprocessorComponent
index = 0
vectorpostprocessor = k_vpp
vector_name = eigen_values_real
[]
[bnorm]
type = ElmIntegTotFissNtsPostprocessor
block = 0
execute_on = linear
[]
[tot_fissions]
type = ElmIntegTotFissPostprocessor
execute_on = linear
[]
[powernorm]
type = ElmIntegTotFissHeatPostprocessor
execute_on = linear
[]
[group1norm]
type = ElementIntegralVariablePostprocessor
variable = group1
execute_on = linear
[]
[group1max]
type = NodalExtremeValue
value_type = max
variable = group1
execute_on = timestep_end
[]
[group1diff]
type = ElementL2Diff
variable = group1
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[group2norm]
type = ElementIntegralVariablePostprocessor
variable = group2
execute_on = linear
[]
[group2max]
type = NodalExtremeValue
value_type = max
variable = group2
execute_on = timestep_end
[]
[group2diff]
type = ElementL2Diff
variable = group2
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[k_vpp]
type = Eigenvalues
inverse_eigenvalue = true
[]
[centerline_flux]
type = LineValueSampler
variable = 'group1 group2'
start_point = '0 0 0'
end_point = '0 150 0'
num_points = 151
sort_by = y
execute_on = FINAL
[]
[midplane_flux]
type = LineValueSampler
variable = 'group1 group2'
start_point = '0 75 0'
end_point = '69.375 75 0'
num_points = 100
sort_by = x
execute_on = FINAL
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = true
[exodus]
type = Exodus
[]
[csv]
type = CSV
[]
[]
(tests/materials/mjm_monotone_cubic.i)
[GlobalParams]
num_groups = 2
num_precursor_groups = 6
use_exp_form = false
group_fluxes = 'group1 group2'
temperature = 922
sss2_input = true
account_delayed = false
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Nt]
var_name_base = group
create_temperature_var = false
eigen = true
[]
[Materials]
[fuel]
type = MoltresJsonMaterial
base_file = 'xsdata.json'
material_key = 'fuel'
interp_type = 'monotone_cubic'
[]
[]
[Executioner]
type = Eigenvalue
initial_eigenvalue = 1
nl_abs_tol = 1e-12
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[k_eff]
type = VectorPostprocessorComponent
index = 0
vectorpostprocessor = k_vpp
vector_name = eigen_values_real
[]
[fiss_neutrons]
type = ElmIntegTotFissNtsPostprocessor
execute_on = linear
[]
[tot_fissions]
type = ElmIntegTotFissPostprocessor
execute_on = linear
[]
[group1diff]
type = ElementL2Diff
variable = group1
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[k_vpp]
type = Eigenvalues
inverse_eigenvalue = true
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = true
[out]
type = Exodus
[]
[]
[Debug]
show_var_residual_norms = true
[]
(tests/materials/mjm_spline.i)
[GlobalParams]
num_groups = 2
num_precursor_groups = 6
use_exp_form = false
group_fluxes = 'group1 group2'
temperature = 922
sss2_input = true
account_delayed = false
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Nt]
var_name_base = group
create_temperature_var = false
eigen = true
[]
[Materials]
[fuel]
type = MoltresJsonMaterial
base_file = 'xsdata.json'
material_key = 'fuel'
interp_type = 'spline'
[]
[]
[Executioner]
type = Eigenvalue
initial_eigenvalue = 1
nl_abs_tol = 1e-12
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[k_eff]
type = VectorPostprocessorComponent
index = 0
vectorpostprocessor = k_vpp
vector_name = eigen_values_real
[]
[fiss_neutrons]
type = ElmIntegTotFissNtsPostprocessor
execute_on = linear
[]
[tot_fissions]
type = ElmIntegTotFissPostprocessor
execute_on = linear
[]
[group1diff]
type = ElementL2Diff
variable = group1
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[k_vpp]
type = Eigenvalues
inverse_eigenvalue = true
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = true
[out]
type = Exodus
[]
[]
[Debug]
show_var_residual_norms = true
[]
(tests/sn/absorber-air-lattice-ref-sn.i)
[GlobalParams]
num_groups = 8
num_precursor_groups = 6
group_fluxes = 'group1 group2 group3 group4 group5 group6 group7 group8'
temperature = 900
sss2_input = true
account_delayed = false
use_exp_form = false
search_value_conflicts = false
[]
[Problem]
type = EigenProblem
bx_norm = bnorm
[]
[Mesh]
second_order = true
[cmg]
type = CartesianMeshGenerator
dim = 1
dx = '0.4 0.1 1 1.5625 3.875 1.125 3.875 1.125 3.875 1.125 3.875 1.125 3.875 1.125 3.875 1.125 3.875 1.125 3.875 3.0625 5'
ix = '4 2 4 6 10 4 10 4 10 4 10 4 10 4 10 4 10 4 10 12 32'
subdomain_id = '0 0 1 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 4'
[]
[]
[AuxVariables]
[drift1]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift2]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift3]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift4]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift5]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift6]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift7]
order = SECOND
family = MONOMIAL
components = 3
[]
[drift8]
order = SECOND
family = MONOMIAL
components = 3
[]
[bound_coef1]
order = SECOND
family = MONOMIAL
block = 4
[]
[bound_coef2]
order = SECOND
family = MONOMIAL
block = 4
[]
[bound_coef3]
order = SECOND
family = MONOMIAL
block = 4
[]
[bound_coef4]
order = SECOND
family = MONOMIAL
block = 4
[]
[bound_coef5]
order = SECOND
family = MONOMIAL
block = 4
[]
[bound_coef6]
order = SECOND
family = MONOMIAL
block = 4
[]
[bound_coef7]
order = SECOND
family = MONOMIAL
block = 4
[]
[bound_coef8]
order = SECOND
family = MONOMIAL
block = 4
[]
[]
[Nt]
family = LAGRANGE
order = SECOND
var_name_base = group
vacuum_boundaries = 'right'
fission_blocks = 2
set_diffcoef_limit = true
create_temperature_var = false
eigen = true
[]
[Kernels]
[group1_drift]
type = GroupDrift
variable = group1
group_drift_var = drift1
[]
[group2_drift]
type = GroupDrift
variable = group2
group_drift_var = drift2
[]
[group3_drift]
type = GroupDrift
variable = group3
group_drift_var = drift3
[]
[group4_drift]
type = GroupDrift
variable = group4
group_drift_var = drift4
[]
[group5_drift]
type = GroupDrift
variable = group5
group_drift_var = drift5
[]
[group6_drift]
type = GroupDrift
variable = group6
group_drift_var = drift6
[]
[group7_drift]
type = GroupDrift
variable = group7
group_drift_var = drift7
[]
[group8_drift]
type = GroupDrift
variable = group8
group_drift_var = drift8
[]
[]
[BCs]
[group1_correction]
type = VacuumCorrectionBC
variable = group1
boundary = 'right'
vacuum_coef_var = bound_coef1
[]
[group2_correction]
type = VacuumCorrectionBC
variable = group2
boundary = 'right'
vacuum_coef_var = bound_coef2
[]
[group3_correction]
type = VacuumCorrectionBC
variable = group3
boundary = 'right'
vacuum_coef_var = bound_coef3
[]
[group4_correction]
type = VacuumCorrectionBC
variable = group4
boundary = 'right'
vacuum_coef_var = bound_coef4
[]
[group5_correction]
type = VacuumCorrectionBC
variable = group5
boundary = 'right'
vacuum_coef_var = bound_coef5
[]
[group6_correction]
type = VacuumCorrectionBC
variable = group6
boundary = 'right'
vacuum_coef_var = bound_coef6
[]
[group7_correction]
type = VacuumCorrectionBC
variable = group7
boundary = 'right'
vacuum_coef_var = bound_coef7
[]
[group8_correction]
type = VacuumCorrectionBC
variable = group8
boundary = 'right'
vacuum_coef_var = bound_coef8
[]
[]
[Materials]
[absorber_sn]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'ctrlrod'
interp_type = 'none'
block = '0'
[]
[air]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'air'
interp_type = 'none'
block = '1'
[]
[fuel]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'fuel'
interp_type = 'none'
block = '2'
[]
[graphite]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'graphite'
interp_type = 'none'
block = '3'
[]
[inor]
type = MoltresJsonMaterial
base_file = '../../property_file_dir/sn-test/absorber-air-lattice-ref.json'
material_key = 'inor'
interp_type = 'none'
block = '4'
[]
[]
[Executioner]
type = Eigenvalue
free_power_iterations = 2
fixed_point_abs_tol = 1e-10
fixed_point_rel_tol = 1e-10
fixed_point_max_its = 15
accept_on_max_fixed_point_iteration = false
nl_abs_tol = 1e-10
nl_rel_tol = 1e-50
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 200'
line_search = 'none'
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
input_files = absorber-air-lattice-ref-sn-sub.i
execute_on = timestep_end
keep_solution_during_restore = true
update_old_solution_when_keeping_solution_during_restore = false
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'group1 group2 group3 group4 group5 group6 group7 group8'
variable = 'group1 group2 group3 group4 group5 group6 group7 group8'
to_multi_app = sub
[]
[to_sub_k]
type = MultiAppPostprocessorTransfer
from_postprocessor = eigenvalue
to_postprocessor = eigenvalue
to_multi_app = sub
[]
[from_sub_drift1]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift1 drift1 drift1'
variable = 'drift1 drift1 drift1'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift2]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift2 drift2 drift2'
variable = 'drift2 drift2 drift2'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift3]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift3 drift3 drift3'
variable = 'drift3 drift3 drift3'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift4]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift4 drift4 drift4'
variable = 'drift4 drift4 drift4'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift5]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift5 drift5 drift5'
variable = 'drift5 drift5 drift5'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift6]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift6 drift6 drift6'
variable = 'drift6 drift6 drift6'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift7]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift7 drift7 drift7'
variable = 'drift7 drift7 drift7'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_drift8]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'drift8 drift8 drift8'
variable = 'drift8 drift8 drift8'
from_multi_app = sub
source_variable_components = '0 1 2'
target_variable_components = '0 1 2'
[]
[from_sub_bound_coef1]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'bound_coef1'
variable = 'bound_coef1'
from_multi_app = sub
[]
[from_sub_bound_coef2]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'bound_coef2'
variable = 'bound_coef2'
from_multi_app = sub
[]
[from_sub_bound_coef3]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'bound_coef3'
variable = 'bound_coef3'
from_multi_app = sub
[]
[from_sub_bound_coef4]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'bound_coef4'
variable = 'bound_coef4'
from_multi_app = sub
[]
[from_sub_bound_coef5]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'bound_coef5'
variable = 'bound_coef5'
from_multi_app = sub
[]
[from_sub_bound_coef6]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'bound_coef6'
variable = 'bound_coef6'
from_multi_app = sub
[]
[from_sub_bound_coef7]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'bound_coef7'
variable = 'bound_coef7'
from_multi_app = sub
[]
[from_sub_bound_coef8]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = 'bound_coef8'
variable = 'bound_coef8'
from_multi_app = sub
[]
[]
[Postprocessors]
[bnorm]
type = ElmIntegTotFissNtsPostprocessor
block = 2
execute_on = 'initial linear timestep_end'
[]
[eigenvalue]
type = VectorPostprocessorComponent
vectorpostprocessor = eigenvalues
vector_name = eigen_values_real
index = 0
[]
[]
[VectorPostprocessors]
[eigenvalues]
type = Eigenvalues
inverse_eigenvalue = true
outputs = console
[]
[]
[Outputs]
[exodus]
type = Exodus
discontinuous = true
[]
[]
(tutorial/eigenvalue/nts-action.i)
[GlobalParams]
num_groups = 2
num_precursor_groups = 6
use_exp_form = false
group_fluxes = 'group1 group2'
pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
temperature = 900
sss2_input = true
account_delayed = true
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = 'mesh.e'
[]
[]
[Problem]
type = EigenProblem
bx_norm = bnorm
[]
[Nt]
var_name_base = group
vacuum_boundaries = 'fuel_bottom mod_bottom right fuel_top mod_top'
pre_blocks = '0'
create_temperature_var = false
eigen = true
[]
[Precursors]
[pres]
var_name_base = pre
family = MONOMIAL
order = CONSTANT
block = 0
outlet_boundaries = 'fuel_top'
velocity_type = constant
u_def = 0
v_def = 18.085
w_def = 0
nt_exp_form = false
loop_precursors = false
transient = false
eigen = true
[]
[]
[Materials]
[fuel]
type = MoltresJsonMaterial
block = '0'
base_file = 'xsdata.json'
material_key = 'fuel'
interp_type = LINEAR
prop_names = ''
prop_values = ''
[]
[graphite]
type = MoltresJsonMaterial
block = '1'
base_file = 'xsdata.json'
material_key = 'graphite'
interp_type = LINEAR
prop_names = ''
prop_values = ''
[]
[]
[Executioner]
type = Eigenvalue
initial_eigenvalue = 1
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
automatic_scaling = true
compute_scaling_once = false
resid_vs_jac_scaling_param = 0.1
line_search = none
[]
[Postprocessors]
[k_eff]
type = VectorPostprocessorComponent
index = 0
vectorpostprocessor = k_vpp
vector_name = eigen_values_real
[]
[bnorm]
type = ElmIntegTotFissNtsPostprocessor
block = 0
execute_on = linear
[]
[tot_fissions]
type = ElmIntegTotFissPostprocessor
execute_on = linear
[]
[powernorm]
type = ElmIntegTotFissHeatPostprocessor
execute_on = linear
[]
[group1norm]
type = ElementIntegralVariablePostprocessor
variable = group1
execute_on = linear
[]
[group1max]
type = NodalExtremeValue
value_type = max
variable = group1
execute_on = timestep_end
[]
[group1diff]
type = ElementL2Diff
variable = group1
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[group2norm]
type = ElementIntegralVariablePostprocessor
variable = group2
execute_on = linear
[]
[group2max]
type = NodalExtremeValue
value_type = max
variable = group2
execute_on = timestep_end
[]
[group2diff]
type = ElementL2Diff
variable = group2
execute_on = 'linear timestep_end'
use_displaced_mesh = false
[]
[]
[VectorPostprocessors]
[k_vpp]
type = Eigenvalues
inverse_eigenvalue = true
[]
[centerline_flux]
type = LineValueSampler
variable = 'group1 group2'
start_point = '0 0 0'
end_point = '0 150 0'
num_points = 151
sort_by = y
execute_on = FINAL
[]
[midplane_flux]
type = LineValueSampler
variable = 'group1 group2'
start_point = '0 75 0'
end_point = '69.375 75 0'
num_points = 100
sort_by = x
execute_on = FINAL
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = true
[exodus]
type = Exodus
[]
[csv]
type = CSV
[]
[]
(tests/bcs/vacuum_bc.i)
[GlobalParams]
use_exp_form = false
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Variables]
[flux]
[]
[]
[Kernels]
[diffusion]
type = GroupDiffusion
variable = flux
group_number = 1
[]
[]
[BCs]
[dirichlet]
type = DirichletBC
variable = flux
boundary = 'left'
value = 1.002
[]
[vacuum]
type = VacuumConcBC
variable = flux
boundary = 'right'
vacuum_bc_type = marshak
[]
[]
[Materials]
[mat]
type = MoltresJsonMaterial
base_file = 'xsdata.json'
material_key = 0
interp_type = none
num_groups = 1
num_precursor_groups = 1
[]
[]
[Executioner]
type = Steady
solve_type = PJFNK
[]
[Postprocessors]
[boundary_value]
type = SideAverageValue
variable = flux
boundary = 'right'
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(tutorial/transient/transient.i)
[GlobalParams]
num_groups = 2
num_precursor_groups = 6
use_exp_form = false
group_fluxes = 'group1 group2'
pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
temperature = temp
sss2_input = true
account_delayed = true
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = '../eigenvalue/mesh.e'
[]
[]
[Variables]
[group1]
order = FIRST
family = LAGRANGE
[]
[group2]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000
[]
[]
[Precursors]
[pres]
var_name_base = pre
family = MONOMIAL
order = CONSTANT
block = 0
outlet_boundaries = 'fuel_top'
velocity_type = constant
u_def = 0
v_def = 18.085
w_def = 0
nt_exp_form = false
loop_precursors = false
transient = true
[]
[]
[Kernels]
#---------------------------------------------------------------------
# Group 1 Neutronics
#---------------------------------------------------------------------
[time_group1]
type = NtTimeDerivative
variable = group1
group_number = 1
[]
[sigma_r_group1]
type = SigmaR
variable = group1
group_number = 1
[]
[diff_group1]
type = GroupDiffusion
variable = group1
group_number = 1
[]
[inscatter_group1]
type = InScatter
variable = group1
group_number = 1
[]
[fission_source_group1]
type = CoupledFissionKernel
variable = group1
group_number = 1
block = '0'
[]
[delayed_group1]
type = DelayedNeutronSource
variable = group1
block = '0'
group_number = 1
[]
#---------------------------------------------------------------------
# Group 2 Neutronics
#---------------------------------------------------------------------
[time_group2]
type = NtTimeDerivative
variable = group2
group_number = 2
[]
[sigma_r_group2]
type = SigmaR
variable = group2
group_number = 2
[]
[diff_group2]
type = GroupDiffusion
variable = group2
group_number = 2
[]
[fission_source_group2]
type = CoupledFissionKernel
variable = group2
group_number = 2
block = '0'
[]
[inscatter_group2]
type = InScatter
variable = group2
group_number = 2
[]
#---------------------------------------------------------------------
# Temperature
#---------------------------------------------------------------------
[temp_time_derivative]
type = INSTemperatureTimeDerivative
variable = temp
[]
[temp_advection_fuel]
type = ConservativeTemperatureAdvection
variable = temp
velocity_variable = '0 18.085 0'
block = '0'
[]
[temp_diffusion]
type = MatDiffusion
variable = temp
diffusivity = 'k'
[]
[temp_source_fuel]
type = TransientFissionHeatSource
variable = temp
block = '0'
[]
[]
[BCs]
[vacuum_group1]
type = VacuumConcBC
boundary = 'fuel_bottom fuel_top mod_bottom mod_top right'
variable = group1
[]
[vacuum_group2]
type = VacuumConcBC
boundary = 'fuel_bottom fuel_top mod_bottom mod_top right'
variable = group2
[]
[temp_inlet_bc]
type = FunctionDirichletBC
variable = temp
boundary = 'fuel_bottom mod_bottom right'
function = 'temp_bc_func'
[]
[temp_outlet_bc]
type = TemperatureOutflowBC
variable = temp
boundary = 'fuel_top'
velocity = '0 18.085 0'
[]
[]
[ICs]
[group1_ic]
type = FunctionIC
variable = group1
function = ic_func
[]
[group2_ic]
type = FunctionIC
variable = group2
function = ic_func
[]
[]
[Functions]
[temp_bc_func]
type = ParsedFunction
expression = '1000 - (1000-965) * tanh(t/1)'
[]
[dt_func]
type = ParsedFunction
expression = 'if(t<50, if(t<30, .4, 5), 10)'
[]
[ic_func]
type = ParsedFunction
expression = '1e5 * (-x^2+70^2) * (-y * (y-150))'
[]
[]
[Materials]
[fuel]
type = MoltresJsonMaterial
block = '0'
base_file = '../eigenvalue/xsdata.json'
material_key = 'fuel'
interp_type = LINEAR
prop_names = 'rho k cp'
prop_values = '2.146e-3 .0553 1967'
[]
[graphite]
type = MoltresJsonMaterial
block = '1'
base_file = '../eigenvalue/xsdata.json'
material_key = 'graphite'
interp_type = LINEAR
prop_names = 'rho k cp'
prop_values = '1.86e-3 .312 1760'
[]
[]
[Executioner]
type = Transient
end_time = 200
nl_rel_tol = 1e-6
nl_abs_tol = 1e-1
automatic_scaling = true
compute_scaling_once = false
resid_vs_jac_scaling_param = 0.1
scaling_group_variables = 'group1 group2; pre1 pre2 pre3 pre4 pre5 pre6; temp'
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu NONZERO superlu_dist'
line_search = none
dtmin = 1e-3
dtmax = 10
[TimeStepper]
type = FunctionDT
function = dt_func
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[tot_fissions]
type = ElmIntegTotFissPostprocessor
execute_on = linear
[]
[powernorm]
type = ElmIntegTotFissHeatPostprocessor
execute_on = linear
[]
[average_temp]
type = ElementAverageValue
variable = temp
execute_on = linear
[]
[inlet_temp]
type = SideAverageValue
variable = temp
boundary = fuel_bottom
[]
[outlet_temp]
type = SideAverageValue
variable = temp
boundary = fuel_top
[]
[]
[VectorPostprocessors]
[centerline_flux]
type = LineValueSampler
variable = 'group1 group2'
start_point = '0 0 0'
end_point = '0 150 0'
num_points = 151
sort_by = y
execute_on = FINAL
[]
[midplane_flux]
type = LineValueSampler
variable = 'group1 group2'
start_point = '0 75 0'
end_point = '69.375 75 0'
num_points = 100
sort_by = x
execute_on = FINAL
[]
[]
[Outputs]
perf_graph = true
[exodus]
type = Exodus
[]
[csv]
type = CSV
execute_on = FINAL
[]
[]
[Debug]
[]
(include/materials/DiffusionRodMaterial.h)
#pragma once
#include "MoltresJsonMaterial.h"
class DiffusionRodMaterial : public MoltresJsonMaterial
{
public:
DiffusionRodMaterial(const InputParameters & parameters);
static InputParameters validParams();
protected:
void Construct(nlohmann::json xs_root);
virtual void dummyComputeQpProperties() override;
virtual void splineComputeQpProperties() override;
virtual void monotoneCubicComputeQpProperties() override;
virtual void linearComputeQpProperties() override;
/// Volume fraction of rod material in element
Real volumeFraction();
/// Non-rod material key associated with the group constants to be loaded
std::string _nonrod_material_key;
/// Rod height function
const Function & _rod_height;
/// Rod cusping correction power factor
const Real _cusp_power;
/// Rod cusping correction coefficient
const Real _cusp_coeff;
};