- variableThe name of the variable that this object operates on
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable that this object operates on
 
IntegralOldVariablePostprocessor
The IntegralOldVariablePostprocessor has not been documented. The content listed below should be used as a starting point for documenting the class, which includes the typical automatic documentation associated with a MooseObject; however, what is contained is ultimately determined by what is necessary to make the documentation clear for users.
Overview
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
 - use_exp_formFalseWhether concentrations should be in an expotential/logarithmic format.
Default:False
C++ Type:bool
Controllable:No
Description:Whether concentrations should be in an expotential/logarithmic format.
 
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
 - execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Options:XFEM_MARK, NONE, INITIAL, LINEAR, LINEAR_CONVERGENCE, NONLINEAR, NONLINEAR_CONVERGENCE, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, MULTIAPP_FIXED_POINT_CONVERGENCE, FINAL, CUSTOM, TRANSFER
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
 - execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
 - force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
 - force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
 - force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
 
Execution Scheduling 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
 - outputsVector of output names where you would like to restrict the output of variables(s) associated with this object
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
 - 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
- 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
- (problems/011717_precursors/Input.i)
 - (problems/publication_level_cases/gamma_heating_3d_ss/3d_auto_diff_rho.i)
 - (problems/033117_nts_temp_pre_parsed_mat/2d_axi_function_cross_sections.i)
 - (problems/picard/auto_diff_rho.i)
 - (problems/021417_MSRE_materials/CG_no_temp_eigen_b1_gcs.i)
 - (problems/publication_level_cases/twod_control_rod_yank/rodded.i)
 - (problems/021417_MSRE_materials/CG_temp.i)
 - (problems/022317_test_critical_neutronics_only_reactor/transient-msre-file-mesh-two-grp-two-b1-mat.i)
 - (problems/033117_nts_temp_pre_parsed_mat/auto_diff_rho_monotone_interp.i)
 - (problems/2017_annals_pub_msre_compare/2group.i)
 - (tests/coupled/auto_diff_rho.i)
 - (problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_single_pin.i)
 - (problems/LOSCA/HXFailure/auto_diff_rho.i)
 - (problems/publication_level_cases/3d_steady_state/3d_auto_diff_rho.i)
 - (problems/LOFA/steady/auto_diff_rho.i)
 - (problems/072017_dg_temperature/auto_diff_rho.i)
 - (problems/012017_temperature_to_dg/Input.i)
 - (problems/single_msre_channel_velocity_heat_nts/heat-nts-single-channel-msre-dimensions.i)
 - (problems/022317_test_critical_neutronics_only_reactor/analytic_exp_form_vacuum.i)
 - (problems/020617_mod_heat_source_one_minus_beta_fission/Input_PJFNK.i)
 - (problems/single_msre_channel_velocity_heat_nts/unit-cell-heat-and-nts.i)
 - (problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_single_pin_adaptive_PJFNK.i)
 - (problems/021417_MSRE_materials/transient-nts-cg-temp-two-grp-scale-two-mat-inverted-file-msh.i)
 - (problems/060717_dimension_testing/test_case.i)
 - (problems/021417_MSRE_materials/transient-nts-cg-temp-one-channel-two-mat-scale-mod-heat-PJFNK.i)
 - (problems/021417_MSRE_materials/transient-nts-cg-temp-one-channel-two-mat-scale-PJFNK.i)
 - (problems/020617_mod_heat_source_one_minus_beta_fission/Input.i)
 - (problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i)
 - (problems/constant_inlet_outlet_temp_no_heat_flux_at_walls/auto_diff_rho.i)
 - (problems/033117_nts_temp_pre_parsed_mat/auto_diff_rho.i)
 - (problems/022317_test_critical_neutronics_only_reactor/analytic_exp_form.i)
 - (problems/publication_level_cases/LOSCA/HXFail/auto_diff_rho.i)
 - (problems/publication_level_cases/dilute_absorber_controlled_by_peak_power_density/in.i)
 - (problems/022317_test_critical_neutronics_only_reactor/analytic.i)
 - (problems/033117_nts_temp_pre_parsed_mat/auto_diff_rho_control.i)
 - (problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho_restart.i)
 - (problems/022317_test_critical_neutronics_only_reactor/small.i)
 - (problems/rodded2D/rodded.i)
 - (problems/011317_notebook_add_temperature_coupling/Input.i)
 - (problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho_direct.i)
 - (problems/033117_nts_temp_pre_parsed_mat/controlled_neutronics_only.i)
 - (problems/021417_MSRE_materials/CG_no_temp.i)
 - (problems/picard/nts_no_pres.i)
 - (problems/transient-axi-nts-temp-delayed.i)
 - (problems/single_msre_channel_velocity_heat_nts/heat-nts-single-unit-cell.i)
 - (problems/011317_notebook_perfectly_bracketed_critical_buckling_height_from_newt/Input.i)
 - (problems/picard/nts.i)
 - (problems/033117_nts_temp_pre_parsed_mat/meigen.i)
 - (problems/LOSCA/auto_diff_rho.i)
 - (problems/012017_temperature_to_dg/test_mat_props.i)
 - (problems/022317_test_critical_neutronics_only_reactor/criticial_test_nts_only_rad_57.i)
 - (problems/022317_test_critical_neutronics_only_reactor/analytic_exp_form_harsher_penalty.i)
 - (problems/021417_MSRE_materials/CG_no_temp_eigen.i)
 - (problems/021417_MSRE_materials/transient-nts-cg-temp-one-channel-two-mat-scale.i)
 - (problems/2017_annals_pub_msre_compare/auto_diff_rho.i)
 - (problems/publication_level_cases/transient_single_channel_blockage/3d_ss.i)
 - (problems/033117_nts_temp_pre_parsed_mat/3d_single_pin_velocity_function.i)
 - (tests/coupled/auto_diff_rho_serpent.i)
 - (problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_single_pin_adaptive.i)
 - (problems/011717_precursors/Input_restart_rdg_module.i)
 - (problems/publication_level_cases/transient_single_channel_blockage/3d_auto_diff_rho.i)
 - (problems/022317_test_critical_neutronics_only_reactor/critical_test_nts_only.i)
 - (problems/021417_MSRE_materials/mini_msre_cg_temp.i)
 - (problems/publication_level_cases/LOSCA/auto_diff_rho.i)
 - (problems/060717_dimension_testing/one_group.i)
 - (problems/033117_nts_temp_pre_parsed_mat/3d_single_pin_velocity_function_moderator_heating.i)
 - (problems/021417_MSRE_materials/Input.i)
 - (problems/picard/tmp_nts.i)
 - (problems/011317_notebook_perfectly_bracketed_critical_buckling_height_from_newt/Input_serpent.i)
 - (problems/LOFA/auto_diff_rho.i)
 - (problems/021417_MSRE_materials/transient-nts-cg-temp-two-grp-b1-two-mat.i)
 - (problems/2017_annals_pub_msre_compare/4group.i)
 - (problems/011317_notebook_add_temperature_coupling/Input_serpent.i)
 
(problems/011717_precursors/Input.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e16
precursor_log_inlet_conc=-17
reactor_height=115 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=temp
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = true
  group_fluxes = 'group1 group2'
  v_def = ${flow_velocity}
  tau = 1
  transient_simulation = true
  incompressible_flow = false
  # prec_scale = 1e5
[../]
[Mesh]
  file = 'cylinder_structured.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  # create_temperature_var = false
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  inlet_boundary = 'fuel_bottom'
  inlet_boundary_condition = 'DirichletBC'
  inlet_bc_value = ${precursor_log_inlet_conc}
  outlet_boundary = 'fuel_top'
  initial_condition = ${precursor_log_inlet_conc}
  tau = 1
  use_source_stabilization = true
  offset = 24
[]
[Kernels]
  # Temperature
  [./temp_flow_fuel]
    block = 'fuel'
    type = MatINSTemperatureRZ
    variable = temp
    rho = 'rho'
    k = 'k'
    cp = 'cp'
    uz = ${flow_velocity}
  [../]
  [./temp_art_diff_fuel]
    block = 'fuel'
    type = ScalarAdvectionArtDiff
    variable = temp
    use_exp_form = false
  [../]
  [./temp_flow_moder]
    block = 'moder'
    type = MatINSTemperatureRZ
    variable = temp
    rho = 'rho'
    k = 'k'
    cp = 'cp'
  [../]
  [./temp_source]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
    rho = 'rho'
    cp = 'cp'
  [../]
[]
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/newt_fuel_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/newt_mod_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_inlet]
    boundary = 'fuel_bottom graphite_bottom'
    type = DirichletBC
    variable = temp
    value = ${inlet_temp}
  [../]
  [./temp_outlet]
    boundary = 'fuel_top'
    type = MatINSTemperatureNoBCBC
    variable = temp
    k = 'k'
  [../]
  [./temp_art_diff_fuel]
    boundary = 'fuel_top'
    type = ScalarAdvectionArtDiffNoBCBC
    variable = temp
    use_exp_form = false
  [../]
[]
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  # line_search = none
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  # trans_ss_check = true
  # ss_check_tol = 8e-9
  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_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 mumps'
  nl_max_its = 10
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-4
    growth_factor = 1.05
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
  [./dof_map]
    type = DOFMap
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  # [./temp_ic]
  #   type = ConstantIC
  #   variable = temp
  #   value = ${inlet_temp}
  # [../]
  [./temp_all_ic_func]
    type = FunctionIC
    variable = temp
    function = temp_ic_func
  [../]
