diff --git a/include/materials/GraphiteTwoGrpXSFunctionMaterial.h b/include/materials/GraphiteTwoGrpXSFunctionMaterial.h new file mode 100644 index 000000000..5028de1fe --- /dev/null +++ b/include/materials/GraphiteTwoGrpXSFunctionMaterial.h @@ -0,0 +1,50 @@ +#ifndef GRAPHITETWOGRPXSFUNCTIONMATERIAL_H_ +#define GRAPHITETWOGRPXSFUNCTIONMATERIAL_H_ + +#include "GenericConstantMaterial.h" +#include "SplineInterpolation.h" +#include "BicubicSplineInterpolation.h" +#include "MonotoneCubicInterpolation.h" +#include "LinearInterpolation.h" + +class GraphiteTwoGrpXSFunctionMaterial; + +template <> +InputParameters validParams(); + +class GraphiteTwoGrpXSFunctionMaterial : public GenericConstantMaterial +{ +public: + GraphiteTwoGrpXSFunctionMaterial(const InputParameters & parameters); + +protected: + virtual void computeQpProperties(); + + const VariableValue & _T; + // const MaterialProperty & _rho; + + MaterialProperty> & _remxs; + MaterialProperty> & _fissxs; + MaterialProperty> & _nsf; + MaterialProperty> & _fisse; + MaterialProperty> & _diffcoef; + MaterialProperty> & _recipvel; + MaterialProperty> & _chi; + MaterialProperty> & _gtransfxs; + MaterialProperty> & _beta_eff; + MaterialProperty & _beta; + MaterialProperty> & _decay_constant; + MaterialProperty> & _d_remxs_d_temp; + MaterialProperty> & _d_fissxs_d_temp; + MaterialProperty> & _d_nsf_d_temp; + MaterialProperty> & _d_fisse_d_temp; + MaterialProperty> & _d_diffcoef_d_temp; + MaterialProperty> & _d_recipvel_d_temp; + MaterialProperty> & _d_chi_d_temp; + MaterialProperty> & _d_gtransfxs_d_temp; + MaterialProperty> & _d_beta_eff_d_temp; + MaterialProperty & _d_beta_d_temp; + MaterialProperty> & _d_decay_constant_d_temp; +}; + +#endif // GRAPHITETWOGRPXSFUNCTIONMATERIAL_H diff --git a/include/materials/MsreFuelTwoGrpXSFunctionMaterial.h b/include/materials/MsreFuelTwoGrpXSFunctionMaterial.h new file mode 100644 index 000000000..009bfb5ee --- /dev/null +++ b/include/materials/MsreFuelTwoGrpXSFunctionMaterial.h @@ -0,0 +1,50 @@ +#ifndef MSREFUELTWOGRPXSFUNCTIONMATERIAL_H_ +#define MSREFUELTWOGRPXSFUNCTIONMATERIAL_H_ + +#include "GenericConstantMaterial.h" +#include "SplineInterpolation.h" +#include "BicubicSplineInterpolation.h" +#include "MonotoneCubicInterpolation.h" +#include "LinearInterpolation.h" + +class MsreFuelTwoGrpXSFunctionMaterial; + +template <> +InputParameters validParams(); + +class MsreFuelTwoGrpXSFunctionMaterial : public GenericConstantMaterial +{ +public: + MsreFuelTwoGrpXSFunctionMaterial(const InputParameters & parameters); + +protected: + virtual void computeQpProperties(); + + const VariableValue & _T; + // const MaterialProperty & _rho; + + MaterialProperty> & _remxs; + MaterialProperty> & _fissxs; + MaterialProperty> & _nsf; + MaterialProperty> & _fisse; + MaterialProperty> & _diffcoef; + MaterialProperty> & _recipvel; + MaterialProperty> & _chi; + MaterialProperty> & _gtransfxs; + MaterialProperty> & _beta_eff; + MaterialProperty & _beta; + MaterialProperty> & _decay_constant; + MaterialProperty> & _d_remxs_d_temp; + MaterialProperty> & _d_fissxs_d_temp; + MaterialProperty> & _d_nsf_d_temp; + MaterialProperty> & _d_fisse_d_temp; + MaterialProperty> & _d_diffcoef_d_temp; + MaterialProperty> & _d_recipvel_d_temp; + MaterialProperty> & _d_chi_d_temp; + MaterialProperty> & _d_gtransfxs_d_temp; + MaterialProperty> & _d_beta_eff_d_temp; + MaterialProperty & _d_beta_d_temp; + MaterialProperty> & _d_decay_constant_d_temp; +}; + +#endif // MSREFUELTWOGRPXSFUNCTIONMATERIAL_H diff --git a/problems/MooseGold/033117_nts_temp_pre_parsed_mat/2d_axi_function_cross_sections.i b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/2d_axi_function_cross_sections.i new file mode 100644 index 000000000..00193cd47 --- /dev/null +++ b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/2d_axi_function_cross_sections.i @@ -0,0 +1,328 @@ +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 + [../] +[] + +[PrecursorKernel] + 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 + D_name = '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 = 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' + 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] + print_perf_log = 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 +# [../] +# [] diff --git a/problems/MooseGold/033117_nts_temp_pre_parsed_mat/2d_axi_function_cross_sections_eigen.i b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/2d_axi_function_cross_sections_eigen.i new file mode 100644 index 000000000..0f5e4b8fc --- /dev/null +++ b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/2d_axi_function_cross_sections_eigen.i @@ -0,0 +1,229 @@ +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 = 922 + 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' +[../] + +[MeshModifiers] + [./scale] + type = Transform + transform = SCALE + vector_value = '.369 .369 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 + [../] +[] + +[Kernels] + # Neutronics + [./diff_group1] + type = GroupDiffusion + variable = group1 + group_number = 1 + [../] + [./sigma_r_group1] + type = SigmaR + variable = group1 + group_number = 1 + [../] + [./fission_source_group1] + type = CoupledFissionEigenKernel + variable = group1 + 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 + [../] + [./fission_source_group2] + type = CoupledFissionEigenKernel + 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 + [../] +[] + +[Materials] + [./fuel] + type = MsreFuelTwoGrpXSFunctionMaterial + block = 'fuel' + [../] + [./moder] + type = GraphiteTwoGrpXSFunctionMaterial + block = 'moder' + [../] + # [./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' + + bx_norm = 'bnorm' + k0 = 1.5 + 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 + [../] +[] + +[Postprocessors] + [./bnorm] + type = ElmIntegTotFissNtsPostprocessor + execute_on = linear + [../] + [./tot_fissions] + type = ElmIntegTotFissPostprocessor + execute_on = linear + [../] + [./group1norm] + type = ElementIntegralVariablePostprocessor + variable = group1 + execute_on = linear + [../] + [./group1max] + type = NodalMaxValue + variable = group1 + execute_on = timestep_end + [../] + [./group1diff] + type = ElementL2Diff + variable = group1 + execute_on = 'linear timestep_end' + use_displaced_mesh = false + [../] + [./group2norm] + type = ElementIntegralVariablePostprocessor + variable = group2 + execute_on = linear + [../] + [./group2max] + type = NodalMaxValue + variable = group2 + execute_on = timestep_end + [../] + [./group2diff] + type = ElementL2Diff + variable = group2 + execute_on = 'linear timestep_end' + use_displaced_mesh = false + [../] +[] + +[Outputs] + print_perf_log = 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 +# [../] +# [] diff --git a/problems/MooseGold/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i index 6a8b7d34c..d45a69f62 100644 --- a/problems/MooseGold/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i +++ b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i @@ -19,6 +19,14 @@ diri_temp=922 # file = jac_test.msh [] +[MeshModifiers] + [./scale] + type = Transform + transform = SCALE + vector_value = '1 1 .5' + [../] +[] + [Problem] [] diff --git a/problems/MooseGold/033117_nts_temp_pre_parsed_mat/auto_diff_rho.i b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/auto_diff_rho.i index 0a738c38d..23875e871 100644 --- a/problems/MooseGold/033117_nts_temp_pre_parsed_mat/auto_diff_rho.i +++ b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/auto_diff_rho.i @@ -18,7 +18,10 @@ diri_temp=922 [Mesh] file = '2d_lattice_structured.msh' - # file = '2d_lattice_structured_jac.msh' + # file = 2d_split_mesh/auto_diff_rho_in.e + # file = auto_diff_rho_in.e + # nemesis = true + # parallel_type = DISTRIBUTED [../] [Problem] @@ -242,11 +245,14 @@ diri_temp=922 nl_rel_tol = 1e-6 nl_abs_tol = 6e-6 - # solve_type = 'NEWTON' - solve_type = 'PJFNK' + 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 -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' @@ -269,6 +275,7 @@ diri_temp=922 [./SMP] type = SMP full = true + ksp_norm = none [../] [] @@ -313,7 +320,8 @@ diri_temp=922 print_perf_log = true print_linear_residuals = true csv = true - exodus = true + # exodus = true + nemesis = true [] [Debug] diff --git a/problems/MooseGold/033117_nts_temp_pre_parsed_mat/auto_diff_rho_control.i b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/auto_diff_rho_control.i new file mode 100644 index 000000000..1c09a3946 --- /dev/null +++ b/problems/MooseGold/033117_nts_temp_pre_parsed_mat/auto_diff_rho_control.i @@ -0,0 +1,359 @@ +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 + [../] +[] + +[PrecursorKernel] + 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 + D_name = '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 = 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' + 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 = '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 = 'timestep_end' + # execute_on = 'linear nonlinear timestep_end' + outputs = 'csv console' + block = 'fuel' + [../] + [./peak_power_density] + type = ElementExtremeValue + value_type = max + variable = power_density + execute_on = 'timestep_end' + # execute_on = 'linear nonlinear timestep_end' + outputs = 'csv console' + [../] +[] + +[Outputs] + print_perf_log = 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 +# [../] +# [] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/check-initial-transfer.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/check-initial-transfer.i index dfe706d2b..87a794362 100644 --- a/problems/MooseGold/single_msre_channel_velocity_heat_nts/check-initial-transfer.i +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/check-initial-transfer.i @@ -1,5 +1,9 @@ +fuel_width=3.048 +fuel_height=1.016 +cell_width=5.08 + [Mesh] - file = single_channel_msre_dimensions.msh + file = msre_squares.msh [] @@ -10,16 +14,12 @@ [AuxVariables] [./vel_x] - block = 'fuel' [../] [./vel_y] - block = 'fuel' [../] [./vel_z] - block = 'fuel' [../] [./p] - block = 'fuel' [../] [] @@ -33,13 +33,13 @@ [BCs] [./u_inlet] - boundary = 'fuel_bottom' + boundary = 'fuel_bottoms' variable = u value = 1 type = DirichletBC [../] [./u_outlet] - boundary = 'fuel_top' + boundary = 'fuel_tops' variable = u value = 0 type = DirichletBC @@ -60,9 +60,9 @@ [] [Executioner] - num_steps = 10 - dt = 1 - type = Transient + # num_steps = 1 + # dt = 1 + type = Steady nl_rel_tol = 1e-6 nl_abs_tol = 1e-6 @@ -81,44 +81,83 @@ [] [MultiApps] - [./sub] + [./sub_horizontal] type = FullSolveMultiApp app_type = MoltresApp - positions = '0 0 0' + positions = '-1.524 2.032 0 -1.524 -3.048 0' input_files = solution_aux_exodus.i execute_on = 'initial' [../] + [./sub_vertical] + type = FullSolveMultiApp + app_type = MoltresApp + positions = '2.032 1.524 0 -3.048 1.524 0' + input_files = rotated_solution_aux_exodus.i + execute_on = 'initial' + [../] [] [Transfers] - [./vel_x] + [./vel_x_horizontal] type = MultiAppNearestNodeTransfer direction = from_multiapp - multi_app = sub + multi_app = sub_horizontal source_variable = vel_x variable = vel_x execute_on = 'initial' [../] - [./vel_y] + [./vel_y_horiztonal] type = MultiAppNearestNodeTransfer direction = from_multiapp - multi_app = sub + multi_app = sub_horizontal source_variable = vel_y variable = vel_y execute_on = 'initial' [../] - [./vel_z] + [./vel_z_horizontal] type = MultiAppNearestNodeTransfer direction = from_multiapp - multi_app = sub + multi_app = sub_horizontal source_variable = vel_z variable = vel_z execute_on = 'initial' [../] - [./p] + [./p_horizontal] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub_horizontal + source_variable = p + variable = p + execute_on = 'initial' + [../] + [./vel_x_vertical] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub_vertical + source_variable = vel_x + variable = vel_x + execute_on = 'initial' + [../] + [./vel_y_vertical] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub_vertical + source_variable = vel_y + variable = vel_y + execute_on = 'initial' + [../] + [./vel_z_vertical] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub_vertical + source_variable = vel_z + variable = vel_z + execute_on = 'initial' + [../] + [./p_vertical] type = MultiAppNearestNodeTransfer direction = from_multiapp - multi_app = sub + multi_app = sub_vertical source_variable = p variable = p execute_on = 'initial' diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_master.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_master.i new file mode 100644 index 000000000..682265541 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_master.i @@ -0,0 +1,95 @@ +[Mesh] + type = GeneratedMesh + dim = 2 + nx = 10 + ny = 10 +[] + + +[Variables] + [./u] + [../] +[] + +[AuxVariables] + [./from_sub] + [../] +[] + +[Kernels] + [./u_diff] + type = Diffusion + variable = u + [../] +[] + + +[BCs] + [./u_inlet] + boundary = 'left' + variable = u + value = 1 + type = DirichletBC + [../] + [./u_outlet] + boundary = 'right' + variable = u + value = 0 + type = DirichletBC + [../] +[] + +[Debug] + show_var_residual_norms = true +[] + +[Preconditioning] + [./SMP_PJFNK] + type = SMP + full = true + solve_type = NEWTON + ksp_norm = none + [../] +[] + +[Executioner] + num_steps = 10 + dt = 1 + type = Transient + nl_rel_tol = 1e-6 + nl_abs_tol = 1e-6 + + 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 1.e-10 preonly 1e-3' + + nl_max_its = 30 + l_max_its = 200 +[] + +[Outputs] + print_perf_log = true + exodus = true + csv = true +[] + +[MultiApps] + [./sub_horizontal] + type = FullSolveMultiApp + app_type = MoltresApp + positions = '-0.5 -0.5 0' + input_files = diffusion_sub.i + execute_on = 'initial' + [../] +[] + +[Transfers] + [./vel_x_horizontal] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub_horizontal + source_variable = u + variable = from_sub + execute_on = 'initial' + [../] +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_solution_aux.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_solution_aux.i new file mode 100644 index 000000000..c85117afe --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_solution_aux.i @@ -0,0 +1,89 @@ +[Mesh] + type = GeneratedMesh + nx = 20 + ny = 20 + dim = 2 + xmin = -0.5 + ymin = -0.5 + xmax = 0.5 + ymax = .5 +[] + +# [MeshModifiers] +# [./box] +# type = SubdomainBoundingBox +# bottom_left = '-.5 -.25 0' +# top_right = '0 .25 0' +# block_id = 1 +# block_name = box +# [../] +# [] + +[Variables] + [./u] + order = FIRST + family = LAGRANGE + initial_condition = 0.0 + [../] +[] + +[AuxVariables] + [./v] + [../] +[] + +[Kernels] + [./diff] + type = Diffusion + variable = u + [../] +[] + +[AuxKernels] + [./v] + type = SolutionAux + solution = soln + variable = v + from_variable = u + # block = box + [../] +[] + +[BCs] + [./left] + type = DirichletBC + boundary = left + variable = u + value = 1 + [../] + [./right] + type = DirichletBC + boundary = right + variable = u + value = 0 + [../] +[] + +[UserObjects] + [./soln] + type = SolutionUserObject + mesh = solution_out.e + system_variables = 'u' + timestep = LATEST + # rotation0_vector = '0 0 1' + # rotation0_angle = 90 + translation = '.25 0 0' + # transformation_order = 'rotation0 translation' + # transformation_order = 'rotation0' + transformation_order = 'translation' + [../] +[] + +[Executioner] + type = Steady +[] + +[Outputs] + exodus = true + execute_on = 'timestep_end' +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_solution_to_be_loaded.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_solution_to_be_loaded.i new file mode 100644 index 000000000..94a5eff63 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_solution_to_be_loaded.i @@ -0,0 +1,55 @@ +[Mesh] + type = GeneratedMesh + dim = 2 + xmin = -0.25 + ymin = -0.25 + xmax = 0.25 + ymax = .25 + # xmin = -0.5 + # ymin = -0.5 + # xmax = 0.5 + # ymax = .5 + nx = 20 + ny = 20 +[] + +[Variables] + [./u] + order = FIRST + family = LAGRANGE + initial_condition = 0.0 + [../] +[] + +[Kernels] + [./diff] + type = Diffusion + variable = u + [../] +[] + +[BCs] + [./left] + type = DirichletBC + boundary = left + variable = u + value = 1 + [../] + [./right] + type = DirichletBC + boundary = right + variable = u + value = 0 + [../] +[] + + +[Executioner] + type = Steady +[] + +[Outputs] + exodus = true + execute_on = 'timestep_end' + file_base = solution_out +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_sub.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_sub.i new file mode 100644 index 000000000..a6e9ac5fe --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/diffusion_sub.i @@ -0,0 +1,67 @@ +[Mesh] + type = GeneratedMesh + dim = 2 + nx = 10 + ny = 10 +[] + + +[Variables] + [./u] + [../] +[] + +[Kernels] + [./u_diff] + type = Diffusion + variable = u + [../] +[] + + +[BCs] + [./u_inlet] + boundary = 'left' + variable = u + value = 1 + type = DirichletBC + [../] + [./u_outlet] + boundary = 'right' + variable = u + value = 0 + type = DirichletBC + [../] +[] + +[Debug] + show_var_residual_norms = true +[] + +[Preconditioning] + [./SMP_PJFNK] + type = SMP + full = true + solve_type = NEWTON + ksp_norm = none + [../] +[] + +[Executioner] + type = Steady + nl_rel_tol = 1e-6 + nl_abs_tol = 1e-6 + + 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 1.e-10 preonly 1e-3' + + nl_max_its = 30 + l_max_its = 200 +[] + +[Outputs] + print_perf_log = true + exodus = true + csv = true +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/half-fuel-channel-msre-dimensions.geo b/problems/MooseGold/single_msre_channel_velocity_heat_nts/half-fuel-channel-msre-dimensions.geo new file mode 100644 index 000000000..6f79b47f3 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/half-fuel-channel-msre-dimensions.geo @@ -0,0 +1,103 @@ +Geometry.CopyMeshingMethod = 1; +// Mesh.RandomFactor = 1e-6; +fuel_width = 3.048; +fuel_height = .508; +fuel_length = 162.56; +lc = .1 * fuel_length; + +Point(1) = {0, 0, 0, lc}; +Point(2) = {0, 0, fuel_length, lc}; + +// z-normal +Line(1) = {1, 2}; + +//+ +Point(3) = {fuel_width, 0, 0, 1.0}; +//+ +Point(4) = {fuel_width, fuel_height, 0, 1.0}; +//+ +Point(5) = {0, fuel_height, 0, 1.0}; +//+ +Point(6) = {fuel_width, fuel_height, fuel_length, 1.0}; +//+ +Point(7) = {fuel_width, 0, fuel_length, 1.0}; +//+ +Point(8) = {0, fuel_height, fuel_length, 1.0}; +//+ +Line(2) = {1, 5}; +//+ +Line(3) = {5, 4}; +//+ +Line(4) = {4, 3}; +//+ z-normal +Line(5) = {3, 7}; +//+ +Line(6) = {3, 1}; +//+ z-normal +Line(7) = {4, 6}; +//+ +Line(8) = {6, 7}; +//+ +Line(9) = {7, 2}; +//+ +Line(10) = {2, 8}; +//+ +Line(11) = {8, 6}; +//+ z-normal +Line(12) = {5, 8}; + +Transfinite Line{1, 5, 7, 12} = 31 Using Progression 1.3; +Transfinite Line{3, 6, 9, 11} = 13 Using Bump 0.05; +//+ +Transfinite Line {2, -4, -8, 10} = 13 Using Progression 1.1; +// Transfinite Line {4, 10} = 13 Using Progression .9; + + +// Point(3) = {fuel_width / 2., fuel_height / 2., 0, lc}; +//+ +Line Loop(13) = {5, 9, -1, -6}; +//+ +Plane Surface(14) = {13}; +//+ +Line Loop(15) = {2, 12, -10, -1}; +//+ +Plane Surface(16) = {15}; +//+ +Line Loop(17) = {11, -7, -3, 12}; +//+ +Plane Surface(18) = {17}; +//+ +Line Loop(19) = {7, 8, -5, -4}; +//+ +Plane Surface(20) = {19}; +//+ +Line Loop(21) = {8, 9, 10, 11}; +//+ +Plane Surface(22) = {21}; +//+ +Line Loop(23) = {3, 4, 6, 2}; +//+ +Plane Surface(24) = {23}; +//+ +Surface Loop(25) = {18, 22, 20, 14, 16, 24}; +//+ +Volume(26) = {25}; + +Transfinite Surface{14, 16, 18, 20, 22, 24}; +Recombine Surface{14, 16, 18, 20, 22, 24}; +Transfinite Volume{26}; +Recombine Volume{26}; +//+ +Physical Surface("left") = {16}; +//+ +Physical Surface("right") = {20}; +//+ +Physical Surface("top") = {18}; +//+ +Physical Surface("bottom") = {14}; +//+ +Physical Surface("back") = {24}; +//+ +Physical Surface("front") = {22}; +//+ +Physical Volume(0) = {26}; diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/half_channel_master.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/half_channel_master.i new file mode 100644 index 000000000..5cd3d8293 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/half_channel_master.i @@ -0,0 +1,121 @@ +[Mesh] + file = half-fuel-channel-msre-dimensions.msh +[] + + +[Variables] + [./u] + [../] +[] + +[AuxVariables] + [./vel_x] + [../] + [./vel_y] + [../] + [./vel_z] + [../] + [./p] + [../] +[] + +[Kernels] + [./u_diff] + type = Diffusion + variable = u + [../] +[] + + +[BCs] + [./u_inlet] + boundary = 'left' + variable = u + value = 1 + type = DirichletBC + [../] + [./u_outlet] + boundary = 'right' + variable = u + value = 0 + type = DirichletBC + [../] +[] + +[Debug] + show_var_residual_norms = true +[] + +[Preconditioning] + [./SMP_PJFNK] + type = SMP + full = true + solve_type = NEWTON + ksp_norm = none + [../] +[] + +[Executioner] + type = Steady + nl_rel_tol = 1e-6 + nl_abs_tol = 1e-6 + + 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 1.e-10 preonly 1e-3' + + nl_max_its = 30 + l_max_its = 200 +[] + +[Outputs] + print_perf_log = true + exodus = true + csv = true + execute_on = 'timestep_end' +[] + +[MultiApps] + [./sub_horizontal] + type = FullSolveMultiApp + app_type = MoltresApp + positions = '0 0 0' + input_files = solution_aux_exodus.i + execute_on = 'initial' + [../] +[] + +[Transfers] + [./vel_x_horizontal] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub_horizontal + source_variable = vel_x + variable = vel_x + execute_on = 'initial' + [../] + [./vel_y_horiztonal] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub_horizontal + source_variable = vel_y + variable = vel_y + execute_on = 'initial' + [../] + [./vel_z_horizontal] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub_horizontal + source_variable = vel_z + variable = vel_z + execute_on = 'initial' + [../] + [./p_horizontal] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub_horizontal + source_variable = p + variable = p + execute_on = 'initial' + [../] +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/heat-nts-single-channel-msre-dimensions.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/heat-nts-single-channel-msre-dimensions.i new file mode 100644 index 000000000..622a74472 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/heat-nts-single-channel-msre-dimensions.i @@ -0,0 +1,402 @@ +# 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 + [../] +[] + +# [PrecursorKernel] +# 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 + D_name = '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] + print_perf_log = 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' + [../] +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/heat-nts-single-unit-cell.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/heat-nts-single-unit-cell.i new file mode 100644 index 000000000..e9216c4db --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/heat-nts-single-unit-cell.i @@ -0,0 +1,402 @@ +# 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 + [../] +[] + +# [PrecursorKernel] +# 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 + D_name = '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] + print_perf_log = 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' + [../] +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/move_half_channels_unit_cell_solution_aux.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/move_half_channels_unit_cell_solution_aux.i new file mode 100644 index 000000000..70f785290 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/move_half_channels_unit_cell_solution_aux.i @@ -0,0 +1,151 @@ +[Mesh] + file = msre_squares.msh + parallel_type = replicated +[] + +[Variables] + [./u] + order = FIRST + family = LAGRANGE + initial_condition = 0.0 + [../] +[] + +[AuxVariables] + [./vel_x] + [../] + [./vel_y] + [../] + [./vel_z] + [../] + [./p] + [../] +[] + +[Kernels] + [./diff] + type = Diffusion + variable = u + [../] +[] + +[AuxKernels] + [./vel_x_left] + type = SolutionAux + solution = soln_left + variable = vel_x + from_variable = vel_x + [../] + [./vel_y_left] + type = SolutionAux + solution = soln_left + variable = vel_y + from_variable = vel_y + [../] + [./vel_z_left] + type = SolutionAux + solution = soln_left + variable = vel_z + from_variable = vel_z + [../] + [./p_left] + type = SolutionAux + solution = soln_left + variable = p + from_variable = p + [../] + # [./vel_x_right] + # type = SolutionAux + # solution = soln_right + # variable = vel_x + # from_variable = vel_x + # [../] + # [./vel_y_right] + # type = SolutionAux + # solution = soln_right + # variable = vel_y + # from_variable = vel_y + # [../] + # [./vel_z_right] + # type = SolutionAux + # solution = soln_right + # variable = vel_z + # from_variable = vel_z + # [../] + # [./p_right] + # type = SolutionAux + # solution = soln_right + # variable = p + # from_variable = p + # [../] + # [./vel_x_top] + # type = SolutionAux + # solution = soln_top + # variable = vel_x + # from_variable = vel_x + # [../] + # [./vel_y_top] + # type = SolutionAux + # solution = soln_top + # variable = vel_y + # from_variable = vel_y + # [../] + # [./vel_z_top] + # type = SolutionAux + # solution = soln_top + # variable = vel_z + # from_variable = vel_z + # [../] + # [./p_top] + # type = SolutionAux + # solution = soln_top + # variable = p + # from_variable = p + # [../] + # [./vel_x_bottom] + # type = SolutionAux + # solution = soln_bottom + # variable = vel_x + # from_variable = vel_x + # [../] + # [./vel_y_bottom] + # type = SolutionAux + # solution = soln_bottom + # variable = vel_y + # from_variable = vel_y + # [../] + # [./vel_z_bottom] + # type = SolutionAux + # solution = soln_bottom + # variable = vel_z + # from_variable = vel_z + # [../] + # [./p_bottom] + # type = SolutionAux + # solution = soln_bottom + # variable = p + # from_variable = p + # [../] +[] + +[UserObjects] + [./soln_left] + type = SolutionUserObject + mesh = single_fuel_channel_MSRE_dimensions_fluid_flow_out.e + system_variables = 'vel_x vel_y vel_z p' + timestep = LATEST + rotation0_vector = '0 0 1' + rotation0_angle = 90 + translation = '2.032 1.524 0' + transformation_order = 'rotation0 translation' + [../] +[] + +[Executioner] + type = Steady +[] + +[Outputs] + exodus = true + execute_on = 'timestep_end' +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/msre_squares.geo b/problems/MooseGold/single_msre_channel_velocity_heat_nts/msre_squares.geo new file mode 100644 index 000000000..8ed5a6ff3 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/msre_squares.geo @@ -0,0 +1,443 @@ +Geometry.CopyMeshingMethod = 1; +// Mesh.RandomFactor = 1e-6; +cell_width = 5.08; +pitch = cell_width; +fuel_width = 3.048; +fuel_height = 1.016; +num_cells = 1; +height = 162.56; // p. 101 robertson design report part 1: 162.56 +lc = fuel_height/2; + +//+ +Point(1) = {-cell_width/2, cell_width/2, 0, lc}; +//+ +Point(2) = {cell_width/2, cell_width/2, 0, lc}; +//+ +Point(3) = {cell_width/2, -cell_width/2, 0, lc}; +//+ +Point(4) = {-cell_width/2, -cell_width/2, 0, lc}; +//+ +Point(5) = {-fuel_width/2, -cell_width/2, 0, lc}; +//+ +Point(6) = {fuel_width/2, -cell_width/2, 0, lc}; +//+ +Point(8) = {fuel_width/2, -cell_width/2+fuel_height/2, 0, lc}; +//+ +Point(9) = {-fuel_width/2, -cell_width/2+fuel_height/2, 0, lc}; +//+ +Point(10) = {-fuel_width/2, cell_width/2-fuel_height/2, 0, lc}; +//+ +Point(11) = {fuel_width/2, cell_width/2-fuel_height/2, 0, lc}; +//+ +Point(12) = {fuel_width/2, cell_width/2, 0, lc}; +//+ +Point(13) = {fuel_width/2, -cell_width/2, 0, lc}; +//+ +Point(14) = {-fuel_width/2, cell_width/2, 0, lc}; +//+ +Point(15) = {cell_width/2, fuel_width/2, 0, lc}; +//+ +Point(16) = {cell_width/2, -fuel_width/2, 0, lc}; +//+ +Point(17) = {-cell_width/2, -fuel_width/2, 0, lc}; +//+ +Point(18) = {-cell_width/2, fuel_width/2, 0, lc}; +//+ +Point(19) = {-cell_width/2+fuel_height/2, fuel_width/2, 0, lc}; +//+ +Point(20) = {-cell_width/2+fuel_height/2, -fuel_width/2, 0, lc}; +//+ +Point(21) = {cell_width/2-fuel_height/2, -fuel_width/2, 0, lc}; +//+ +Point(22) = {cell_width/2-fuel_height/2, fuel_width/2, 0, lc}; +//+ +Line(1) = {1, 14}; +//+ +Line(2) = {14, 12}; +//+ +Line(3) = {12, 2}; +//+ +Line(4) = {2, 15}; +//+ +Line(5) = {15, 16}; +//+ +Line(6) = {16, 3}; +//+ +Line(7) = {3, 6}; +//+ +Line(8) = {6, 5}; +//+ +Line(9) = {5, 4}; +//+ +Line(10) = {4, 17}; +//+ +Line(11) = {17, 18}; +//+ +Line(12) = {18, 1}; +//+ +Line(13) = {14, 10}; +//+ +Line(14) = {10, 11}; +//+ +Line(15) = {11, 12}; +//+ +Line(16) = {15, 22}; +//+ +Line(17) = {22, 21}; +//+ +Line(18) = {21, 16}; +//+ +Line(19) = {8, 6}; +//+ +Line(20) = {8, 9}; +//+ +Line(21) = {9, 5}; +//+ +Line(22) = {17, 20}; +//+ +Line(23) = {20, 19}; +//+ +Line(24) = {19, 18}; +//+ +Line Loop(25) = {24, -11, 22, 23}; +//+ left fuel +Plane Surface(26) = {25}; +//+ +Line Loop(27) = {17, 18, -5, 16}; +//+ right fuel +Plane Surface(28) = {27}; +//+ +Line Loop(29) = {20, 21, -8, -19}; +//+ bottom fuel +Plane Surface(30) = {29}; +//+ +Line Loop(31) = {14, 15, -2, 13}; +//+ top fuel +Plane Surface(32) = {31}; +//+ +Point(23) = {fuel_width/2, fuel_width/2, 0, lc}; +//+ +Point(24) = {fuel_width/2, -fuel_width/2, 0, lc}; +//+ +Point(25) = {-fuel_width/2, -fuel_width/2, 0, lc}; +//+ +Point(26) = {-fuel_width/2, fuel_width/2, 0, lc}; +//+ +Line(35) = {19, 26}; +//+ +Line(36) = {26, 10}; +//+ +Line(37) = {23, 11}; +//+ +Line(38) = {22, 23}; +//+ +Line(39) = {21, 24}; +//+ +Line(40) = {24, 8}; +//+ +Line(41) = {9, 25}; +//+ +Line(42) = {25, 20}; +//+ +Line(43) = {26, 23}; +//+ +Line(44) = {23, 24}; +//+ +Line(45) = {24, 25}; +//+ +Line(46) = {25, 26}; +//+ +Line Loop(47) = {1, 13, -36, -35, 24, 12}; +//+ +Plane Surface(48) = {47}; +//+ +Line Loop(49) = {3, 4, 16, 38, 37, 15}; +//+ +Plane Surface(50) = {49}; +//+ +Line Loop(51) = {39, 40, 19, -7, -6, -18}; +//+ +Plane Surface(52) = {51}; +//+ +Line Loop(53) = {22, -42, -41, 21, 9, 10}; +//+ +Plane Surface(54) = {53}; +//+ +Line Loop(55) = {14, -37, -43, 36}; +//+ +Plane Surface(56) = {55}; +//+ +Line Loop(57) = {44, -39, -17, 38}; +//+ +Plane Surface(58) = {57}; +//+ +Line Loop(59) = {45, -41, -20, -40}; +//+ +Plane Surface(60) = {59}; +//+ +Line Loop(61) = {42, 23, 35, -46}; +//+ +Plane Surface(62) = {61}; +//+ +Line Loop(63) = {43, 44, 45, 46}; +//+ +Plane Surface(64) = {63}; +//+ +Point(27) = {-cell_width/2+fuel_height/2, cell_width/2-fuel_height/2, 0, lc}; +//+ +Point(28) = {cell_width/2-fuel_height/2, cell_width/2-fuel_height/2, 0, lc}; +//+ +Point(29) = {cell_width/2-fuel_height/2, -cell_width/2+fuel_height/2, 0, lc}; +//+ +Point(30) = {-cell_width/2+fuel_height/2, -cell_width/2+fuel_height/2, 0, lc}; +//+ +Point(31) = {-cell_width/2, -cell_width/2+fuel_height/2, 0, lc}; +//+ +Point(32) = {cell_width/2, -cell_width/2+fuel_height/2, 0, lc}; +//+ +Point(33) = {cell_width/2, cell_width/2-fuel_height/2, 0, lc}; +//+ +Point(34) = {-cell_width/2, cell_width/2-fuel_height/2, 0, lc}; +//+ +Point(35) = {-cell_width/2+fuel_height/2, cell_width/2, 0, lc}; +//+ +Point(36) = {-cell_width/2+fuel_height/2, -cell_width/2, 0, lc}; +//+ +Point(37) = {cell_width/2-fuel_height/2, -cell_width/2, 0, lc}; +//+ +Point(38) = {cell_width/2-fuel_height/2, cell_width/2, 0, lc}; +//+ +Line(65) = {27, 35}; +//+ +Line(66) = {27, 34}; +//+ +Line(67) = {27, 19}; +//+ +Line(68) = {27, 10}; +//+ +Line(69) = {28, 38}; +//+ +Line(70) = {28, 33}; +//+ +Line(71) = {28, 22}; +//+ +Line(72) = {28, 11}; +//+ +Line(73) = {21, 29}; +//+ +Line(74) = {29, 32}; +//+ +Line(75) = {29, 37}; +//+ +Line(76) = {29, 8}; +//+ +Line(77) = {20, 30}; +//+ +Line(78) = {30, 9}; +//+ +Line(79) = {30, 36}; +//+ +Line(80) = {30, 31}; +//+ +Delete { + Line{1, 12, 3, 4, 6, 7, 9, 10}; +} +//+ +Delete { + Line{1}; +} +//+ +Delete { + Surface{48, 54, 52, 50}; +} +//+ +Delete { + Line{1, 12}; +} +//+ +Delete { + Line{3, 4, 6, 7, 9, 10}; +} +//+ +Line(81) = {1, 35}; +//+ +Line(82) = {35, 14}; +//+ +Line(83) = {1, 34}; +//+ +Line(84) = {34, 18}; +//+ +Line(85) = {17, 31}; +//+ +Line(86) = {31, 4}; +//+ +Line(87) = {4, 36}; +//+ +Line(88) = {36, 5}; +//+ +Line(89) = {6, 37}; +//+ +Line(90) = {37, 3}; +//+ +Line(91) = {3, 32}; +//+ +Line(92) = {32, 16}; +//+ +Line(93) = {15, 33}; +//+ +Line(94) = {33, 2}; +//+ +Line(95) = {2, 38}; +//+ +Line(96) = {38, 12}; +//+ +Line Loop(97) = {81, -65, 66, -83}; +//+ +Plane Surface(98) = {97}; +//+ +Line Loop(99) = {82, 13, -68, 65}; +//+ +Plane Surface(100) = {99}; +//+ +Line Loop(101) = {67, 35, 36, -68}; +//+ +Plane Surface(102) = {101}; +//+ +Line Loop(103) = {66, 84, -24, -67}; +//+ +Plane Surface(104) = {103}; +//+ +Line Loop(105) = {96, -15, -72, 69}; +//+ +Plane Surface(106) = {105}; +//+ +Line Loop(107) = {95, -69, 70, 94}; +//+ +Plane Surface(108) = {107}; +//+ +Line Loop(109) = {70, -93, 16, -71}; +//+ +Plane Surface(110) = {109}; +//+ +Line Loop(111) = {72, -37, -38, -71}; +//+ +Plane Surface(112) = {111}; +//+ +Line Loop(113) = {18, -92, -74, -73}; +//+ +Plane Surface(114) = {113}; +//+ +Line Loop(115) = {75, 90, 91, -74}; +//+ +Plane Surface(116) = {115}; +//+ +Line Loop(117) = {76, 19, 89, -75}; +//+ +Plane Surface(118) = {117}; +//+ +Line Loop(119) = {40, -76, -73, 39}; +//+ +Plane Surface(120) = {119}; +//+ +Line Loop(121) = {42, 77, 78, 41}; +//+ +Plane Surface(122) = {121}; +//+ +Line Loop(123) = {79, 88, -21, -78}; +//+ +Plane Surface(124) = {123}; +//+ +Line Loop(125) = {80, 86, 87, -79}; +//+ +Plane Surface(126) = {125}; +//+ +Line Loop(127) = {80, -85, 22, 77}; +//+ +Plane Surface(128) = {127}; +//+ +Transfinite Line {43, 14, 2, 44, 17, 5, 45, 20, 8, 46, 23, 11} = 10 Using Progression 1; +//+ +Transfinite Line {81, 82, 13, 68, 65, 83, 66, 84, 24, 35, 67, 36} = 5 Using Progression 1; +//+ +Transfinite Line {96, 95, 94, 93, 16, 71, 69, 70, 72, 15, 37, 38, 39, 18, 92, 74, 73, 40, 76, 19, 89, 75, 91, 90, 22, 42, 41, 21, 88, 79, 77, 78, 85, 80, 86, 87} = 5 Using Progression 1; + +Transfinite Surface {26, 28, 30, 32, 56, 58, 60, 62, 64, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128}; + +Recombine Surface {26, 28, 30, 32, 56, 58, 60, 62, 64, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128}; +unit_fuel[] = {28, 32, 26, 30}; +unit_moderator[] = {98, 100, 102, 104, 128, 122, 124, 126, 120, 114, 116, 118, 106, 108, 110, 112, 56, 58, 60, 62, 64}; +fuel_bottoms[] = unit_fuel[]; +moderator_bottoms[] = unit_moderator[]; + +For xindex In {1:num_cells-1} + For i In {0 : 3} + new_f_bottom = Translate {xindex*pitch, 0, 0} { + Duplicata { Surface{unit_fuel[i]}; } + }; + fuel_bottoms += new_f_bottom; + EndFor // i + For i In {0 : 20} + new_m_bottom = Translate {xindex*pitch, 0, 0} { + Duplicata { Surface{unit_moderator[i]}; } + }; + moderator_bottoms += new_m_bottom; + EndFor // i +EndFor // xindex + +For yindex In {1:num_cells-1} + For i In {0 : 3} + new_f_bottom = Translate {0, yindex*pitch, 0} { + Duplicata { Surface{unit_fuel[i]}; } + }; + fuel_bottoms += new_f_bottom; + EndFor // i + For i In {0 : 20} + new_m_bottom = Translate {0, yindex*pitch, 0} { + Duplicata { Surface{unit_moderator[i]}; } + }; + moderator_bottoms += new_m_bottom; + EndFor // i +EndFor // yindex + +For xindex In {1:num_cells-1} + For yindex In {1:num_cells-1} + For i In {0 : 3} + new_f_bottom = Translate {xindex*pitch, yindex*pitch, 0} { + Duplicata { Surface{unit_fuel[i]}; } + }; + fuel_bottoms += new_f_bottom; + EndFor // i + For i In {0 : 20} + new_m_bottom = Translate {xindex*pitch, yindex*pitch, 0} { + Duplicata { Surface{unit_moderator[i]}; } + }; + moderator_bottoms += new_m_bottom; + EndFor // i + EndFor // yindex +EndFor // xindex + +fuel_volumes[] = {}; +moderator_volumes[] = {}; +fuel_tops[] = {}; +moderator_tops[] = {}; + +For i In {0 : num_cells*num_cells - 1} + For j In {0 : 3} + fuel_out[] = Extrude {0, 0, height} { Surface{fuel_bottoms[i * 4 + j]}; Layers{10}; Recombine; }; + fuel_tops += fuel_out[0]; + fuel_volumes += fuel_out[1]; + EndFor // j + For j In {0 : 20} + moder_out[] = Extrude {0, 0, height} { Surface{moderator_bottoms[i * 21 + j]}; Layers{10}; Recombine; }; + moderator_volumes += moder_out[1]; + moderator_tops += moder_out[0]; + EndFor // j +EndFor // i + +Physical Volume ("moderator") = { moderator_volumes[] }; +Physical Volume ("fuel") = { fuel_volumes[] }; + +Physical Surface ("moderator_bottoms") = { moderator_bottoms[] }; +Physical Surface ("moderator_tops") = { moderator_tops[] }; +Physical Surface ("fuel_bottoms") = { fuel_bottoms[] }; +Physical Surface ("fuel_tops") = { fuel_tops[] }; diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/msre_triangles.geo b/problems/MooseGold/single_msre_channel_velocity_heat_nts/msre_triangles.geo new file mode 100644 index 000000000..4fdb3f849 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/msre_triangles.geo @@ -0,0 +1,232 @@ +Geometry.CopyMeshingMethod = 1; +// Mesh.RandomFactor = 1e-6; +cell_width = 5.08; +pitch = cell_width; +fuel_width = 3.05; +fuel_height = 1.02; +num_cells = 1; +height = 162.56; // p. 101 robertson design report part 1: 162.56 +lc = fuel_height/2; + +//+ +Point(2) = {cell_width/2, cell_width/2, 0, lc}; +//+ +Point(3) = {cell_width/2, -cell_width/2, 0, lc}; +//+ +Point(4) = {-cell_width/2, -cell_width/2, 0, lc}; +//+ +Point(5) = {-fuel_width/2, -cell_width/2, 0, lc}; +//+ +Point(6) = {fuel_width/2, -cell_width/2, 0, lc}; +//+ +Point(8) = {fuel_width/2, -cell_width/2+fuel_height/2, 0, lc}; +//+ +Point(9) = {-fuel_width/2, -cell_width/2+fuel_height/2, 0, lc}; +//+ +Point(10) = {-fuel_width/2, cell_width/2-fuel_height/2, 0, lc}; +//+ +Point(11) = {fuel_width/2, cell_width/2-fuel_height/2, 0, lc}; +//+ +Point(12) = {fuel_width/2, cell_width/2, 0, lc}; +//+ +Point(13) = {fuel_width/2, -cell_width/2, 0, lc}; +//+ +Point(14) = {-fuel_width/2, cell_width/2, 0, lc}; +//+ +Point(15) = {cell_width/2, fuel_width/2, 0, lc}; +//+ +Point(16) = {cell_width/2, -fuel_width/2, 0, lc}; +//+ +Point(17) = {-cell_width/2, -fuel_width/2, 0, lc}; +//+ +Point(18) = {-cell_width/2, fuel_width/2, 0, lc}; +//+ +Point(19) = {-cell_width/2+fuel_height/2, fuel_width/2, 0, lc}; +//+ +Point(20) = {-cell_width/2+fuel_height/2, -fuel_width/2, 0, lc}; +//+ +Point(21) = {cell_width/2-fuel_height/2, -fuel_width/2, 0, lc}; +//+ +Point(22) = {cell_width/2-fuel_height/2, fuel_width/2, 0, lc}; +//+ +Line(1) = {1, 14}; +//+ +Line(2) = {14, 12}; +//+ +Line(3) = {12, 2}; +//+ +Line(4) = {2, 15}; +//+ +Line(5) = {15, 16}; +//+ +Line(6) = {16, 3}; +//+ +Line(7) = {3, 6}; +//+ +Line(8) = {6, 5}; +//+ +Line(9) = {5, 4}; +//+ +Line(10) = {4, 17}; +//+ +Line(11) = {17, 18}; +//+ +Line(12) = {18, 1}; +//+ +Line(13) = {14, 10}; +//+ +Line(14) = {10, 11}; +//+ +Line(15) = {11, 12}; +//+ +Line(16) = {15, 22}; +//+ +Line(17) = {22, 21}; +//+ +Line(18) = {21, 16}; +//+ +Line(19) = {8, 6}; +//+ +Line(20) = {8, 9}; +//+ +Line(21) = {9, 5}; +//+ +Line(22) = {17, 20}; +//+ +Line(23) = {20, 19}; +//+ +Line(24) = {19, 18}; +//+ +Line Loop(25) = {24, -11, 22, 23}; +//+ left fuel +Plane Surface(26) = {25}; +//+ +Line Loop(27) = {17, 18, -5, 16}; +//+ right fuel +Plane Surface(28) = {27}; +//+ +Line Loop(29) = {20, 21, -8, -19}; +//+ bottom fuel +Plane Surface(30) = {29}; +//+ +Line Loop(31) = {14, 15, -2, 13}; +//+ top fuel +Plane Surface(32) = {31}; +//+ +Line Loop(33) = {1, 13, 14, 15, 3, 4, 16, 17, 18, 6, 7, -19, 20, 21, 9, 10, 22, 23, 24, 12}; +//+ moderator +Plane Surface(34) = {33}; +//+ +Line(37) = {1, 2}; +//+ +Line(38) = {2, 3}; +//+ +Line(39) = {3, 4}; +//+ +Line(40) = {4, 1}; + +Line Loop(41) = {37, 38, 39, 40}; +Plane Surface(42) = {41}; + +//+ +Physical Surface("fuel") = {32, 28, 30, 26}; +//+ +Physical Surface("moderator") = {34}; + +fuel_bottoms[] = {32, 28, 30, 26}; +moderator_bottoms[] = {34}; + +For xindex In {1:num_cells-1} + new_f_bottom = Translate {xindex*pitch, 0, 0} { + Duplicata { Surface{32}; } + }; + fuel_bottoms += new_f_bottom; + new_f_bottom = Translate {xindex*pitch, 0, 0} { + Duplicata { Surface{28}; } + }; + fuel_bottoms += new_f_bottom; + new_f_bottom = Translate {xindex*pitch, 0, 0} { + Duplicata { Surface{30}; } + }; + fuel_bottoms += new_f_bottom; + new_f_bottom = Translate {xindex*pitch, 0, 0} { + Duplicata { Surface{26}; } + }; + fuel_bottoms += new_f_bottom; + new_m_bottom = Translate {xindex*pitch, 0, 0} { + Duplicata { Surface{34}; } + }; + moderator_bottoms += new_m_bottom; +EndFor // xindex + +For yindex In {1:num_cells-1} + new_f_bottom = Translate {0, yindex*pitch, 0} { + Duplicata { Surface{32}; } + }; + fuel_bottoms += new_f_bottom; + new_f_bottom = Translate {0, yindex*pitch, 0} { + Duplicata { Surface{28}; } + }; + fuel_bottoms += new_f_bottom; + new_f_bottom = Translate {0, yindex*pitch, 0} { + Duplicata { Surface{30}; } + }; + fuel_bottoms += new_f_bottom; + new_f_bottom = Translate {0, yindex*pitch, 0} { + Duplicata { Surface{26}; } + }; + fuel_bottoms += new_f_bottom; + new_m_bottom = Translate {0, yindex*pitch, 0} { + Duplicata { Surface{34}; } + }; + moderator_bottoms += new_m_bottom; +EndFor // yindex + +For xindex In {1:num_cells-1} + For yindex In {1:num_cells-1} + new_f_bottom = Translate {xindex*pitch, yindex*pitch, 0} { + Duplicata { Surface{32}; } + }; + fuel_bottoms += new_f_bottom; + new_f_bottom = Translate {xindex*pitch, yindex*pitch, 0} { + Duplicata { Surface{28}; } + }; + fuel_bottoms += new_f_bottom; + new_f_bottom = Translate {xindex*pitch, yindex*pitch, 0} { + Duplicata { Surface{30}; } + }; + fuel_bottoms += new_f_bottom; + new_f_bottom = Translate {xindex*pitch, yindex*pitch, 0} { + Duplicata { Surface{26}; } + }; + fuel_bottoms += new_f_bottom; + new_m_bottom = Translate {xindex*pitch, yindex*pitch, 0} { + Duplicata { Surface{34}; } + }; + moderator_bottoms += new_m_bottom; + EndFor // yindex +EndFor // xindex + +fuel_volumes[] = {}; +moderator_volumes[] = {}; +fuel_tops[] = {}; +moderator_tops[] = {}; + +For i In {0 : num_cells*num_cells - 1} + For j In {0 : 3} + fuel_out[] = Extrude {0, 0, height} { Surface{fuel_bottoms[i * 4 + j]}; Layers{10}; Recombine; }; + fuel_tops += fuel_out[0]; + fuel_volumes += fuel_out[1]; + EndFor // j + moder_out[] = Extrude {0, 0, height} { Surface{moderator_bottoms[i]}; Layers{10}; Recombine; }; + moderator_volumes += moder_out[1]; + moderator_tops += moder_out[0]; +EndFor // i + +Physical Volume ("moderator") = { moderator_volumes[] }; +Physical Volume ("fuel") = { fuel_volumes[] }; + +Physical Surface ("moderator_bottoms") = { moderator_bottoms[] }; +Physical Surface ("moderator_tops") = { moderator_tops[] }; +Physical Surface ("fuel_bottoms") = { fuel_bottoms[] }; +Physical Surface ("fuel_tops") = { fuel_tops[] }; diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/rotated_solution_aux_exodus.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/rotated_solution_aux_exodus.i new file mode 100644 index 000000000..1e1c885f4 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/rotated_solution_aux_exodus.i @@ -0,0 +1,95 @@ +[Mesh] + file = single_fuel_channel_msre_dimensions_bump_rotated.msh + parallel_type = replicated +[] + +[Variables] + [./u] + order = FIRST + family = LAGRANGE + initial_condition = 0.0 + [../] +[] + +[AuxVariables] + [./vel_x] + order = SECOND + family = LAGRANGE + [../] + [./vel_y] + order = SECOND + family = LAGRANGE + [../] + [./vel_z] + order = SECOND + family = LAGRANGE + [../] + [./p] + order = FIRST + family = LAGRANGE + [../] +[] + +[Kernels] + [./diff] + type = Diffusion + variable = u + [../] +[] + +[AuxKernels] + [./vel_x] + type = SolutionAux + solution = soln + variable = vel_x + from_variable = vel_x + [../] + [./vel_y] + type = SolutionAux + solution = soln + variable = vel_y + from_variable = vel_y + [../] + [./vel_z] + type = SolutionAux + solution = soln + variable = vel_z + from_variable = vel_z + [../] + [./p] + type = SolutionAux + solution = soln + variable = p + from_variable = p + [../] +[] + +[UserObjects] + [./soln] + type = SolutionUserObject + mesh = single_fuel_channel_MSRE_dimensions_fluid_flow_out.e + system_variables = 'vel_x vel_y vel_z p' + timestep = LATEST + rotation0_vector = '0 0 1' + rotation0_angle = 90 + transformation_order = rotation0 + [../] +[] + +[BCs] + [./stuff] + type = DirichletBC + variable = u + boundary = '1 2' + value = 0.0 + [../] +[] + +[Executioner] + type = Steady +[] + +[Outputs] + exodus = true + execute_on = 'timestep_end' +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/single_fuel_channel_msre_dimensions_bump_rotated.geo b/problems/MooseGold/single_msre_channel_velocity_heat_nts/single_fuel_channel_msre_dimensions_bump_rotated.geo new file mode 100644 index 000000000..a3c992861 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/single_fuel_channel_msre_dimensions_bump_rotated.geo @@ -0,0 +1,104 @@ +Geometry.CopyMeshingMethod = 1; +// Mesh.RandomFactor = 1e-6; +fuel_width = 3.048; +fuel_height = 1.016; +fuel_length = 162.56; +lc = .1 * fuel_length; + +Point(1) = {0, 0, 0, lc}; +Point(2) = {0, 0, fuel_length, lc}; + +// z-normal +Line(1) = {1, 2}; + +//+ +Point(3) = {fuel_width, 0, 0, 1.0}; +//+ +Point(4) = {fuel_width, fuel_height, 0, 1.0}; +//+ +Point(5) = {0, fuel_height, 0, 1.0}; +//+ +Point(6) = {fuel_width, fuel_height, fuel_length, 1.0}; +//+ +Point(7) = {fuel_width, 0, fuel_length, 1.0}; +//+ +Point(8) = {0, fuel_height, fuel_length, 1.0}; +//+ +Line(2) = {1, 5}; +//+ +Line(3) = {5, 4}; +//+ +Line(4) = {4, 3}; +//+ z-normal +Line(5) = {3, 7}; +//+ +Line(6) = {3, 1}; +//+ z-normal +Line(7) = {4, 6}; +//+ +Line(8) = {6, 7}; +//+ +Line(9) = {7, 2}; +//+ +Line(10) = {2, 8}; +//+ +Line(11) = {8, 6}; +//+ z-normal +Line(12) = {5, 8}; + +Transfinite Line{1, 5, 7, 12} = 31 Using Progression 1.3; +Transfinite Line{2, 3, 4, 6, 8, 9, 10, 11} = 13 Using Bump 0.05; + + +// Point(3) = {fuel_width / 2., fuel_height / 2., 0, lc}; +//+ +Line Loop(13) = {5, 9, -1, -6}; +//+ +Plane Surface(14) = {13}; +//+ +Line Loop(15) = {2, 12, -10, -1}; +//+ +Plane Surface(16) = {15}; +//+ +Line Loop(17) = {11, -7, -3, 12}; +//+ +Plane Surface(18) = {17}; +//+ +Line Loop(19) = {7, 8, -5, -4}; +//+ +Plane Surface(20) = {19}; +//+ +Line Loop(21) = {8, 9, 10, 11}; +//+ +Plane Surface(22) = {21}; +//+ +Line Loop(23) = {3, 4, 6, 2}; +//+ +Plane Surface(24) = {23}; +//+ +Surface Loop(25) = {18, 22, 20, 14, 16, 24}; +//+ +Volume(26) = {25}; + +Transfinite Surface{14, 16, 18, 20, 22, 24}; +Recombine Surface{14, 16, 18, 20, 22, 24}; +Transfinite Volume{26}; +Recombine Volume{26}; +//+ +Physical Surface("left") = {16}; +//+ +Physical Surface("right") = {20}; +//+ +Physical Surface("top") = {18}; +//+ +Physical Surface("bottom") = {14}; +//+ +Physical Surface("back") = {24}; +//+ +Physical Surface("front") = {22}; +//+ +Physical Volume(0) = {26}; +//+ +Rotate {{0, 0, 1}, {0, 0, 0}, 3 * Pi / 2} { + Volume{26}; +} diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/solution_aux_exodus.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/solution_aux_exodus.i index 2e31fdeab..98d3b1406 100644 --- a/problems/MooseGold/single_msre_channel_velocity_heat_nts/solution_aux_exodus.i +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/solution_aux_exodus.i @@ -38,34 +38,34 @@ [] [AuxKernels] - [./vel_x] + [./vel_x_left] type = SolutionAux - solution = soln + solution = soln_left variable = vel_x from_variable = vel_x [../] - [./vel_y] + [./vel_y_left] type = SolutionAux - solution = soln + solution = soln_left variable = vel_y from_variable = vel_y [../] - [./vel_z] + [./vel_z_left] type = SolutionAux - solution = soln + solution = soln_left variable = vel_z from_variable = vel_z [../] - [./p] + [./p_left] type = SolutionAux - solution = soln + solution = soln_left variable = p from_variable = p [../] [] [UserObjects] - [./soln] + [./soln_left] type = SolutionUserObject mesh = single_fuel_channel_MSRE_dimensions_fluid_flow_out.e system_variables = 'vel_x vel_y vel_z p' @@ -73,19 +73,8 @@ [../] [] -[BCs] - [./stuff] - type = DirichletBC - variable = u - boundary = '1 2' - value = 0.0 - [../] -[] - [Executioner] - type = Transient - num_steps = 1 - dt = 1 + type = Steady [] [Outputs] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/unit-cell-heat-and-nts.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/unit-cell-heat-and-nts.i new file mode 100644 index 000000000..a148cd851 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/unit-cell-heat-and-nts.i @@ -0,0 +1,416 @@ +# 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 + [../] +[] + +# [PrecursorKernel] +# 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 + D_name = '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] + print_perf_log = 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' + [../] +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_heat_nts/unit-cell-nts-eigenvalue.i b/problems/MooseGold/single_msre_channel_velocity_heat_nts/unit-cell-nts-eigenvalue.i new file mode 100644 index 000000000..a0f7aa673 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_heat_nts/unit-cell-nts-eigenvalue.i @@ -0,0 +1,242 @@ +# 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 = 922 + 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 + [../] +[] + +# [PrecursorKernel] +# 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 = CoupledFissionEigenKernel + 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 = CoupledFissionEigenKernel + variable = group2 + group_number = 2 + [../] + [./inscatter_group2] + type = InScatter + variable = group2 + group_number = 2 + [../] + # [./time_group2] + # type = NtTimeDerivative + # variable = group2 + # group_number = 2 + # [../] +[] + +[BCs] + [./vacuum_group1] + type = VacuumConcBC + boundary = 'fuel_bottoms fuel_tops moderator_bottoms moderator_tops' + # boundary = 'fuel_bottom moderator_bottoms' + variable = group1 + [../] + [./vacuum_group2] + type = VacuumConcBC + boundary = 'fuel_bottoms fuel_tops moderator_bottoms moderator_tops' + # boundary = 'fuel_bottom moderator_bottoms' + 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 + [../] + [./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' + [../] +[] + +[Debug] + show_var_residual_norms = true +[] + +[Preconditioning] + [./SMP_PJFNK] + type = SMP + full = true + [../] +[] + +[Executioner] + type = InversePowerMethod + max_power_iterations = 50 + xdiff = 'group1diff' + + bx_norm = 'bnorm' + k0 = 2.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' + petsc_options_value = 'lu' +[] + +[Outputs] + print_perf_log = true + exodus = true + csv = true + file_base = 'out' +[] + +[Functions] + [./nt_ic] + type = ParsedFunction + value = '10 * sin(pi * z / ${length})' + [../] +[] + +[ICs] + [./group1] + type = FunctionIC + variable = group1 + function = nt_ic + [../] + [./group2] + type = FunctionIC + variable = group2 + function = nt_ic + [../] +[] + +[Postprocessors] + [./bnorm] + type = ElmIntegTotFissNtsPostprocessor + execute_on = linear + [../] + [./tot_fissions] + type = ElmIntegTotFissPostprocessor + execute_on = linear + [../] + [./group1norm] + type = ElementIntegralVariablePostprocessor + variable = group1 + execute_on = linear + [../] + [./group1max] + type = NodalMaxValue + variable = group1 + execute_on = timestep_end + [../] + [./group1diff] + type = ElementL2Diff + variable = group1 + execute_on = 'linear timestep_end' + use_displaced_mesh = false + [../] + [./group2norm] + type = ElementIntegralVariablePostprocessor + variable = group2 + execute_on = linear + [../] + [./group2max] + type = NodalMaxValue + variable = group2 + execute_on = timestep_end + [../] + [./group2diff] + type = ElementL2Diff + variable = group2 + execute_on = 'linear timestep_end' + use_displaced_mesh = false + [../] +[] diff --git a/problems/MooseGold/single_msre_channel_velocity_only/build.txt b/problems/MooseGold/single_msre_channel_velocity_only/build.txt new file mode 100644 index 000000000..25bf9792b --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_only/build.txt @@ -0,0 +1,56 @@ +Info : Running 'gmsh -3 -order 2 half-fuel-channel-msre-dimensions.geo' [Gmsh 2.16.0, 1 node, max. 1 thread] +Info : Started on Fri Jun 30 11:55:42 2017 +Info : Reading 'half-fuel-channel-msre-dimensions.geo'... +Info : Done reading 'half-fuel-channel-msre-dimensions.geo' +Info : Finalized high order topology of periodic connections +Info : Meshing 1D... +Info : Meshing curve 1 (Line) +Info : Meshing curve 2 (Line) +Info : Meshing curve 3 (Line) +Info : Meshing curve 4 (Line) +Info : Meshing curve 5 (Line) +Info : Meshing curve 6 (Line) +Info : Meshing curve 7 (Line) +Info : Meshing curve 8 (Line) +Info : Meshing curve 9 (Line) +Info : Meshing curve 10 (Line) +Info : Meshing curve 11 (Line) +Info : Meshing curve 12 (Line) +Info : Done meshing 1D (0.028 s) +Info : Meshing 2D... +Info : Meshing surface 14 (transfinite) +Info : Meshing surface 16 (transfinite) +Info : Meshing surface 18 (transfinite) +Info : Meshing surface 20 (transfinite) +Info : Meshing surface 22 (transfinite) +Info : Meshing surface 24 (transfinite) +Info : Done meshing 2D (0.000466108 s) +Info : Meshing 3D... +Info : Meshing volume 26 (transfinite) +Info : Done meshing 3D (0 s) +Info : Meshing order 2 (curvilinear on)... +Info : Meshing curve 1 order 2 +Info : Meshing curve 2 order 2 +Info : Meshing curve 3 order 2 +Info : Meshing curve 4 order 2 +Info : Meshing curve 5 order 2 +Info : Meshing curve 6 order 2 +Info : Meshing curve 7 order 2 +Info : Meshing curve 8 order 2 +Info : Meshing curve 9 order 2 +Info : Meshing curve 10 order 2 +Info : Meshing curve 11 order 2 +Info : Meshing curve 12 order 2 +Info : Meshing surface 14 order 2 +Info : Meshing surface 16 order 2 +Info : Meshing surface 18 order 2 +Info : Meshing surface 20 order 2 +Info : Meshing surface 22 order 2 +Info : Meshing surface 24 order 2 +Info : Meshing volume 26 order 2 +Info : Finalized high order topology of periodic connections +Info : Done meshing order 2 (0.036 s) +Info : 19175 vertices 3472 elements +Info : Writing 'half-fuel-channel-msre-dimensions.msh'... +Info : Done writing 'half-fuel-channel-msre-dimensions.msh' +Info : Stopped on Fri Jun 30 11:55:42 2017 diff --git a/problems/MooseGold/single_msre_channel_velocity_only/fuel-half-channel-msre-dimensions-fluid-flow.i b/problems/MooseGold/single_msre_channel_velocity_only/fuel-half-channel-msre-dimensions-fluid-flow.i new file mode 100644 index 000000000..be6df4ca9 --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_only/fuel-half-channel-msre-dimensions-fluid-flow.i @@ -0,0 +1,180 @@ +# This input file tests outflow boundary conditions for the incompressible NS equations. +width = 3.048 +height = 1.016 + +[GlobalParams] + gravity = '0 0 0' + integrate_p_by_parts = false +[] + +[Mesh] + file = half-fuel-channel-msre-dimensions.msh +[] + + +[Variables] + [./vel_x] + order = SECOND + family = LAGRANGE + [../] + [./vel_y] + order = SECOND + family = LAGRANGE + [../] + [./vel_z] + order = SECOND + family = LAGRANGE + [../] + [./p] + order = FIRST + family = LAGRANGE + [../] +[] + +[Kernels] + [./mass] + type = INSMass + variable = p + u = vel_x + v = vel_y + w = vel_z + p = p + [../] + [./x_momentum_space] + type = INSMomentumLaplaceForm + variable = vel_x + u = vel_x + v = vel_y + w = vel_z + p = p + component = 0 + [../] + [./y_momentum_space] + type = INSMomentumLaplaceForm + variable = vel_y + u = vel_x + v = vel_y + w = vel_z + p = p + component = 1 + [../] + [./z_momentum_space] + type = INSMomentumLaplaceForm + variable = vel_z + u = vel_x + v = vel_y + w = vel_z + p = p + component = 2 + [../] +[] + +[BCs] + [./p_pin] + type = DirichletBC + value = 0 + variable = p + boundary = 'corner' + [../] + [./x_no_slip] + type = DirichletBC + variable = vel_x + boundary = 'bottom left right back' + value = 0.0 + [../] + [./y_no_slip] + type = DirichletBC + variable = vel_y + boundary = 'left bottom right back' + value = 0.0 + [../] + [./z_no_slip] + type = DirichletBC + variable = vel_z + boundary = 'left bottom right' + value = 0 + [../] + [./z_inlet] + type = FunctionDirichletBC + variable = vel_z + boundary = 'back' + function = 'inlet_func' + [../] +[] + +[Materials] + [./const] + type = GenericConstantMaterial + block = 0 + prop_names = 'rho mu' + prop_values = '2.15e-3 8.28e-5' + # prop_values = '1 2' + [../] +[] + +[Debug] + show_var_residual_norms = true +[] + +[Preconditioning] + [./SMP_PJFNK] + type = SMP + full = true + solve_type = NEWTON + ksp_norm = none + [../] +[] + +[Executioner] + type = Steady + # type = Transient + # dt = 5e-5 + # num_steps = 5 + # petsc_options_iname = '-ksp_gmres_restart -pc_type -sub_pc_type -sub_pc_factor_levels' + # petsc_options_value = '300 bjacobi ilu 4' + # petsc_options_iname = '-pc_type -sub_pc_type' + # petsc_options_value = 'asm lu' + 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-4 + nl_max_its = 50 + l_max_its = 300 +[] + +[Outputs] + [./out] + type = Exodus + [../] +[] + +[Functions] + [./inlet_func] + type = ParsedFunction + # value = 'tanh(x/1e-2) * tanh((1 - x)/1e-2) * tanh(y/1e-2) * tanh((1-y)/1e-2)' + value = '21.73 * tanh(x/1e-2) * tanh((${width} - x)/1e-2) * tanh(y/1e-2) * tanh((${height}-y)/1e-2)' + [../] +[] + +# [Adaptivity] +# marker = errorfrac_vel_z +# max_h_level = 2 +# steps = 2 +# [./Indicators] +# [./error_vel_z] +# type = GradientJumpIndicator +# variable = vel_z +# outputs = none +# [../] +# [../] +# [./Markers] +# [./errorfrac_vel_z] +# type = ErrorFractionMarker +# refine = 0.8 +# coarsen = 0.1 +# indicator = error_vel_z +# outputs = none +# [../] +# [../] +# [] diff --git a/problems/MooseGold/single_msre_channel_velocity_only/half-fuel-channel-msre-dimensions.geo b/problems/MooseGold/single_msre_channel_velocity_only/half-fuel-channel-msre-dimensions.geo new file mode 100644 index 000000000..1f1b334ad --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_only/half-fuel-channel-msre-dimensions.geo @@ -0,0 +1,105 @@ +Geometry.CopyMeshingMethod = 1; +// Mesh.RandomFactor = 1e-6; +fuel_width = 3.048; +fuel_height = .508; +fuel_length = 162.56; +lc = .1 * fuel_length; + +Point(1) = {0, 0, 0, lc}; +Point(2) = {0, 0, fuel_length, lc}; + +// z-normal +Line(1) = {1, 2}; + +//+ +Point(3) = {fuel_width, 0, 0, 1.0}; +//+ +Point(4) = {fuel_width, fuel_height, 0, 1.0}; +//+ +Point(5) = {0, fuel_height, 0, 1.0}; +//+ +Point(6) = {fuel_width, fuel_height, fuel_length, 1.0}; +//+ +Point(7) = {fuel_width, 0, fuel_length, 1.0}; +//+ +Point(8) = {0, fuel_height, fuel_length, 1.0}; +//+ +Line(2) = {1, 5}; +//+ +Line(3) = {5, 4}; +//+ +Line(4) = {4, 3}; +//+ z-normal +Line(5) = {3, 7}; +//+ +Line(6) = {3, 1}; +//+ z-normal +Line(7) = {4, 6}; +//+ +Line(8) = {6, 7}; +//+ +Line(9) = {7, 2}; +//+ +Line(10) = {2, 8}; +//+ +Line(11) = {8, 6}; +//+ z-normal +Line(12) = {5, 8}; + +Transfinite Line{1, 5, 7, 12} = 31 Using Progression 1.3; +Transfinite Line{3, 6, 9, 11} = 13 Using Bump 0.05; +//+ +Transfinite Line {2, -4, -8, 10} = 13 Using Progression 1.1; +// Transfinite Line {4, 10} = 13 Using Progression .9; + + +// Point(3) = {fuel_width / 2., fuel_height / 2., 0, lc}; +//+ +Line Loop(13) = {5, 9, -1, -6}; +//+ +Plane Surface(14) = {13}; +//+ +Line Loop(15) = {2, 12, -10, -1}; +//+ +Plane Surface(16) = {15}; +//+ +Line Loop(17) = {11, -7, -3, 12}; +//+ +Plane Surface(18) = {17}; +//+ +Line Loop(19) = {7, 8, -5, -4}; +//+ +Plane Surface(20) = {19}; +//+ +Line Loop(21) = {8, 9, 10, 11}; +//+ +Plane Surface(22) = {21}; +//+ +Line Loop(23) = {3, 4, 6, 2}; +//+ +Plane Surface(24) = {23}; +//+ +Surface Loop(25) = {18, 22, 20, 14, 16, 24}; +//+ +Volume(26) = {25}; + +Transfinite Surface{14, 16, 18, 20, 22, 24}; +Recombine Surface{14, 16, 18, 20, 22, 24}; +Transfinite Volume{26}; +Recombine Volume{26}; +//+ +Physical Surface("left") = {16}; +//+ +Physical Surface("right") = {20}; +//+ +Physical Surface("top") = {18}; +//+ +Physical Surface("bottom") = {14}; +//+ +Physical Surface("back") = {24}; +//+ +Physical Surface("front") = {22}; +//+ +Physical Volume(0) = {26}; + +Physical Point("corner") = {1}; diff --git a/problems/MooseGold/single_msre_channel_velocity_only/single_fuel_channel_msre_dimensions_bump_rotated.geo b/problems/MooseGold/single_msre_channel_velocity_only/single_fuel_channel_msre_dimensions_bump_rotated.geo new file mode 100644 index 000000000..45dac1c5f --- /dev/null +++ b/problems/MooseGold/single_msre_channel_velocity_only/single_fuel_channel_msre_dimensions_bump_rotated.geo @@ -0,0 +1,104 @@ +Geometry.CopyMeshingMethod = 1; +// Mesh.RandomFactor = 1e-6; +fuel_width = 3.048; +fuel_height = 1.016; +fuel_length = 162.56; +lc = .1 * fuel_length; + +Point(1) = {0, 0, 0, lc}; +Point(2) = {0, 0, fuel_length, lc}; + +// z-normal +Line(1) = {1, 2}; + +//+ +Point(3) = {fuel_width, 0, 0, 1.0}; +//+ +Point(4) = {fuel_width, fuel_height, 0, 1.0}; +//+ +Point(5) = {0, fuel_height, 0, 1.0}; +//+ +Point(6) = {fuel_width, fuel_height, fuel_length, 1.0}; +//+ +Point(7) = {fuel_width, 0, fuel_length, 1.0}; +//+ +Point(8) = {0, fuel_height, fuel_length, 1.0}; +//+ +Line(2) = {1, 5}; +//+ +Line(3) = {5, 4}; +//+ +Line(4) = {4, 3}; +//+ z-normal +Line(5) = {3, 7}; +//+ +Line(6) = {3, 1}; +//+ z-normal +Line(7) = {4, 6}; +//+ +Line(8) = {6, 7}; +//+ +Line(9) = {7, 2}; +//+ +Line(10) = {2, 8}; +//+ +Line(11) = {8, 6}; +//+ z-normal +Line(12) = {5, 8}; + +Transfinite Line{1, 5, 7, 12} = 31 Using Progression 1.3; +Transfinite Line{2, 3, 4, 6, 8, 9, 10, 11} = 13 Using Bump 0.05; + + +// Point(3) = {fuel_width / 2., fuel_height / 2., 0, lc}; +//+ +Line Loop(13) = {5, 9, -1, -6}; +//+ +Plane Surface(14) = {13}; +//+ +Line Loop(15) = {2, 12, -10, -1}; +//+ +Plane Surface(16) = {15}; +//+ +Line Loop(17) = {11, -7, -3, 12}; +//+ +Plane Surface(18) = {17}; +//+ +Line Loop(19) = {7, 8, -5, -4}; +//+ +Plane Surface(20) = {19}; +//+ +Line Loop(21) = {8, 9, 10, 11}; +//+ +Plane Surface(22) = {21}; +//+ +Line Loop(23) = {3, 4, 6, 2}; +//+ +Plane Surface(24) = {23}; +//+ +Surface Loop(25) = {18, 22, 20, 14, 16, 24}; +//+ +Volume(26) = {25}; + +Transfinite Surface{14, 16, 18, 20, 22, 24}; +Recombine Surface{14, 16, 18, 20, 22, 24}; +Transfinite Volume{26}; +Recombine Volume{26}; +//+ +Physical Surface("left") = {16}; +//+ +Physical Surface("right") = {20}; +//+ +Physical Surface("top") = {18}; +//+ +Physical Surface("bottom") = {14}; +//+ +Physical Surface("back") = {24}; +//+ +Physical Surface("front") = {22}; +//+ +Physical Volume(0) = {26}; +//+ +Rotate {{0, 0, 1}, {0, 0, 0}, Pi/2} { + Volume{26}; +} diff --git a/src/base/MoltresApp.C b/src/base/MoltresApp.C index b253f1c59..c86180953 100644 --- a/src/base/MoltresApp.C +++ b/src/base/MoltresApp.C @@ -41,6 +41,8 @@ #include "CammiFuel.h" #include "CammiModerator.h" #include "Nusselt.h" +#include "GraphiteTwoGrpXSFunctionMaterial.h" +#include "MsreFuelTwoGrpXSFunctionMaterial.h" // Postprocessors #include "AverageFissionHeat.h" @@ -143,6 +145,8 @@ MoltresApp::registerObjects(Factory & factory) registerMaterial(CammiFuel); registerMaterial(CammiModerator); registerMaterial(Nusselt); + registerMaterial(GraphiteTwoGrpXSFunctionMaterial); + registerMaterial(MsreFuelTwoGrpXSFunctionMaterial); registerPostprocessor(IntegralOldVariablePostprocessor); registerPostprocessor(ElementL2Diff); registerPostprocessor(IntegralNewVariablePostprocessor); diff --git a/src/materials/GenericMoltresMaterial.C b/src/materials/GenericMoltresMaterial.C index 7ea45a820..3cbe36e21 100644 --- a/src/materials/GenericMoltresMaterial.C +++ b/src/materials/GenericMoltresMaterial.C @@ -825,7 +825,7 @@ GenericMoltresMaterial::computeQpProperties() else if (_interp_type == "none") dummyComputeQpProperties(); - if (_perform_control) + if (_perform_control && _peak_power_density > _peak_power_density_set_point) for (unsigned i = 0; i < _num_groups; ++i) _remxs[_qp][i] += _controller_gain * (_peak_power_density - _peak_power_density_set_point); } diff --git a/src/materials/GraphiteTwoGrpXSFunctionMaterial.C b/src/materials/GraphiteTwoGrpXSFunctionMaterial.C new file mode 100644 index 000000000..9229e7eb8 --- /dev/null +++ b/src/materials/GraphiteTwoGrpXSFunctionMaterial.C @@ -0,0 +1,135 @@ +#include "GraphiteTwoGrpXSFunctionMaterial.h" +#include "MooseUtils.h" +// #define PRINT(var) #var + +template <> +InputParameters +validParams() +{ + InputParameters params = validParams(); + params.addCoupledVar( + "temperature", 937, "The temperature field for determining group constants."); + return params; +} + +GraphiteTwoGrpXSFunctionMaterial::GraphiteTwoGrpXSFunctionMaterial( + const InputParameters & parameters) + : GenericConstantMaterial(parameters), + _T(coupledValue("temperature")), + // _rho(getMaterialProperty("rho")), + _remxs(declareProperty>("remxs")), + _fissxs(declareProperty>("fissxs")), + _nsf(declareProperty>("nsf")), + _fisse(declareProperty>("fisse")), + _diffcoef(declareProperty>("diffcoef")), + _recipvel(declareProperty>("recipvel")), + _chi(declareProperty>("chi")), + _gtransfxs(declareProperty>("gtransfxs")), + _beta_eff(declareProperty>("beta_eff")), + _beta(declareProperty("beta")), + _decay_constant(declareProperty>("decay_constant")), + + _d_remxs_d_temp(declareProperty>("d_remxs_d_temp")), + _d_fissxs_d_temp(declareProperty>("d_fissxs_d_temp")), + _d_nsf_d_temp(declareProperty>("d_nsf_d_temp")), + _d_fisse_d_temp(declareProperty>("d_fisse_d_temp")), + _d_diffcoef_d_temp(declareProperty>("d_diffcoef_d_temp")), + _d_recipvel_d_temp(declareProperty>("d_recipvel_d_temp")), + _d_chi_d_temp(declareProperty>("d_chi_d_temp")), + _d_gtransfxs_d_temp(declareProperty>("d_gtransfxs_d_temp")), + _d_beta_eff_d_temp(declareProperty>("d_beta_eff_d_temp")), + _d_beta_d_temp(declareProperty("d_beta_d_temp")), + _d_decay_constant_d_temp(declareProperty>("d_decay_constant_d_temp")) +{ +} + +void +GraphiteTwoGrpXSFunctionMaterial::computeQpProperties() +{ + for (unsigned int i = 0; i < _num_props; i++) + (*_properties[i])[_qp] = _prop_values[i]; + + _remxs[_qp].resize(2, 0); + _fissxs[_qp].resize(2, 0); + _nsf[_qp].resize(2, 0); + _fisse[_qp].resize(2, 0); + _diffcoef[_qp].resize(2, 0); + _recipvel[_qp].resize(2, 0); + _chi[_qp].resize(2, 0); + _gtransfxs[_qp].resize(4, 0); + _beta_eff[_qp].resize(6, 0); + _decay_constant[_qp].resize(6, 0); + _d_remxs_d_temp[_qp].resize(2, 0); + _d_fissxs_d_temp[_qp].resize(2, 0); + _d_nsf_d_temp[_qp].resize(2, 0); + _d_fisse_d_temp[_qp].resize(2, 0); + _d_diffcoef_d_temp[_qp].resize(2, 0); + _d_recipvel_d_temp[_qp].resize(2, 0); + _d_chi_d_temp[_qp].resize(2, 0); + _d_gtransfxs_d_temp[_qp].resize(4, 0); + _d_beta_eff_d_temp[_qp].resize(6, 0); + _d_decay_constant_d_temp[_qp].resize(6, 0); + + Real T0 = 922; + Real rho0 = 1.86e-3; + Real rho = rho0 * std::exp(-1.8 * 1.0e-5 * (_T[_qp] - T0)); + Real d_rho_d_T = rho * -1.8 * 1.0e-5; + + // Constants taken from newt_msre property text files + _remxs[_qp][0] = (4.26E-03 + 3.78E-03 * std::log(_T[_qp] / T0)) * rho / rho0; + _remxs[_qp][1] = (3.11E-03 + 8.38E-03 * std::log(_T[_qp] / T0)) * rho / rho0; + _diffcoef[_qp][0] = (9.85E-01 + 8.23E-03 * std::log(_T[_qp] / T0)) * rho0 / rho; + _diffcoef[_qp][1] = (7.70E-01 + 3.38E-03 * std::log(_T[_qp] / T0)) * rho0 / rho; + _gtransfxs[_qp][0] = (3.94E-01 + -7.85E-03 * std::log(_T[_qp] / T0)) * rho / rho0; + _gtransfxs[_qp][1] = (2.96E-03 + 8.43E-03 * std::log(_T[_qp] / T0)) * rho / rho0; + _gtransfxs[_qp][2] = (4.25E-03 + 3.78E-03 * std::log(_T[_qp] / T0)) * rho / rho0; + _gtransfxs[_qp][3] = (4.55E-01 + -1.05E-02 * std::log(_T[_qp] / T0)) * rho / rho0; + _recipvel[_qp][0] = 9.98E-08 + 2.21E-08 * std::log(_T[_qp] / T0); + _recipvel[_qp][1] = 2.08E-06 + -7.19E-07 * std::log(_T[_qp] / T0); + + _d_remxs_d_temp[_qp][0] = + (3.78E-03 / _T[_qp] * rho + (4.26E-03 + 3.78E-03 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_remxs_d_temp[_qp][1] = + (8.38E-03 / _T[_qp] * rho + (3.11E-03 + 8.38E-03 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_diffcoef_d_temp[_qp][0] = + (8.23E-03 / _T[_qp] / rho + + (9.85E-01 + 8.23E-03 * std::log(_T[_qp] / T0)) * -d_rho_d_T / (rho * rho)) * + rho0; + _d_diffcoef_d_temp[_qp][1] = + (3.38E-03 / _T[_qp] / rho + + (7.70E-01 + 3.38E-03 * std::log(_T[_qp] / T0)) * -d_rho_d_T / (rho * rho)) * + rho0; + _d_gtransfxs_d_temp[_qp][0] = + (-7.85E-03 / _T[_qp] * rho + (3.94E-01 + -7.85E-03 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_gtransfxs_d_temp[_qp][1] = + (8.43E-03 / _T[_qp] * rho + (2.96E-03 + 8.43E-03 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_gtransfxs_d_temp[_qp][2] = + (3.78E-03 / _T[_qp] * rho + (4.25E-03 + 3.78E-03 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_gtransfxs_d_temp[_qp][3] = + (-1.05E-02 / _T[_qp] * rho + (4.55E-01 + -1.05E-02 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_recipvel_d_temp[_qp][0] = 2.21E-08 / _T[_qp]; + _d_recipvel_d_temp[_qp][1] = -7.19E-07 / _T[_qp]; + + _beta[_qp] = 0; + _d_beta_d_temp[_qp] = 0; + for (unsigned i = 0; i < 2; i++) + { + _nsf[_qp][i] = 0; + _fissxs[_qp][i] = 0; + _d_nsf_d_temp[_qp][i] = 0; + _d_fissxs_d_temp[_qp][i] = 0; + } + for (unsigned i = 0; i < 6; i++) + { + _beta_eff[_qp][i] = 0; + _decay_constant[_qp][i] = 0; + _d_beta_eff_d_temp[_qp][i] = 0; + _d_decay_constant_d_temp[_qp][i] = 0; + } +} diff --git a/src/materials/MsreFuelTwoGrpXSFunctionMaterial.C b/src/materials/MsreFuelTwoGrpXSFunctionMaterial.C new file mode 100644 index 000000000..11b953149 --- /dev/null +++ b/src/materials/MsreFuelTwoGrpXSFunctionMaterial.C @@ -0,0 +1,156 @@ +#include "MsreFuelTwoGrpXSFunctionMaterial.h" +#include "MooseUtils.h" +// #define PRINT(var) #var + +template <> +InputParameters +validParams() +{ + InputParameters params = validParams(); + params.addCoupledVar( + "temperature", 937, "The temperature field for determining group constants."); + return params; +} + +MsreFuelTwoGrpXSFunctionMaterial::MsreFuelTwoGrpXSFunctionMaterial( + const InputParameters & parameters) + : GenericConstantMaterial(parameters), + _T(coupledValue("temperature")), + // _rho(getMaterialProperty("rho")), + _remxs(declareProperty>("remxs")), + _fissxs(declareProperty>("fissxs")), + _nsf(declareProperty>("nsf")), + _fisse(declareProperty>("fisse")), + _diffcoef(declareProperty>("diffcoef")), + _recipvel(declareProperty>("recipvel")), + _chi(declareProperty>("chi")), + _gtransfxs(declareProperty>("gtransfxs")), + _beta_eff(declareProperty>("beta_eff")), + _beta(declareProperty("beta")), + _decay_constant(declareProperty>("decay_constant")), + + _d_remxs_d_temp(declareProperty>("d_remxs_d_temp")), + _d_fissxs_d_temp(declareProperty>("d_fissxs_d_temp")), + _d_nsf_d_temp(declareProperty>("d_nsf_d_temp")), + _d_fisse_d_temp(declareProperty>("d_fisse_d_temp")), + _d_diffcoef_d_temp(declareProperty>("d_diffcoef_d_temp")), + _d_recipvel_d_temp(declareProperty>("d_recipvel_d_temp")), + _d_chi_d_temp(declareProperty>("d_chi_d_temp")), + _d_gtransfxs_d_temp(declareProperty>("d_gtransfxs_d_temp")), + _d_beta_eff_d_temp(declareProperty>("d_beta_eff_d_temp")), + _d_beta_d_temp(declareProperty("d_beta_d_temp")), + _d_decay_constant_d_temp(declareProperty>("d_decay_constant_d_temp")) +{ +} + +void +MsreFuelTwoGrpXSFunctionMaterial::computeQpProperties() +{ + for (unsigned int i = 0; i < _num_props; i++) + (*_properties[i])[_qp] = _prop_values[i]; + + _remxs[_qp].resize(2, 0); + _fissxs[_qp].resize(2, 0); + _nsf[_qp].resize(2, 0); + _fisse[_qp].resize(2, 0); + _diffcoef[_qp].resize(2, 0); + _recipvel[_qp].resize(2, 0); + _chi[_qp].resize(2, 0); + _gtransfxs[_qp].resize(4, 0); + _beta_eff[_qp].resize(6, 0); + _decay_constant[_qp].resize(6, 0); + _d_remxs_d_temp[_qp].resize(2, 0); + _d_fissxs_d_temp[_qp].resize(2, 0); + _d_nsf_d_temp[_qp].resize(2, 0); + _d_fisse_d_temp[_qp].resize(2, 0); + _d_diffcoef_d_temp[_qp].resize(2, 0); + _d_recipvel_d_temp[_qp].resize(2, 0); + _d_chi_d_temp[_qp].resize(2, 0); + _d_gtransfxs_d_temp[_qp].resize(4, 0); + _d_beta_eff_d_temp[_qp].resize(6, 0); + _d_decay_constant_d_temp[_qp].resize(6, 0); + + Real T0 = 922; + Real rho0 = 2.146e-3; + Real rho = rho0 * std::exp(-1.8 * 1.18e-4 * (_T[_qp] - T0)); + Real d_rho_d_T = rho * -1.8 * 1.18e-4; + + // Constants taken from newt_msre property text files + _nsf[_qp][0] = (3.18E-03 + -3.46E-04 * std::log(_T[_qp] / T0)) * rho / rho0; + _nsf[_qp][1] = (5.30E-02 + -2.97E-02 * std::log(_T[_qp] / T0)) * rho / rho0; + _remxs[_qp][0] = (5.72E-03 + 1.15E-03 * std::log(_T[_qp] / T0)) * rho / rho0; + _remxs[_qp][1] = (2.86E-02 + -1.09E-02 * std::log(_T[_qp] / T0)) * rho / rho0; + _fissxs[_qp][0] = (1.30E-03 + -1.41E-04 * std::log(_T[_qp] / T0)) * rho / rho0; + _fissxs[_qp][1] = (2.18E-02 + -1.22E-02 * std::log(_T[_qp] / T0)) * rho / rho0; + _diffcoef[_qp][0] = (1.43E+00 + 2.91E-01 * std::log(_T[_qp] / T0)) * rho0 / rho; + _diffcoef[_qp][1] = (1.26E+00 + 2.92E-01 * std::log(_T[_qp] / T0)) * rho0 / rho; + _gtransfxs[_qp][0] = (2.66E-01 + -5.57E-02 * std::log(_T[_qp] / T0)) * rho / rho0; + _gtransfxs[_qp][1] = (1.59E-03 + 3.90E-03 * std::log(_T[_qp] / T0)) * rho / rho0; + _gtransfxs[_qp][2] = (2.02E-03 + 1.44E-03 * std::log(_T[_qp] / T0)) * rho / rho0; + _gtransfxs[_qp][3] = (2.49E-01 + -5.23E-02 * std::log(_T[_qp] / T0)) * rho / rho0; + _recipvel[_qp][0] = 9.69E-08 + 2.18E-08 * std::log(_T[_qp] / T0); + _recipvel[_qp][1] = 2.06E-06 + -6.95E-07 * std::log(_T[_qp] / T0); + + _d_nsf_d_temp[_qp][0] = + (-3.46E-04 / _T[_qp] * rho + (3.18E-03 + -3.46E-04 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_nsf_d_temp[_qp][1] = + (-2.97E-02 / _T[_qp] * rho + (5.30E-02 + -2.97E-02 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_remxs_d_temp[_qp][0] = + (1.15E-03 / _T[_qp] * rho + (5.72E-03 + 1.15E-03 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_remxs_d_temp[_qp][1] = + (-1.09E-02 / _T[_qp] * rho + (2.86E-02 + -1.09E-02 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_fissxs_d_temp[_qp][0] = + (-1.41E-04 / _T[_qp] * rho + (1.30E-03 + -1.41E-04 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_fissxs_d_temp[_qp][1] = + (-1.22E-02 / _T[_qp] * rho + (2.18E-02 + -1.22E-02 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_diffcoef_d_temp[_qp][0] = + (2.91E-01 / _T[_qp] / rho + + (1.43E+00 + 2.91E-01 * std::log(_T[_qp] / T0)) * -d_rho_d_T / (rho * rho)) * + rho0; + _d_diffcoef_d_temp[_qp][1] = + (2.92E-01 / _T[_qp] / rho + + (1.26E+00 + 2.92E-01 * std::log(_T[_qp] / T0)) * -d_rho_d_T / (rho * rho)) * + rho0; + _d_gtransfxs_d_temp[_qp][0] = + (-5.57E-02 / _T[_qp] * rho + (2.66E-01 + -5.57E-02 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_gtransfxs_d_temp[_qp][1] = + (3.90E-03 / _T[_qp] * rho + (1.59E-03 + 3.90E-03 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_gtransfxs_d_temp[_qp][2] = + (1.44E-03 / _T[_qp] * rho + (2.02E-03 + 1.44E-03 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_gtransfxs_d_temp[_qp][3] = + (-5.23E-02 / _T[_qp] * rho + (2.49E-01 + -5.23E-02 * std::log(_T[_qp] / T0)) * d_rho_d_T) / + rho0; + _d_recipvel_d_temp[_qp][0] = 2.18E-08 / _T[_qp]; + _d_recipvel_d_temp[_qp][1] = -6.95E-07 / _T[_qp]; + + _fisse[_qp][0] = 194. * 1e6 * 1.6e-19; // convert MeV to Joules + _fisse[_qp][1] = 194. * 1e6 * 1.6e-19; // convert MeV to Joules + _chi[_qp][0] = 1; + _chi[_qp][1] = 0; + _beta_eff[_qp][0] = 2.37e-4; + _beta_eff[_qp][1] = 1.54e-3; + _beta_eff[_qp][2] = 1.38e-3; + _beta_eff[_qp][3] = 2.80e-3; + _beta_eff[_qp][4] = 8.26e-4; + _beta_eff[_qp][5] = 2.86e-4; + _beta[_qp] = 0; + for (unsigned i = 0; i < 6; i++) + _beta[_qp] += _beta_eff[_qp][i]; + _d_beta_d_temp[_qp] = 0; + + _decay_constant[_qp][0] = 1.24e-2; + _decay_constant[_qp][1] = 3.06e-2; + _decay_constant[_qp][2] = 1.11e-1; + _decay_constant[_qp][3] = 3.02e-1; + _decay_constant[_qp][4] = 1.17e0; + _decay_constant[_qp][5] = 3.07e0; +} diff --git a/src/materials/required_xs.md b/src/materials/required_xs.md new file mode 100644 index 000000000..b8af8f755 --- /dev/null +++ b/src/materials/required_xs.md @@ -0,0 +1,12 @@ +The following are required cross sections for Moltres: + +- fissxs +- remxs +- nsf +- fisse +- diffcoef +- recipvel +- chi +- gtransfxs +- beta\_eff +- decay\_constant diff --git a/tests/twod_axi_coupled/auto_diff_rho.i b/tests/twod_axi_coupled/auto_diff_rho.i index cc3eb3a69..8e95425ba 100644 --- a/tests/twod_axi_coupled/auto_diff_rho.i +++ b/tests/twod_axi_coupled/auto_diff_rho.i @@ -219,9 +219,10 @@ diri_temp=922 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_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 @@ -243,6 +244,7 @@ diri_temp=922 [./SMP] type = SMP full = true + ksp_norm = none [../] []