[]
[Functions]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
[]
(problems/publication_level_cases/gamma_heating_3d_ss/3d_auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
base_height=136
scale=.99
height=${* ${base_height} ${scale}}
width=145
offset=2.5
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  file = '3d_msre_29x29_136.msh'
  # file = jac_test.msh
[]
[MeshModifiers]
  [./scale]
    type = Transform
    transform = SCALE
    vector_value = '1 1 ${scale}'
  [../]
[]
[Problem]
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
#     initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
#     initial_condition = 1
    scaling = 1e4
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  [../]
[]
[Precursors]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = 0
    w_def = ${flow_velocity}
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    jac_test = true
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    gamma = .0144 # Cammi .0144
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = 'sin(pi * z / ${height}) * sin(pi * (x + ${offset}) / ${width}) * sin(pi * (y + ${offset}) / ${width})'
  [../]
[]
[Materials]
  [./fuel]
    type = MsreFuelTwoGrpXSFunctionMaterial
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GraphiteTwoGrpXSFunctionMaterial
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  line_search = 'none'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type'
  petsc_options_value = 'lu	  NONZERO		1e-10			preonly'
#   petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
#   petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
#   dtmax = 1
  dtmin = 1e-7
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-6
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
    ksp_norm = none
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    nt_scale = ${nt_scale}
    execute_on = 'linear nonlinear'
    outputs = 'console'
    block = 'fuel'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
  [./group1_ic]
    type = FunctionIC
    variable = group1
    function = 'nt_ic_func'
  [../]
  [./group2_ic]
    type = FunctionIC
    variable = group2
    function = 'nt_ic_func'
  [../]
[]
(problems/033117_nts_temp_pre_parsed_mat/2d_axi_function_cross_sections.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '2d_lattice_structured.msh'
  # file = '2d_lattice_structured_jac.msh'
[]
[MeshModifiers]
  [scale]
    type = Transform
    transform = SCALE
    vector_value = '1 1 1'
  []
[]
[Problem]
  coord_type = RZ
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = MsreFuelTwoGrpXSFunctionMaterial
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GraphiteTwoGrpXSFunctionMaterial
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  # petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  # petsc_options_value = 'asm      lu           1               preonly       1e-3'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'lu       NONZERO               1e-10                   preonly   1e-3'
  line_search = 'none'
  #  petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
    ksp_norm = none
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'exodus console'
  []
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [exodus]
    type = Exodus
    execute_on = 'timestep_end final'
  []
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/picard/auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '2d_lattice_structured.msh'
  # file = '2d_lattice_structured_jac.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  [../]
[]
[Precursors]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    block = 'fuel'
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel'
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    block = 'fuel'
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type'
  petsc_options_value = 'lu       NONZERO'
  line_search = 'none'
   # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
    ksp_norm = none
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'exodus console'
  [../]
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [./exodus]
    type = Exodus
    file_base = 'auto_diff_rho'
    execute_on = 'final'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/021417_MSRE_materials/CG_no_temp_eigen_b1_gcs.i)
reactor_height = 162.56
# global_temperature=temp
global_temperature = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = false
  group_fluxes = 'group1 group2'
[]
[Mesh]
  file = 'msre_22x22_correct_vol_fraction.msh'
[]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops fuel_sides'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = false
  # temperature = ${global_temperature}
  temperature_value = ${global_temperature}
  dg_for_temperature = false
  eigen = true
[]
[Materials]
  [fuel]
    # type = CammiFuel
    type = GenericMoltresMaterial
    block = 'fuel'
    property_tables_root = '../property_file_dir/B1_full_core_cuboid_msre_comp_fuel_data_func_of_fuel_temp_'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  []
  [moder]
    # type = CammiModerator
    type = GenericMoltresMaterial
    block = 'moder'
    property_tables_root = '../property_file_dir/B1_full_core_cuboid_msre_comp_mod_data_func_of_mod_temp_'
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  []
[]
[Executioner]
  # type = NonlinearEigen
  # free_power_iterations = 4
  # source_abs_tol = 1e-12
  # source_rel_tol = 1e-8
  # output_after_power_iterations = true
  type = InversePowerMethod
  max_power_iterations = 50
  xdiff = 'group1diff'
  bx_norm = 'bnorm'
  k0 = 1.0
  pfactor = 1e-2
  l_max_its = 100
  # solve_type = 'PJFNK'
  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
  []
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Functions]
  [nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  []
  [bnorm]
    type = ElmIntegTotFissNtsPostprocessor
    group_fluxes = 'group1 group2'
    execute_on = linear
  []
  [tot_fissions]
    type = ElmIntegTotFissPostprocessor
    execute_on = linear
  []
  [group1norm]
    type = ElementIntegralVariablePostprocessor
    variable = group1
    execute_on = linear
  []
  [group2norm]
    type = ElementIntegralVariablePostprocessor
    variable = group2
    execute_on = linear
  []
  [group1max]
    type = NodalExtremeValue
    value_type = max
    variable = group1
    execute_on = timestep_end
  []
  [group2max]
    type = NodalExtremeValue
    value_type = max
    variable = group2
    execute_on = timestep_end
  []
  [group1diff]
    type = ElementL2Diff
    variable = group1
    execute_on = 'linear timestep_end'
    use_displaced_mesh = false
  []
[]
(problems/publication_level_cases/twod_control_rod_yank/rodded.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 4
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2 group3 group4'
  temperature = temp
  sss2_input = true
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '2d_rodded_lattice.msh'
[../]
[Problem]
  coord_type = RZ
  kernel_coverage_check = false
[]
[Variables]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  [../]
  [./rodPosition]
    family = SCALAR
    order = FIRST
    initial_condition = 0.0
  [../]
[]
[Precursors]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  [../]
[]
[Nt]
  var_name_base = group
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall cRod_top cRod_bot'
  create_temperature_var = false
[]
[Kernels]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    gamma = .0144 # Cammi .0144
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[ScalarKernels]
  [./tdRodPos]
    type = ODETimeDerivative
    variable = rodPosition
  [../]
  [./rodposForce]
    type = ParsedODEKernel
    function = 'rodPosition - 100'
    variable = rodPosition
  [../]
[]
[BCs]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4gfuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4gmoder_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
  [./cRod]
    type = RoddedMaterial
    property_tables_root = '../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4gmoder_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'cRod'
    rodDimension = 'y'
    rodPosition = rodPosition
    absorb_factor = 1e6 # how much more absorbing than usual in absorbing region?
  [../]
  [./rho_crod]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'cRod'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  line_search = 'none'
  nl_max_its = 30
  l_max_its = 100
  [./TimeStepper]
    type = PostprocessorDT
    postprocessor = limit_k
    dt = 0.1
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
    # ksp_norm = none
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
     type = AverageFissionHeat
     nt_scale = ${nt_scale}
     execute_on = 'linear nonlinear'
     outputs = 'console'
     block = 'fuel'
  [../]
  [./limit_k]
    type = LimitK
    execute_on = 'timestep_end'
    k_postprocessor = multiplication
    growth_factor = 1.2
    cutback_factor = .4
    k_threshold = 1.5
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
  execute_on = 'timestep_end final'
  file_base = 'out'
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/021417_MSRE_materials/CG_temp.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
diri_temp=908
nt_scale=1e13
reactor_height=162.56
global_temperature=temp
# global_temperature=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = true
  group_fluxes = 'group1 group2'
#   u_def = 0
#   v_def = 0
#   w_def = ${flow_velocity}
[../]
[Mesh]
  file = 'msre_22x22_correct_vol_fraction.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops fuel_sides'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = true
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
  dg_for_temperature = false
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   advection_boundaries = 'fuel_top fuel_bottom'
#   family = MONOMIAL
#   order = CONSTANT
# []
[Kernels]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  [../]
[]
[Materials]
  [./fuel]
    # type = CammiFuel
    type = GenericMoltresMaterial
    block = 'fuel'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_fuel_data_func_of_fuel_temp_'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    # type = CammiModerator
    type = GenericMoltresMaterial
    block = 'moder'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_mod_data_func_of_mod_temp_'
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_diri_cg]
    boundary = 'fuel_bottoms moder_bottoms fuel_sides'
    type = DirichletBC
    variable = temp
    value = ${diri_temp}
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
[]
# [Problem]
#   type = FEProblem
#   coord_type = RZ
# [../]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  [./temp_all_ic_func]
    type = FunctionIC
    variable = temp
    function = temp_ic_func
  [../]
[]
[Functions]
  [./temp_ic_func]
    type = ParsedFunction
    value = '${diri_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
  [./diri_temp_func]
    type = ParsedFunction
    value = '${diri_temp}'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
#   # [./average_fission_heat]
#   #   type = AverageFissionHeat
#   #   nt_scale = ${nt_scale}
#   #   execute_on = 'linear nonlinear'
#   #   outputs = 'csv console'
#   #   block = 'fuel'
#   # [../]
[]
(problems/022317_test_critical_neutronics_only_reactor/transient-msre-file-mesh-two-grp-two-b1-mat.i)
global_temperature = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = ${global_temperature}
  sss2_input = true
[]
[Mesh]
  # file = 'msre_23x23.msh'
  file = 'msre_cuboid_3x3.msh'
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
  []
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops fuel_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops fuel_sides'
    variable = group2
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/B1_msre_single_unit_cell_fuel_'
    interp_type = 'none'
    temperature = ${global_temperature}
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/B1_msre_single_unit_cell_moder_'
    interp_type = 'none'
    temperature = ${global_temperature}
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  num_steps = 100
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor -snes_test_display'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.2
    optimal_iterations = 20
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [bnorm]
    type = ElmIntegTotFissNtsPostprocessor
    outputs = 'console csv'
  []
  [tot_fissions]
    type = ElmIntegTotFissPostprocessor
    outputs = 'console csv'
  []
  [group2norm]
    type = ElementIntegralVariablePostprocessor
    variable = group2
    outputs = 'console csv'
  []
  [group2max]
    type = NodalExtremeValue
    value_type = max
    variable = group2
    outputs = 'console csv'
  []
[]
[Outputs]
  perf_graph = true
  [out]
    type = Exodus
  []
  [csv]
    type = CSV
  []
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/033117_nts_temp_pre_parsed_mat/auto_diff_rho_monotone_interp.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '2d_lattice_structured.msh'
  # file = '2d_lattice_structured_jac.msh'
[]
[Problem]
  coord_type = RZ
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'monotone_cubic'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'monotone_cubic'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  [out]
    type = Exodus
  []
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/2017_annals_pub_msre_compare/2group.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
gamma_frac = .075
R = 73
H = 162.56
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = true
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
  nt_scale = ${nt_scale}
[]
[Mesh]
  coord_type = RZ
  file = '2d_lattice_structured.msh'
[]
[Variables]
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[AuxVariables]
  [power_density]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Precursors]
  [pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    loop_precursors = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  []
[]
[Nt]
  var_name_base = group
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
  create_temperature_var = false
  scaling = 1e-4
  pre_blocks = 'fuel'
[]
[Kernels]
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  []
  [temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
    gamma = gamma_func
  []
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity_variable = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [temp_diri_cg]
    boundary = 'fuel_bottoms outer_wall'
    type = FlexiblePostprocessorDirichletBC
    postprocessor = coreEndTemp
    offset = -27.8
    variable = temp
  []
  # [./temp_diri_cg]
  #   boundary = 'moder_bottoms fuel_bottoms outer_wall'
  #   type = FunctionDirichletBC
  #   function = 'temp_bc_func'
  #   variable = temp
  # [../]
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  []
[]
[AuxKernels]
  [fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  []
  [moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
    gamma = gamma_func
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
  [gamma_func]
    type = ParsedFunction
    expression = '${gamma_frac} * pi^2 / 4 * cos(pi * x / (2. * ${R})) * sin(pi * y / ${H})'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/serp3d2group0.78eV/2g0.78eV_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
    controller_gain = 0
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/serp3d2group0.78eV/2g0.78eV_moder_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
    controller_gain = 0
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 6e-6
  solve_type = 'PJFNK'
  line_search = none
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [TimeStepper]
    type = PostprocessorDT
    postprocessor = limit_k
    dt = 1e-3
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  [average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  []
  [coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'csv console'
    execute_on = 'linear nonlinear'
  []
  [limit_k]
    type = LimitK
    execute_on = 'timestep_end'
    k_postprocessor = multiplication
    growth_factor = 1.2
    cutback_factor = .4
    k_threshold = 1.5
  []
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
(tests/coupled/auto_diff_rho.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
ini_temp = 922
diri_temp = 922
nt_scale = 1e13
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Mesh]
  coord_type = RZ
  file = '2d_lattice_structured.msh'
[]
[Precursors]
  [pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    loop_precursors = false
    family = MONOMIAL
    order = CONSTANT
  []
[]
[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 = 'fuel'
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel'
    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 = 'fuel'
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  #---------------------------------------------------------------------
  # Temperature
  #---------------------------------------------------------------------
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  []
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  num_steps = 80
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type'
  petsc_options_value = 'lu       NONZERO'
  line_search = 'none'
  nl_max_its = 30
  l_max_its = 100
  steady_state_detection = true
  steady_state_tolerance = 1e-10
  dtmin = 1e-5
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 5
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'exodus console'
  []
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [exodus]
    type = Exodus
    file_base = 'auto_diff_rho'
    execute_on = 'final'
  []
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_single_pin.i)
# flow_velocity=21.7 # cm/s. See MSRE-properties.ods
fuel_velocity_max_inlet = 43.4
fuel_sq_rad = 39.94
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  file = '3d_single_unit_msre_vol_fraction.msh'
  # file = jac_test.msh
[]
[Problem]
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = 0
  w_def = ${flow_velocity}
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'monotone_cubic'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'monotone_cubic'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
  #   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  [out]
    type = Exodus
  []
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/LOSCA/HXFailure/auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '../auto_diff_rho.e'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_from_file_var = group1
    initial_from_file_timestep = LATEST
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    scaling = 1e4
    initial_from_file_var = group2
    initial_from_file_timestep = LATEST
  [../]
  [./temp]
    scaling = 1e-4
    initial_from_file_var = temp
    initial_from_file_timestep = LATEST
  [../]
[]
[Precursors]
 [./core]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  init_from_file = true
  loop_precursors = true
  multi_app = loopApp
  is_loopapp = false
  inlet_boundaries = 'fuel_bottoms'
 [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel'
    group_number = 1
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./fuel_bottoms_looped]
    boundary = 'fuel_bottoms outer_wall'
    type = PostprocessorDirichletBC
    postprocessor = inlet_mean_temp
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'PJFNK'
  petsc_options = '-pc_type'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  line_search = 'none'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'exodus console'
  [../]
  [./coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'exodus console'
  [../]
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
  # MULTIAPP
  [./inlet_mean_temp]
    type = Receiver
    initialize_old = true
    execute_on = 'timestep_begin'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [./exodus]
    type = Exodus
    file_base = 'auto_diff_rho'
    execute_on = 'timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[MultiApps]
  [./loopApp]
    type = TransientMultiApp
    app_type = MoltresApp
    execute_on = timestep_begin
    positions = '100.0 100.0 0.0'
   input_files = 'sub.i'
 [../]
[]
# connect inlet and outlet to multiapp
[Transfers]
  [./from_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = loopEndTemp
    to_postprocessor = inlet_mean_temp
    direction = from_multiapp
    reduction_type = maximum
  [../]
  [./to_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = coreEndTemp
    to_postprocessor = coreEndTemp
    direction = to_multiapp
  [../]
[]
(problems/publication_level_cases/3d_steady_state/3d_auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
base_height=136
scale=.99
height=${* ${base_height} ${scale}}
width=145
offset=2.5
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  file = '3d_msre_29x29_136.msh'
  # file = jac_test.msh
[]
[MeshModifiers]
  [./scale]
    type = Transform
    transform = SCALE
    vector_value = '1 1 ${scale}'
  [../]
[]
[Problem]
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
#     initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
#     initial_condition = 1
    scaling = 1e4
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  [../]
[]
[Precursors]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = 0
    w_def = ${flow_velocity}
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    jac_test = true
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = 'sin(pi * z / ${height}) * sin(pi * (x + ${offset}) / ${width}) * sin(pi * (y + ${offset}) / ${width})'
  [../]
[]
[Materials]
  [./fuel]
    type = MsreFuelTwoGrpXSFunctionMaterial
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GraphiteTwoGrpXSFunctionMaterial
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  line_search = 'none'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type'
  petsc_options_value = 'lu	  NONZERO		1e-10			preonly'
#   petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
#   petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
#   dtmax = 1
  dtmin = 1e-7
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-6
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
    ksp_norm = none
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  [./out]
    type = Exodus
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
  [./group1_ic]
    type = FunctionIC
    variable = group1
    function = 'nt_ic_func'
  [../]
  [./group2_ic]
    type = FunctionIC
    variable = group2
    function = 'nt_ic_func'
  [../]
[]
(problems/LOFA/steady/auto_diff_rho.i)
# walk the reactor into steady state with an attached primary loop
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '../2d_lattice_structured.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  [../]
[]
[PrecursorKernel]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    block = 'fuel'
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel'
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    block = 'fuel'
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./temp_postpr_inlet]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = PostprocessorDirichletBC
    variable = temp
    postprocessor = inlet_mean_temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
#[Materials]
#  [./fuel]
#    type = GenericMoltresMaterial
#    property_tables_root = '/home/gav/projects/moltres/property_file_dir/newt_msre_fuel_'
#    interp_type = 'spline'
#    block = 'fuel'
#  [../]
#  [./rho_fuel]
#    type = DerivativeParsedMaterial
#    f_name = rho
#    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
#    args = 'temp'
#    derivative_order = 1
#    block = 'fuel'
#  [../]
#  # fuel cp function
#  [./cp_fuel]
#    type = DerivativeParsedMaterial
#    f_name = cp
#    function = '1967 + 1e-16 * temp'
#    args = 'temp'
#    derivative_order = 1
#    block = 'fuel'
#  [../]
#  # fuel k function
#  [./k_fuel]
#    type = DerivativeParsedMaterial
#    f_name = k
#    function = '0.0553 + 1e-16 * temp'
#    args = 'temp'
#    derivative_order = 1
#    block = 'fuel'
#  [../]
#  [./moder]
#    type = GenericMoltresMaterial
#    property_tables_root = '/home/gav/projects/moltres/property_file_dir/newt_msre_mod_'
#    interp_type = 'spline'
#    block = 'moder'
#  [../]
#  [./rho_moder]
#    type = DerivativeParsedMaterial
#    f_name = rho
#    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
#    args = 'temp'
#    derivative_order = 1
#    block = 'moder'
#  [../]
#  # moder cp fcn
#  [./cp_moder]
#    type = DerivativeParsedMaterial
#    f_name = cp
#    function = '1760 + 1e-16 * temp'
#    args = 'temp'
#    derivative_order = 1
#    block = 'moder'
#  [../]
#  # moder k fcn
#  [./k_moder]
#    type = DerivativeParsedMaterial
#    f_name = k
#    function = '.312 + 1e-16 * temp'
#    args = 'temp'
#    derivative_order = 1
#    block = 'moder'
#  [../]
#[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '/home/gav/projects/moltres/property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '/home/gav/projects/moltres/property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 100
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  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_shift_amount -ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'lu       NONZERO               1e-10                   preonly   1e-3'
  line_search = 'none'
   # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  dtmax = 100
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
    ksp_norm = none
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'exodus console'
  [../]
  [./coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'exodus console'
  [../]
  #multiapp
  [./inlet_mean_temp]
    type = Receiver
    execute_on = 'timestep_begin'
  [../]
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [./exodus]
    type = Exodus
    file_base = 'auto_diff_rho'
    execute_on = 'timestep_end'
  [../]
[]
[MultiApps]
  [./loopApp]
    type = TransientMultiApp
    app_type = MoltresApp
    execute_on = 'initial timestep_begin'
    positions = '100.0 100.0 0.0'
   input_files = 'sub.i'
 [../]
[]
# connect inlet and outlet to multiapp
[Transfers]
  [./from_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = loopEndTemp
    to_postprocessor = inlet_mean_temp
    direction = from_multiapp
    reduction_type = average
  [../]
  [./to_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = coreEndTemp
    to_postprocessor = coreEndTemp
    direction = to_multiapp
  [../]
[]
(problems/072017_dg_temperature/auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
sigma_val=.6
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = '2d_lattice_structured.msh'
[]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
    order = FIRST
    family = MONOMIAL
  [../]
[]
[AuxVariables]
  [./power_density]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[Precursors]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[DGKernels]
  [./temp_advection_fuel]
    block = 'fuel'
    type = DGTemperatureAdvection
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
  [./temp_diffusion]
    type = DGDiffusion
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./temp_dirichlet_diffusion_inlet]
    boundary = 'fuel_bottoms'
    type = DGDiffusionPostprocessorDirichletBC
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diffusivity = 'k'
    postprocessor = coreEndTemp
    offset = -50
  [../]
  [./temp_advection_inlet]
    boundary = 'fuel_bottoms'
    type = PostprocessorTemperatureInflowBC
    variable = temp
    uu = 0
    vv = ${flow_velocity}
    ww = 0
    postprocessor = coreEndTemp
    offset = -50
  [../]
  # [./temp_diri_cg]
  #   boundary = 'moder_bottoms fuel_bottoms outer_wall'
  #   type = FunctionDirichletBC
  #   function = 'temp_bc_func'
  #   variable = temp
  # [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[AuxKernels]
  [./fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  [../]
  [./moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
    controller_gain = 0
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
    controller_gain = 0
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 6e-6
  solve_type = 'PJFNK'
  line_search = none
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  [../]
  [./coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'csv console'
    execute_on = 'linear nonlinear'
  [../]
[]
[VectorPostprocessors]
  [./outlet_temps]
    type = LineValueSampler
    start_point = '0 153 0'
    end_point = '72.5 153 0'
    num_points = 1000
    variable = temp
    sort_by = 'x'
    outputs = 'csv'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [./csv]
    type = CSV
    execute_on = 'final'
  [../]
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/012017_temperature_to_dg/Input.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e16
reactor_height=115 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=temp
sigma_val=6
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = true
  group_fluxes = 'group1 group2'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
[../]
[Mesh]
  file = 'cylinder_structured.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  # create_temperature_var = false
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
  dg_for_temperature = true
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   advection_boundaries = 'fuel_top fuel_bottom'
#   family = MONOMIAL
#   order = CONSTANT
# []
[Kernels]
  # Temperature
  [./temp_source]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[DGKernels]
  [./temp_advection_fuel]
    block = 'fuel'
    type = DGTemperatureAdvection
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
  [./temp_diffusion]
    type = DGDiffusion
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
  [../]
[]
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/newt_fuel_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/newt_mod_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_dirichlet_diffusion_inlet]
    boundary = 'fuel_bottom graphite_bottom'
    type = DGFunctionDiffusionDirichletBC
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
    function = 'inlet_boundary_temp_func'
  [../]
  [./temp_advection_inlet]
    boundary = 'fuel_bottom'
    type = TemperatureInflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
    inlet_conc = 824
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_top'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  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_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 mumps'
  nl_max_its = 20
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  [./temp_all_ic_func]
    type = FunctionIC
    variable = temp
    function = temp_ic_func
  [../]
[]
[Functions]
  [./forcing_func]
    type = ParsedFunction
    value = '1000'
  [../]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
  [./inlet_boundary_temp_func]
    type = ParsedFunction
    value = '${inlet_temp}'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
[]
(problems/single_msre_channel_velocity_heat_nts/heat-nts-single-channel-msre-dimensions.i)
# This input file tests outflow boundary conditions for the incompressible NS equations.
width = 3.048
height = 1.016
length = 162.56
nt_scale=1e13
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = false
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = single_channel_msre_dimensions.msh
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    # initial_condition = 1
    # scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    # initial_condition = 1
    # scaling = 1e4
  [../]
  [./temp]
    order = FIRST
    family = LAGRANGE
  [../]
[]
[AuxVariables]
  [./vel_x]
    block = 'fuel'
  [../]
  [./vel_y]
    block = 'fuel'
  [../]
  [./vel_z]
    block = 'fuel'
  [../]
  [./p]
    block = 'fuel'
  [../]
  [./power_density]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   outlet_boundaries = 'fuel_top'
#   u_func = vel_x_func
#   v_func = vel_y_func
#   w_func = vel_z_func
#   constant_velocity_values = false
#   nt_exp_form = false
#   family = MONOMIAL
#   order = CONSTANT
#   # jac_test = true
# []
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  # [./delayed_group1]
  #   type = DelayedNeutronSource
  #   variable = group1
  # [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_fuel_transport]
    type = INSTemperature
    u = vel_x
    v = vel_y
    w = vel_z
    variable = temp
    block = 'fuel'
  [../]
  [./temp_mod_transport]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
    block = 'moderator'
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moderator'
    average_fission_heat = 'average_fission_heat'
  [../]
[]
[AuxKernels]
  [./fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  [../]
  [./moderator]
    block = 'moderator'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  [../]
[]
[BCs]
  [./temp_inlet]
    boundary = 'fuel_bottom'
    variable = temp
    value = 900
    type = DirichletBC
  [../]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top moderator_bottoms moderator_tops'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top moderator_bottoms moderator_tops'
    variable = group2
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp rho'
    prop_values = '.0553 1967 2.146e-3' # Robertson MSRE technical report @ 922 K
    peak_power_density = peak_power_density
    controller_gain = 1e-4
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp rho'
    prop_values = '.312 1760 1.86e-3' # Cammi 2011 at 908 K
    block = 'moderator'
    peak_power_density = peak_power_density
    controller_gain = 0
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[Preconditioning]
  [./SMP_PJFNK]
    type = SMP
    full = true
    solve_type = PJFNK
    ksp_norm = none
  [../]
[]
# [Executioner]
#   # type = Steady
#   type = Transient
#   dt = 1
#   num_steps = 1
#   petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
#   petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
#   petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
#   # line_search = none
#   nl_rel_tol = 1e-8
#   nl_max_its = 50
#   l_max_its = 300
# []
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  # petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  # petsc_options_value = 'asm      lu           1               preonly       1e-3'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
#   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  [../]
[]
[Outputs]
  perf_graph = true
  exodus = true
  csv = true
  file_base = 'out'
[]
[Functions]
  [./nt_ic]
    type = ParsedFunction
    value = '10 * sin(pi * z / ${length})'
  [../]
  [./temp_ic]
    type = ParsedFunction
    value = '900 + 100 / ${length} * z'
  [../]
[]
[ICs]
  [./temp]
    type = FunctionIC
    variable = temp
    function = temp_ic
  [../]
  [./group1]
    type = FunctionIC
    variable = group1
    function = nt_ic
  [../]
  [./group2]
    type = FunctionIC
    variable = group2
    function = nt_ic
  [../]
[]
[MultiApps]
  [./sub]
    type = FullSolveMultiApp
    app_type = MoltresApp
    positions = '0 0 0'
    input_files = solution_aux_exodus.i
    execute_on = 'initial'
  [../]
[]
[Transfers]
  [./vel_x]
    type = MultiAppNearestNodeTransfer
    direction = from_multiapp
    multi_app = sub
    source_variable = vel_x
    variable = vel_x
    execute_on = 'initial'
  [../]
  [./vel_y]
    type = MultiAppNearestNodeTransfer
    direction = from_multiapp
    multi_app = sub
    source_variable = vel_y
    variable = vel_y
    execute_on = 'initial'
  [../]
  [./vel_z]
    type = MultiAppNearestNodeTransfer
    direction = from_multiapp
    multi_app = sub
    source_variable = vel_z
    variable = vel_z
    execute_on = 'initial'
  [../]
  [./p]
    type = MultiAppNearestNodeTransfer
    direction = from_multiapp
    multi_app = sub
    source_variable = p
    variable = p
    execute_on = 'initial'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moderator'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'console'
    block = 'fuel'
  [../]
  [./peak_power_density]
    type = ElementExtremeValue
    value_type = max
    variable = power_density
    execute_on = 'linear nonlinear timestep_begin'
  [../]
[]
(problems/022317_test_critical_neutronics_only_reactor/analytic_exp_form_vacuum.i)
global_temperature=922
[GlobalParams]
  num_groups = 1
  num_precursor_groups = 1
  use_exp_form = true
[../]
[Mesh]
  type = GeneratedMesh
  xmax = 3.141592653589793238462643383279502884197169399375105820974944592307816406286
  nx = 100
  dim = 1
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'left right'
  temp_scaling = 1e0
  create_temperature_var = false
  temperature_value = ${global_temperature}
  dg_for_temperature = false
[]
[Materials]
  [./homo_reactor]
    type = GenericMoltresMaterial
    block = 0
    property_tables_root = '../property_file_dir/unity_'
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor -snes_test_display'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda -sub_pc_factor_shift_type -sub_pc_factor_shift_amount'
  petsc_options_value = 'asm      lu           1               preonly       1e-3                       NONZERO                   1e-10'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
[]
(problems/020617_mod_heat_source_one_minus_beta_fission/Input_PJFNK.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e16
reactor_height=115 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=temp
sigma_val=6
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = true
  group_fluxes = 'group1 group2'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
[../]
[Mesh]
  file = 'cylinder_structured.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  # create_temperature_var = false
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
  dg_for_temperature = true
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   advection_boundaries = 'fuel_top fuel_bottom'
#   family = MONOMIAL
#   order = CONSTANT
# []
[Kernels]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    gamma = .0144 # Cammi .0144
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[DGKernels]
  [./temp_advection_fuel]
    block = 'fuel'
    type = DGTemperatureAdvection
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
  [./temp_diffusion]
    type = DGDiffusion
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
  [../]
[]
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/newt_fuel_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/newt_mod_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_dirichlet_diffusion_inlet]
    boundary = 'fuel_bottom graphite_bottom'
    type = DGFunctionDiffusionDirichletBC
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
    function = 'inlet_boundary_temp_func'
  [../]
  [./temp_advection_inlet]
    boundary = 'fuel_bottom'
    type = TemperatureInflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
    inlet_conc = 824
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_top'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'PJFNK'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -ksp_gmres_restart'
  petsc_options_value = 'asm      lu           2               preonly       31'
  nl_max_its = 20
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  [./temp_all_ic_func]
    type = FunctionIC
    variable = temp
    function = temp_ic_func
  [../]
[]
[Functions]
  [./forcing_func]
    type = ParsedFunction
    value = '1000'
  [../]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
  [./inlet_boundary_temp_func]
    type = ParsedFunction
    value = '${inlet_temp}'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    nt_scale = ${nt_scale}
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  [../]
[]
(problems/single_msre_channel_velocity_heat_nts/unit-cell-heat-and-nts.i)
# This input file tests outflow boundary conditions for the incompressible NS equations.
width = 3.048
height = 1.016
length = 162.56
nt_scale=1e13
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = false
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = msre_squares.msh
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    # initial_condition = 1
    scaling = 1e2
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    # initial_condition = 1
    scaling = 1e2
  [../]
  [./temp]
    order = FIRST
    family = LAGRANGE
    scaling = 1e-4
    # initial_condition = 900
  [../]
[]
[AuxVariables]
  # [./vel_x]
  #   block = 'fuel'
  # [../]
  # [./vel_y]
  #   block = 'fuel'
  # [../]
  # [./vel_z]
  #   block = 'fuel'
  # [../]
  # [./p]
  #   block = 'fuel'
  # [../]
  [./power_density]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   outlet_boundaries = 'fuel_top'
#   u_func = vel_x_func
#   v_func = vel_y_func
#   w_func = vel_z_func
#   constant_velocity_values = false
#   nt_exp_form = false
#   family = MONOMIAL
#   order = CONSTANT
#   # jac_test = true
# []
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  # [./delayed_group1]
  #   type = DelayedNeutronSource
  #   variable = group1
  # [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  # [./temp_fuel_transport]
  #   type = INSTemperature
  #   u = vel_x
  #   v = vel_y
  #   w = vel_z
  #   variable = temp
  #   block = 'fuel'
  # [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 21.73'
    variable = temp
    block = 'fuel'
  [../]
  [./temp_mod_transport]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
    # block = 'moderator'
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moderator'
    average_fission_heat = 'average_fission_heat'
  [../]
[]
[AuxKernels]
  [./fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  [../]
  [./moderator]
    block = 'moderator'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  [../]
[]
[BCs]
  [./temp_inlet]
    boundary = 'fuel_bottoms'
    variable = temp
    value = 900
    type = DirichletBC
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 21.73'
  [../]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moderator_bottoms moderator_tops'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moderator_bottoms moderator_tops'
    variable = group2
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'linear'
    block = 'fuel'
    prop_names = 'k cp rho'
    prop_values = '.0553 1967 2.146e-3' # Robertson MSRE technical report @ 922 K
    peak_power_density = peak_power_density
    controller_gain = 1e-2
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'linear'
    prop_names = 'k cp rho'
    prop_values = '.312 1760 1.86e-3' # Cammi 2011 at 908 K
    block = 'moderator'
    peak_power_density = peak_power_density
    controller_gain = 0
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[Preconditioning]
  [./SMP_PJFNK]
    type = SMP
    full = true
    ksp_norm = 'none'
  [../]
[]
# [Executioner]
#   # type = Steady
#   type = Transient
#   dt = 1
#   num_steps = 1
#   petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
#   petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
#   petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
#   # line_search = none
#   nl_rel_tol = 1e-8
#   nl_max_its = 50
#   l_max_its = 300
# []
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'PJFNK'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  # petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  # petsc_options_value = 'asm      lu           1               preonly       1e-3'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
  # line_search = 'none'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
#   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-5
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  [../]
[]
[Outputs]
  perf_graph = true
  exodus = true
  csv = true
  file_base = 'out'
[]
[Functions]
  [./nt_ic]
    type = ParsedFunction
    value = '10 * sin(pi * z / ${length})'
  [../]
  [./temp_ic]
    type = ParsedFunction
    value = '900 + 100 / ${length} * z'
  [../]
[]
[ICs]
  [./temp]
    type = FunctionIC
    variable = temp
    function = temp_ic
  [../]
  [./group1]
    type = FunctionIC
    variable = group1
    function = nt_ic
  [../]
  [./group2]
    type = FunctionIC
    variable = group2
    function = nt_ic
  [../]
[]
# [MultiApps]
#   [./sub]
#     type = FullSolveMultiApp
#     app_type = MoltresApp
#     positions = '0 0 0'
#     input_files = solution_aux_exodus.i
#     execute_on = 'initial'
#   [../]
# []
# [Transfers]
#   [./vel_x]
#     type = MultiAppNearestNodeTransfer
#     direction = from_multiapp
#     multi_app = sub
#     source_variable = vel_x
#     variable = vel_x
#     execute_on = 'initial'
#   [../]
#   [./vel_y]
#     type = MultiAppNearestNodeTransfer
#     direction = from_multiapp
#     multi_app = sub
#     source_variable = vel_y
#     variable = vel_y
#     execute_on = 'initial'
#   [../]
#   [./vel_z]
#     type = MultiAppNearestNodeTransfer
#     direction = from_multiapp
#     multi_app = sub
#     source_variable = vel_z
#     variable = vel_z
#     execute_on = 'initial'
#   [../]
#   [./p]
#     type = MultiAppNearestNodeTransfer
#     direction = from_multiapp
#     multi_app = sub
#     source_variable = p
#     variable = p
#     execute_on = 'initial'
#   [../]
# []
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    # outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    # outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moderator'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'console'
    block = 'fuel'
  [../]
  [./peak_power_density]
    type = ElementExtremeValue
    value_type = max
    variable = power_density
    execute_on = 'linear nonlinear timestep_begin'
  [../]
[]
(problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_single_pin_adaptive_PJFNK.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  file = '3d_single_unit_msre_vol_fraction.msh'
  # uniform_refine = 1
  # file = jac_test.msh
[]
[Problem]
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = 0
  w_def = ${flow_velocity}
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'monotone_cubic'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'monotone_cubic'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'PJFNK'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
  #   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
    # off_diag_row = 'temp pre1 pre2 pre3 pre4 pre5 pre6 temp pre1 pre2 pre3 pre4 pre5 pre6'
    # off_diag_column = 'group1 group1 group1 group1 group1 group1 group1 group2 group2 group2 group2 group2 group2 group2'
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  [out]
    type = Exodus
  []
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
# [Adaptivity]
#   marker = errorfrac_temp
#   max_h_level = 1
#   [./Indicators]
#     [./error_temp]
#       type = GradientJumpIndicator
#       variable = temp
#       outputs = none
#     [../]
#   [../]
#   [./Markers]
#     [./errorfrac_temp]
#       type = ErrorFractionMarker
#       refine = 0.8
#       coarsen = 0.1
#       indicator = error_temp
#       outputs = none
#     [../]
#   [../]
# []
(problems/021417_MSRE_materials/transient-nts-cg-temp-two-grp-scale-two-mat-inverted-file-msh.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
global_temperature=temp
# global_temperature=922
ini_temp=1022
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = ${global_temperature}
  sss2_input = false
[../]
[Mesh]
  file = 'inverted_29x29_h_133.msh'
  # file = 'inverted_3x3_h_15.msh'
[../]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e1
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e1
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-3
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'moder_bottoms moder_tops fuel_bottoms fuel_tops moder_sides'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'moder_bottoms moder_tops fuel_bottoms fuel_tops moder_sides'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    block = 'fuel'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
[]
[Outputs]
  perf_graph = true
  csv = true
  [./out]
    type = Exodus
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/060717_dimension_testing/test_case.i)
flow_velocity=1
nt_scale = ${/ 1E0 1.6E-13}
ini_temp=1
diri_temp=1
[GlobalParams]
  num_groups = 1
  num_precursor_groups = 1
  use_exp_form = false
  group_fluxes = 'group1'
  temperature = temp
  sss2_input = false
  account_delayed = false
[]
[Mesh]
  type = GeneratedMesh
  nx = 10
  ny = 10
  dim = 2
  xmax = 2.42 # Bessel zero is 2.405
  ymax = 3.149
[]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    # order = CONSTANT
    # family = MONOMIAL
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
  [../]
[]
# [DGKernels]
#   [./temp]
#     type = DGConvection
#     variable = temp
#     velocity = '0 ${flow_velocity} 0'
#   [../]
# []
[BCs]
  # [./vacuum_group1]
  #   type = VacuumConcBC
  #   boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
  #   variable = group1
  # [../]
  [./group1]
    type = DirichletBC
    value = 0
    boundary = 'top right bottom'
    variable = 'group1'
  [../]
  [./temp_diri_cg]
    boundary = 'bottom right'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  # [./temp_advection_inlet]
  #   boundary = 'bottom'
  #   type = TemperatureInflowBC
  #   velocity = '0 ${flow_velocity} 0'
  #   variable = temp
  #   inlet_conc = 1
  # [../]
  [./temp_advection_outlet]
    boundary = 'top'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/dummy_'
    interp_type = 'spline'
    prop_names = 'k cp rho'
    prop_values = '.1 1 1' # Robertson MSRE technical report @ 922 K
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    outputs = 'csv console'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  file_base = ''
  [./exodus]
    type = Exodus
  [../]
  [./csv]
    type = CSV
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/021417_MSRE_materials/transient-nts-cg-temp-one-channel-two-mat-scale-mod-heat-PJFNK.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
global_temperature=temp
# global_temperature=922
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = ${global_temperature}
  sss2_input = false
[../]
[Mesh]
  file = 'cylinder_structured_for_msre_comp.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e1
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e1
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-3
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    gamma = .0144 # Cammi .0144
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top graphite_bottom graphite_top'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top graphite_bottom graphite_top'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'graphite_bottom fuel_bottom'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_top'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    block = 'fuel'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'PJFNK'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    nt_scale = ${nt_scale}
    execute_on = 'nonlinear'
    outputs = 'console'
    block = 'fuel'
  [../]
[]
[Outputs]
  perf_graph = true
  csv = true
  [./out]
    type = Exodus
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/021417_MSRE_materials/transient-nts-cg-temp-one-channel-two-mat-scale-PJFNK.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
global_temperature=temp
# global_temperature=922
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = ${global_temperature}
  sss2_input = false
[../]
[Mesh]
  file = 'cylinder_structured_for_msre_comp.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e1
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e1
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-3
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top graphite_bottom graphite_top'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top graphite_bottom graphite_top'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'graphite_bottom fuel_bottom'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_top'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    block = 'fuel'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'PJFNK'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
[]
[Outputs]
  perf_graph = true
  csv = true
  [./out]
    type = Exodus
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/020617_mod_heat_source_one_minus_beta_fission/Input.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e16
reactor_height=115 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=temp
sigma_val=6
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = true
  group_fluxes = 'group1 group2'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
[../]
[Mesh]
  file = 'cylinder_structured.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  # create_temperature_var = false
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
  dg_for_temperature = true
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   advection_boundaries = 'fuel_top fuel_bottom'
#   family = MONOMIAL
#   order = CONSTANT
# []
[Kernels]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    gamma = .0144 # Cammi .0144
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[DGKernels]
  [./temp_advection_fuel]
    block = 'fuel'
    type = DGTemperatureAdvection
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
  [./temp_diffusion]
    type = DGDiffusion
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
  [../]
[]
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/newt_fuel_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/newt_mod_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_dirichlet_diffusion_inlet]
    boundary = 'fuel_bottom graphite_bottom'
    type = DGFunctionDiffusionDirichletBC
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
    function = 'inlet_boundary_temp_func'
  [../]
  [./temp_advection_inlet]
    boundary = 'fuel_bottom'
    type = TemperatureInflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
    inlet_conc = 824
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_top'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  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_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 mumps'
  nl_max_its = 20
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  [./temp_all_ic_func]
    type = FunctionIC
    variable = temp
    function = temp_ic_func
  [../]
[]
[Functions]
  [./forcing_func]
    type = ParsedFunction
    value = '1000'
  [../]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
  [./inlet_boundary_temp_func]
    type = ParsedFunction
    value = '${inlet_temp}'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    nt_scale = ${nt_scale}
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  [../]
[]
(problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
base_height = 136
scale = .99
height = '${fparse base_height * scale}'
width = 145
offset = 2.5
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  [file]
    type = FileMeshGenerator
    ## Default to jac_test.msh for quicker syntax check tests.
    ## Switch to 3D mesh for actual simulations.
    # file = '3d_msre_29x29_136.msh'
    file = jac_test.msh
  []
  [scale]
    type = TransformGenerator
    input = file
    transform = SCALE
    vector_value = '1 1 ${scale}'
  []
[]
[Problem]
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    #     initial_condition = 1
    scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    #     initial_condition = 1
    scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Precursors]
  [pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = 0
    w_def = ${flow_velocity}
    nt_exp_form = false
    loop_precursors = false
    family = MONOMIAL
    order = CONSTANT
    jac_test = true
  []
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel'
    group_number = 1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity_variable = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
  [nt_ic_func]
    type = ParsedFunction
    expression = 'sin(pi * z / ${height}) * sin(pi * (x + ${offset}) / ${width}) * sin(pi * (y + ${offset}) / ${width})'
  []
[]
[Materials]
  [fuel]
    type = MsreFuelTwoGrpXSFunctionMaterial
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GraphiteTwoGrpXSFunctionMaterial
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  line_search = 'none'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type'
  petsc_options_value = 'lu	  NONZERO		1e-10			preonly'
  #   petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  #   petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
  #   dtmax = 1
  dtmin = 1e-7
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-6
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
    ksp_norm = none
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  [out]
    type = Exodus
  []
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  #   [./temp_ic]
  #     type = RandomIC
  #     variable = temp
  #     min = 922
  #     max = 1022
  #   [../]
  #   [./group1_ic]
  #     type = RandomIC
  #     variable = group1
  #     min = .5
  #     max = 1.5
  #   [../]
  #   [./group2_ic]
  #     type = RandomIC
  #     variable = group2
  #     min = .5
  #     max = 1.5
  #   [../]
  [group1_ic]
    type = FunctionIC
    variable = group1
    function = 'nt_ic_func'
  []
  [group2_ic]
    type = FunctionIC
    variable = group2
    function = 'nt_ic_func'
  []
[]
(problems/constant_inlet_outlet_temp_no_heat_flux_at_walls/auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = '2d_lattice_structured.msh'
[]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  [../]
[]
[AuxVariables]
  [./power_density]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[Precursors]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'fuel_bottoms'
    type = FlexiblePostprocessorDirichletBC
    postprocessor = coreEndTemp
    offset = -50
    variable = temp
  [../]
  # [./temp_diri_cg]
  #   boundary = 'moder_bottoms fuel_bottoms outer_wall'
  #   type = FunctionDirichletBC
  #   function = 'temp_bc_func'
  #   variable = temp
  # [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[AuxKernels]
  [./fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  [../]
  [./moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
    controller_gain = 0
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
    controller_gain = 0
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 6e-6
  solve_type = 'PJFNK'
  line_search = none
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  [../]
  [./coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'csv console'
    execute_on = 'linear nonlinear'
  [../]
[]
[VectorPostprocessors]
  [./outlet_temps]
    type = LineValueSampler
    start_point = '0 153 0'
    end_point = '72.5 153 0'
    num_points = 1000
    variable = temp
    sort_by = 'x'
    outputs = 'csv'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  exodus = true
  [./csv]
    type = CSV
    execute_on = 'final'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/033117_nts_temp_pre_parsed_mat/auto_diff_rho.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = '2d_lattice_structured.msh'
  # file = 2d_split_mesh/auto_diff_rho_in.e
  # file = auto_diff_rho_in.e
  # nemesis = true
  # parallel_type = DISTRIBUTED
[]
[Problem]
  coord_type = RZ
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[AuxVariables]
  [power_density]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  []
  [temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  []
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  []
[]
[AuxKernels]
  [fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  []
  [moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
    controller_gain = 0
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
    controller_gain = 0
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 6e-6
  solve_type = 'NEWTON'
  # solve_type = 'PJFNK'
  line_search = none
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  # petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  # petsc_options_value = 'asm      lu           1               preonly       1e-3'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
    ksp_norm = none
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  [average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  []
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  # exodus = true
  nemesis = true
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/022317_test_critical_neutronics_only_reactor/analytic_exp_form.i)
global_temperature=922
[GlobalParams]
  num_groups = 1
  num_precursor_groups = 1
  use_exp_form = true
[../]
[Mesh]
  type = GeneratedMesh
  xmax = 3.141592653589793238462643383279502884197169399375105820974944592307816406286
  nx = 100
  dim = 1
[../]
[Nt]
  var_name_base = 'group'
  temp_scaling = 1e0
  create_temperature_var = false
  temperature_value = ${global_temperature}
  dg_for_temperature = false
[]
[BCs]
  [./diri]
    type = LinLogPenaltyDirichletBC
    value = 0
    penalty = 1
    boundary = 'left right'
    variable = group1
  [../]
[]
[Materials]
  [./homo_reactor]
    type = GenericMoltresMaterial
    block = 0
    property_tables_root = '../property_file_dir/unity_'
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor -snes_test_display'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda -sub_pc_factor_shift_type -sub_pc_factor_shift_amount'
  petsc_options_value = 'asm      lu           1               preonly       1e-3                       NONZERO                   1e-10'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
[]
(problems/publication_level_cases/LOSCA/HXFail/auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '../auto_diff_rho.e'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_from_file_var = group1
    initial_from_file_timestep = LATEST
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    scaling = 1e4
    initial_from_file_var = group2
    initial_from_file_timestep = LATEST
  [../]
  [./temp]
    scaling = 1e-4
    initial_from_file_var = temp
    initial_from_file_timestep = LATEST
  [../]
[]
[Precursors]
 [./core]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  init_from_file = true
 [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./fuel_bottoms_looped]
    boundary = 'fuel_bottoms outer_wall'
    type = PostprocessorDirichletBC
    postprocessor = inlet_mean_temp
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'PJFNK'
  petsc_options = '-pc_type'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  line_search = 'none'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'exodus console'
  [../]
  [./coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'exodus console'
  [../]
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
  # MULTIAPP
  [./inlet_mean_temp]
    type = Receiver
    initialize_old = true
    execute_on = 'timestep_begin'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [./exodus]
    type = Exodus
    file_base = 'auto_diff_rho'
    execute_on = 'timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[MultiApps]
  [./loopApp]
    type = TransientMultiApp
    app_type = MoltresApp
    execute_on = timestep_begin
    positions = '100.0 100.0 0.0'
   input_files = 'sub.i'
 [../]
[]
# connect inlet and outlet to multiapp
[Transfers]
  [./from_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = loopEndTemp
    to_postprocessor = inlet_mean_temp
    direction = from_multiapp
    reduction_type = maximum
  [../]
  [./to_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = coreEndTemp
    to_postprocessor = coreEndTemp
    direction = to_multiapp
  [../]
[]
(problems/publication_level_cases/dilute_absorber_controlled_by_peak_power_density/in.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = '2d_lattice_structured.msh'
  # file = 2d_split_mesh/auto_diff_rho_in.e
  # file = auto_diff_rho_in.e
  # nemesis = true
  # parallel_type = DISTRIBUTED
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  [../]
[]
[AuxVariables]
  [./power_density]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
[Precursors]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[AuxKernels]
  [./fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  [../]
  [./moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
    peak_power_density = peak_power_density
    controller_gain = 1e-4
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
    peak_power_density = peak_power_density
    controller_gain = 0
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 6e-6
  solve_type = 'PJFNK'
  line_search = none
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  [../]
  [./peak_power_density]
    type = ElementExtremeValue
    value_type = max
    variable = power_density
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
  # nemesis = true
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/022317_test_critical_neutronics_only_reactor/analytic.i)
global_temperature=922
[GlobalParams]
  num_groups = 1
  num_precursor_groups = 1
  use_exp_form = false
[../]
[Mesh]
  type = GeneratedMesh
  xmax = 3.141592653589793238462643383279502884197169399375105820974944592307816406286
  nx = 100
  dim = 1
[../]
[Nt]
  var_name_base = 'group'
  temp_scaling = 1e0
  create_temperature_var = false
  temperature_value = ${global_temperature}
  dg_for_temperature = false
[]
[BCs]
  [./diri]
    type = DirichletBC
    value = 0
    boundary = 'left right'
    variable = group1
  [../]
[]
[Materials]
  [./homo_reactor]
    type = GenericMoltresMaterial
    block = 0
    property_tables_root = '../property_file_dir/unity_'
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor -snes_test_display'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
[]
(problems/033117_nts_temp_pre_parsed_mat/auto_diff_rho_control.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = '2d_lattice_structured.msh'
  # file = 2d_split_mesh/auto_diff_rho_in.e
  # file = auto_diff_rho_in.e
  # nemesis = true
  # parallel_type = DISTRIBUTED
[]
[Problem]
  coord_type = RZ
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[AuxVariables]
  [power_density]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Precursors]
  [pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  []
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  []
  [temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  []
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  []
[]
[AuxKernels]
  [fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  []
  [moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
    peak_power_density = peak_power_density
    controller_gain = 1e-4
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
    peak_power_density = peak_power_density
    controller_gain = 0
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 6e-6
  solve_type = 'PJFNK'
  line_search = none
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  [average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  []
  [peak_power_density]
    type = ElementExtremeValue
    value_type = max
    variable = power_density
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
  []
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
  # nemesis = true
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho_restart.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  file = '3d_auto_diff_rho_out.e'
  # file = jac_test.msh
[]
[Problem]
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_from_file_var = group1
    initial_from_file_timestep = LATEST
    scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_from_file_var = group2
    initial_from_file_timestep = LATEST
    scaling = 1e4
  []
  [temp]
    initial_from_file_var = temp
    initial_from_file_timestep = LATEST
    scaling = 1e-4
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = 0
  w_def = ${flow_velocity}
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
  init_from_file = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
  #   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  [out]
    type = Exodus
  []
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/022317_test_critical_neutronics_only_reactor/small.i)
reactor_height=10
global_temperature=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = false
  # group_fluxes = 'group1 group2'
[../]
[Mesh]
  file = 'cylinder_small.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'boundaries'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = false
  # temperature = ${global_temperature}
  temperature_value = ${global_temperature}
  dg_for_temperature = false
[]
[Materials]
  [./homo_reactor]
    type = GenericMoltresMaterial
    block = 'reactor'
    property_tables_root = '../property_file_dir/msre_homogeneous_critical_question_mark_'
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor -snes_test_display'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Functions]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
[]
(problems/rodded2D/rodded.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 4
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2 group3 group4'
  temperature = temp
  sss2_input = true
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '2d_rodded_lattice.msh'
[../]
[Problem]
  coord_type = RZ
  kernel_coverage_check = false
[]
[Variables]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  [../]
  [./rodPosition]
    family = SCALAR
    order = FIRST
    initial_condition = 0.0
  [../]
[]
[Precursors]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  [../]
[]
[Nt]
  var_name_base = group
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall cRod_top cRod_bot'
  create_temperature_var = false
[]
[Kernels]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    gamma = .0144 # Cammi .0144
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[ScalarKernels]
  [./tdRodPos]
    type = ODETimeDerivative
    variable = rodPosition
  [../]
  [./rodposForce]
    type = ParsedODEKernel
    function = 'rodPosition - 100'
    variable = rodPosition
  [../]
[]
[BCs]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4gfuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4gmoder_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
  [./cRod]
    type = RoddedMaterial
    property_tables_root = '../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4gmoder_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'cRod'
    rodDimension = 'y'
    rodPosition = rodPosition
    absorb_factor = 1e6 # how much more absorbing than usual in absorbing region?
  [../]
  [./rho_crod]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'cRod'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  line_search = 'none'
  nl_max_its = 30
  l_max_its = 100
  [./TimeStepper]
    type = PostprocessorDT
    postprocessor = limit_k
    dt = 0.1
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
    # ksp_norm = none
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
     type = AverageFissionHeat
     nt_scale = ${nt_scale}
     execute_on = 'linear nonlinear'
     outputs = 'console'
     block = 'fuel'
  [../]
  [./limit_k]
    type = LimitK
    execute_on = 'timestep_end'
    k_postprocessor = multiplication
    growth_factor = 1.2
    cutback_factor = .4
    k_threshold = 1.5
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
  execute_on = 'timestep_end final'
  file_base = 'out'
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/011317_notebook_add_temperature_coupling/Input.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e16
precursor_log_inlet_conc=-17
reactor_height=115 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=temp
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = true
  group_fluxes = 'group1 group2'
  v_def = ${flow_velocity}
  tau = 1
  transient_simulation = true
  incompressible_flow = false
  # prec_scale = 1e5
[../]
[Mesh]
  file = 'cylinder_structured.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  # create_temperature_var = false
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   inlet_boundary = 'fuel_bottom'
#   inlet_boundary_condition = 'DirichletBC'
#   inlet_bc_value = ${precursor_log_inlet_conc}
#   outlet_boundary = 'fuel_top'
#   initial_condition = ${precursor_log_inlet_conc}
#   tau = 1
#   use_source_stabilization = true
#   offset = 24
# []
[Kernels]
  # Temperature
  [./temp_flow_fuel]
    block = 'fuel'
    type = MatINSTemperatureRZ
    variable = temp
    rho = 'rho'
    k = 'k'
    cp = 'cp'
    uz = ${flow_velocity}
  [../]
  [./temp_art_diff_fuel]
    block = 'fuel'
    type = ScalarAdvectionArtDiff
    variable = temp
    use_exp_form = false
  [../]
  [./temp_flow_moder]
    block = 'moder'
    type = MatINSTemperatureRZ
    variable = temp
    rho = 'rho'
    k = 'k'
    cp = 'cp'
  [../]
  [./temp_source]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
    rho = 'rho'
    cp = 'cp'
  [../]
[]
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/newt_fuel_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/newt_mod_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_inlet]
    boundary = 'fuel_bottom graphite_bottom'
    type = DirichletBC
    variable = temp
    value = ${inlet_temp}
  [../]
  [./temp_outlet]
    boundary = 'fuel_top'
    type = MatINSTemperatureNoBCBC
    variable = temp
    k = 'k'
  [../]
  [./temp_art_diff_fuel]
    boundary = 'fuel_top'
    type = ScalarAdvectionArtDiffNoBCBC
    variable = temp
    use_exp_form = false
  [../]
[]
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  # line_search = none
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  # trans_ss_check = true
  # ss_check_tol = 8e-9
  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_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 mumps'
  nl_max_its = 10
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-4
    growth_factor = 1.05
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
  [./dof_map]
    type = DOFMap
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  # [./temp_ic]
  #   type = ConstantIC
  #   variable = temp
  #   value = ${inlet_temp}
  # [../]
  [./temp_all_ic_func]
    type = FunctionIC
    variable = temp
    function = temp_ic_func
  [../]
[]
[Functions]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
[]
(problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho_direct.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  #   file = '3d_msre_29x29_136.msh'
  file = split_mesh/3d_auto_diff_rho_in.e
  nemesis = true
  skip_partioning = true
[]
[Problem]
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = 0
  w_def = ${flow_velocity}
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  #   petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  #   petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'lu	  NONZERO		1e-10			preonly	  1e-3'
  nl_max_its = 30
  l_max_its = 200
  #   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
    ksp_norm = none
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
  nemesis = true
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/033117_nts_temp_pre_parsed_mat/controlled_neutronics_only.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = 922
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = '2d_lattice_structured.msh'
[]
[Problem]
  coord_type = RZ
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
[]
[AuxVariables]
  [power_density]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  []
[]
[AuxKernels]
  [fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  []
  [moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp rho'
    prop_values = '.0553 1967 2.146e-3' # Robertson MSRE technical report @ 922 K
    peak_power_density = peak_power_density
    controller_gain = 1e-5
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp rho'
    prop_values = '.312 1760 1.86e-3' # Cammi 2011 at 908 K
    block = 'moder'
    controller_gain = 0
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 6e-6
  # solve_type = 'NEWTON'
  solve_type = 'PJFNK'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  line_search = none
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [peak_power_density]
    type = ElementExtremeValue
    value_type = max
    variable = power_density
    execute_on = 'linear nonlinear timestep_begin'
  []
  [average_fission_heat]
    type = AverageFissionHeat
    nt_scale = ${nt_scale}
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  []
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  [exodus]
    type = Exodus
  []
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/021417_MSRE_materials/CG_no_temp.i)
reactor_height = 162.56
# global_temperature=temp
global_temperature = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = false
  group_fluxes = 'group1 group2'
[]
[Mesh]
  file = 'msre_22x22_correct_vol_fraction.msh'
[]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops fuel_sides'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = false
  # temperature = ${global_temperature}
  temperature_value = ${global_temperature}
  dg_for_temperature = false
  eigen = false
[]
[Materials]
  [fuel]
    # type = CammiFuel
    type = GenericMoltresMaterial
    block = 'fuel'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_fuel_data_func_of_fuel_temp_'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  []
  [moder]
    # type = CammiModerator
    type = GenericMoltresMaterial
    block = 'moder'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_mod_data_func_of_mod_temp_'
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  #   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor -snes_test_display'
  # petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  # petsc_options_value = 'asm    lu           1               preonly       1e-3'
  petsc_options_iname = '-snes_type'
  petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Functions]
  [nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  []
  [bnorm]
    type = ElmIntegTotFissNtsPostprocessor
    group_fluxes = 'group1 group2'
    execute_on = linear
  []
  [tot_fissions]
    type = ElmIntegTotFissPostprocessor
    execute_on = linear
  []
  [group1norm]
    type = ElementIntegralVariablePostprocessor
    variable = group1
    execute_on = linear
  []
  [group2norm]
    type = ElementIntegralVariablePostprocessor
    variable = group2
    execute_on = linear
  []
  [group1max]
    type = NodalExtremeValue
    value_type = max
    variable = group1
    execute_on = timestep_end
  []
  [group2max]
    type = NodalExtremeValue
    value_type = max
    variable = group2
    execute_on = timestep_end
  []
  [group1diff]
    type = ElementL2Diff
    variable = group1
    execute_on = 'linear timestep_end'
    use_displaced_mesh = false
  []
[]
(problems/picard/nts_no_pres.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = false
[]
[Mesh]
  file = '2d_lattice_structured.msh'
  # file = '2d_lattice_structured_jac.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
[]
[AuxVariables]
  [./temp]
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    block = 'fuel'
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    block = 'fuel'
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  picard_max_its = 1
  picard_rel_tol = 1e-6
  picard_abs_tol = 1e-4
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-4
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type'
  petsc_options_value = 'lu       NONZERO'
  line_search = 'none'
   # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 10
  l_max_its = 100
  dtmin = 1e-3
  [./TimeStepper]
    type = PostprocessorDT
    postprocessor = 'limit_k'
    dt = 1e-3
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus csv'
  [../]
  [./limit_k]
    type = LimitK
    growth_factor = 1.1
    cutback_factor = 0.4
    k_threshold = 1.1
    k_postprocessor = 'multiplication'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  exodus = true
  csv = true
  execute_on = 'final'
[]
[Debug]
  show_var_residual_norms = true
[]
[MultiApps]
  [./temp]
    type = TransientMultiApp
    app_type = MoltresApp
    positions = '0 0 0'
    input_files = 'temp_no_pres.i'
  [../]
[]
[Transfers]
  [./temp_from_sub]
    type = MultiAppCopyTransfer
    direction = from_multiapp
    multi_app = 'temp'
    source_variable = temp
    variable = temp
  [../]
  [./group1_to_sub]
    type = MultiAppCopyTransfer
    direction = to_multiapp
    multi_app = 'temp'
    source_variable = group1
    variable = group1
  [../]
  [./group2_to_sub]
    type = MultiAppCopyTransfer
    direction = to_multiapp
    multi_app = 'temp'
    source_variable = group2
    variable = group2
  [../]
[]
(problems/transient-axi-nts-temp-delayed.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
nt_scale=1e18
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  group_fluxes = 'group1 group2'
[../]
[Mesh]
  file = 'axisymm_cylinder.msh'
[../]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
  [../]
  [./temp]
    order = FIRST
    family = LAGRANGE
    # scaling = 1e-3
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    group_number = 1
    variable = group1
  [../]
  [./time_group2]
    type = NtTimeDerivative
    group_number = 2
    variable = group2
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
    temperature = temp
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
    temperature = temp
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
    temperature = temp
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
    temperature = temp
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
    num_groups = 2
    group_fluxes = 'group1 group2'
    temperature = temp
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
    num_groups = 2
    group_fluxes = 'group1 group2'
    temperature = temp
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    num_groups = 2
    group_fluxes = 'group1 group2'
    temperature = temp
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    num_groups = 2
    group_fluxes = 'group1 group2'
    temperature = temp
  [../]
  # Temperature
  [./temp_flow_fuel]
    block = 'fuel'
    type = MatINSTemperatureRZ
    variable = temp
    rho = 'rho'
    k = 'k'
    cp = 'cp'
    uz = ${flow_velocity}
  [../]
  [./temp_flow_moder]
    block = 'moder'
    type = MatINSTemperatureRZ
    variable = temp
    rho = 'rho'
    k = 'k'
    cp = 'cp'
  [../]
  [./temp_source]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
    rho = 'rho'
    cp = 'cp'
  [../]
[]
# Delayed neutron precursors
# [Precursors]
#   var_name_base = pre
#   v_def = ${flow_velocity}
#   block = 'fuel'
#   inlet_boundary = 'fuel_bottom'
#   inlet_boundary_condition = 'DirichletBC'
#   inlet_bc_value = -20
#   outlet_boundary = 'fuel_top'
#   temperature = temp
#   incompressible_flow = false
#   transient_simulation = true
#   use_exp_form = true
#   initial_condition = -20
# []
# [AuxVariables]
# []
# [AuxKernels]
# []
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    block = 'fuel'
    property_tables_root = 'msr2g_enrU_mod_953_fuel_interp_'
    num_groups = 2
    num_precursor_groups = 8
    prop_names = 'k rho cp'
    prop_values = '.0123 3.327e-3 1357' # Cammi 2011 at 908 K
    # prop_values = '.123 3.327e-3 1357'
    temperature = temp
  [../]
  [./moder]
    type = GenericMoltresMaterial
    block = 'moder'
    property_tables_root = 'msr2g_enrU_fuel_922_mod_interp_'
    num_groups = 2
    num_precursor_groups = 8
    prop_names = 'k rho cp'
    prop_values = '.312 1.843e-3 1760' # Cammi 2011 at 908 K
    # prop_values = '3.12 1.843e-3 1760'
    temperature = temp
  [../]
[]
[BCs]
  [./temp_inlet]
    boundary = 'fuel_bottom graphite_bottom'
    type = DirichletBC
    variable = temp
    value = ${inlet_temp}
  [../]
  [./temp_outlet]
    boundary = 'fuel_top'
    type = MatINSTemperatureNoBCBC
    variable = temp
    k = 'k'
  [../]
  [./group1_vacuum]
    type = VacuumBC
    variable = group1
    boundary = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  [../]
  [./group2_vacuum]
    type = VacuumBC
    variable = group2
    boundary = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  [../]
[]
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  nl_abs_tol = 4e-9
  trans_ss_check = true
  ss_check_tol = 4e-9
  nl_rel_tol = 1e-6
  # solve_type = 'PJFNK'
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  # This system will not converge with default preconditioning; need to use asm
  # petsc_options_iname = '-pc_type -sub_pc_type -sub_ksp_type -pc_asm_overlap -ksp_gmres_restart -snes_linesearch_mindlambda'
  # petsc_options_value = 'asm lu preonly 2 31 1e-3'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 superlu_dist'
  nl_max_its = 20
  l_max_its = 10
  dtmin = 1e-6
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-6
    growth_factor = 1.2
    optimal_iterations = 10
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  [./temp_ic]
    type = ConstantIC
    variable = temp
    value = ${inlet_temp}
  [../]
  [./group1_ic]
    type = ConstantIC
    variable = group1
    value = 1
  [../]
  [./group2_ic]
    type = ConstantIC
    variable = group2
    value = 1
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = ElementIntegralVariablePostprocessor
    variable = group1
    outputs = 'csv console'
    # outputs = 'csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
    # outputs = 'csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
    # outputs = 'csv'
  [../]
[]
(problems/single_msre_channel_velocity_heat_nts/heat-nts-single-unit-cell.i)
# This input file tests outflow boundary conditions for the incompressible NS equations.
width = 3.048
height = 1.016
length = 162.56
nt_scale=1e13
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = false
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = msre_squares.msh
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    # initial_condition = 1
    # scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    # initial_condition = 1
    # scaling = 1e4
  [../]
  [./temp]
    order = FIRST
    family = LAGRANGE
  [../]
[]
[AuxVariables]
  [./vel_x]
    block = 'fuel'
  [../]
  [./vel_y]
    block = 'fuel'
  [../]
  [./vel_z]
    block = 'fuel'
  [../]
  [./p]
    block = 'fuel'
  [../]
  [./power_density]
    order = CONSTANT
    family = MONOMIAL
  [../]
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   outlet_boundaries = 'fuel_top'
#   u_func = vel_x_func
#   v_func = vel_y_func
#   w_func = vel_z_func
#   constant_velocity_values = false
#   nt_exp_form = false
#   family = MONOMIAL
#   order = CONSTANT
#   # jac_test = true
# []
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  # [./delayed_group1]
  #   type = DelayedNeutronSource
  #   variable = group1
  # [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_fuel_transport]
    type = INSTemperature
    u = vel_x
    v = vel_y
    w = vel_z
    variable = temp
    block = 'fuel'
  [../]
  [./temp_mod_transport]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
    block = 'moderator'
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moderator'
    average_fission_heat = 'average_fission_heat'
  [../]
[]
[AuxKernels]
  [./fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  [../]
  [./moderator]
    block = 'moderator'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  [../]
[]
[BCs]
  [./temp_inlet]
    boundary = 'fuel_bottom'
    variable = temp
    value = 900
    type = DirichletBC
  [../]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top moderator_bottoms moderator_tops'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top moderator_bottoms moderator_tops'
    variable = group2
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp rho'
    prop_values = '.0553 1967 2.146e-3' # Robertson MSRE technical report @ 922 K
    peak_power_density = peak_power_density
    controller_gain = 1e-4
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp rho'
    prop_values = '.312 1760 1.86e-3' # Cammi 2011 at 908 K
    block = 'moderator'
    peak_power_density = peak_power_density
    controller_gain = 0
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[Preconditioning]
  [./SMP_PJFNK]
    type = SMP
    full = true
    solve_type = PJFNK
    ksp_norm = none
  [../]
[]
# [Executioner]
#   # type = Steady
#   type = Transient
#   dt = 1
#   num_steps = 1
#   petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
#   petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
#   petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
#   # line_search = none
#   nl_rel_tol = 1e-8
#   nl_max_its = 50
#   l_max_its = 300
# []
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  # petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  # petsc_options_value = 'asm      lu           1               preonly       1e-3'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
#   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  [../]
[]
[Outputs]
  perf_graph = true
  exodus = true
  csv = true
  file_base = 'out'
[]
[Functions]
  [./nt_ic]
    type = ParsedFunction
    value = '10 * sin(pi * z / ${length})'
  [../]
  [./temp_ic]
    type = ParsedFunction
    value = '900 + 100 / ${length} * z'
  [../]
[]
[ICs]
  [./temp]
    type = FunctionIC
    variable = temp
    function = temp_ic
  [../]
  [./group1]
    type = FunctionIC
    variable = group1
    function = nt_ic
  [../]
  [./group2]
    type = FunctionIC
    variable = group2
    function = nt_ic
  [../]
[]
[MultiApps]
  [./sub]
    type = FullSolveMultiApp
    app_type = MoltresApp
    positions = '0 0 0'
    input_files = solution_aux_exodus.i
    execute_on = 'initial'
  [../]
[]
[Transfers]
  [./vel_x]
    type = MultiAppNearestNodeTransfer
    direction = from_multiapp
    multi_app = sub
    source_variable = vel_x
    variable = vel_x
    execute_on = 'initial'
  [../]
  [./vel_y]
    type = MultiAppNearestNodeTransfer
    direction = from_multiapp
    multi_app = sub
    source_variable = vel_y
    variable = vel_y
    execute_on = 'initial'
  [../]
  [./vel_z]
    type = MultiAppNearestNodeTransfer
    direction = from_multiapp
    multi_app = sub
    source_variable = vel_z
    variable = vel_z
    execute_on = 'initial'
  [../]
  [./p]
    type = MultiAppNearestNodeTransfer
    direction = from_multiapp
    multi_app = sub
    source_variable = p
    variable = p
    execute_on = 'initial'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moderator'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'console'
    block = 'fuel'
  [../]
  [./peak_power_density]
    type = ElementExtremeValue
    value_type = max
    variable = power_density
    execute_on = 'linear nonlinear timestep_begin'
  [../]
[]
(problems/011317_notebook_perfectly_bracketed_critical_buckling_height_from_newt/Input.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e0
precursor_log_inlet_conc=-17
reactor_height=115 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=950
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = true
  group_fluxes = 'group1 group2'
  v_def = ${flow_velocity}
  tau = 1
  transient_simulation = true
  incompressible_flow = false
  # prec_scale = 1e5
[../]
[Mesh]
  file = 'cylinder_structured.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = false
  # temperature = ${global_temperature}
  temperature_value = ${global_temperature}
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   inlet_boundary = 'fuel_bottom'
#   inlet_boundary_condition = 'DirichletBC'
#   inlet_bc_value = ${precursor_log_inlet_conc}
#   outlet_boundary = 'fuel_top'
#   initial_condition = ${precursor_log_inlet_conc}
#   tau = 1
#   use_source_stabilization = true
#   offset = 24
# []
# [Kernels]
#   # Temperature
#   [./temp_flow_fuel]
#     block = 'fuel'
#     type = MatINSTemperatureRZ
#     variable = temp
#     rho = 'rho'
#     k = 'k'
#     cp = 'cp'
#     uz = ${flow_velocity}
#   [../]
#   [./temp_art_diff_fuel]
#     block = 'fuel'
#     type = ScalarAdvectionArtDiff
#     variable = temp
#     use_exp_form = false
#   [../]
#   [./temp_flow_moder]
#     block = 'moder'
#     type = MatINSTemperatureRZ
#     variable = temp
#     rho = 'rho'
#     k = 'k'
#     cp = 'cp'
#   [../]
#   [./temp_source]
#     type = TransientFissionHeatSource
#     variable = temp
#     nt_scale=${nt_scale}
#   [../]
#   [./temp_time_derivative]
#     type = MatINSTemperatureTimeDerivative
#     variable = temp
#     rho = 'rho'
#     cp = 'cp'
#   [../]
# []
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/newt_fuel_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/newt_mod_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
# [BCs]
#   [./temp_inlet]
#     boundary = 'fuel_bottom graphite_bottom'
#     type = DirichletBC
#     variable = temp
#     value = ${inlet_temp}
#   [../]
#   [./temp_outlet]
#     boundary = 'fuel_top'
#     type = MatINSTemperatureNoBCBC
#     variable = temp
#     k = 'k'
#   [../]
#   [./temp_art_diff_fuel]
#     boundary = 'fuel_top'
#     type = ScalarAdvectionArtDiffNoBCBC
#     variable = temp
#     use_exp_form = false
#   [../]
# []
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  # line_search = none
  nl_rel_tol = 1e-6
  # nl_abs_tol = 1e-5
  # trans_ss_check = true
  # ss_check_tol = 8e-9
  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_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 mumps'
  nl_max_its = 10
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
  [./dof_map]
    type = DOFMap
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   # [./temp_ic]
#   #   type = ConstantIC
#   #   variable = temp
#   #   value = ${inlet_temp}
#   # [../]
#   [./temp_all_ic_func]
#     type = FunctionIC
#     variable = temp
#     function = temp_ic_func
#   [../]
# []
[Functions]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  # [./temp_fuel]
  #   type = ElementAverageValue
  #   variable = temp
  #   block = 'fuel'
  #   # execute_on = 'linear nonlinear'
  #   outputs = 'csv console'
  # [../]
  # [./temp_moder]
  #   type = ElementAverageValue
  #   variable = temp
  #   block = 'moder'
  #   # execute_on = 'linear nonlinear'
  #   outputs = 'csv console'
  # [../]
[]
(problems/picard/nts.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '2d_lattice_structured.msh'
  # file = '2d_lattice_structured_jac.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
[]
[AuxVariables]
  [./temp]
  [../]
  [./pre1]
    family = MONOMIAL
    order = CONSTANT
    block = 'fuel'
  [../]
  [./pre2]
    family = MONOMIAL
    order = CONSTANT
    block = 'fuel'
  [../]
  [./pre3]
    family = MONOMIAL
    order = CONSTANT
    block = 'fuel'
  [../]
  [./pre4]
    family = MONOMIAL
    order = CONSTANT
    block = 'fuel'
  [../]
  [./pre5]
    family = MONOMIAL
    order = CONSTANT
    block = 'fuel'
  [../]
  [./pre6]
    family = MONOMIAL
    order = CONSTANT
    block = 'fuel'
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    block = 'fuel'
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel'
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    block = 'fuel'
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  picard_max_its = 10
  picard_rel_tol = 1e-7
  picard_abs_tol = 1e-10
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type'
  petsc_options_value = 'lu       NONZERO'
  line_search = 'none'
   # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    dt = 1e-3
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[MultiApps]
  [./temp_pres]
    type = TransientMultiApp
    app_type = MoltresApp
    positions = '0 0 0'
    input_files = 'temp.i'
  [../]
[]
[Transfers]
  [./temp_from_sub]
    type = MultiAppCopyTransfer
    direction = from_multiapp
    multi_app = 'temp_pres'
    source_variable = temp
    variable = temp
  [../]
  [./pre1_from_sub]
    type = MultiAppCopyTransfer
    direction = from_multiapp
    multi_app = 'temp_pres'
    source_variable = pre1
    variable = pre1
  [../]
  [./pre2_from_sub]
    type = MultiAppCopyTransfer
    direction = from_multiapp
    multi_app = 'temp_pres'
    source_variable = pre2
    variable = pre2
  [../]
  [./pre3_from_sub]
    type = MultiAppCopyTransfer
    direction = from_multiapp
    multi_app = 'temp_pres'
    source_variable = pre3
    variable = pre3
  [../]
  [./pre4_from_sub]
    type = MultiAppCopyTransfer
    direction = from_multiapp
    multi_app = 'temp_pres'
    source_variable = pre4
    variable = pre4
  [../]
  [./pre5_from_sub]
    type = MultiAppCopyTransfer
    direction = from_multiapp
    multi_app = 'temp_pres'
    source_variable = pre5
    variable = pre5
  [../]
  [./pre6_from_sub]
    type = MultiAppCopyTransfer
    direction = from_multiapp
    multi_app = 'temp_pres'
    source_variable = pre6
    variable = pre6
  [../]
  [./group1_to_sub]
    type = MultiAppCopyTransfer
    direction = to_multiapp
    multi_app = 'temp_pres'
    source_variable = group1
    variable = group1
  [../]
  [./group2_to_sub]
    type = MultiAppCopyTransfer
    direction = to_multiapp
    multi_app = 'temp_pres'
    source_variable = group2
    variable = group2
  [../]
[]
(problems/033117_nts_temp_pre_parsed_mat/meigen.i)
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = false
[]
[Mesh]
  file = '3d_msre_29x29_136.msh'
  # file = jac_test.msh
[]
[Nt]
  var_name_base = group
  vacuum_boundaries = 'moder_sides fuel_bottoms fuel_tops moder_bottoms moder_tops'
  create_temperature_var = false
  eigen = true
[]
#[Variables]
#  [./group1]
#    order = FIRST
#    family = LAGRANGE
#    initial_condition = 1
#    scaling = 1e4
#  [../]
#  [./group2]
#    order = FIRST
#    family = LAGRANGE
#    initial_condition = 1
#    scaling = 1e4
#  [../]
#  [./temp]
#    initial_condition = ${ini_temp}
#    scaling = 1e-4
#  [../]
#[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = 0
  w_def = ${flow_velocity}
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  jac_test = true
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    block = 'moder'
  []
[]
[Executioner]
  type = InversePowerMethod
  max_power_iterations = 50
  xdiff = 'group1diff'
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  #petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_iname = '-pc_type -sub_pc_type'
  petsc_options_value = 'asm      lu ' #1               preonly       1e-3'
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
#[Postprocessors]
#  [./group1_current]
#    type = IntegralNewVariablePostprocessor
#    variable = group1
#    outputs = 'console csv'
#  [../]
#  [./group1_old]
#    type = IntegralOldVariablePostprocessor
#    variable = group1
#    outputs = 'console csv'
#  [../]
#  [./multiplication]
#    type = DivisionPostprocessor
#    value1 = group1_current
#    value2 = group1_old
#    outputs = 'console csv'
#  [../]
#  [./temp_fuel]
#    type = ElementAverageValue
#    variable = temp
#    block = 'fuel'
#    outputs = 'csv console'
#  [../]
#  [./temp_moder]
#    type = ElementAverageValue
#    variable = temp
#    block = 'moder'
#    outputs = 'csv console'
#  [../]
#  # [./average_fission_heat]
#  #   type = AverageFissionHeat
#  #   nt_scale = ${nt_scale}
#  #   execute_on = 'linear nonlinear'
#  #   outputs = 'console'
#  #   block = 'fuel'
#  # [../]
#[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  # csv = true
  [out]
    type = Exodus
    execute_on = 'final'
  []
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/LOSCA/auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '2d_lattice_structured.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Nt]
  var_name_base = group
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
  create_temperature_var = false
  scaling = 1e-4
  pre_blocks = 'fuel'
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    scaling = 1e4
  [../]
  [./temp]
    scaling = 1e-4
    initial_condition = 930
  [../]
[]
[Precursors]
 [./core]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  loop_precursors = true
  multi_app = loopApp
  is_loopapp = false
  inlet_boundaries = 'fuel_bottoms'
 [../]
[]
[Kernels]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./fuel_bottoms_looped]
    boundary = 'fuel_bottoms outer_wall'
    type = PostprocessorDirichletBC
    postprocessor = inlet_mean_temp
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-5
  nl_abs_tol = 1e-5
  solve_type = 'PJFNK'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  line_search = 'none'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  [../]
  [./coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'exodus console'
  [../]
  # MULTIAPP
  [./inlet_mean_temp]
    type = Receiver
    initialize_old = true
    execute_on = 'timestep_begin'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [./exodus]
    type = Exodus
    file_base = 'auto_diff_rho'
    execute_on = 'timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[MultiApps]
  [./loopApp]
    type = TransientMultiApp
    app_type = MoltresApp
    execute_on = timestep_begin
    positions = '100.0 100.0 0.0'
   input_files = 'sub.i'
 [../]
[]
# connect inlet and outlet to multiapp
[Transfers]
  [./from_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = loopEndTemp
    to_postprocessor = inlet_mean_temp
    direction = from_multiapp
    reduction_type = maximum
  [../]
  [./to_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = coreEndTemp
    to_postprocessor = coreEndTemp
    direction = to_multiapp
  [../]
[]
(problems/012017_temperature_to_dg/test_mat_props.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e16
reactor_height=115 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=temp
sigma_val=6
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = true
  group_fluxes = 'group1 group2'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
[../]
[Mesh]
  file = 'one_element.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  # create_temperature_var = false
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
  dg_for_temperature = true
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   advection_boundaries = 'fuel_top fuel_bottom'
#   family = MONOMIAL
#   order = CONSTANT
# []
[Kernels]
  # Temperature
  [./temp_source]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./source]
  #   type = UserForcingFunction
  #   variable = temp
  #   function = 'forcing_func'
  #   block = 'fuel'
  # [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[DGKernels]
  [./temp_advection_fuel]
    block = 'fuel'
    type = DGTemperatureAdvection
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
  [./temp_diffusion]
    type = DGDiffusion
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
  [../]
[]
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/newt_fuel_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/newt_mod_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_dirichlet_diffusion_inlet]
    boundary = 'fuel_bottom graphite_bottom'
    type = DGFunctionDiffusionDirichletBC
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
    function = 'inlet_boundary_temp_func'
  [../]
  [./temp_advection_inlet]
    boundary = 'fuel_bottom'
    type = TemperatureInflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
    inlet_conc = 824
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_top'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 1e-3
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  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_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 mumps'
  nl_max_its = 20
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  [./temp_all_ic_func]
    type = FunctionIC
    variable = temp
    function = temp_ic_func
  [../]
[]
[Functions]
  [./forcing_func]
    type = ParsedFunction
    value = '1000'
  [../]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
  [./inlet_boundary_temp_func]
    type = ParsedFunction
    value = '${inlet_temp}'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
[]
(problems/022317_test_critical_neutronics_only_reactor/criticial_test_nts_only_rad_57.i)
reactor_height=162.56
global_temperature=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = true
  group_fluxes = 'group1 group2'
[../]
[Mesh]
  file = 'cylinder_rad_57.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'boundaries'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = false
  # temperature = ${global_temperature}
  temperature_value = ${global_temperature}
  dg_for_temperature = false
[]
[Materials]
  [./homo_reactor]
    type = GenericMoltresMaterial
    block = 'reactor'
    property_tables_root = '../property_file_dir/msre_homogeneous_critical_question_mark_'
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor -snes_test_display'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Functions]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
[]
(problems/022317_test_critical_neutronics_only_reactor/analytic_exp_form_harsher_penalty.i)
global_temperature=922
[GlobalParams]
  num_groups = 1
  num_precursor_groups = 1
  use_exp_form = true
[../]
[Mesh]
  type = GeneratedMesh
  xmax = 3.141592653589793238462643383279502884197169399375105820974944592307816406286
  nx = 100
  dim = 1
[../]
[Nt]
  var_name_base = 'group'
  temp_scaling = 1e0
  create_temperature_var = false
  temperature_value = ${global_temperature}
  dg_for_temperature = false
[]
[BCs]
  [./diri]
    type = LinLogPenaltyDirichletBC
    value = 0
    penalty = 100
    boundary = 'left right'
    variable = group1
  [../]
[]
[Materials]
  [./homo_reactor]
    type = GenericMoltresMaterial
    block = 0
    property_tables_root = '../property_file_dir/unity_'
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor -snes_test_display'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda -sub_pc_factor_shift_type -sub_pc_factor_shift_amount'
  petsc_options_value = 'asm      lu           1               preonly       1e-3                       NONZERO                   1e-10'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
[]
(problems/021417_MSRE_materials/CG_no_temp_eigen.i)
reactor_height = 162.56
# global_temperature=temp
global_temperature = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = false
  group_fluxes = 'group1 group2'
[]
[Mesh]
  file = 'msre_22x22_correct_vol_fraction.msh'
[]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops fuel_sides'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = false
  # temperature = ${global_temperature}
  temperature_value = ${global_temperature}
  dg_for_temperature = false
  eigen = true
[]
[Materials]
  [fuel]
    # type = CammiFuel
    type = GenericMoltresMaterial
    block = 'fuel'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_fuel_data_func_of_fuel_temp_'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  []
  [moder]
    # type = CammiModerator
    type = GenericMoltresMaterial
    block = 'moder'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_mod_data_func_of_mod_temp_'
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  []
[]
[Executioner]
  # type = NonlinearEigen
  # free_power_iterations = 4
  # source_abs_tol = 1e-12
  # source_rel_tol = 1e-8
  # output_after_power_iterations = true
  type = InversePowerMethod
  max_power_iterations = 50
  xdiff = 'group1diff'
  bx_norm = 'bnorm'
  k0 = 1.0
  pfactor = 1e-2
  l_max_its = 100
  # solve_type = 'PJFNK'
  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
  []
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Functions]
  [nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  []
  [bnorm]
    type = ElmIntegTotFissNtsPostprocessor
    group_fluxes = 'group1 group2'
    execute_on = linear
  []
  [tot_fissions]
    type = ElmIntegTotFissPostprocessor
    execute_on = linear
  []
  [group1norm]
    type = ElementIntegralVariablePostprocessor
    variable = group1
    execute_on = linear
  []
  [group2norm]
    type = ElementIntegralVariablePostprocessor
    variable = group2
    execute_on = linear
  []
  [group1max]
    type = NodalExtremeValue
    value_type = max
    variable = group1
    execute_on = timestep_end
  []
  [group2max]
    type = NodalExtremeValue
    value_type = max
    variable = group2
    execute_on = timestep_end
  []
  [group1diff]
    type = ElementL2Diff
    variable = group1
    execute_on = 'linear timestep_end'
    use_displaced_mesh = false
  []
[]
(problems/021417_MSRE_materials/transient-nts-cg-temp-one-channel-two-mat-scale.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
global_temperature=temp
# global_temperature=922
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = ${global_temperature}
  sss2_input = false
[../]
[Mesh]
  file = 'cylinder_structured_for_msre_comp.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e1
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e1
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-3
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top graphite_bottom graphite_top'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top graphite_bottom graphite_top'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'graphite_bottom fuel_bottom'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_top'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    block = 'fuel'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
[]
[Outputs]
  perf_graph = true
  csv = true
  [./out]
    type = Exodus
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/2017_annals_pub_msre_compare/auto_diff_rho.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
gamma_frac = .075
R = 70.1675
H = 162.56
[GlobalParams]
  num_groups = 4
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2 group3 group4'
  temperature = temp
  sss2_input = true
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
  nt_scale = ${nt_scale}
[]
[Mesh]
  coord_type = RZ
  file = '2d_lattice_structured.msh'
[]
[Variables]
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[AuxVariables]
  [power_density]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Precursors]
  [pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    loop_precursors = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  []
[]
[Nt]
  var_name_base = group
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
  create_temperature_var = false
  scaling = 1e-4
  pre_blocks = 'fuel'
[]
[Kernels]
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  []
  [temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
    gamma = gamma_func
  []
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity_variable = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [temp_diri_cg]
    boundary = 'fuel_bottoms outer_wall'
    type = FlexiblePostprocessorDirichletBC
    postprocessor = coreEndTemp
    offset = -27.8
    variable = temp
  []
  # [./temp_diri_cg]
  #   boundary = 'moder_bottoms fuel_bottoms outer_wall'
  #   type = FunctionDirichletBC
  #   function = 'temp_bc_func'
  #   variable = temp
  # [../]
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  []
[]
[AuxKernels]
  [fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  []
  [moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
    gamma = gamma_func
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
  [gamma_func]
    type = ParsedFunction
    expression = '${gamma_frac} * pi^2 / 4 * cos(pi * x / (2. * ${R})) * sin(pi * y / ${H})'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4g_fuel_rod0_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
    controller_gain = 0
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4g_moder_rod0_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
    controller_gain = 0
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 6e-6
  solve_type = 'PJFNK'
  line_search = none
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [TimeStepper]
    type = PostprocessorDT
    postprocessor = limit_k
    dt = 1e-3
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  [average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  []
  [coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'csv console'
    execute_on = 'linear nonlinear'
  []
  [limit_k]
    type = LimitK
    execute_on = 'timestep_end'
    k_postprocessor = multiplication
    growth_factor = 1.2
    cutback_factor = .4
    k_threshold = 1.5
  []
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/publication_level_cases/transient_single_channel_blockage/3d_ss.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
base_height=136
scale=.99
height=${* ${base_height} ${scale}}
width=145
offset=2.5
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  file = msre_vol_frac_29x29_h_136.msh
[]
[MeshModifiers]
  [./scale]
    type = Transform
    transform = SCALE
    vector_value = '1 1 ${scale}'
  [../]
[]
[Problem]
[]
[Variables]
  [./group1]
    scaling = 1e4
    initial_condition = 1
  [../]
  [./group2]
    scaling = 1e4
    initial_condition = 1
  [../]
  [./temp]
    scaling = 1e-4
    initial_condition = ${ini_temp}
  [../]
[]
[Precursors]
  [./primary_fuel]
    var_name_base = pre
    block = 'fuel blocked_fuel'
    outlet_boundaries = 'fuel_tops blocked_fuel_top'
    u_def = 0
    v_def = 0
    w_def = ${flow_velocity}
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    kernel_block = 'fuel blocked_fuel'
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    block = 'fuel blocked_fuel'
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel blocked_fuel'
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    block = 'fuel blocked_fuel'
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel blocked_fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    gamma = .0144 # Cammi .0144
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel blocked_fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides blocked_fuel_top blocked_fuel_bottom'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides blocked_fuel_top blocked_fuel_bottom'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides blocked_fuel_bottom'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops blocked_fuel_top'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = MsreFuelTwoGrpXSFunctionMaterial
    block = 'fuel blocked_fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel blocked_fuel'
  [../]
  [./moder]
    type = GraphiteTwoGrpXSFunctionMaterial
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  line_search = 'none'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type'
  petsc_options_value = 'lu	  NONZERO		1e-10			preonly'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
  dtmin = 1e-7
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-6
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
    ksp_norm = none
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    nt_scale = ${nt_scale}
    execute_on = 'linear nonlinear'
    outputs = 'console'
    block = 'fuel blocked_fuel'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/033117_nts_temp_pre_parsed_mat/3d_single_pin_velocity_function.i)
# flow_velocity=21.7 # cm/s. See MSRE-properties.ods
fuel_velocity_max_inlet = 43.4
fuel_sq_rad = 33.28
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  file = '3d_single_unit_msre_vol_fraction.msh'
  # file = jac_test.msh
[]
[Problem]
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_func = vel_x_func
  v_func = vel_y_func
  w_func = vel_z_func
  constant_velocity_values = false
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = VelocityFunctionTemperatureAdvection
    vel_x_func = vel_x_func
    vel_y_func = vel_y_func
    vel_z_func = vel_z_func
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = VelocityFunctionTemperatureOutflowBC
    variable = temp
    vel_x_func = vel_x_func
    vel_y_func = vel_y_func
    vel_z_func = vel_z_func
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
  [vel_x_func]
    type = ParsedFunction
    expression = '0'
  []
  [vel_y_func]
    type = ParsedFunction
    expression = '0'
  []
  [vel_z_func]
    type = ParsedFunction
    expression = '${fuel_velocity_max_inlet} * cos(pi * x / (2 * ${fuel_sq_rad})) * cos(pi * y / (2 * ${fuel_sq_rad}))'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'monotone_cubic'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'monotone_cubic'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
  #   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(tests/coupled/auto_diff_rho_serpent.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
ini_temp = 922
diri_temp = 922
nt_scale = 1e13
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = true
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Mesh]
  coord_type = RZ
  file = '2d_lattice_structured.msh'
[]
[Precursors]
  [pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    loop_precursors = false
    family = MONOMIAL
    order = CONSTANT
  []
[]
[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 = 'fuel'
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel'
    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 = 'fuel'
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  #---------------------------------------------------------------------
  # Temperature
  #---------------------------------------------------------------------
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  []
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_converted_to_serpent/serpent_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_converted_to_serpent/serpent_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  num_steps = 80
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type'
  petsc_options_value = 'lu       NONZERO'
  line_search = 'none'
  nl_max_its = 30
  l_max_its = 100
  steady_state_detection = true
  steady_state_tolerance = 1e-10
  dtmin = 1e-5
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 5
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'exodus console'
  []
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [exodus]
    type = Exodus
    file_base = 'auto_diff_rho_serpent'
    execute_on = 'final'
  []
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_single_pin_adaptive.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  file = '3d_single_unit_msre_vol_fraction.msh'
  # uniform_refine = 1
  # file = jac_test.msh
[]
[Problem]
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = 0
  w_def = ${flow_velocity}
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale = ${nt_scale}
    block = 'fuel'
  []
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'monotone_cubic'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'monotone_cubic'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 100000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
  #   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
    # off_diag_row = 'temp pre1 pre2 pre3 pre4 pre5 pre6 temp pre1 pre2 pre3 pre4 pre5 pre6'
    # off_diag_column = 'group1 group1 group1 group1 group1 group1 group1 group2 group2 group2 group2 group2 group2 group2'
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  [exodus]
    type = Exodus
    file_base = ''
  []
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
# [Adaptivity]
#   marker = errorfrac_temp
#   max_h_level = 1
#   [./Indicators]
#     [./error_temp]
#       type = GradientJumpIndicator
#       variable = temp
#       outputs = none
#     [../]
#   [../]
#   [./Markers]
#     [./errorfrac_temp]
#       type = ErrorFractionMarker
#       refine = 0.8
#       coarsen = 0.1
#       indicator = error_temp
#       outputs = none
#     [../]
#   [../]
# []
(problems/011717_precursors/Input_restart_rdg_module.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e16
precursor_log_inlet_conc=-25
reactor_height=115 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=temp
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = true
  group_fluxes = 'group1 group2'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  tau = 1
  transient_simulation = true
  incompressible_flow = false
[../]
[Mesh]
  file = 'Input_out.e'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  # create_temperature_var = false
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
  init_nts_from_file = true
  init_temperature_from_file = true
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  advection_boundaries = 'fuel_top fuel_bottom'
  family = MONOMIAL
  order = CONSTANT
[]
[Kernels]
  # Temperature
  [./temp_flow_fuel]
    block = 'fuel'
    type = MatINSTemperatureRZ
    variable = temp
    uz = ${flow_velocity}
  [../]
  [./temp_art_diff_fuel]
    block = 'fuel'
    type = ScalarAdvectionArtDiff
    variable = temp
    use_exp_form = false
  [../]
  [./temp_flow_moder]
    block = 'moder'
    type = MatINSTemperatureRZ
    variable = temp
  [../]
  [./temp_source]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
[]
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/newt_fuel_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/newt_mod_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_inlet]
    boundary = 'fuel_bottom graphite_bottom'
    type = DirichletBC
    variable = temp
    value = ${inlet_temp}
  [../]
  [./temp_outlet]
    boundary = 'fuel_top'
    type = MatINSTemperatureNoBCBC
    variable = temp
    k = 'k'
  [../]
  [./temp_art_diff_fuel]
    boundary = 'fuel_top'
    type = ScalarAdvectionArtDiffNoBCBC
    variable = temp
    use_exp_form = false
  [../]
[]
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  # line_search = none
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  # trans_ss_check = true
  # ss_check_tol = 8e-9
  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_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 mumps'
  nl_max_its = 20
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-4
    growth_factor = 1.05
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
  [./dof_map]
    type = DOFMap
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_all_ic_func]
#     type = FunctionIC
#     variable = temp
#     function = temp_ic_func
#   [../]
# []
[Functions]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    # execute_on = 'linear nonlinear'
    outputs = 'csv console'
  [../]
[]
(problems/publication_level_cases/transient_single_channel_blockage/3d_auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
base_height=136
scale=.99
height=${* ${base_height} ${scale}}
width=145
offset=2.5
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
[]
[Mesh]
  file = 3d_ss_out.e
[]
[MeshModifiers]
  # [./scale]
  #   type = Transform
  #   transform = SCALE
  #   vector_value = '1 1 ${scale}'
  # [../]
[]
[Problem]
[]
[Variables]
  [./group1]
    scaling = 1e4
    initial_from_file_var = group1
    initial_from_file_timestep = LATEST
  [../]
  [./group2]
    scaling = 1e4
    initial_from_file_var = group2
    initial_from_file_timestep = LATEST
  [../]
  [./temp]
    scaling = 1e-4
    initial_from_file_var = temp
    initial_from_file_timestep = LATEST
  [../]
[]
[Precursors]
  [./primary_fuel]
    var_name_base = pre
    block = 'fuel blocked_fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = 0
    w_def = ${flow_velocity}
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    init_from_file = true
    kernel_block = 'fuel'
  [../]
  [./blocked_fuel]
    var_name_base = pre
    kernel_block = 'blocked_fuel'
    outlet_boundaries = 'blocked_fuel_top'
    u_def = 0
    v_def = 0
    w_def = 0
    nt_exp_form = false
    create_vars = false
    object_suffix = blocked
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    block = 'fuel blocked_fuel'
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel blocked_fuel'
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    block = 'fuel blocked_fuel'
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel blocked_fuel'
  [../]
  [./temp_source_mod]
    type = GammaHeatSource
    variable = temp
    gamma = .0144 # Cammi .0144
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides blocked_fuel_top blocked_fuel_bottom'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides blocked_fuel_top blocked_fuel_bottom'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = MsreFuelTwoGrpXSFunctionMaterial
    block = 'fuel blocked_fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel blocked_fuel'
  [../]
  [./moder]
    type = GraphiteTwoGrpXSFunctionMaterial
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'NEWTON'
  line_search = 'none'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -ksp_type'
  petsc_options_value = 'lu	  NONZERO		1e-10			preonly'
#   petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
#   petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
#   dtmax = 1
  dtmin = 1e-7
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 5e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
    ksp_norm = none
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    nt_scale = ${nt_scale}
    execute_on = 'linear nonlinear'
    outputs = 'console'
    block = 'fuel blocked_fuel'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
  file_base = temp
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/022317_test_critical_neutronics_only_reactor/critical_test_nts_only.i)
reactor_height=162.56
global_temperature=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = true
  group_fluxes = 'group1 group2'
[../]
[Mesh]
  file = 'cylinder.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'boundaries'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = false
  # temperature = ${global_temperature}
  temperature_value = ${global_temperature}
  dg_for_temperature = false
[]
[Materials]
  [./homo_reactor]
    type = GenericMoltresMaterial
    block = 'reactor'
    property_tables_root = '../property_file_dir/msre_homogeneous_critical_question_mark_'
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor -snes_test_display'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Functions]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
[]
(problems/021417_MSRE_materials/mini_msre_cg_temp.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
diri_temp=908
nt_scale=1e13
reactor_height=162.56
global_temperature=temp
# global_temperature=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = true
  group_fluxes = 'group1 group2'
#   u_def = 0
#   v_def = 0
#   w_def = ${flow_velocity}
[../]
[Mesh]
  file = 'mini_msre_cuboid.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops fuel_sides'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = true
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
  dg_for_temperature = false
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   advection_boundaries = 'fuel_top fuel_bottom'
#   family = MONOMIAL
#   order = CONSTANT
# []
[Kernels]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  [../]
[]
[Materials]
  [./fuel]
    # type = CammiFuel
    type = GenericMoltresMaterial
    block = 'fuel'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_fuel_data_func_of_fuel_temp_'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    # type = CammiModerator
    type = GenericMoltresMaterial
    block = 'moder'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_mod_data_func_of_mod_temp_'
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_diri_cg]
    boundary = 'fuel_bottoms moder_bottoms fuel_sides'
    type = DirichletBC
    variable = temp
    value = ${diri_temp}
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
[]
# [Problem]
#   type = FEProblem
#   coord_type = RZ
# [../]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  [./temp_all_ic_func]
    type = FunctionIC
    variable = temp
    function = temp_ic_func
  [../]
[]
[Functions]
  [./temp_ic_func]
    type = ParsedFunction
    value = '${diri_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
  [./diri_temp_func]
    type = ParsedFunction
    value = '${diri_temp}'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
#   # [./average_fission_heat]
#   #   type = AverageFissionHeat
#   #   nt_scale = ${nt_scale}
#   #   execute_on = 'linear nonlinear'
#   #   outputs = 'csv console'
#   #   block = 'fuel'
#   # [../]
[]
(problems/publication_level_cases/LOSCA/auto_diff_rho.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '2d_lattice_structured.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    scaling = 1e4
    initial_condition = 1
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    scaling = 1e4
    initial_condition = 1
  [../]
  [./temp]
    scaling = 1e-4
    initial_condition = 930
  [../]
[]
[Precursors]
 [./core]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
 [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./fuel_bottoms_looped]
    boundary = 'fuel_bottoms outer_wall'
    type = PostprocessorDirichletBC
    postprocessor = inlet_mean_temp
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-5
  nl_abs_tol = 1e-5
  solve_type = 'PJFNK'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  line_search = 'none'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  [../]
  [./coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'exodus console'
  [../]
  # MULTIAPP
  [./inlet_mean_temp]
    type = Receiver
    initialize_old = true
    execute_on = 'timestep_begin'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [./exodus]
    type = Exodus
    file_base = 'auto_diff_rho'
    execute_on = 'timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[MultiApps]
  [./loopApp]
    type = TransientMultiApp
    app_type = MoltresApp
    execute_on = timestep_begin
    positions = '100.0 100.0 0.0'
   input_files = 'sub.i'
 [../]
[]
# connect inlet and outlet to multiapp
[Transfers]
  [./from_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = loopEndTemp
    to_postprocessor = inlet_mean_temp
    direction = from_multiapp
    reduction_type = maximum
  [../]
  [./to_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = coreEndTemp
    to_postprocessor = coreEndTemp
    direction = to_multiapp
  [../]
[]
(problems/060717_dimension_testing/one_group.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 1
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = '2d_lattice_structured.msh'
[]
[Problem]
  # coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-6
  [../]
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_def = 0
  v_def = ${flow_velocity}
  w_def = 0
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  scaling = 1
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
  # [./temp_diffusion_outlet]
  #   boundary = 'fuel_tops'
  #   type = DiffusiveFluxBC
  #   diffusivity = 'k'
  #   variable = temp
  # [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_one_group_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_one_group_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  file_base = ''
  [./exodus]
    type = Exodus
  [../]
  [./csv]
    type = CSV
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/033117_nts_temp_pre_parsed_mat/3d_single_pin_velocity_function_moderator_heating.i)
# flow_velocity=21.7 # cm/s. See MSRE-properties.ods
fuel_velocity_max_inlet = 43.4
fuel_sq_rad = 33.28
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  sss2_input = false
  account_delayed = true
  temperature = temp
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  gamma = .0144 # Cammi .0144
  nt_scale = ${nt_scale}
[]
[Mesh]
  file = '3d_single_unit_msre_vol_fraction.msh'
  # file = jac_test.msh
[]
[Problem]
[]
[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    # scaling = 1e4
  []
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[AuxVariables]
  [power_density]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Precursors]
  var_name_base = pre
  block = 'fuel'
  outlet_boundaries = 'fuel_tops'
  u_func = vel_x_func
  v_func = vel_y_func
  w_func = vel_z_func
  constant_velocity_values = false
  nt_exp_form = false
  family = MONOMIAL
  order = CONSTANT
  # jac_test = true
[]
[Kernels]
  # Neutronics
  [time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  []
  [temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
  []
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = VelocityFunctionTemperatureAdvection
    vel_x_func = vel_x_func
    vel_y_func = vel_y_func
    vel_z_func = vel_z_func
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops moder_sides'
    variable = group2
  []
  [temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms moder_sides'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  []
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = VelocityFunctionTemperatureOutflowBC
    variable = temp
    vel_x_func = vel_x_func
    vel_y_func = vel_y_func
    vel_z_func = vel_z_func
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
  [vel_x_func]
    type = ParsedFunction
    expression = '0'
  []
  [vel_y_func]
    type = ParsedFunction
    expression = '0'
  []
  [vel_z_func]
    type = ParsedFunction
    expression = '${fuel_velocity_max_inlet} * cos(pi * x / (2 * ${fuel_sq_rad})) * cos(pi * y / (2 * ${fuel_sq_rad}))'
  []
[]
[AuxKernels]
  [fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  []
  [moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_fuel_'
    interp_type = 'monotone_cubic'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
    peak_power_density = peak_power_density
    controller_gain = 1e-4
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/newt_msre_mod_'
    interp_type = 'monotone_cubic'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
    peak_power_density = peak_power_density
    controller_gain = 0
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 100000
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-6
  solve_type = 'PJFNK'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 200
  line_search = none
  #   dtmax = 1
  dtmin = 1e-5
  # dt = 1e-3
  [TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.2
    optimal_iterations = 20
    linear_iteration_ratio = 1000
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  [average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'console'
    block = 'fuel'
  []
  [peak_power_density]
    type = ElementExtremeValue
    value_type = max
    variable = power_density
    execute_on = 'linear nonlinear timestep_begin'
  []
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/021417_MSRE_materials/Input.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
diri_temp=908
nt_scale=1e13
reactor_height=162.56
global_temperature=temp
# global_temperature=922
sigma_val=6
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = true
  group_fluxes = 'group1 group2'
#   u_def = 0
#   v_def = 0
#   w_def = ${flow_velocity}
[../]
[Mesh]
  # file = 'msre_22x22_correct_vol_fraction.msh'
  file = msre_cuboid_3x3.msh
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'boundary'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = true
  temperature = ${global_temperature}
  # temperature_value = ${global_temperature}
  dg_for_temperature = true
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   advection_boundaries = 'fuel_top fuel_bottom'
#   family = MONOMIAL
#   order = CONSTANT
# []
[Kernels]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  [../]
[]
[DGKernels]
  [./temp_advection_fuel]
    block = 'fuel'
    type = DGTemperatureAdvection
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
  [./temp_diffusion]
    type = DGDiffusion
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
  [../]
[]
[Materials]
  [./fuel]
    # type = CammiFuel
    type = GenericMoltresMaterial
    block = 'fuel'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_fuel_data_func_of_fuel_temp_'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    # type = CammiModerator
    type = GenericMoltresMaterial
    block = 'moder'
    property_tables_root = '../property_file_dir/full_core_cuboid_msre_comp_mod_data_func_of_mod_temp_'
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
[BCs]
  [./temp_dirichlet_diffusion_inlet]
    boundary = 'temp_diri_bnd'
    type = DGFunctionDiffusionDirichletBC
    variable = temp
    sigma = ${sigma_val}
    epsilon = -1
    diff = 'k'
    function = 'diri_temp_func'
  [../]
  [./temp_advection_inlet]
    boundary = 'temp_inflow_bnd'
    type = TemperatureInflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
    inlet_conc = ${diri_temp}
  [../]
  [./temp_advection_outlet]
    boundary = 'temp_outflow_bnd'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
[]
# [Problem]
#   type = FEProblem
#   coord_type = RZ
# [../]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type' # -ksp_gmres_restart'
  petsc_options_value = 'asm      lu           1               preonly'      # 31'
  nl_max_its = 20
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  print_linear_residuals = true
  perf_graph = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
[ICs]
  [./temp_all_ic_func]
    type = FunctionIC
    variable = temp
    function = temp_ic_func
  [../]
[]
[Functions]
  [./temp_ic_func]
    type = ParsedFunction
    value = '${diri_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
  [./diri_temp_func]
    type = ParsedFunction
    value = '${diri_temp}'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
#   # [./average_fission_heat]
#   #   type = AverageFissionHeat
#   #   nt_scale = ${nt_scale}
#   #   execute_on = 'linear nonlinear'
#   #   outputs = 'csv console'
#   #   block = 'fuel'
#   # [../]
[]
(problems/picard/tmp_nts.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  account_delayed = false
[]
[Mesh]
  file = '2d_lattice_structured.msh'
  # file = '2d_lattice_structured_jac.msh'
[../]
[Problem]
  coord_type = RZ
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
    scaling = 1e4
  [../]
  [./temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    block = 'fuel'
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    block = 'fuel'
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  # [./temp_source_mod]
  #   type = GammaHeatSource
  #   variable = temp
  #   gamma = .0144 # Cammi .0144
  #   block = 'moder'
  #   average_fission_heat = 'average_fission_heat'
  # [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = FunctionDirichletBC
    function = 'temp_bc_func'
    variable = temp
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 3e-6
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -pc_factor_shift_type'
  petsc_options_value = 'lu       NONZERO'
  line_search = 'none'
   # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dtmax = 1
  # dt = 1e-3
  [./TimeStepper]
    type = PostprocessorDT
    postprocessor = 'limit_k'
    dt = 1e-3
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./limit_k]
    type = LimitK
    growth_factor = 1.1
    cutback_factor = 0.4
    k_threshold = 1.25
    k_postprocessor = 'multiplication'
  [../]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'exodus console'
  [../]
  # [./average_fission_heat]
  #   type = AverageFissionHeat
  #   nt_scale = ${nt_scale}
  #   execute_on = 'linear nonlinear'
  #   outputs = 'console'
  #   block = 'fuel'
  # [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [./exodus]
    type = Exodus
    file_base = 'auto_diff_rho'
    execute_on = 'final'
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   [./temp_ic]
#     type = RandomIC
#     variable = temp
#     min = 922
#     max = 1022
#   [../]
#   [./group1_ic]
#     type = RandomIC
#     variable = group1
#     min = .5
#     max = 1.5
#   [../]
#   [./group2_ic]
#     type = RandomIC
#     variable = group2
#     min = .5
#     max = 1.5
#   [../]
# []
(problems/011317_notebook_perfectly_bracketed_critical_buckling_height_from_newt/Input_serpent.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e0
precursor_log_inlet_conc=-17
reactor_height=175 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=900
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = true
  group_fluxes = 'group1 group2'
  v_def = ${flow_velocity}
  tau = 1
  transient_simulation = true
  incompressible_flow = false
  # prec_scale = 1e5
[../]
[Mesh]
  file = 'cylinder_structured.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = false
  # temperature = ${global_temperature}
  temperature_value = ${global_temperature}
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   inlet_boundary = 'fuel_bottom'
#   inlet_boundary_condition = 'DirichletBC'
#   inlet_bc_value = ${precursor_log_inlet_conc}
#   outlet_boundary = 'fuel_top'
#   initial_condition = ${precursor_log_inlet_conc}
#   tau = 1
#   use_source_stabilization = true
#   offset = 24
# []
# [Kernels]
#   # Temperature
#   [./temp_flow_fuel]
#     block = 'fuel'
#     type = MatINSTemperatureRZ
#     variable = temp
#     rho = 'rho'
#     k = 'k'
#     cp = 'cp'
#     uz = ${flow_velocity}
#   [../]
#   [./temp_art_diff_fuel]
#     block = 'fuel'
#     type = ScalarAdvectionArtDiff
#     variable = temp
#     use_exp_form = false
#   [../]
#   [./temp_flow_moder]
#     block = 'moder'
#     type = MatINSTemperatureRZ
#     variable = temp
#     rho = 'rho'
#     k = 'k'
#     cp = 'cp'
#   [../]
#   [./temp_source]
#     type = TransientFissionHeatSource
#     variable = temp
#     nt_scale=${nt_scale}
#   [../]
#   [./temp_time_derivative]
#     type = MatINSTemperatureTimeDerivative
#     variable = temp
#     rho = 'rho'
#     cp = 'cp'
#   [../]
# []
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/msr2g_Th_U_two_mat_homogenization_fuel_data_func_of_fuel_temp_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/msr2g_Th_U_two_mat_homogenization_mod_data_func_of_mod_temp_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
# [BCs]
#   [./temp_inlet]
#     boundary = 'fuel_bottom graphite_bottom'
#     type = DirichletBC
#     variable = temp
#     value = ${inlet_temp}
#   [../]
#   [./temp_outlet]
#     boundary = 'fuel_top'
#     type = MatINSTemperatureNoBCBC
#     variable = temp
#     k = 'k'
#   [../]
#   [./temp_art_diff_fuel]
#     boundary = 'fuel_top'
#     type = ScalarAdvectionArtDiffNoBCBC
#     variable = temp
#     use_exp_form = false
#   [../]
# []
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  # line_search = none
  nl_rel_tol = 1e-6
  # nl_abs_tol = 1e-5
  # trans_ss_check = true
  # ss_check_tol = 8e-9
  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_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 mumps'
  nl_max_its = 10
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
  [./dof_map]
    type = DOFMap
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   # [./temp_ic]
#   #   type = ConstantIC
#   #   variable = temp
#   #   value = ${inlet_temp}
#   # [../]
#   [./temp_all_ic_func]
#     type = FunctionIC
#     variable = temp
#     function = temp_ic_func
#   [../]
# []
[Functions]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  # [./temp_fuel]
  #   type = ElementAverageValue
  #   variable = temp
  #   block = 'fuel'
  #   # execute_on = 'linear nonlinear'
  #   outputs = 'csv console'
  # [../]
  # [./temp_moder]
  #   type = ElementAverageValue
  #   variable = temp
  #   block = 'moder'
  #   # execute_on = 'linear nonlinear'
  #   outputs = 'csv console'
  # [../]
[]
(problems/LOFA/auto_diff_rho.i)
# take in steady state variable from the other core, and run a pump coastdown transient
# here, flow_velocity is only the initial flow velocity
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
tau = 5 # pump coastdown time constant
nt_scale=1e13
ini_temp=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = temp
  sss2_input = false
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
[]
[Mesh]
  file = 'steady/auto_diff_rho.e'
[../]
[Problem]
  coord_type = RZ
[]
[Precursors]
  [./pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    constant_velocity_values = false
    nt_exp_form = false
    family = MONOMIAL
    order = CONSTANT
    u_func = nullFunc
    v_func = coastDownFunc
    w_func = nullFunc
    init_from_file = true
  [../]
[]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    scaling = 1e4
    initial_from_file_var = group1
    initial_from_file_timestep = LATEST [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    scaling = 1e4
    initial_from_file_var = group2
    initial_from_file_timestep = LATEST
  [../]
  [./temp]
    scaling = 1e-4
    order = FIRST
    family = LAGRANGE
    initial_from_file_var = temp
    initial_from_file_timestep = LATEST
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    block = 'fuel'
  [../]
  [./delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = 'fuel'
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    block = 'fuel'
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_source_mod]
     type = GammaHeatSource
     variable = temp
     gamma = .0144 # Cammi .0144
     block = 'moder'
     average_fission_heat = 'average_fission_heat'
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = CtrlConservativeTemperatureAdvection
    u_val = 0
    v_val = ${flow_velocity} # this will be changed in ctrls block
    w_val = 0
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
    variable = group2
  [../]
  [./temp_postpr_inlet]
    boundary = 'moder_bottoms fuel_bottoms outer_wall'
    type = PostprocessorDirichletBC
    variable = temp
    postprocessor = inlet_mean_temp
  [../]
  #[./temp_postpr_inlet]
  #  boundary = 'moder_bottoms fuel_bottoms outer_wall'
  #  type = DirichletBC
  #  variable = temp
  #  value = 922
  #[../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = VelocityFunctionTemperatureOutflowBC
    variable = temp
    vel_x_func = nullFunc
    vel_y_func = coastDownFunc
    vel_z_func = nullFunc
  [../]
[]
[Functions]
  [./temp_bc_func]
    type = ParsedFunction
    value = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  [../]
  [./nullFunc]
    type = ParsedFunction
    value = '0'
  [../]
  [./coastDownFunc]
    type = ParsedFunction
    value = '${flow_velocity} * exp(-t / ${tau})'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '/home/gav/projects/moltres/property_file_dir/newt_msre_fuel_'
    interp_type = 'spline'
    block = 'fuel'
  [../]
  [./rho_fuel]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  # fuel cp function
  [./cp_fuel]
    type = DerivativeParsedMaterial
    f_name = cp
    function = '1967 + 1e-16 * temp'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  # fuel k function
  [./k_fuel]
    type = DerivativeParsedMaterial
    f_name = k
    function = '0.0553 + 1e-16 * temp'
    args = 'temp'
    derivative_order = 1
    block = 'fuel'
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '/home/gav/projects/moltres/property_file_dir/newt_msre_mod_'
    interp_type = 'spline'
    block = 'moder'
  [../]
  [./rho_moder]
    type = DerivativeParsedMaterial
    f_name = rho
    function = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
  # moder cp fcn
  [./cp_moder]
    type = DerivativeParsedMaterial
    f_name = cp
    function = '1760 + 1e-16 * temp'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
  # moder k fcn
  [./k_moder]
    type = DerivativeParsedMaterial
    f_name = k
    function = '.312 + 1e-16 * temp'
    args = 'temp'
    derivative_order = 1
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_abs_tol = 3e-6
  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_shift_amount -ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'lu' #       NONZERO               1e-10                   preonly   1e-3'
  line_search = 'none'
   # petsc_options_iname = '-snes_type'
  # petsc_options_value = 'test'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  # dt = 1e-3
  [./TimeStepper]
    type = IterationAdaptiveDT
    dt = 1e-3
    cutback_factor = 0.4
    growth_factor = 1.04
    optimal_iterations = 5
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
    # ksp_norm = none
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console exodus'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console exodus'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'exodus console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'exodus console'
  [../]
  [./coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'exodus console'
    execute_on = 'timestep_begin'
  [../]
  #multiapp
  [./inlet_mean_temp]
    type = Receiver
    execute_on = 'initial timestep_begin'
  [../]
  [./average_fission_heat]
    type = AverageFissionHeat
    nt_scale = ${nt_scale}
    execute_on = 'linear nonlinear'
    outputs = 'console'
    block = 'fuel'
  [../]
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  [./exodus]
    type = Exodus
    file_base = 'auto_diff_rho'
    execute_on = 'timestep_end'
  [../]
[]
[Controls]
  [./flowControl]
    type = RealFunctionControl
    parameter = '*/*/v_val'
    function = coastDownFunc
    execute_on = 'initial timestep_begin'
  [../]
[]
[MultiApps]
  [./loopApp]
    type = TransientMultiApp
    app_type = MoltresApp
    execute_on = 'initial timestep_begin'
    positions = '100.0 100.0 0.0'
    input_files = 'sub.i'
 [../]
[]
# connect inlet and outlet to multiapp
[Transfers]
  [./from_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = loopEndTemp
    to_postprocessor = inlet_mean_temp
    direction = from_multiapp
    reduction_type = maximum
  [../]
  [./to_loop]
    type = MultiAppPostprocessorTransfer
    multi_app = loopApp
    from_postprocessor = coreEndTemp
    to_postprocessor = coreEndTemp
    direction = to_multiapp
 [../]
[]
(problems/021417_MSRE_materials/transient-nts-cg-temp-two-grp-b1-two-mat.i)
flow_velocity=21.7 # cm/s. See MSRE-properties.ods
nt_scale=1e13
global_temperature=temp
# global_temperature=922
diri_temp=922
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = false
  group_fluxes = 'group1 group2'
  temperature = ${global_temperature}
  sss2_input = true
[../]
[Mesh]
  file = 'msre_26x26.msh'
  # file = 'msre_cuboid_3x3.msh'
[../]
[Variables]
  [./group1]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
  [../]
  [./group2]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1
  [../]
  [./temp]
    initial_condition = ${diri_temp}
  [../]
[]
[Kernels]
  # Neutronics
  [./time_group1]
    type = NtTimeDerivative
    variable = group1
    group_number = 1
  [../]
  [./time_group2]
    type = NtTimeDerivative
    variable = group2
    group_number = 2
  [../]
  [./diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  [../]
  [./sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  [../]
  [./fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
  [../]
  [./diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  [../]
  [./sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  [../]
  [./fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
  [../]
  [./inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  [../]
  [./inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  [../]
  # Temperature
  [./temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    nt_scale=${nt_scale}
    block = 'fuel'
  [../]
  [./temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  [../]
  [./temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  [../]
  [./temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity = '0 0 ${flow_velocity}'
    variable = temp
    block = 'fuel'
  [../]
[]
[BCs]
  [./vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops fuel_sides'
    variable = group1
  [../]
  [./vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottoms fuel_tops moder_bottoms moder_tops fuel_sides'
    variable = group2
  [../]
  [./temp_diri_cg]
    boundary = 'fuel_bottoms moder_bottoms fuel_sides'
    type = DirichletBC
    variable = temp
    value = ${diri_temp}
  [../]
  [./temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 0 ${flow_velocity}'
  [../]
[]
[Materials]
  [./fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/B1_msre_single_unit_cell_fuel_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    block = 'fuel'
    prop_names = 'rho k cp'
    prop_values = '2.146e-3 .0553 1967' # Robertson MSRE technical report @ 922 K
  [../]
  [./moder]
    type = GenericMoltresMaterial
    property_tables_root = '../property_file_dir/B1_msre_single_unit_cell_moder_'
    interp_type = 'spline'
    temperature = ${global_temperature}
    prop_names = 'rho k cp'
    prop_values = '1.843e-3 .312 1760' # Cammi 2011 at 908 K
    block = 'moder'
  [../]
[]
[Executioner]
  type = Transient
  end_time = 10000
#   num_steps = 1
  nl_rel_tol = 1e-6
  nl_abs_tol = 1e-5
  solve_type = 'NEWTON'
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap -sub_ksp_type -snes_linesearch_minlambda'
  petsc_options_value = 'asm      lu           1               preonly       1e-3'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-3
    growth_factor = 1.025
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  [../]
  [./temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  [../]
  [./temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  [../]
[]
[Outputs]
  perf_graph = true
  csv = true
  [./out]
    type = Exodus
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/2017_annals_pub_msre_compare/4group.i)
flow_velocity = 21.7 # cm/s. See MSRE-properties.ods
nt_scale = 1e13
ini_temp = 922
diri_temp = 922
gamma_frac = .075
R = 73
H = 162.56
[GlobalParams]
  num_groups = 4
  num_precursor_groups = 6
  use_exp_form = false
  group_fluxes = 'group1 group2 group3 group4'
  temperature = temp
  sss2_input = true
  pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6'
  account_delayed = true
  nt_scale = ${nt_scale}
[]
[Mesh]
  coord_type = RZ
  file = '2d_lattice_structured.msh'
[]
[Variables]
  [temp]
    initial_condition = ${ini_temp}
    scaling = 1e-4
  []
[]
[AuxVariables]
  [power_density]
    order = CONSTANT
    family = MONOMIAL
  []
[]
[Precursors]
  [pres]
    var_name_base = pre
    block = 'fuel'
    outlet_boundaries = 'fuel_tops'
    u_def = 0
    v_def = ${flow_velocity}
    w_def = 0
    nt_exp_form = false
    loop_precursors = false
    family = MONOMIAL
    order = CONSTANT
    # jac_test = true
  []
[]
[Nt]
  var_name_base = group
  vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall'
  create_temperature_var = false
  scaling = 1e-4
  pre_blocks = 'fuel'
[]
[Kernels]
  # Temperature
  [temp_time_derivative]
    type = MatINSTemperatureTimeDerivative
    variable = temp
  []
  [temp_source_fuel]
    type = TransientFissionHeatSource
    variable = temp
    block = 'fuel'
  []
  [temp_source_mod]
    type = GammaHeatSource
    variable = temp
    block = 'moder'
    average_fission_heat = 'average_fission_heat'
    gamma = gamma_func
  []
  [temp_diffusion]
    type = MatDiffusion
    diffusivity = 'k'
    variable = temp
  []
  [temp_advection_fuel]
    type = ConservativeTemperatureAdvection
    velocity_variable = '0 ${flow_velocity} 0'
    variable = temp
    block = 'fuel'
  []
[]
[BCs]
  [temp_diri_cg]
    boundary = 'fuel_bottoms outer_wall'
    type = FlexiblePostprocessorDirichletBC
    postprocessor = coreEndTemp
    offset = -27.8
    variable = temp
  []
  # [./temp_diri_cg]
  #   boundary = 'moder_bottoms fuel_bottoms outer_wall'
  #   type = FunctionDirichletBC
  #   function = 'temp_bc_func'
  #   variable = temp
  # [../]
  [temp_advection_outlet]
    boundary = 'fuel_tops'
    type = TemperatureOutflowBC
    variable = temp
    velocity = '0 ${flow_velocity} 0'
  []
[]
[AuxKernels]
  [fuel]
    block = 'fuel'
    type = FissionHeatSourceTransientAux
    variable = power_density
  []
  [moderator]
    block = 'moder'
    type = ModeratorHeatSourceTransientAux
    average_fission_heat = 'average_fission_heat'
    variable = power_density
    gamma = gamma_func
  []
[]
[Functions]
  [temp_bc_func]
    type = ParsedFunction
    expression = '${ini_temp} - (${ini_temp} - ${diri_temp}) * tanh(t/1e-2)'
  []
  [gamma_func]
    type = ParsedFunction
    expression = '${gamma_frac} * pi^2 / 4 * cos(pi * x / (2. * ${R})) * sin(pi * y / ${H})'
  []
[]
[Materials]
  [fuel]
    type = GenericMoltresMaterial
    property_tables_root = '../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4g_fuel_rod0_'
    interp_type = 'spline'
    block = 'fuel'
    prop_names = 'k cp'
    prop_values = '.0553 1967' # Robertson MSRE technical report @ 922 K
    controller_gain = 0
  []
  [rho_fuel]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '2.146e-3 * exp(-1.8 * 1.18e-4 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'fuel'
  []
  [moder]
    type = GenericMoltresMaterial
    property_tables_root = '../../tutorial/step01_groupConstants/MSREProperties/msre_gentry_4g_moder_rod0_'
    interp_type = 'spline'
    prop_names = 'k cp'
    prop_values = '.312 1760' # Cammi 2011 at 908 K
    block = 'moder'
    controller_gain = 0
  []
  [rho_moder]
    type = DerivativeParsedMaterial
    property_name = rho
    expression = '1.86e-3 * exp(-1.8 * 1.0e-5 * (temp - 922))'
    coupled_variables = 'temp'
    derivative_order = 1
    block = 'moder'
  []
[]
[Executioner]
  type = Transient
  end_time = 10000
  nl_rel_tol = 1e-6
  nl_abs_tol = 6e-6
  solve_type = 'PJFNK'
  line_search = none
  petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor'
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  nl_max_its = 30
  l_max_its = 100
  dtmin = 1e-5
  [TimeStepper]
    type = PostprocessorDT
    postprocessor = limit_k
    dt = 1e-3
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]
[Postprocessors]
  [group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'console csv'
  []
  [multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'console csv'
  []
  [temp_fuel]
    type = ElementAverageValue
    variable = temp
    block = 'fuel'
    outputs = 'csv console'
  []
  [temp_moder]
    type = ElementAverageValue
    variable = temp
    block = 'moder'
    outputs = 'csv console'
  []
  [average_fission_heat]
    type = AverageFissionHeat
    execute_on = 'linear nonlinear'
    outputs = 'csv console'
    block = 'fuel'
  []
  [coreEndTemp]
    type = SideAverageValue
    variable = temp
    boundary = 'fuel_tops'
    outputs = 'csv console'
    execute_on = 'linear nonlinear'
  []
  [limit_k]
    type = LimitK
    execute_on = 'timestep_end'
    k_postprocessor = multiplication
    growth_factor = 1.2
    cutback_factor = .4
    k_threshold = 1.5
  []
[]
[Outputs]
  perf_graph = true
  print_linear_residuals = true
  csv = true
  exodus = true
[]
[Debug]
  show_var_residual_norms = true
[]
(problems/011317_notebook_add_temperature_coupling/Input_serpent.i)
flow_velocity=147 # Cammi 147 cm/s
inlet_temp=824
initial_outlet_temp=824
nt_scale=1e0
precursor_log_inlet_conc=-17
reactor_height=175 # Cammi 396 cm; critical_buckling_from_newt ~ 115 cm
global_temperature=900
[GlobalParams]
  num_groups = 2
  num_precursor_groups = 8
  use_exp_form = true
  group_fluxes = 'group1 group2'
  v_def = ${flow_velocity}
  tau = 1
  transient_simulation = true
  incompressible_flow = false
  # prec_scale = 1e5
[../]
[Mesh]
  file = 'cylinder_structured.msh'
[../]
[Nt]
  var_name_base = 'group'
  vacuum_boundaries = 'fuel_top graphite_top fuel_bottom graphite_bottom'
  temp_scaling = 1e0
  nt_ic_function = 'nt_ic_func'
  create_temperature_var = false
  # temperature = ${global_temperature}
  temperature_value = ${global_temperature}
[]
# [Precursors]
#   var_name_base = pre
#   block = 'fuel'
#   inlet_boundary = 'fuel_bottom'
#   inlet_boundary_condition = 'DirichletBC'
#   inlet_bc_value = ${precursor_log_inlet_conc}
#   outlet_boundary = 'fuel_top'
#   initial_condition = ${precursor_log_inlet_conc}
#   tau = 1
#   use_source_stabilization = true
#   offset = 24
# []
# [Kernels]
#   # Temperature
#   [./temp_flow_fuel]
#     block = 'fuel'
#     type = MatINSTemperatureRZ
#     variable = temp
#     rho = 'rho'
#     k = 'k'
#     cp = 'cp'
#     uz = ${flow_velocity}
#   [../]
#   [./temp_art_diff_fuel]
#     block = 'fuel'
#     type = ScalarAdvectionArtDiff
#     variable = temp
#     use_exp_form = false
#   [../]
#   [./temp_flow_moder]
#     block = 'moder'
#     type = MatINSTemperatureRZ
#     variable = temp
#     rho = 'rho'
#     k = 'k'
#     cp = 'cp'
#   [../]
#   [./temp_source]
#     type = TransientFissionHeatSource
#     variable = temp
#     nt_scale=${nt_scale}
#   [../]
#   [./temp_time_derivative]
#     type = MatINSTemperatureTimeDerivative
#     variable = temp
#     rho = 'rho'
#     cp = 'cp'
#   [../]
# []
[Materials]
  [./fuel]
    type = CammiFuel
    block = 'fuel'
    property_tables_root = '../property_file_dir/msr2g_Th_U_two_mat_homogenization_fuel_data_func_of_fuel_temp_'
    prop_names = 'cp'
    prop_values = '1357' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
  [./moder]
    type = CammiModerator
    block = 'moder'
    property_tables_root = '../property_file_dir/msr2g_Th_U_two_mat_homogenization_mod_data_func_of_mod_temp_'
    prop_names = 'rho cp'
    prop_values = '1.843e-3 1760' # Cammi 2011 at 908 K
    interp_type = 'spline'
    temperature = ${global_temperature}
  [../]
[]
# [BCs]
#   [./temp_inlet]
#     boundary = 'fuel_bottom graphite_bottom'
#     type = DirichletBC
#     variable = temp
#     value = ${inlet_temp}
#   [../]
#   [./temp_outlet]
#     boundary = 'fuel_top'
#     type = MatINSTemperatureNoBCBC
#     variable = temp
#     k = 'k'
#   [../]
#   [./temp_art_diff_fuel]
#     boundary = 'fuel_top'
#     type = ScalarAdvectionArtDiffNoBCBC
#     variable = temp
#     use_exp_form = false
#   [../]
# []
[Problem]
  type = FEProblem
  coord_type = RZ
[../]
[Executioner]
  type = Transient
  end_time = 10000
  # line_search = none
  nl_rel_tol = 1e-6
  # nl_abs_tol = 1e-5
  # trans_ss_check = true
  # ss_check_tol = 8e-9
  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_shift_amount -ksp_type -snes_linesearch_minlambda -pc_factor_mat_solver_package'
  petsc_options_value = 'lu NONZERO 1.e-10 preonly 1e-3 mumps'
  nl_max_its = 10
  l_max_its = 10
  dtmin = 1e-5
  [./TimeStepper]
    type = IterationAdaptiveDT
    cutback_factor = 0.4
    dt = 1e-4
    growth_factor = 1.2
    optimal_iterations = 20
  [../]
[]
[Preconditioning]
  [./SMP]
    type = SMP
    full = true
  [../]
[]
[Outputs]
  csv = true
  [./out]
    type = Exodus
    execute_on = 'initial timestep_end'
  [../]
  [./dof_map]
    type = DOFMap
  [../]
[]
[Debug]
  show_var_residual_norms = true
[]
# [ICs]
#   # [./temp_ic]
#   #   type = ConstantIC
#   #   variable = temp
#   #   value = ${inlet_temp}
#   # [../]
#   [./temp_all_ic_func]
#     type = FunctionIC
#     variable = temp
#     function = temp_ic_func
#   [../]
# []
[Functions]
  [./temp_ic_func]
    type = ParsedFunction
    value = '(${initial_outlet_temp} - ${inlet_temp}) / ${reactor_height} * y + ${inlet_temp}'
  [../]
  [./nt_ic_func]
    type = ParsedFunction
    value = '4/${reactor_height} * y * (1 - y/${reactor_height})'
  [../]
[]
[Postprocessors]
  [./group1_current]
    type = IntegralNewVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./group1_old]
    type = IntegralOldVariablePostprocessor
    variable = group1
    outputs = 'csv console'
  [../]
  [./multiplication]
    type = DivisionPostprocessor
    value1 = group1_current
    value2 = group1_old
    outputs = 'csv console'
  [../]
  # [./temp_fuel]
  #   type = ElementAverageValue
  #   variable = temp
  #   block = 'fuel'
  #   # execute_on = 'linear nonlinear'
  #   outputs = 'csv console'
  # [../]
  # [./temp_moder]
  #   type = ElementAverageValue
  #   variable = temp
  #   block = 'moder'
  #   # execute_on = 'linear nonlinear'
  #   outputs = 'csv console'
  # [../]
[]