diff --git a/doc/content/source/kernels/DelayedNeutronEigenSource.md b/doc/content/source/kernels/DelayedNeutronEigenSource.md deleted file mode 100644 index ce73964b50..0000000000 --- a/doc/content/source/kernels/DelayedNeutronEigenSource.md +++ /dev/null @@ -1,23 +0,0 @@ -# DelayedNeutronEigenSource - -!alert construction title=Undocumented Class -The DelayedNeutronEigenSource has not been documented. The content listed below should be used as a starting point for -documenting the class, which includes the typical automatic documentation associated with a -MooseObject; however, what is contained is ultimately determined by what is necessary to make the -documentation clear for users. - -!syntax description /Kernels/DelayedNeutronEigenSource - -## Overview - -!! Replace these lines with information regarding the DelayedNeutronEigenSource object. - -## Example Input File Syntax - -!! Describe and include an example of how to use the DelayedNeutronEigenSource object. - -!syntax parameters /Kernels/DelayedNeutronEigenSource - -!syntax inputs /Kernels/DelayedNeutronEigenSource - -!syntax children /Kernels/DelayedNeutronEigenSource diff --git a/doc/content/source/kernels/PrecursorEigenSource.md b/doc/content/source/kernels/PrecursorEigenSource.md new file mode 100644 index 0000000000..f8c41734b8 --- /dev/null +++ b/doc/content/source/kernels/PrecursorEigenSource.md @@ -0,0 +1,18 @@ +# PrecursorSource + +!syntax description /Kernels/PrecursorSource + +## Overview + +This object adds the $\frac{1}{k}\sum_{g'= 1}^G \beta_i \nu \Sigma_{g'}^f \phi_{g'}$ precursor +source term of the delayed neutron precursor equation for the $k$-eigenvalue problem. + +## Example Input File Syntax + +!! Describe and include an example of how to use the PrecursorSource object. + +!syntax parameters /Kernels/PrecursorSource + +!syntax inputs /Kernels/PrecursorSource + +!syntax children /Kernels/PrecursorSource diff --git a/include/kernels/DelayedNeutronEigenSource.h b/include/kernels/DelayedNeutronEigenSource.h deleted file mode 100644 index 40da593912..0000000000 --- a/include/kernels/DelayedNeutronEigenSource.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "EigenKernel.h" -#include "ScalarTransportBase.h" - -class DelayedNeutronEigenSource : public EigenKernel, public ScalarTransportBase -{ -public: - DelayedNeutronEigenSource(const InputParameters & parameters); - - static InputParameters validParams(); - -protected: - virtual Real computeQpResidual() override; - virtual Real computeQpJacobian() override; - virtual Real computeQpOffDiagJacobian(unsigned int jvar) override; - - const MaterialProperty> & _decay_constant; - const MaterialProperty> & _d_decay_constant_d_temp; - unsigned int _group; - const MaterialProperty> & _chi_d; - // todo add the jacobian (it's going to be negligible tho) - - unsigned int _num_precursor_groups; - unsigned int _temp_id; - const VariableValue & _temp; - std::vector _pre_concs; - std::vector _pre_ids; -}; diff --git a/include/kernels/PrecursorEigenSource.h b/include/kernels/PrecursorEigenSource.h new file mode 100644 index 0000000000..e742aeae81 --- /dev/null +++ b/include/kernels/PrecursorEigenSource.h @@ -0,0 +1,33 @@ +#pragma once + +#include "EigenKernel.h" +#include "ScalarTransportBase.h" + +/** + * This object computes the residual and Jacobian contribution for the precursor source term in the + * delayed neutron precursor equation for k-eigenvalue problems. + */ +class PrecursorEigenSource : public EigenKernel, public ScalarTransportBase +{ +public: + PrecursorEigenSource(const InputParameters & parameters); + + static InputParameters validParams(); + +protected: + virtual Real computeQpResidual() override; + virtual Real computeQpJacobian() override; + virtual Real computeQpOffDiagJacobian(unsigned int jvar) override; + + const MaterialProperty> & _nsf; + const MaterialProperty> & _d_nsf_d_temp; + unsigned int _num_groups; + const MaterialProperty> & _beta_eff; + const MaterialProperty> & _d_beta_eff_d_temp; + unsigned int _precursor_group; + const VariableValue & _temp; + unsigned int _temp_id; + std::vector _group_fluxes; + std::vector _flux_ids; + Real _prec_scale; +}; diff --git a/include/postprocessors/ElmIntegTotFissNtsPostprocessor.h b/include/postprocessors/ElmIntegTotFissNtsPostprocessor.h index 3eb6b985eb..c39fa9bdc2 100644 --- a/include/postprocessors/ElmIntegTotFissNtsPostprocessor.h +++ b/include/postprocessors/ElmIntegTotFissNtsPostprocessor.h @@ -14,8 +14,26 @@ class ElmIntegTotFissNtsPostprocessor : public ElementIntegralPostprocessor protected: virtual Real computeQpIntegral() override; + // The number of neutron energy groups. int _num_groups; + + // The number of precursor groups. + int _num_precursor_groups; + + // Whether to account for delayed neutrons + bool _account_delayed; + + // nu Sigma_f material property const MaterialProperty> & _nsf; + + // Decay constant material property + const MaterialProperty> & _decay_constant; + std::vector _vars; + + // Group flux variables std::vector _group_fluxes; + + // Precursor concentration variables + std::vector _pre_concs; }; diff --git a/problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i b/problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i index f3d53dbff0..164aaee6d0 100644 --- a/problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i +++ b/problems/033117_nts_temp_pre_parsed_mat/3d_auto_diff_rho.i @@ -22,8 +22,10 @@ offset=2.5 [Mesh] [./file] type = FileMeshGenerator - file = '3d_msre_29x29_136.msh' - # file = jac_test.msh + ## Default to jac_test.msh for quicker syntax check tests. + ## Switch to 3D mesh for actual simulations. + # file = '3d_msre_29x29_136.msh' + file = jac_test.msh [../] [./scale] type = TransformGenerator diff --git a/problems/033117_nts_temp_pre_parsed_mat/jac_test.msh b/problems/033117_nts_temp_pre_parsed_mat/jac_test.msh new file mode 100644 index 0000000000..68f2a8880f --- /dev/null +++ b/problems/033117_nts_temp_pre_parsed_mat/jac_test.msh @@ -0,0 +1,219 @@ +$MeshFormat +4.1 0 8 +$EndMeshFormat +$PhysicalNames +7 +2 3 "moder_bottoms" +2 4 "moder_tops" +2 5 "fuel_bottoms" +2 6 "fuel_tops" +2 7 "moder_sides" +3 1 "moder" +3 2 "fuel" +$EndPhysicalNames +$Entities +16 24 12 2 +1 -1.18585 -1.18585 0 0 +2 1.18585 -1.18585 0 0 +3 1.18585 1.18585 0 0 +4 -1.18585 1.18585 0 0 +5 -2.5 -2.5 0 0 +6 -2.5 2.5 0 0 +7 2.5 2.5 0 0 +8 2.5 -2.5 0 0 +9 -2.5 2.5 5 0 +10 2.5 2.5 5 0 +14 2.5 -2.5 5 0 +18 -2.5 -2.5 5 0 +25 1.18585 1.18585 5 0 +26 1.18585 -1.18585 5 0 +30 -1.18585 -1.18585 5 0 +34 -1.18585 1.18585 5 0 +1 -1.18585 -1.18585 0 -1.18585 1.18585 0 0 2 4 -1 +2 -1.18585 -1.18585 0 1.18585 -1.18585 0 0 2 1 -2 +3 1.18585 -1.18585 0 1.18585 1.18585 0 0 2 3 -2 +4 -1.18585 1.18585 0 1.18585 1.18585 0 0 2 3 -4 +5 -2.5 2.5 0 2.5 2.5 0 0 2 6 -7 +6 2.5 -2.5 0 2.5 2.5 0 0 2 7 -8 +7 -2.5 -2.5 0 2.5 -2.5 0 0 2 8 -5 +8 -2.5 -2.5 0 -2.5 2.5 0 0 2 5 -6 +14 -2.5 2.5 5 2.5 2.5 5 0 2 9 -10 +15 2.5 -2.5 5 2.5 2.5 5 0 2 10 -14 +16 -2.5 -2.5 5 2.5 -2.5 5 0 2 14 -18 +17 -2.5 -2.5 5 -2.5 2.5 5 0 2 18 -9 +18 1.18585 -1.18585 5 1.18585 1.18585 5 0 2 25 -26 +19 -1.18585 -1.18585 5 1.18585 -1.18585 5 0 2 26 -30 +20 -1.18585 -1.18585 5 -1.18585 1.18585 5 0 2 30 -34 +21 -1.18585 1.18585 5 1.18585 1.18585 5 0 2 34 -25 +23 -2.5 2.5 0 -2.5 2.5 5 0 2 6 -9 +24 2.5 2.5 0 2.5 2.5 5 0 2 7 -10 +28 2.5 -2.5 0 2.5 -2.5 5 0 2 8 -14 +32 -2.5 -2.5 0 -2.5 -2.5 5 0 2 5 -18 +39 1.18585 1.18585 0 1.18585 1.18585 5 0 2 3 -25 +40 1.18585 -1.18585 0 1.18585 -1.18585 5 0 2 2 -26 +44 -1.18585 -1.18585 0 -1.18585 -1.18585 5 0 2 1 -30 +48 -1.18585 1.18585 0 -1.18585 1.18585 5 0 2 4 -34 +11 -2.5 -2.5 0 2.5 2.5 0 1 3 8 5 6 7 8 3 -2 -1 -4 +12 -1.18585 -1.18585 0 1.18585 1.18585 0 1 5 4 4 1 2 -3 +25 -2.5 2.5 0 2.5 2.5 5 0 4 5 24 -14 -23 +29 2.5 -2.5 0 2.5 2.5 5 0 4 6 28 -15 -24 +33 -2.5 -2.5 0 2.5 -2.5 5 1 7 4 7 32 -16 -28 +37 -2.5 -2.5 0 -2.5 2.5 5 1 7 4 8 23 -17 -32 +41 1.18585 -1.18585 0 1.18585 1.18585 5 0 4 3 40 -18 -39 +45 -1.18585 -1.18585 0 1.18585 -1.18585 5 0 4 -2 44 -19 -40 +49 -1.18585 -1.18585 0 -1.18585 1.18585 5 0 4 -1 48 -20 -44 +53 -1.18585 1.18585 0 1.18585 1.18585 5 0 4 -4 39 -21 -48 +54 -2.5 -2.5 5 2.5 2.5 5 1 4 8 14 15 16 17 18 19 20 21 +76 -1.18585 -1.18585 5 1.18585 1.18585 5 1 6 4 -21 -20 -19 -18 +1 -2.5 -2.5 0 2.5 2.5 5 1 1 10 -11 54 25 29 33 37 41 -45 -49 -53 +2 -1.18585 -1.18585 0 1.18585 1.18585 5 1 2 6 -12 76 53 49 45 -41 +$EndEntities +$Nodes +24 16 1 16 +0 1 0 1 +1 +-1.18585 -1.18585 0 +0 2 0 1 +2 +1.18585 -1.18585 0 +0 3 0 1 +3 +1.18585 1.18585 0 +0 4 0 1 +4 +-1.18585 1.18585 0 +0 5 0 1 +5 +-2.5 -2.5 0 +0 6 0 1 +6 +-2.5 2.5 0 +0 7 0 1 +7 +2.5 2.5 0 +0 8 0 1 +8 +2.5 -2.5 0 +0 9 0 1 +9 +-2.5 2.5 5 +0 10 0 1 +10 +2.5 2.5 5 +0 14 0 1 +11 +2.5 -2.5 5 +0 18 0 1 +12 +-2.5 -2.5 5 +0 25 0 1 +13 +1.18585 1.18585 5 +0 26 0 1 +14 +1.18585 -1.18585 5 +0 30 0 1 +15 +-1.18585 -1.18585 5 +0 34 0 1 +16 +-1.18585 1.18585 5 +2 11 0 0 +2 12 0 0 +2 33 0 0 +2 37 0 0 +2 54 0 0 +2 76 0 0 +3 1 0 0 +3 2 0 0 +$EndNodes +$Elements +8 17 1 17 +2 11 3 4 +1 4 1 5 6 +2 2 8 5 1 +3 3 7 8 2 +4 3 4 6 7 +2 12 3 1 +5 3 4 1 2 +2 33 3 1 +6 8 5 12 11 +2 37 3 1 +7 5 6 9 12 +2 54 3 4 +8 16 15 12 9 +9 14 11 12 15 +10 13 10 11 14 +11 13 16 9 10 +2 76 3 1 +12 16 15 14 13 +3 1 5 4 +13 5 1 4 6 12 15 16 9 +14 5 8 2 1 12 11 14 15 +15 8 7 3 2 11 10 13 14 +16 6 4 3 7 9 16 13 10 +3 2 5 1 +17 3 4 1 2 13 16 15 14 +$EndElements +$Periodic +17 +0 9 6 +0 +1 +9 6 +0 10 7 +0 +1 +10 7 +0 14 8 +0 +1 +11 8 +0 18 5 +0 +1 +12 5 +0 25 3 +0 +1 +13 3 +0 26 2 +0 +1 +14 2 +0 30 1 +0 +1 +15 1 +0 34 4 +0 +1 +16 4 +1 14 5 +0 +0 +1 15 6 +0 +0 +1 16 7 +0 +0 +1 17 8 +0 +0 +1 18 3 +0 +0 +1 19 2 +0 +0 +1 20 1 +0 +0 +1 21 4 +0 +0 +2 54 11 +0 +0 +$EndPeriodic diff --git a/problems/2017_annals_pub_msre_compare/2group_eigen.i b/problems/2017_annals_pub_msre_compare/2group_eigen.i index 7a32ae8d26..3425f3e756 100644 --- a/problems/2017_annals_pub_msre_compare/2group_eigen.i +++ b/problems/2017_annals_pub_msre_compare/2group_eigen.i @@ -5,7 +5,7 @@ group_fluxes = 'group1 group2' temperature = 922 sss2_input = true - pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6' + pre_concs = '' account_delayed = false [] @@ -67,6 +67,7 @@ [Postprocessors] [./bnorm] type = ElmIntegTotFissNtsPostprocessor + block = 'fuel' execute_on = 'nonlinear linear timestep_end' [../] [./group1diff] diff --git a/problems/2017_annals_pub_msre_compare/4group_eigen.i b/problems/2017_annals_pub_msre_compare/4group_eigen.i index b91de52add..34f2e97936 100644 --- a/problems/2017_annals_pub_msre_compare/4group_eigen.i +++ b/problems/2017_annals_pub_msre_compare/4group_eigen.i @@ -5,7 +5,7 @@ group_fluxes = 'group1 group2 group3 group4' temperature = 922 sss2_input = true - pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6' + pre_concs = '' account_delayed = false [] @@ -65,6 +65,7 @@ [Postprocessors] [./bnorm] type = ElmIntegTotFissNtsPostprocessor + block = 'fuel' execute_on = 'nonlinear linear timestep_end' [../] [./group1diff] diff --git a/problems/2021-cnrs-benchmark/phase-0/README.MD b/problems/2021-cnrs-benchmark/phase-0/README.MD index b7fcc8a10c..2f8af7078f 100644 --- a/problems/2021-cnrs-benchmark/phase-0/README.MD +++ b/problems/2021-cnrs-benchmark/phase-0/README.MD @@ -68,5 +68,6 @@ centerline dedicated to molten salt fast reactors", Annals of Nuclear Energy, vol. 142, July 2020, 107428. -[2] Park S., Munk M., & Huff K. D., "Verification of Moltres for Multiphysics -Simulations of Fast-Spectrum Molten Salt Reactors". (Manuscript in progress) +[2] Park S. M., Munk M., & Huff K. D., "Verification of Moltres for Multiphysics +Simulations of Fast-Spectrum Molten Salt Reactors", Annals of Nuclear Energy, vol. 173, +August 2022, 109111. diff --git a/problems/2021-cnrs-benchmark/phase-0/nts.i b/problems/2021-cnrs-benchmark/phase-0/nts.i index 71287c5e37..a879c62ab8 100644 --- a/problems/2021-cnrs-benchmark/phase-0/nts.i +++ b/problems/2021-cnrs-benchmark/phase-0/nts.i @@ -37,7 +37,6 @@ vacuum_boundaries = 'bottom left right top' create_temperature_var = false eigen = true - transient = false scaling = 1e3 [] diff --git a/problems/2021-cnrs-benchmark/phase-0/tests b/problems/2021-cnrs-benchmark/phase-0/tests new file mode 100644 index 0000000000..150a577897 --- /dev/null +++ b/problems/2021-cnrs-benchmark/phase-0/tests @@ -0,0 +1,20 @@ +[Tests] + [vel_field_syntax] + type = RunApp + input = nts.i + check_input = True + method = opt + [] + [nts_syntax] + type = RunApp + input = nts.i + check_input = True + method = opt + [] + [temperature_syntax] + type = RunApp + input = nts.i + check_input = True + method = opt + [] +[] diff --git a/problems/2021-cnrs-benchmark/phase-1/README.MD b/problems/2021-cnrs-benchmark/phase-1/README.MD index cf9584cfba..26ed0945d5 100644 --- a/problems/2021-cnrs-benchmark/phase-1/README.MD +++ b/problems/2021-cnrs-benchmark/phase-1/README.MD @@ -118,5 +118,6 @@ precursor concentrations of the full coupling solution dedicated to molten salt fast reactors", Annals of Nuclear Energy, vol. 142, July 2020, 107428. -[2] Park S., Munk M., & Huff K. D., "Verification of Moltres for Multiphysics -Simulations of Fast-Spectrum Molten Salt Reactors". (Manuscript in progress) +[2] Park S. M., Munk M., & Huff K. D., "Verification of Moltres for Multiphysics +Simulations of Fast-Spectrum Molten Salt Reactors", Annals of Nuclear Energy, vol. 173, +August 2022, 109111. diff --git a/problems/2021-cnrs-benchmark/phase-1/buoyancy-nts.i b/problems/2021-cnrs-benchmark/phase-1/buoyancy-nts.i index 507ffff536..adb08b1f4c 100644 --- a/problems/2021-cnrs-benchmark/phase-1/buoyancy-nts.i +++ b/problems/2021-cnrs-benchmark/phase-1/buoyancy-nts.i @@ -34,7 +34,6 @@ var_name_base = group vacuum_boundaries = 'bottom left right top' create_temperature_var = false - transient = false eigen = true scaling = 1e3 [] diff --git a/problems/2021-cnrs-benchmark/phase-1/buoyancy.i b/problems/2021-cnrs-benchmark/phase-1/buoyancy.i index a83759554a..38c58887be 100644 --- a/problems/2021-cnrs-benchmark/phase-1/buoyancy.i +++ b/problems/2021-cnrs-benchmark/phase-1/buoyancy.i @@ -9,7 +9,6 @@ alpha = 1 # SUPG stabilization parameter t_alpha = 2e-4 # K-1, Thermal expansion coefficient [GlobalParams] - use_exp_form = false temperature = temp integrate_p_by_parts = true [../] @@ -60,11 +59,11 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [] [AuxVariables] - [./vel_x] + [./velx] family = LAGRANGE order = FIRST [../] - [./vel_y] + [./vely] family = LAGRANGE order = FIRST [../] @@ -98,7 +97,7 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [./momentum_pressure] type = INSADMomentumPressure variable = vel - p = p + pressure = p [../] [./momentum_supg] type = INSADMomentumSUPG @@ -155,13 +154,13 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [AuxKernels] [./vel_x] type = VectorVariableComponentAux - variable = vel_x + variable = velx vector_variable = vel component = 'x' [../] [./vel_y] type = VectorVariableComponentAux - variable = vel_y + variable = vely vector_variable = vel component = 'y' [../] @@ -259,7 +258,7 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [VectorPostprocessors] [./vel_aa] type = LineValueSampler - variable = 'vel_x vel_y' + variable = 'velx vely' start_point = '0 100 0' end_point = '200 100 0' num_points = 201 @@ -269,7 +268,7 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [../] [./vel_bb] type = LineValueSampler - variable = 'vel_x vel_y' + variable = 'velx vely' start_point = '100 0 0' end_point = '100 200 0' num_points = 201 @@ -321,14 +320,14 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient type = MultiAppProjectionTransfer direction = to_multiapp multi_app = ntsApp - source_variable = vel_x + source_variable = velx variable = vel_x [../] [./to_sub_vel_y] type = MultiAppProjectionTransfer direction = to_multiapp multi_app = ntsApp - source_variable = vel_y + source_variable = vely variable = vel_y [../] [./from_sub] diff --git a/problems/2021-cnrs-benchmark/phase-1/circ-fuel.i b/problems/2021-cnrs-benchmark/phase-1/circ-fuel.i index 8f6070bd3c..71e95bb0f5 100644 --- a/problems/2021-cnrs-benchmark/phase-1/circ-fuel.i +++ b/problems/2021-cnrs-benchmark/phase-1/circ-fuel.i @@ -37,7 +37,6 @@ var_name_base = group vacuum_boundaries = 'bottom left right top' create_temperature_var = false - transient = false eigen = true [] diff --git a/problems/2021-cnrs-benchmark/phase-1/full-coupling-nts.i b/problems/2021-cnrs-benchmark/phase-1/full-coupling-nts.i index a352d3143d..4867f25411 100644 --- a/problems/2021-cnrs-benchmark/phase-1/full-coupling-nts.i +++ b/problems/2021-cnrs-benchmark/phase-1/full-coupling-nts.i @@ -34,7 +34,6 @@ var_name_base = group vacuum_boundaries = 'bottom left right top' create_temperature_var = false - transient = false eigen = true scaling = 1e3 [] diff --git a/problems/2021-cnrs-benchmark/phase-1/full-coupling.i b/problems/2021-cnrs-benchmark/phase-1/full-coupling.i index 43fe172101..6715111b05 100644 --- a/problems/2021-cnrs-benchmark/phase-1/full-coupling.i +++ b/problems/2021-cnrs-benchmark/phase-1/full-coupling.i @@ -7,7 +7,6 @@ alpha = 1 # SUPG stabilization parameter t_alpha = 2e-4 # K-1, Thermal expansion coefficient [GlobalParams] - use_exp_form = false temperature = temp integrate_p_by_parts = true [../] @@ -58,11 +57,11 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [] [AuxVariables] - [./vel_x] + [./velx] family = LAGRANGE order = FIRST [../] - [./vel_y] + [./vely] family = LAGRANGE order = FIRST [../] @@ -96,7 +95,7 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [./momentum_pressure] type = INSADMomentumPressure variable = vel - p = p + pressure = p [../] [./momentum_supg] type = INSADMomentumSUPG @@ -153,13 +152,13 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [AuxKernels] [./vel_x] type = VectorVariableComponentAux - variable = vel_x + variable = velx vector_variable = vel component = 'x' [../] [./vel_y] type = VectorVariableComponentAux - variable = vel_y + variable = vely vector_variable = vel component = 'y' [../] @@ -283,14 +282,14 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient type = MultiAppProjectionTransfer direction = to_multiapp multi_app = ntsApp - source_variable = vel_x + source_variable = velx variable = vel_x [../] [./to_sub_vel_y] type = MultiAppProjectionTransfer direction = to_multiapp multi_app = ntsApp - source_variable = vel_y + source_variable = vely variable = vel_y [../] [./from_sub] diff --git a/problems/2021-cnrs-benchmark/phase-1/power-coupling.i b/problems/2021-cnrs-benchmark/phase-1/power-coupling.i index e61cc5dcee..552071a2fc 100644 --- a/problems/2021-cnrs-benchmark/phase-1/power-coupling.i +++ b/problems/2021-cnrs-benchmark/phase-1/power-coupling.i @@ -17,7 +17,6 @@ alpha = 1 # INS SUPG and PSPG stabilization parameter temperature = temp sss2_input = true account_delayed = true - integrate_p_by_parts = true [] [Mesh] @@ -54,7 +53,6 @@ alpha = 1 # INS SUPG and PSPG stabilization parameter var_name_base = group vacuum_boundaries = 'bottom left right top' create_temperature_var = false - transient = false eigen = true scaling = 1e3 [] @@ -214,7 +212,6 @@ alpha = 1 # INS SUPG and PSPG stabilization parameter [Executioner] type = NonlinearEigen - max_power_iterations = 50 # fission power normalization normalization = 'powernorm' @@ -224,7 +221,6 @@ alpha = 1 # INS SUPG and PSPG stabilization parameter # We divide the total power=1e9W by 100 because our length units are in cm. # Our domain = 2m x 2m x 0.01m - xdiff = 'group1diff' bx_norm = 'bnorm' k0 = 1.00 l_max_its = 1000 diff --git a/problems/2021-cnrs-benchmark/phase-1/tests b/problems/2021-cnrs-benchmark/phase-1/tests new file mode 100644 index 0000000000..c2c9c8ce60 --- /dev/null +++ b/problems/2021-cnrs-benchmark/phase-1/tests @@ -0,0 +1,26 @@ +[Tests] + [circ_fuel_syntax] + type = RunApp + input = circ-fuel.i + check_input = true + method = opt + [] + [power_coupling_syntax] + type = RunApp + input = power-coupling.i + check_input = true + method = opt + [] + [buoyancy_syntax] + type = RunApp + input = buoyancy.i + check_input = true + method = opt + [] + [full_coupling_syntax] + type = RunApp + input = full-coupling.i + check_input = true + method = opt + [] +[] diff --git a/problems/2021-cnrs-benchmark/phase-2/README.MD b/problems/2021-cnrs-benchmark/phase-2/README.MD index a44f2dbe88..9b4e068313 100644 --- a/problems/2021-cnrs-benchmark/phase-2/README.MD +++ b/problems/2021-cnrs-benchmark/phase-2/README.MD @@ -6,13 +6,14 @@ Blue Waters supercomputer with 512 MPI processes on 32 XK or 16 XE computing nodes. We recommend running these time dependent simulations on clusters with at least 64 independent processors and 64 GB of RAM. The transient case with the shortest perturbation period -(`transient-perturb-7.i`) took ~24h to complete -5000 timesteps and reach reasonable convergence of the gain and phase shift -values on the 512 MPI processes on Blue Water. `transient-perturb-1.i` took -~125h to complete 4000 timesteps under the same conditions. +took ~0.67h to complete one period (200 timesteps) and 16.67h in total (5000 +timesteps) to reach reasonable convergence of the gain and phase shift +values on the 512 MPI processes on Blue Water. Conversely, the case with the +longest perturbation period took x2.25 longer due to the longer simulation time +needed to reach convergence. Sample command to run the input files: -```mpirun -n 64 $MOLTRES/moltres-opt -i transient-perturb-7.i``` +```mpirun -n 64 $MOLTRES/moltres-opt -i transient.i``` Otherwise, on a general dual/quad-core computer with 8GB of RAM, we recommend running on a coarser 40-by-40 mesh to reduce the memory requirements with the @@ -31,19 +32,20 @@ python scripts to calculate the gain and phase shift from the output data. ### Input files -- ```transient-perturb-#.i``` where `#` ranges from 1 to 7 corresponding to -perturbation frequencies f=[0.0125, 0.025, 0.05, 0.1, 0.2, 0.4, 0.8] +- ```transient.i``` for perturbation frequency f = 0.8 (Change the "freq" and "dt" parameters at +the top of the input file to run different perturbation frequencies. ### Output files -- ```transient-perturb-#_exodus.e```: Exodus output of the forced convection +- ```transient_exodus.e```: Exodus output of the forced convection transient solution -- ```transient-perturb-#_csv.csv```: CSV output of the fission power output at +- ```transient_csv.csv```: CSV output of the fission power output at every timestep [1] Tiberga M. et al., "Results from a multi-physics numerical benchmark for codes dedicated to molten salt fast reactors", Annals of Nuclear Energy, vol. 142, July 2020, 107428. -[2] Park S., Munk M., & Huff K. D., "Verification of Moltres for Multiphysics -Simulations of Fast-Spectrum Molten Salt Reactors". (Manuscript in progress) +[2] Park S. M., Munk M., & Huff K. D., "Verification of Moltres for Multiphysics +Simulations of Fast-Spectrum Molten Salt Reactors", Annals of Nuclear Energy, vol. 173, +August 2022, 109111. diff --git a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-1.i b/problems/2021-cnrs-benchmark/phase-2/transient-perturb-1.i deleted file mode 100644 index d236b09679..0000000000 --- a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-1.i +++ /dev/null @@ -1,495 +0,0 @@ -density = .002 # kg cm-3 -cp = 3075 # J kg-1 K-1, 6.15 / 2.0e-3 -k = .005 # W cm-1 K-1 -gamma = 1 # W cm-3 K-1, Volumetric heat transfer coefficient -viscosity = .5 # dynamic viscosity -alpha = 1 # SUPG stabilization parameter -t_alpha = 2e-4 # K-1, Thermal expansion coefficient - -[GlobalParams] - num_groups = 6 - num_precursor_groups = 8 - use_exp_form = false - group_fluxes = 'group1 group2 group3 group4 group5 group6' - pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8' - temperature = temp - sss2_input = true - account_delayed = true - integrate_p_by_parts = true -[] - -[Mesh] - [file_mesh] - type = FileMeshGenerator - file = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - use_for_exodus_restart = true - [] - [corner_node] - type = ExtraNodesetGenerator - input = file_mesh - new_boundary = 'pinned_node' - coord = '200 200' - [] -[] - -[Problem] - type = FEProblem -[] - -[Variables] - [temp] - family = LAGRANGE - order = FIRST - [] - [vel] - family = LAGRANGE_VEC - order = FIRST - [] - [p] - family = LAGRANGE - order = FIRST - [] -[] - -[Nt] - var_name_base = group - vacuum_boundaries = 'bottom left right top' - create_temperature_var = false - init_nts_from_file = true - eigenvalue_scaling = 0.9927821802 - ## Use the eigenvalue scaling factor below if running on a 40x40 mesh - # eigenvalue_scaling = 0.9926551482 -[] - -[Precursors] - [pres] - var_name_base = pre - outlet_boundaries = '' - constant_velocity_values = false - uvel = vel_x - vvel = vel_y - nt_exp_form = false - family = MONOMIAL - order = CONSTANT - loop_precursors = false - transient = true - [] -[] - -[AuxVariables] - [vel_x] - family = LAGRANGE - order = FIRST - [] - [vel_y] - family = LAGRANGE - order = FIRST - [] - [heat] - family = MONOMIAL - order = FIRST - [] -[] - -[Kernels] - [mass] - type = INSADMass - variable = p - [] - [mass_pspg] - type = INSADMassPSPG - variable = p - [] - [momentum_time] - type = INSADMomentumTimeDerivative - variable = vel - [] - [momentum_advection] - type = INSADMomentumAdvection - variable = vel - [] - [momentum_viscous] - type = INSADMomentumViscous - variable = vel - [] - [momentum_pressure] - type = INSADMomentumPressure - variable = vel - p = p - [] - [momentum_supg] - type = INSADMomentumSUPG - variable = vel - velocity = vel - [] - [buoyancy] - type = INSADBoussinesqBodyForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - alpha_name = 't_alpha' - ref_temp = 'temp_ref' - [] - [gravity] - type = INSADGravityForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - [] - - [temp_time] - type = INSADHeatConductionTimeDerivative - variable = temp - [] - [temp_source] - type = INSADEnergySource - variable = temp - source_variable = heat - [] - [temp_advection] - type = INSADEnergyAdvection - variable = temp - [] - [temp_conduction] - type = ADHeatConduction - variable = temp - thermal_conductivity = 'k' - [] - [temp_supg] - type = INSADEnergySUPG - variable = temp - velocity = vel - [] - [temp_sink] - type = ConvectiveHeatExchanger - variable = temp - htc = ${gamma} - tref = 900 - [] -[] - -[AuxKernels] - [vel_x] - type = VectorVariableComponentAux - variable = vel_x - vector_variable = vel - component = 'x' - [] - [vel_y] - type = VectorVariableComponentAux - variable = vel_y - vector_variable = vel - component = 'y' - [] - [heat_source] - type = FissionHeatSourceTransientAux - variable = heat - [] -[] - -[UserObjects] - [initial_th] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_exodus.e' - system_variables = 'vel_x vel_y p temp' - timestep = LATEST - execute_on = INITIAL - [] - [initial_pre] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - system_variables = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8 heat' - timestep = LATEST - execute_on = INITIAL - [] -[] - -[Controls] - [func_control] - type = RealFunctionControl - parameter = 'Kernels/temp_sink/htc' - function = func_alpha - execute_on = 'initial timestep_begin' - [] -[] - -[Functions] - [func_alpha] - type = ParsedFunction - value = '1 + 0.1 * sin(2*pi*t*.0125)' # Perturbation frequency = 0.0125Hz - [] - [pre1f] - type = SolutionFunction - from_variable = pre1 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre2f] - type = SolutionFunction - from_variable = pre2 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre3f] - type = SolutionFunction - from_variable = pre3 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre4f] - type = SolutionFunction - from_variable = pre4 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre5f] - type = SolutionFunction - from_variable = pre5 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre6f] - type = SolutionFunction - from_variable = pre6 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre7f] - type = SolutionFunction - from_variable = pre7 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre8f] - type = SolutionFunction - from_variable = pre8 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [velxf] - type = SolutionFunction - from_variable = vel_x - solution = initial_th - [] - [velyf] - type = SolutionFunction - from_variable = vel_y - solution = initial_th - [] - [pf] - type = SolutionFunction - from_variable = p - solution = initial_th - [] - [tempf] - type = SolutionFunction - from_variable = temp - solution = initial_th - [] - [heatf] - type = SolutionFunction - from_variable = heat - solution = initial_pre - [] -[] - -[ICs] - [vel_ic] - type = VectorFunctionIC - variable = vel - function_x = velxf - function_y = velyf - [] - [pre1_ic] - type = FunctionIC - variable = pre1 - function = pre1f - [] - [pre2_ic] - type = FunctionIC - variable = pre2 - function = pre2f - [] - [pre3_ic] - type = FunctionIC - variable = pre3 - function = pre3f - [] - [pre4_ic] - type = FunctionIC - variable = pre4 - function = pre4f - [] - [pre5_ic] - type = FunctionIC - variable = pre5 - function = pre5f - [] - [pre6_ic] - type = FunctionIC - variable = pre6 - function = pre6f - [] - [pre7_ic] - type = FunctionIC - variable = pre7 - function = pre7f - [] - [pre8_ic] - type = FunctionIC - variable = pre8 - function = pre8f - [] - [p_ic] - type = FunctionIC - variable = p - function = pf - [] - [temp_ic] - type = FunctionIC - variable = temp - function = tempf - [] - [heat_ic] - type = FunctionIC - variable = heat - function = heatf - [] -[] - -[BCs] - [no_slip] - type = VectorDirichletBC - variable = vel - boundary = 'bottom left right' - values = '0 0 0' - [] - [lid] - type = VectorDirichletBC - variable = vel - boundary = 'top' - values = '50 0 0' - [] - [pressure_pin] - type = DirichletBC - variable = p - boundary = 'pinned_node' - value = 0 - [] -[] - -[Materials] - [fuel] - type = GenericMoltresMaterial - property_tables_root = '../../../property_file_dir/cnrs-benchmark/benchmark_' - interp_type = 'linear' - prop_names = 'temp_ref' - prop_values = '900' - [] - [ad_mat] - type = ADGenericConstantMaterial - prop_names = 'k rho cp mu t_alpha' - prop_values = '${k} ${density} ${cp} ${viscosity} ${t_alpha}' - [] - [ins_temp] - type = INSADStabilized3Eqn - alpha = ${alpha} - velocity = vel - pressure = p - temperature = temp - [] -[] - -[Executioner] - type = Transient - scheme = bdf2 - num_steps = 4000 - - solve_type = 'NEWTON' - petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor' - petsc_options_iname = '-pc_type -sub_pc_type -ksp_gmres_restart -pc_asm_overlap -sub_pc_factor_shift_type' - petsc_options_value = 'asm lu 200 1 NONZERO' - line_search = 'none' - - automatic_scaling = true - compute_scaling_once = false - resid_vs_jac_scaling_param = 0.1 - scaling_group_variables = 'group1 group2 group3 group4 group5 group6; pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8; vel; p; temp' - - nl_abs_tol = 1e-6 - nl_rel_tol = 1e-6 - nl_max_its = 100 - l_max_its = 400 - l_tol = 1e-3 - - dt = 0.4 - dtmin = 0.4 -[] - -[Preconditioning] - [SMP] - type = SMP - full = true - [] -[] - -[Postprocessors] - [memory] - type = MemoryUsage - execute_on = 'INITIAL TIMESTEP_END' - [] - [tot_fissions] - type = ElmIntegTotFissPostprocessor - execute_on = linear - [] - [powernorm] - type = ElmIntegTotFissHeatPostprocessor - execute_on = linear - [] - [group1norm] - type = ElementIntegralVariablePostprocessor - variable = group1 - execute_on = linear - [] - [group1max] - type = NodalExtremeValue - value_type = max - variable = group1 - execute_on = timestep_end - [] - [group2norm] - type = ElementIntegralVariablePostprocessor - variable = group2 - execute_on = linear - [] - [group2max] - type = NodalExtremeValue - value_type = max - variable = group2 - execute_on = timestep_end - [] -[] - -[VectorPostprocessors] -[] - -[Outputs] - perf_graph = true - [exodus] - type = Exodus - interval = 20 - [] - [csv] - type = CSV - append_restart = true - [] - [checkpoint] - type = Checkpoint - num_files = 3 - interval = 20 - [] -[] - -[Debug] - show_var_residual_norms = true -[] diff --git a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-2.i b/problems/2021-cnrs-benchmark/phase-2/transient-perturb-2.i deleted file mode 100644 index f55e7a51e1..0000000000 --- a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-2.i +++ /dev/null @@ -1,494 +0,0 @@ -density = .002 # kg cm-3 -cp = 3075 # J kg-1 K-1, 6.15 / 2.0e-3 -k = .005 # W cm-1 K-1 -gamma = 1 # W cm-3 K-1, Volumetric heat transfer coefficient -viscosity = .5 # dynamic viscosity -alpha = 1 # SUPG stabilization parameter -t_alpha = 2e-4 # K-1, Thermal expansion coefficient - -[GlobalParams] - num_groups = 6 - num_precursor_groups = 8 - use_exp_form = false - group_fluxes = 'group1 group2 group3 group4 group5 group6' - pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8' - temperature = temp - sss2_input = true - account_delayed = true - integrate_p_by_parts = true -[] - -[Mesh] - [file_mesh] - type = FileMeshGenerator - file = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - use_for_exodus_restart = true - [] - [corner_node] - type = ExtraNodesetGenerator - input = file_mesh - new_boundary = 'pinned_node' - coord = '200 200' - [] -[] - -[Problem] - type = FEProblem -[] - -[Variables] - [temp] - family = LAGRANGE - order = FIRST - [] - [vel] - family = LAGRANGE_VEC - order = FIRST - [] - [p] - family = LAGRANGE - order = FIRST - [] -[] - -[Nt] - var_name_base = group - vacuum_boundaries = 'bottom left right top' - create_temperature_var = false - init_nts_from_file = true - eigenvalue_scaling = 0.9927821802 - ## Use the eigenvalue scaling factor below if running on a 40x40 mesh - # eigenvalue_scaling = 0.9926551482 -[] - -[Precursors] - [pres] - var_name_base = pre - outlet_boundaries = '' - constant_velocity_values = false - uvel = vel_x - vvel = vel_y - nt_exp_form = false - family = MONOMIAL - order = CONSTANT - loop_precursors = false - transient = true - [] -[] - -[AuxVariables] - [vel_x] - family = LAGRANGE - order = FIRST - [] - [vel_y] - family = LAGRANGE - order = FIRST - [] - [heat] - family = MONOMIAL - order = FIRST - [] -[] - -[Kernels] - [mass] - type = INSADMass - variable = p - [] - [mass_pspg] - type = INSADMassPSPG - variable = p - [] - [momentum_time] - type = INSADMomentumTimeDerivative - variable = vel - [] - [momentum_advection] - type = INSADMomentumAdvection - variable = vel - [] - [momentum_viscous] - type = INSADMomentumViscous - variable = vel - [] - [momentum_pressure] - type = INSADMomentumPressure - variable = vel - p = p - [] - [momentum_supg] - type = INSADMomentumSUPG - variable = vel - velocity = vel - [] - [buoyancy] - type = INSADBoussinesqBodyForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - alpha_name = 't_alpha' - ref_temp = 'temp_ref' - [] - [gravity] - type = INSADGravityForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - [] - - [temp_time] - type = INSADHeatConductionTimeDerivative - variable = temp - [] - [temp_source] - type = INSADEnergySource - variable = temp - source_variable = heat - [] - [temp_advection] - type = INSADEnergyAdvection - variable = temp - [] - [temp_conduction] - type = ADHeatConduction - variable = temp - thermal_conductivity = 'k' - [] - [temp_supg] - type = INSADEnergySUPG - variable = temp - velocity = vel - [] - [temp_sink] - type = ConvectiveHeatExchanger - variable = temp - htc = ${gamma} - tref = 900 - [] -[] - -[AuxKernels] - [vel_x] - type = VectorVariableComponentAux - variable = vel_x - vector_variable = vel - component = 'x' - [] - [vel_y] - type = VectorVariableComponentAux - variable = vel_y - vector_variable = vel - component = 'y' - [] - [heat_source] - type = FissionHeatSourceTransientAux - variable = heat - [] -[] - -[UserObjects] - [initial_th] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_exodus.e' - system_variables = 'vel_x vel_y p temp' - timestep = LATEST - execute_on = INITIAL - [] - [initial_pre] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - system_variables = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8 heat' - timestep = LATEST - execute_on = INITIAL - [] -[] - -[Controls] - [func_control] - type = RealFunctionControl - parameter = 'Kernels/temp_sink/htc' - function = func_alpha - execute_on = 'initial timestep_begin' - [] -[] - -[Functions] - [func_alpha] - type = ParsedFunction - value = '1 + 0.1 * sin(2*pi*t*.025)' # Perturbation frequency = 0.025Hz - [] - [pre1f] - type = SolutionFunction - from_variable = pre1 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre2f] - type = SolutionFunction - from_variable = pre2 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre3f] - type = SolutionFunction - from_variable = pre3 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre4f] - type = SolutionFunction - from_variable = pre4 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre5f] - type = SolutionFunction - from_variable = pre5 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre6f] - type = SolutionFunction - from_variable = pre6 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre7f] - type = SolutionFunction - from_variable = pre7 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre8f] - type = SolutionFunction - from_variable = pre8 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [velxf] - type = SolutionFunction - from_variable = vel_x - solution = initial_th - [] - [velyf] - type = SolutionFunction - from_variable = vel_y - solution = initial_th - [] - [pf] - type = SolutionFunction - from_variable = p - solution = initial_th - [] - [tempf] - type = SolutionFunction - from_variable = temp - solution = initial_th - [] - [heatf] - type = SolutionFunction - from_variable = heat - solution = initial_pre - [] -[] - -[ICs] - [vel_ic] - type = VectorFunctionIC - variable = vel - function_x = velxf - function_y = velyf - [] - [pre1_ic] - type = FunctionIC - variable = pre1 - function = pre1f - [] - [pre2_ic] - type = FunctionIC - variable = pre2 - function = pre2f - [] - [pre3_ic] - type = FunctionIC - variable = pre3 - function = pre3f - [] - [pre4_ic] - type = FunctionIC - variable = pre4 - function = pre4f - [] - [pre5_ic] - type = FunctionIC - variable = pre5 - function = pre5f - [] - [pre6_ic] - type = FunctionIC - variable = pre6 - function = pre6f - [] - [pre7_ic] - type = FunctionIC - variable = pre7 - function = pre7f - [] - [pre8_ic] - type = FunctionIC - variable = pre8 - function = pre8f - [] - [p_ic] - type = FunctionIC - variable = p - function = pf - [] - [temp_ic] - type = FunctionIC - variable = temp - function = tempf - [] - [heat_ic] - type = FunctionIC - variable = heat - function = heatf - [] -[] - -[BCs] - [no_slip] - type = VectorDirichletBC - variable = vel - boundary = 'bottom left right' - values = '0 0 0' - [] - [lid] - type = VectorDirichletBC - variable = vel - boundary = 'top' - values = '50 0 0' - [] - [pressure_pin] - type = DirichletBC - variable = p - boundary = 'pinned_node' - value = 0 - [] -[] - -[Materials] - [fuel] - type = GenericMoltresMaterial - property_tables_root = '../../../property_file_dir/cnrs-benchmark/benchmark_' - interp_type = 'linear' - prop_names = 'temp_ref' - prop_values = '900' - [] - [ad_mat] - type = ADGenericConstantMaterial - prop_names = 'k rho cp mu t_alpha' - prop_values = '${k} ${density} ${cp} ${viscosity} ${t_alpha}' - [] - [ins_temp] - type = INSADStabilized3Eqn - alpha = ${alpha} - velocity = vel - pressure = p - temperature = temp - [] -[] - -[Executioner] - type = Transient - scheme = bdf2 - num_steps = 4000 - - solve_type = 'NEWTON' - petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor' - petsc_options_iname = '-pc_type -sub_pc_type -ksp_gmres_restart -pc_asm_overlap -sub_pc_factor_shift_type' - petsc_options_value = 'asm lu 200 1 NONZERO' - line_search = 'none' - - automatic_scaling = true - compute_scaling_once = false - resid_vs_jac_scaling_param = 0.1 - scaling_group_variables = 'group1 group2 group3 group4 group5 group6; pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8; vel; p; temp' - - nl_abs_tol = 1e-6 - nl_rel_tol = 1e-6 - nl_max_its = 100 - l_max_its = 400 - l_tol = 1e-3 - - dt = 0.2 -[] - -[Preconditioning] - [SMP] - type = SMP - full = true - [] -[] - -[Postprocessors] - [memory] - type = MemoryUsage - execute_on = 'INITIAL TIMESTEP_END' - [] - [tot_fissions] - type = ElmIntegTotFissPostprocessor - execute_on = linear - [] - [powernorm] - type = ElmIntegTotFissHeatPostprocessor - execute_on = linear - [] - [group1norm] - type = ElementIntegralVariablePostprocessor - variable = group1 - execute_on = linear - [] - [group1max] - type = NodalExtremeValue - value_type = max - variable = group1 - execute_on = timestep_end - [] - [group2norm] - type = ElementIntegralVariablePostprocessor - variable = group2 - execute_on = linear - [] - [group2max] - type = NodalExtremeValue - value_type = max - variable = group2 - execute_on = timestep_end - [] -[] - -[VectorPostprocessors] -[] - -[Outputs] - perf_graph = true - [exodus] - type = Exodus - interval = 20 - [] - [csv] - type = CSV - append_restart = true - [] - [checkpoint] - type = Checkpoint - num_files = 3 - interval = 20 - [] -[] - -[Debug] - show_var_residual_norms = true -[] diff --git a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-3.i b/problems/2021-cnrs-benchmark/phase-2/transient-perturb-3.i deleted file mode 100644 index dc4e39a3ec..0000000000 --- a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-3.i +++ /dev/null @@ -1,494 +0,0 @@ -density = .002 # kg cm-3 -cp = 3075 # J kg-1 K-1, 6.15 / 2.0e-3 -k = .005 # W cm-1 K-1 -gamma = 1 # W cm-3 K-1, Volumetric heat transfer coefficient -viscosity = .5 # dynamic viscosity -alpha = 1 # SUPG stabilization parameter -t_alpha = 2e-4 # K-1, Thermal expansion coefficient - -[GlobalParams] - num_groups = 6 - num_precursor_groups = 8 - use_exp_form = false - group_fluxes = 'group1 group2 group3 group4 group5 group6' - pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8' - temperature = temp - sss2_input = true - account_delayed = true - integrate_p_by_parts = true -[] - -[Mesh] - [file_mesh] - type = FileMeshGenerator - file = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - use_for_exodus_restart = true - [] - [corner_node] - type = ExtraNodesetGenerator - input = file_mesh - new_boundary = 'pinned_node' - coord = '200 200' - [] -[] - -[Problem] - type = FEProblem -[] - -[Variables] - [temp] - family = LAGRANGE - order = FIRST - [] - [vel] - family = LAGRANGE_VEC - order = FIRST - [] - [p] - family = LAGRANGE - order = FIRST - [] -[] - -[Nt] - var_name_base = group - vacuum_boundaries = 'bottom left right top' - create_temperature_var = false - init_nts_from_file = true - eigenvalue_scaling = 0.9927821802 - ## Use the eigenvalue scaling factor below if running on a 40x40 mesh - # eigenvalue_scaling = 0.9926551482 -[] - -[Precursors] - [pres] - var_name_base = pre - outlet_boundaries = '' - constant_velocity_values = false - uvel = vel_x - vvel = vel_y - nt_exp_form = false - family = MONOMIAL - order = CONSTANT - loop_precursors = false - transient = true - [] -[] - -[AuxVariables] - [vel_x] - family = LAGRANGE - order = FIRST - [] - [vel_y] - family = LAGRANGE - order = FIRST - [] - [heat] - family = MONOMIAL - order = FIRST - [] -[] - -[Kernels] - [mass] - type = INSADMass - variable = p - [] - [mass_pspg] - type = INSADMassPSPG - variable = p - [] - [momentum_time] - type = INSADMomentumTimeDerivative - variable = vel - [] - [momentum_advection] - type = INSADMomentumAdvection - variable = vel - [] - [momentum_viscous] - type = INSADMomentumViscous - variable = vel - [] - [momentum_pressure] - type = INSADMomentumPressure - variable = vel - p = p - [] - [momentum_supg] - type = INSADMomentumSUPG - variable = vel - velocity = vel - [] - [buoyancy] - type = INSADBoussinesqBodyForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - alpha_name = 't_alpha' - ref_temp = 'temp_ref' - [] - [gravity] - type = INSADGravityForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - [] - - [temp_time] - type = INSADHeatConductionTimeDerivative - variable = temp - [] - [temp_source] - type = INSADEnergySource - variable = temp - source_variable = heat - [] - [temp_advection] - type = INSADEnergyAdvection - variable = temp - [] - [temp_conduction] - type = ADHeatConduction - variable = temp - thermal_conductivity = 'k' - [] - [temp_supg] - type = INSADEnergySUPG - variable = temp - velocity = vel - [] - [temp_sink] - type = ConvectiveHeatExchanger - variable = temp - htc = ${gamma} - tref = 900 - [] -[] - -[AuxKernels] - [vel_x] - type = VectorVariableComponentAux - variable = vel_x - vector_variable = vel - component = 'x' - [] - [vel_y] - type = VectorVariableComponentAux - variable = vel_y - vector_variable = vel - component = 'y' - [] - [heat_source] - type = FissionHeatSourceTransientAux - variable = heat - [] -[] - -[UserObjects] - [initial_th] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_exodus.e' - system_variables = 'vel_x vel_y p temp' - timestep = LATEST - execute_on = INITIAL - [] - [initial_pre] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - system_variables = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8 heat' - timestep = LATEST - execute_on = INITIAL - [] -[] - -[Controls] - [func_control] - type = RealFunctionControl - parameter = 'Kernels/temp_sink/htc' - function = func_alpha - execute_on = 'initial timestep_begin' - [] -[] - -[Functions] - [func_alpha] - type = ParsedFunction - value = '1 + 0.1 * sin(2*pi*t*.05)' # Perturbation frequency = 0.05Hz - [] - [pre1f] - type = SolutionFunction - from_variable = pre1 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre2f] - type = SolutionFunction - from_variable = pre2 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre3f] - type = SolutionFunction - from_variable = pre3 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre4f] - type = SolutionFunction - from_variable = pre4 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre5f] - type = SolutionFunction - from_variable = pre5 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre6f] - type = SolutionFunction - from_variable = pre6 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre7f] - type = SolutionFunction - from_variable = pre7 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre8f] - type = SolutionFunction - from_variable = pre8 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [velxf] - type = SolutionFunction - from_variable = vel_x - solution = initial_th - [] - [velyf] - type = SolutionFunction - from_variable = vel_y - solution = initial_th - [] - [pf] - type = SolutionFunction - from_variable = p - solution = initial_th - [] - [tempf] - type = SolutionFunction - from_variable = temp - solution = initial_th - [] - [heatf] - type = SolutionFunction - from_variable = heat - solution = initial_pre - [] -[] - -[ICs] - [vel_ic] - type = VectorFunctionIC - variable = vel - function_x = velxf - function_y = velyf - [] - [pre1_ic] - type = FunctionIC - variable = pre1 - function = pre1f - [] - [pre2_ic] - type = FunctionIC - variable = pre2 - function = pre2f - [] - [pre3_ic] - type = FunctionIC - variable = pre3 - function = pre3f - [] - [pre4_ic] - type = FunctionIC - variable = pre4 - function = pre4f - [] - [pre5_ic] - type = FunctionIC - variable = pre5 - function = pre5f - [] - [pre6_ic] - type = FunctionIC - variable = pre6 - function = pre6f - [] - [pre7_ic] - type = FunctionIC - variable = pre7 - function = pre7f - [] - [pre8_ic] - type = FunctionIC - variable = pre8 - function = pre8f - [] - [p_ic] - type = FunctionIC - variable = p - function = pf - [] - [temp_ic] - type = FunctionIC - variable = temp - function = tempf - [] - [heat_ic] - type = FunctionIC - variable = heat - function = heatf - [] -[] - -[BCs] - [no_slip] - type = VectorDirichletBC - variable = vel - boundary = 'bottom left right' - values = '0 0 0' - [] - [lid] - type = VectorDirichletBC - variable = vel - boundary = 'top' - values = '50 0 0' - [] - [pressure_pin] - type = DirichletBC - variable = p - boundary = 'pinned_node' - value = 0 - [] -[] - -[Materials] - [fuel] - type = GenericMoltresMaterial - property_tables_root = '../../../property_file_dir/cnrs-benchmark/benchmark_' - interp_type = 'linear' - prop_names = 'temp_ref' - prop_values = '900' - [] - [ad_mat] - type = ADGenericConstantMaterial - prop_names = 'k rho cp mu t_alpha' - prop_values = '${k} ${density} ${cp} ${viscosity} ${t_alpha}' - [] - [ins_temp] - type = INSADStabilized3Eqn - alpha = ${alpha} - velocity = vel - pressure = p - temperature = temp - [] -[] - -[Executioner] - type = Transient - scheme = bdf2 - num_steps = 5000 - - solve_type = 'NEWTON' - petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor' - petsc_options_iname = '-pc_type -sub_pc_type -ksp_gmres_restart -pc_asm_overlap -sub_pc_factor_shift_type' - petsc_options_value = 'asm lu 200 1 NONZERO' - line_search = 'none' - - automatic_scaling = true - compute_scaling_once = false - resid_vs_jac_scaling_param = 0.1 - scaling_group_variables = 'group1 group2 group3 group4 group5 group6; pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8; vel; p; temp' - - nl_abs_tol = 1e-6 - nl_rel_tol = 1e-6 - nl_max_its = 100 - l_max_its = 400 - l_tol = 1e-4 - - dt = 0.1 -[] - -[Preconditioning] - [SMP] - type = SMP - full = true - [] -[] - -[Postprocessors] - [memory] - type = MemoryUsage - execute_on = 'INITIAL TIMESTEP_END' - [] - [tot_fissions] - type = ElmIntegTotFissPostprocessor - execute_on = linear - [] - [powernorm] - type = ElmIntegTotFissHeatPostprocessor - execute_on = linear - [] - [group1norm] - type = ElementIntegralVariablePostprocessor - variable = group1 - execute_on = linear - [] - [group1max] - type = NodalExtremeValue - value_type = max - variable = group1 - execute_on = timestep_end - [] - [group2norm] - type = ElementIntegralVariablePostprocessor - variable = group2 - execute_on = linear - [] - [group2max] - type = NodalExtremeValue - value_type = max - variable = group2 - execute_on = timestep_end - [] -[] - -[VectorPostprocessors] -[] - -[Outputs] - perf_graph = true - [exodus] - type = Exodus - interval = 20 - [] - [csv] - type = CSV - append_restart = true - [] - [checkpoint] - type = Checkpoint - num_files = 3 - interval = 20 - [] -[] - -[Debug] - show_var_residual_norms = true -[] diff --git a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-4.i b/problems/2021-cnrs-benchmark/phase-2/transient-perturb-4.i deleted file mode 100644 index e91a2a20f2..0000000000 --- a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-4.i +++ /dev/null @@ -1,494 +0,0 @@ -density = .002 # kg cm-3 -cp = 3075 # J kg-1 K-1, 6.15 / 2.0e-3 -k = .005 # W cm-1 K-1 -gamma = 1 # W cm-3 K-1, Volumetric heat transfer coefficient -viscosity = .5 # dynamic viscosity -alpha = 1 # SUPG stabilization parameter -t_alpha = 2e-4 # K-1, Thermal expansion coefficient - -[GlobalParams] - num_groups = 6 - num_precursor_groups = 8 - use_exp_form = false - group_fluxes = 'group1 group2 group3 group4 group5 group6' - pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8' - temperature = temp - sss2_input = true - account_delayed = true - integrate_p_by_parts = true -[] - -[Mesh] - [file_mesh] - type = FileMeshGenerator - file = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - use_for_exodus_restart = true - [] - [corner_node] - type = ExtraNodesetGenerator - input = file_mesh - new_boundary = 'pinned_node' - coord = '200 200' - [] -[] - -[Problem] - type = FEProblem -[] - -[Variables] - [temp] - family = LAGRANGE - order = FIRST - [] - [vel] - family = LAGRANGE_VEC - order = FIRST - [] - [p] - family = LAGRANGE - order = FIRST - [] -[] - -[Nt] - var_name_base = group - vacuum_boundaries = 'bottom left right top' - create_temperature_var = false - init_nts_from_file = true - eigenvalue_scaling = 0.9927821802 - ## Use the eigenvalue scaling factor below if running on a 40x40 mesh - # eigenvalue_scaling = 0.9926551482 -[] - -[Precursors] - [pres] - var_name_base = pre - outlet_boundaries = '' - constant_velocity_values = false - uvel = vel_x - vvel = vel_y - nt_exp_form = false - family = MONOMIAL - order = CONSTANT - loop_precursors = false - transient = true - [] -[] - -[AuxVariables] - [vel_x] - family = LAGRANGE - order = FIRST - [] - [vel_y] - family = LAGRANGE - order = FIRST - [] - [heat] - family = MONOMIAL - order = FIRST - [] -[] - -[Kernels] - [mass] - type = INSADMass - variable = p - [] - [mass_pspg] - type = INSADMassPSPG - variable = p - [] - [momentum_time] - type = INSADMomentumTimeDerivative - variable = vel - [] - [momentum_advection] - type = INSADMomentumAdvection - variable = vel - [] - [momentum_viscous] - type = INSADMomentumViscous - variable = vel - [] - [momentum_pressure] - type = INSADMomentumPressure - variable = vel - p = p - [] - [momentum_supg] - type = INSADMomentumSUPG - variable = vel - velocity = vel - [] - [buoyancy] - type = INSADBoussinesqBodyForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - alpha_name = 't_alpha' - ref_temp = 'temp_ref' - [] - [gravity] - type = INSADGravityForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - [] - - [temp_time] - type = INSADHeatConductionTimeDerivative - variable = temp - [] - [temp_source] - type = INSADEnergySource - variable = temp - source_variable = heat - [] - [temp_advection] - type = INSADEnergyAdvection - variable = temp - [] - [temp_conduction] - type = ADHeatConduction - variable = temp - thermal_conductivity = 'k' - [] - [temp_supg] - type = INSADEnergySUPG - variable = temp - velocity = vel - [] - [temp_sink] - type = ConvectiveHeatExchanger - variable = temp - htc = ${gamma} - tref = 900 - [] -[] - -[AuxKernels] - [vel_x] - type = VectorVariableComponentAux - variable = vel_x - vector_variable = vel - component = 'x' - [] - [vel_y] - type = VectorVariableComponentAux - variable = vel_y - vector_variable = vel - component = 'y' - [] - [heat_source] - type = FissionHeatSourceTransientAux - variable = heat - [] -[] - -[UserObjects] - [initial_th] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_exodus.e' - system_variables = 'vel_x vel_y p temp' - timestep = LATEST - execute_on = INITIAL - [] - [initial_pre] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - system_variables = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8 heat' - timestep = LATEST - execute_on = INITIAL - [] -[] - -[Controls] - [func_control] - type = RealFunctionControl - parameter = 'Kernels/temp_sink/htc' - function = func_alpha - execute_on = 'initial timestep_begin' - [] -[] - -[Functions] - [func_alpha] - type = ParsedFunction - value = '1 + 0.1 * sin(2*pi*t*.1)' # Perturbation frequency = 0.1Hz - [] - [pre1f] - type = SolutionFunction - from_variable = pre1 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre2f] - type = SolutionFunction - from_variable = pre2 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre3f] - type = SolutionFunction - from_variable = pre3 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre4f] - type = SolutionFunction - from_variable = pre4 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre5f] - type = SolutionFunction - from_variable = pre5 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre6f] - type = SolutionFunction - from_variable = pre6 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre7f] - type = SolutionFunction - from_variable = pre7 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre8f] - type = SolutionFunction - from_variable = pre8 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [velxf] - type = SolutionFunction - from_variable = vel_x - solution = initial_th - [] - [velyf] - type = SolutionFunction - from_variable = vel_y - solution = initial_th - [] - [pf] - type = SolutionFunction - from_variable = p - solution = initial_th - [] - [tempf] - type = SolutionFunction - from_variable = temp - solution = initial_th - [] - [heatf] - type = SolutionFunction - from_variable = heat - solution = initial_pre - [] -[] - -[ICs] - [vel_ic] - type = VectorFunctionIC - variable = vel - function_x = velxf - function_y = velyf - [] - [pre1_ic] - type = FunctionIC - variable = pre1 - function = pre1f - [] - [pre2_ic] - type = FunctionIC - variable = pre2 - function = pre2f - [] - [pre3_ic] - type = FunctionIC - variable = pre3 - function = pre3f - [] - [pre4_ic] - type = FunctionIC - variable = pre4 - function = pre4f - [] - [pre5_ic] - type = FunctionIC - variable = pre5 - function = pre5f - [] - [pre6_ic] - type = FunctionIC - variable = pre6 - function = pre6f - [] - [pre7_ic] - type = FunctionIC - variable = pre7 - function = pre7f - [] - [pre8_ic] - type = FunctionIC - variable = pre8 - function = pre8f - [] - [p_ic] - type = FunctionIC - variable = p - function = pf - [] - [temp_ic] - type = FunctionIC - variable = temp - function = tempf - [] - [heat_ic] - type = FunctionIC - variable = heat - function = heatf - [] -[] - -[BCs] - [no_slip] - type = VectorDirichletBC - variable = vel - boundary = 'bottom left right' - values = '0 0 0' - [] - [lid] - type = VectorDirichletBC - variable = vel - boundary = 'top' - values = '50 0 0' - [] - [pressure_pin] - type = DirichletBC - variable = p - boundary = 'pinned_node' - value = 0 - [] -[] - -[Materials] - [fuel] - type = GenericMoltresMaterial - property_tables_root = '../../../property_file_dir/cnrs-benchmark/benchmark_' - interp_type = 'linear' - prop_names = 'temp_ref' - prop_values = '900' - [] - [ad_mat] - type = ADGenericConstantMaterial - prop_names = 'k rho cp mu t_alpha' - prop_values = '${k} ${density} ${cp} ${viscosity} ${t_alpha}' - [] - [ins_temp] - type = INSADStabilized3Eqn - alpha = ${alpha} - velocity = vel - pressure = p - temperature = temp - [] -[] - -[Executioner] - type = Transient - scheme = bdf2 - num_steps = 5000 - - solve_type = 'NEWTON' - petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor' - petsc_options_iname = '-pc_type -sub_pc_type -ksp_gmres_restart -pc_asm_overlap -sub_pc_factor_shift_type' - petsc_options_value = 'asm lu 200 1 NONZERO' - line_search = 'none' - - automatic_scaling = true - compute_scaling_once = false - resid_vs_jac_scaling_param = 0.1 - scaling_group_variables = 'group1 group2 group3 group4 group5 group6; pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8; vel; p; temp' - - nl_abs_tol = 1e-6 - nl_rel_tol = 1e-6 - nl_max_its = 25 - l_max_its = 400 - l_tol = 1e-4 - - dt = 0.05 -[] - -[Preconditioning] - [SMP] - type = SMP - full = true - [] -[] - -[Postprocessors] - [memory] - type = MemoryUsage - execute_on = 'INITIAL TIMESTEP_END' - [] - [tot_fissions] - type = ElmIntegTotFissPostprocessor - execute_on = linear - [] - [powernorm] - type = ElmIntegTotFissHeatPostprocessor - execute_on = linear - [] - [group1norm] - type = ElementIntegralVariablePostprocessor - variable = group1 - execute_on = linear - [] - [group1max] - type = NodalExtremeValue - value_type = max - variable = group1 - execute_on = timestep_end - [] - [group2norm] - type = ElementIntegralVariablePostprocessor - variable = group2 - execute_on = linear - [] - [group2max] - type = NodalExtremeValue - value_type = max - variable = group2 - execute_on = timestep_end - [] -[] - -[VectorPostprocessors] -[] - -[Outputs] - perf_graph = true - [exodus] - type = Exodus - interval = 20 - [] - [csv] - type = CSV - append_restart = true - [] - [checkpoint] - type = Checkpoint - num_files = 3 - interval = 20 - [] -[] - -[Debug] - show_var_residual_norms = true -[] diff --git a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-5.i b/problems/2021-cnrs-benchmark/phase-2/transient-perturb-5.i deleted file mode 100644 index bb255f7f57..0000000000 --- a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-5.i +++ /dev/null @@ -1,494 +0,0 @@ -density = .002 # kg cm-3 -cp = 3075 # J kg-1 K-1, 6.15 / 2.0e-3 -k = .005 # W cm-1 K-1 -gamma = 1 # W cm-3 K-1, Volumetric heat transfer coefficient -viscosity = .5 # dynamic viscosity -alpha = 1 # SUPG stabilization parameter -t_alpha = 2e-4 # K-1, Thermal expansion coefficient - -[GlobalParams] - num_groups = 6 - num_precursor_groups = 8 - use_exp_form = false - group_fluxes = 'group1 group2 group3 group4 group5 group6' - pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8' - temperature = temp - sss2_input = true - account_delayed = true - integrate_p_by_parts = true -[] - -[Mesh] - [file_mesh] - type = FileMeshGenerator - file = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - use_for_exodus_restart = true - [] - [corner_node] - type = ExtraNodesetGenerator - input = file_mesh - new_boundary = 'pinned_node' - coord = '200 200' - [] -[] - -[Problem] - type = FEProblem -[] - -[Variables] - [temp] - family = LAGRANGE - order = FIRST - [] - [vel] - family = LAGRANGE_VEC - order = FIRST - [] - [p] - family = LAGRANGE - order = FIRST - [] -[] - -[Nt] - var_name_base = group - vacuum_boundaries = 'bottom left right top' - create_temperature_var = false - init_nts_from_file = true - eigenvalue_scaling = 0.9927821802 - ## Use the eigenvalue scaling factor below if running on a 40x40 mesh - # eigenvalue_scaling = 0.9926551482 -[] - -[Precursors] - [pres] - var_name_base = pre - outlet_boundaries = '' - constant_velocity_values = false - uvel = vel_x - vvel = vel_y - nt_exp_form = false - family = MONOMIAL - order = CONSTANT - loop_precursors = false - transient = true - [] -[] - -[AuxVariables] - [vel_x] - family = LAGRANGE - order = FIRST - [] - [vel_y] - family = LAGRANGE - order = FIRST - [] - [heat] - family = MONOMIAL - order = FIRST - [] -[] - -[Kernels] - [mass] - type = INSADMass - variable = p - [] - [mass_pspg] - type = INSADMassPSPG - variable = p - [] - [momentum_time] - type = INSADMomentumTimeDerivative - variable = vel - [] - [momentum_advection] - type = INSADMomentumAdvection - variable = vel - [] - [momentum_viscous] - type = INSADMomentumViscous - variable = vel - [] - [momentum_pressure] - type = INSADMomentumPressure - variable = vel - p = p - [] - [momentum_supg] - type = INSADMomentumSUPG - variable = vel - velocity = vel - [] - [buoyancy] - type = INSADBoussinesqBodyForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - alpha_name = 't_alpha' - ref_temp = 'temp_ref' - [] - [gravity] - type = INSADGravityForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - [] - - [temp_time] - type = INSADHeatConductionTimeDerivative - variable = temp - [] - [temp_source] - type = INSADEnergySource - variable = temp - source_variable = heat - [] - [temp_advection] - type = INSADEnergyAdvection - variable = temp - [] - [temp_conduction] - type = ADHeatConduction - variable = temp - thermal_conductivity = 'k' - [] - [temp_supg] - type = INSADEnergySUPG - variable = temp - velocity = vel - [] - [temp_sink] - type = ConvectiveHeatExchanger - variable = temp - htc = ${gamma} - tref = 900 - [] -[] - -[AuxKernels] - [vel_x] - type = VectorVariableComponentAux - variable = vel_x - vector_variable = vel - component = 'x' - [] - [vel_y] - type = VectorVariableComponentAux - variable = vel_y - vector_variable = vel - component = 'y' - [] - [heat_source] - type = FissionHeatSourceTransientAux - variable = heat - [] -[] - -[UserObjects] - [initial_th] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_exodus.e' - system_variables = 'vel_x vel_y p temp' - timestep = LATEST - execute_on = INITIAL - [] - [initial_pre] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - system_variables = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8 heat' - timestep = LATEST - execute_on = INITIAL - [] -[] - -[Controls] - [func_control] - type = RealFunctionControl - parameter = 'Kernels/temp_sink/htc' - function = func_alpha - execute_on = 'initial timestep_begin' - [] -[] - -[Functions] - [func_alpha] - type = ParsedFunction - value = '1 + 0.1 * sin(2*pi*t*.2)' # Perturbation frequency = 0.2Hz - [] - [pre1f] - type = SolutionFunction - from_variable = pre1 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre2f] - type = SolutionFunction - from_variable = pre2 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre3f] - type = SolutionFunction - from_variable = pre3 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre4f] - type = SolutionFunction - from_variable = pre4 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre5f] - type = SolutionFunction - from_variable = pre5 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre6f] - type = SolutionFunction - from_variable = pre6 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre7f] - type = SolutionFunction - from_variable = pre7 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre8f] - type = SolutionFunction - from_variable = pre8 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [velxf] - type = SolutionFunction - from_variable = vel_x - solution = initial_th - [] - [velyf] - type = SolutionFunction - from_variable = vel_y - solution = initial_th - [] - [pf] - type = SolutionFunction - from_variable = p - solution = initial_th - [] - [tempf] - type = SolutionFunction - from_variable = temp - solution = initial_th - [] - [heatf] - type = SolutionFunction - from_variable = heat - solution = initial_pre - [] -[] - -[ICs] - [vel_ic] - type = VectorFunctionIC - variable = vel - function_x = velxf - function_y = velyf - [] - [pre1_ic] - type = FunctionIC - variable = pre1 - function = pre1f - [] - [pre2_ic] - type = FunctionIC - variable = pre2 - function = pre2f - [] - [pre3_ic] - type = FunctionIC - variable = pre3 - function = pre3f - [] - [pre4_ic] - type = FunctionIC - variable = pre4 - function = pre4f - [] - [pre5_ic] - type = FunctionIC - variable = pre5 - function = pre5f - [] - [pre6_ic] - type = FunctionIC - variable = pre6 - function = pre6f - [] - [pre7_ic] - type = FunctionIC - variable = pre7 - function = pre7f - [] - [pre8_ic] - type = FunctionIC - variable = pre8 - function = pre8f - [] - [p_ic] - type = FunctionIC - variable = p - function = pf - [] - [temp_ic] - type = FunctionIC - variable = temp - function = tempf - [] - [heat_ic] - type = FunctionIC - variable = heat - function = heatf - [] -[] - -[BCs] - [no_slip] - type = VectorDirichletBC - variable = vel - boundary = 'bottom left right' - values = '0 0 0' - [] - [lid] - type = VectorDirichletBC - variable = vel - boundary = 'top' - values = '50 0 0' - [] - [pressure_pin] - type = DirichletBC - variable = p - boundary = 'pinned_node' - value = 0 - [] -[] - -[Materials] - [fuel] - type = GenericMoltresMaterial - property_tables_root = '../../../property_file_dir/cnrs-benchmark/benchmark_' - interp_type = 'linear' - prop_names = 'temp_ref' - prop_values = '900' - [] - [ad_mat] - type = ADGenericConstantMaterial - prop_names = 'k rho cp mu t_alpha' - prop_values = '${k} ${density} ${cp} ${viscosity} ${t_alpha}' - [] - [ins_temp] - type = INSADStabilized3Eqn - alpha = ${alpha} - velocity = vel - pressure = p - temperature = temp - [] -[] - -[Executioner] - type = Transient - scheme = bdf2 - num_steps = 5000 - - solve_type = 'NEWTON' - petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor' - petsc_options_iname = '-pc_type -sub_pc_type -ksp_gmres_restart -pc_asm_overlap -sub_pc_factor_shift_type' - petsc_options_value = 'asm lu 200 1 NONZERO' - line_search = 'none' - - automatic_scaling = true - compute_scaling_once = false - resid_vs_jac_scaling_param = 0.1 - scaling_group_variables = 'group1 group2 group3 group4 group5 group6; pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8; vel; p; temp' - - nl_abs_tol = 1e-6 - nl_rel_tol = 1e-6 - nl_max_its = 25 - l_max_its = 400 - l_tol = 1e-4 - - dt = 0.025 -[] - -[Preconditioning] - [SMP] - type = SMP - full = true - [] -[] - -[Postprocessors] - [memory] - type = MemoryUsage - execute_on = 'INITIAL TIMESTEP_END' - [] - [tot_fissions] - type = ElmIntegTotFissPostprocessor - execute_on = linear - [] - [powernorm] - type = ElmIntegTotFissHeatPostprocessor - execute_on = linear - [] - [group1norm] - type = ElementIntegralVariablePostprocessor - variable = group1 - execute_on = linear - [] - [group1max] - type = NodalExtremeValue - value_type = max - variable = group1 - execute_on = timestep_end - [] - [group2norm] - type = ElementIntegralVariablePostprocessor - variable = group2 - execute_on = linear - [] - [group2max] - type = NodalExtremeValue - value_type = max - variable = group2 - execute_on = timestep_end - [] -[] - -[VectorPostprocessors] -[] - -[Outputs] - perf_graph = true - [exodus] - type = Exodus - interval = 20 - [] - [csv] - type = CSV - append_restart = true - [] - [checkpoint] - type = Checkpoint - num_files = 3 - interval = 20 - [] -[] - -[Debug] - show_var_residual_norms = true -[] diff --git a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-6.i b/problems/2021-cnrs-benchmark/phase-2/transient-perturb-6.i deleted file mode 100644 index ec8218d2ce..0000000000 --- a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-6.i +++ /dev/null @@ -1,494 +0,0 @@ -density = .002 # kg cm-3 -cp = 3075 # J kg-1 K-1, 6.15 / 2.0e-3 -k = .005 # W cm-1 K-1 -gamma = 1 # W cm-3 K-1, Volumetric heat transfer coefficient -viscosity = .5 # dynamic viscosity -alpha = 1 # SUPG stabilization parameter -t_alpha = 2e-4 # K-1, Thermal expansion coefficient - -[GlobalParams] - num_groups = 6 - num_precursor_groups = 8 - use_exp_form = false - group_fluxes = 'group1 group2 group3 group4 group5 group6' - pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8' - temperature = temp - sss2_input = true - account_delayed = true - integrate_p_by_parts = true -[] - -[Mesh] - [file_mesh] - type = FileMeshGenerator - file = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - use_for_exodus_restart = true - [] - [corner_node] - type = ExtraNodesetGenerator - input = file_mesh - new_boundary = 'pinned_node' - coord = '200 200' - [] -[] - -[Problem] - type = FEProblem -[] - -[Variables] - [temp] - family = LAGRANGE - order = FIRST - [] - [vel] - family = LAGRANGE_VEC - order = FIRST - [] - [p] - family = LAGRANGE - order = FIRST - [] -[] - -[Nt] - var_name_base = group - vacuum_boundaries = 'bottom left right top' - create_temperature_var = false - init_nts_from_file = true - eigenvalue_scaling = 0.9927821802 - ## Use the eigenvalue scaling factor below if running on a 40x40 mesh - # eigenvalue_scaling = 0.9926551482 -[] - -[Precursors] - [pres] - var_name_base = pre - outlet_boundaries = '' - constant_velocity_values = false - uvel = vel_x - vvel = vel_y - nt_exp_form = false - family = MONOMIAL - order = CONSTANT - loop_precursors = false - transient = true - [] -[] - -[AuxVariables] - [vel_x] - family = LAGRANGE - order = FIRST - [] - [vel_y] - family = LAGRANGE - order = FIRST - [] - [heat] - family = MONOMIAL - order = FIRST - [] -[] - -[Kernels] - [mass] - type = INSADMass - variable = p - [] - [mass_pspg] - type = INSADMassPSPG - variable = p - [] - [momentum_time] - type = INSADMomentumTimeDerivative - variable = vel - [] - [momentum_advection] - type = INSADMomentumAdvection - variable = vel - [] - [momentum_viscous] - type = INSADMomentumViscous - variable = vel - [] - [momentum_pressure] - type = INSADMomentumPressure - variable = vel - p = p - [] - [momentum_supg] - type = INSADMomentumSUPG - variable = vel - velocity = vel - [] - [buoyancy] - type = INSADBoussinesqBodyForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - alpha_name = 't_alpha' - ref_temp = 'temp_ref' - [] - [gravity] - type = INSADGravityForce - variable = vel - # gravity vector, cm s-2 - gravity = '0 -981 0' - [] - - [temp_time] - type = INSADHeatConductionTimeDerivative - variable = temp - [] - [temp_source] - type = INSADEnergySource - variable = temp - source_variable = heat - [] - [temp_advection] - type = INSADEnergyAdvection - variable = temp - [] - [temp_conduction] - type = ADHeatConduction - variable = temp - thermal_conductivity = 'k' - [] - [temp_supg] - type = INSADEnergySUPG - variable = temp - velocity = vel - [] - [temp_sink] - type = ConvectiveHeatExchanger - variable = temp - htc = ${gamma} - tref = 900 - [] -[] - -[AuxKernels] - [vel_x] - type = VectorVariableComponentAux - variable = vel_x - vector_variable = vel - component = 'x' - [] - [vel_y] - type = VectorVariableComponentAux - variable = vel_y - vector_variable = vel - component = 'y' - [] - [heat_source] - type = FissionHeatSourceTransientAux - variable = heat - [] -[] - -[UserObjects] - [initial_th] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_exodus.e' - system_variables = 'vel_x vel_y p temp' - timestep = LATEST - execute_on = INITIAL - [] - [initial_pre] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - system_variables = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8 heat' - timestep = LATEST - execute_on = INITIAL - [] -[] - -[Controls] - [func_control] - type = RealFunctionControl - parameter = 'Kernels/temp_sink/htc' - function = func_alpha - execute_on = 'initial timestep_begin' - [] -[] - -[Functions] - [func_alpha] - type = ParsedFunction - value = '1 + 0.1 * sin(2*pi*t*.4)' # Perturbation frequency = 0.4Hz - [] - [pre1f] - type = SolutionFunction - from_variable = pre1 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre2f] - type = SolutionFunction - from_variable = pre2 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre3f] - type = SolutionFunction - from_variable = pre3 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre4f] - type = SolutionFunction - from_variable = pre4 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre5f] - type = SolutionFunction - from_variable = pre5 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre6f] - type = SolutionFunction - from_variable = pre6 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre7f] - type = SolutionFunction - from_variable = pre7 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre8f] - type = SolutionFunction - from_variable = pre8 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [velxf] - type = SolutionFunction - from_variable = vel_x - solution = initial_th - [] - [velyf] - type = SolutionFunction - from_variable = vel_y - solution = initial_th - [] - [pf] - type = SolutionFunction - from_variable = p - solution = initial_th - [] - [tempf] - type = SolutionFunction - from_variable = temp - solution = initial_th - [] - [heatf] - type = SolutionFunction - from_variable = heat - solution = initial_pre - [] -[] - -[ICs] - [vel_ic] - type = VectorFunctionIC - variable = vel - function_x = velxf - function_y = velyf - [] - [pre1_ic] - type = FunctionIC - variable = pre1 - function = pre1f - [] - [pre2_ic] - type = FunctionIC - variable = pre2 - function = pre2f - [] - [pre3_ic] - type = FunctionIC - variable = pre3 - function = pre3f - [] - [pre4_ic] - type = FunctionIC - variable = pre4 - function = pre4f - [] - [pre5_ic] - type = FunctionIC - variable = pre5 - function = pre5f - [] - [pre6_ic] - type = FunctionIC - variable = pre6 - function = pre6f - [] - [pre7_ic] - type = FunctionIC - variable = pre7 - function = pre7f - [] - [pre8_ic] - type = FunctionIC - variable = pre8 - function = pre8f - [] - [p_ic] - type = FunctionIC - variable = p - function = pf - [] - [temp_ic] - type = FunctionIC - variable = temp - function = tempf - [] - [heat_ic] - type = FunctionIC - variable = heat - function = heatf - [] -[] - -[BCs] - [no_slip] - type = VectorDirichletBC - variable = vel - boundary = 'bottom left right' - values = '0 0 0' - [] - [lid] - type = VectorDirichletBC - variable = vel - boundary = 'top' - values = '50 0 0' - [] - [pressure_pin] - type = DirichletBC - variable = p - boundary = 'pinned_node' - value = 0 - [] -[] - -[Materials] - [fuel] - type = GenericMoltresMaterial - property_tables_root = '../../../property_file_dir/cnrs-benchmark/benchmark_' - interp_type = 'linear' - prop_names = 'temp_ref' - prop_values = '900' - [] - [ad_mat] - type = ADGenericConstantMaterial - prop_names = 'k rho cp mu t_alpha' - prop_values = '${k} ${density} ${cp} ${viscosity} ${t_alpha}' - [] - [ins_temp] - type = INSADStabilized3Eqn - alpha = ${alpha} - velocity = vel - pressure = p - temperature = temp - [] -[] - -[Executioner] - type = Transient - scheme = bdf2 - num_steps = 5000 - - solve_type = 'NEWTON' - petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_linesearch_monitor' - petsc_options_iname = '-pc_type -sub_pc_type -ksp_gmres_restart -pc_asm_overlap -sub_pc_factor_shift_type' - petsc_options_value = 'asm lu 200 1 NONZERO' - line_search = 'none' - - automatic_scaling = true - compute_scaling_once = false - resid_vs_jac_scaling_param = 0.1 - scaling_group_variables = 'group1 group2 group3 group4 group5 group6; pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8; vel; p; temp' - - nl_abs_tol = 1e-6 - nl_rel_tol = 1e-6 - nl_max_its = 25 - l_max_its = 400 - l_tol = 1e-4 - - dt = 0.0125 -[] - -[Preconditioning] - [SMP] - type = SMP - full = true - [] -[] - -[Postprocessors] - [memory] - type = MemoryUsage - execute_on = 'INITIAL TIMESTEP_END' - [] - [tot_fissions] - type = ElmIntegTotFissPostprocessor - execute_on = linear - [] - [powernorm] - type = ElmIntegTotFissHeatPostprocessor - execute_on = linear - [] - [group1norm] - type = ElementIntegralVariablePostprocessor - variable = group1 - execute_on = linear - [] - [group1max] - type = NodalExtremeValue - value_type = max - variable = group1 - execute_on = timestep_end - [] - [group2norm] - type = ElementIntegralVariablePostprocessor - variable = group2 - execute_on = linear - [] - [group2max] - type = NodalExtremeValue - value_type = max - variable = group2 - execute_on = timestep_end - [] -[] - -[VectorPostprocessors] -[] - -[Outputs] - perf_graph = true - [exodus] - type = Exodus - interval = 20 - [] - [csv] - type = CSV - append_restart = true - [] - [checkpoint] - type = Checkpoint - num_files = 3 - interval = 20 - [] -[] - -[Debug] - show_var_residual_norms = true -[] diff --git a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-7.i b/problems/2021-cnrs-benchmark/phase-2/transient.i similarity index 73% rename from problems/2021-cnrs-benchmark/phase-2/transient-perturb-7.i rename to problems/2021-cnrs-benchmark/phase-2/transient.i index b376842206..ea0ca7349d 100644 --- a/problems/2021-cnrs-benchmark/phase-2/transient-perturb-7.i +++ b/problems/2021-cnrs-benchmark/phase-2/transient.i @@ -1,10 +1,14 @@ -density = .002 # kg cm-3 -cp = 3075 # J kg-1 K-1, 6.15 / 2.0e-3 -k = .005 # W cm-1 K-1 -gamma = 1 # W cm-3 K-1, Volumetric heat transfer coefficient -viscosity = .5 # dynamic viscosity -alpha = 1 # SUPG stabilization parameter -t_alpha = 2e-4 # K-1, Thermal expansion coefficient +density = .002 # kg cm-3 +cp = 3075 # J kg-1 K-1, 6.15 / 2.0e-3 +k = .005 # W cm-1 K-1 +gamma = 1 # W cm-3 K-1, Volumetric heat transfer coefficient +viscosity = .5 # dynamic viscosity +alpha = 1 # SUPG stabilization parameter +t_alpha = 2e-4 # K-1, Thermal expansion coefficient + +# Change "freq" and "dt" values for different perturbation frequencies +freq = 0.8 # Perturbation frequency = 0.8 Hz +dt = 0.00625 # Timestep size = 1 / freq / 200 = 0.00625 s [GlobalParams] num_groups = 6 @@ -66,22 +70,23 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient var_name_base = pre outlet_boundaries = '' constant_velocity_values = false - uvel = vel_x - vvel = vel_y + uvel = velx + vvel = vely nt_exp_form = false family = MONOMIAL order = CONSTANT loop_precursors = false transient = true + init_from_file = true [] [] [AuxVariables] - [vel_x] + [velx] family = LAGRANGE order = FIRST [] - [vel_y] + [vely] family = LAGRANGE order = FIRST [] @@ -115,7 +120,7 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [momentum_pressure] type = INSADMomentumPressure variable = vel - p = p + pressure = p [] [momentum_supg] type = INSADMomentumSUPG @@ -171,13 +176,13 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [AuxKernels] [vel_x] type = VectorVariableComponentAux - variable = vel_x + variable = velx vector_variable = vel component = 'x' [] [vel_y] type = VectorVariableComponentAux - variable = vel_y + variable = vely vector_variable = vel component = 'y' [] @@ -191,14 +196,7 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [initial_th] type = SolutionUserObject mesh = '../phase-1/full-coupling_exodus.e' - system_variables = 'vel_x vel_y p temp' - timestep = LATEST - execute_on = INITIAL - [] - [initial_pre] - type = SolutionUserObject - mesh = '../phase-1/full-coupling_out_ntsApp0_exodus.e' - system_variables = 'pre1 pre2 pre3 pre4 pre5 pre6 pre7 pre8 heat' + system_variables = 'velx vely p temp heat' timestep = LATEST execute_on = INITIAL [] @@ -216,64 +214,16 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [Functions] [func_alpha] type = ParsedFunction - value = '1 + 0.1 * sin(2*pi*t*.8)' # Perturbation frequency = 0.8Hz - [] - [pre1f] - type = SolutionFunction - from_variable = pre1 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre2f] - type = SolutionFunction - from_variable = pre2 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre3f] - type = SolutionFunction - from_variable = pre3 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre4f] - type = SolutionFunction - from_variable = pre4 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre5f] - type = SolutionFunction - from_variable = pre5 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre6f] - type = SolutionFunction - from_variable = pre6 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre7f] - type = SolutionFunction - from_variable = pre7 - solution = initial_pre - scale_factor = 7.61666e+17 - [] - [pre8f] - type = SolutionFunction - from_variable = pre8 - solution = initial_pre - scale_factor = 7.61666e+17 + value = '1 + 0.1 * sin(2*pi*t*${freq})' # Perturbation frequency = 0.8Hz [] [velxf] type = SolutionFunction - from_variable = vel_x + from_variable = velx solution = initial_th [] [velyf] type = SolutionFunction - from_variable = vel_y + from_variable = vely solution = initial_th [] [pf] @@ -289,7 +239,7 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient [heatf] type = SolutionFunction from_variable = heat - solution = initial_pre + solution = initial_th [] [] @@ -300,46 +250,6 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient function_x = velxf function_y = velyf [] - [pre1_ic] - type = FunctionIC - variable = pre1 - function = pre1f - [] - [pre2_ic] - type = FunctionIC - variable = pre2 - function = pre2f - [] - [pre3_ic] - type = FunctionIC - variable = pre3 - function = pre3f - [] - [pre4_ic] - type = FunctionIC - variable = pre4 - function = pre4f - [] - [pre5_ic] - type = FunctionIC - variable = pre5 - function = pre5f - [] - [pre6_ic] - type = FunctionIC - variable = pre6 - function = pre6f - [] - [pre7_ic] - type = FunctionIC - variable = pre7 - function = pre7f - [] - [pre8_ic] - type = FunctionIC - variable = pre8 - function = pre8f - [] [p_ic] type = FunctionIC variable = p @@ -422,7 +332,7 @@ t_alpha = 2e-4 # K-1, Thermal expansion coefficient l_max_its = 400 l_tol = 1e-4 - dt = 0.00625 + dt = ${dt} [] [Preconditioning] diff --git a/property_file_dir/cnrs-benchmark/README.MD b/property_file_dir/cnrs-benchmark/README.MD index c489c251d7..bdbed764d1 100644 --- a/property_file_dir/cnrs-benchmark/README.MD +++ b/property_file_dir/cnrs-benchmark/README.MD @@ -1,13 +1,8 @@ # Multigroup cross-section & precursor data for the CNRS benchmark -```feedback.py``` applies the salt thermal expansion feedback on the relevant -diffusion coefficients and cross-sections (DIFFCOEF, FISS, NSF, REMXS, & SP0) -based on the formula provided by Tiberga et al. [1]. Run the script using the -following command: - -``` -$ python3 feedback.py -``` +The ```feedback.py``` script was used to apply salt thermal expansion feedback +on the relevant diffusion coefficients and cross-sections (DIFFCOEF, FISS, NSF, +REMXS, & SP0) based on the formula provided by Tiberga et al. [1]. ```benchmark_CHIT.txt``` is a duplicate of ```benchmark_CHIP.txt``` because Moltres requires CHIT input data even if it doesn't use them in any diff --git a/property_file_dir/cnrs-benchmark/benchmark_DIFFCOEF.txt b/property_file_dir/cnrs-benchmark/benchmark_DIFFCOEF.txt index 18bc10b3d2..7cd8900d04 100644 --- a/property_file_dir/cnrs-benchmark/benchmark_DIFFCOEF.txt +++ b/property_file_dir/cnrs-benchmark/benchmark_DIFFCOEF.txt @@ -1 +1,13 @@ 900 2.80064 1.84021 1.13110 1.44786 1.39750 1.28252 +950.0 2.82893e+00 1.85880e+00 1.14253e+00 1.46248e+00 1.41162e+00 1.29547e+00 +1000.0 2.85780e+00 1.87777e+00 1.15418e+00 1.47741e+00 1.42602e+00 1.30869e+00 +1050.0 2.88726e+00 1.89712e+00 1.16608e+00 1.49264e+00 1.44072e+00 1.32219e+00 +1100.0 2.91733e+00 1.91689e+00 1.17823e+00 1.50819e+00 1.45573e+00 1.33596e+00 +1150.0 2.94804e+00 1.93706e+00 1.19063e+00 1.52406e+00 1.47105e+00 1.35002e+00 +1200.0 2.97940e+00 1.95767e+00 1.20330e+00 1.54028e+00 1.48670e+00 1.36438e+00 +1250.0 3.01144e+00 1.97872e+00 1.21624e+00 1.55684e+00 1.50269e+00 1.37905e+00 +1300.0 3.04417e+00 2.00023e+00 1.22946e+00 1.57376e+00 1.51902e+00 1.39404e+00 +1350.0 3.07763e+00 2.02221e+00 1.24297e+00 1.59105e+00 1.53571e+00 1.40936e+00 +1400.0 3.11182e+00 2.04468e+00 1.25678e+00 1.60873e+00 1.55278e+00 1.42502e+00 +1450.0 3.14679e+00 2.06765e+00 1.27090e+00 1.62681e+00 1.57022e+00 1.44103e+00 +1500.0 3.18255e+00 2.09115e+00 1.28534e+00 1.64530e+00 1.58807e+00 1.45741e+00 diff --git a/property_file_dir/cnrs-benchmark/benchmark_FISS.txt b/property_file_dir/cnrs-benchmark/benchmark_FISS.txt index be23e5ac46..e0eac028ac 100644 --- a/property_file_dir/cnrs-benchmark/benchmark_FISS.txt +++ b/property_file_dir/cnrs-benchmark/benchmark_FISS.txt @@ -1 +1,13 @@ 900 1.11309e-03 1.08682e-03 1.52219e-03 2.58190e-03 5.36326e-03 1.44917e-02 +950.0 1.10196e-03 1.07595e-03 1.50697e-03 2.55608e-03 5.30963e-03 1.43468e-02 +1000.0 1.09083e-03 1.06508e-03 1.49175e-03 2.53026e-03 5.25599e-03 1.42019e-02 +1050.0 1.07970e-03 1.05422e-03 1.47652e-03 2.50444e-03 5.20236e-03 1.40569e-02 +1100.0 1.06857e-03 1.04335e-03 1.46130e-03 2.47862e-03 5.14873e-03 1.39120e-02 +1150.0 1.05744e-03 1.03248e-03 1.44608e-03 2.45280e-03 5.09510e-03 1.37671e-02 +1200.0 1.04630e-03 1.02161e-03 1.43086e-03 2.42699e-03 5.04146e-03 1.36222e-02 +1250.0 1.03517e-03 1.01074e-03 1.41564e-03 2.40117e-03 4.98783e-03 1.34773e-02 +1300.0 1.02404e-03 9.99874e-04 1.40041e-03 2.37535e-03 4.93420e-03 1.33324e-02 +1350.0 1.01291e-03 9.89006e-04 1.38519e-03 2.34953e-03 4.88057e-03 1.31874e-02 +1400.0 1.00178e-03 9.78138e-04 1.36997e-03 2.32371e-03 4.82693e-03 1.30425e-02 +1450.0 9.90650e-04 9.67270e-04 1.35475e-03 2.29789e-03 4.77330e-03 1.28976e-02 +1500.0 9.79519e-04 9.56402e-04 1.33953e-03 2.27207e-03 4.71967e-03 1.27527e-02 diff --git a/property_file_dir/cnrs-benchmark/benchmark_NSF.txt b/property_file_dir/cnrs-benchmark/benchmark_NSF.txt index dcd3f69838..0ef0dea2f3 100644 --- a/property_file_dir/cnrs-benchmark/benchmark_NSF.txt +++ b/property_file_dir/cnrs-benchmark/benchmark_NSF.txt @@ -1 +1,13 @@ 900 3.17806e-03 2.76630e-03 3.70391e-03 6.27730e-03 1.30504e-02 3.52627e-02 +950.0 3.14628e-03 2.73864e-03 3.66687e-03 6.21453e-03 1.29199e-02 3.49101e-02 +1000.0 3.11450e-03 2.71097e-03 3.62983e-03 6.15175e-03 1.27894e-02 3.45574e-02 +1050.0 3.08272e-03 2.68331e-03 3.59279e-03 6.08898e-03 1.26589e-02 3.42048e-02 +1100.0 3.05094e-03 2.65565e-03 3.55575e-03 6.02621e-03 1.25284e-02 3.38522e-02 +1150.0 3.01916e-03 2.62799e-03 3.51871e-03 5.96344e-03 1.23979e-02 3.34996e-02 +1200.0 2.98738e-03 2.60032e-03 3.48168e-03 5.90066e-03 1.22674e-02 3.31469e-02 +1250.0 2.95560e-03 2.57266e-03 3.44464e-03 5.83789e-03 1.21369e-02 3.27943e-02 +1300.0 2.92382e-03 2.54500e-03 3.40760e-03 5.77512e-03 1.20064e-02 3.24417e-02 +1350.0 2.89203e-03 2.51733e-03 3.37056e-03 5.71234e-03 1.18759e-02 3.20891e-02 +1400.0 2.86025e-03 2.48967e-03 3.33352e-03 5.64957e-03 1.17454e-02 3.17364e-02 +1450.0 2.82847e-03 2.46201e-03 3.29648e-03 5.58680e-03 1.16149e-02 3.13838e-02 +1500.0 2.79669e-03 2.43434e-03 3.25944e-03 5.52402e-03 1.14844e-02 3.10312e-02 diff --git a/property_file_dir/cnrs-benchmark/benchmark_REMXS.txt b/property_file_dir/cnrs-benchmark/benchmark_REMXS.txt index 555f7effaf..bf3a262c5b 100644 --- a/property_file_dir/cnrs-benchmark/benchmark_REMXS.txt +++ b/property_file_dir/cnrs-benchmark/benchmark_REMXS.txt @@ -1 +1,13 @@ 900 5.7036e-02 3.3587e-2 1.9716e-2 2.4621e-2 2.3178e-2 3.4333e-2 +950.0 5.64656e-02 3.32511e-02 1.95188e-02 2.43748e-02 2.29462e-02 3.39897e-02 +1000.0 5.58953e-02 3.29153e-02 1.93217e-02 2.41286e-02 2.27144e-02 3.36463e-02 +1050.0 5.53249e-02 3.25794e-02 1.91245e-02 2.38824e-02 2.24827e-02 3.33030e-02 +1100.0 5.47546e-02 3.22435e-02 1.89274e-02 2.36362e-02 2.22509e-02 3.29597e-02 +1150.0 5.41842e-02 3.19077e-02 1.87302e-02 2.33899e-02 2.20191e-02 3.26164e-02 +1200.0 5.36138e-02 3.15718e-02 1.85330e-02 2.31437e-02 2.17873e-02 3.22730e-02 +1250.0 5.30435e-02 3.12359e-02 1.83359e-02 2.28975e-02 2.15555e-02 3.19297e-02 +1300.0 5.24731e-02 3.09000e-02 1.81387e-02 2.26513e-02 2.13238e-02 3.15864e-02 +1350.0 5.19028e-02 3.05642e-02 1.79416e-02 2.24051e-02 2.10920e-02 3.12430e-02 +1400.0 5.13324e-02 3.02283e-02 1.77444e-02 2.21589e-02 2.08602e-02 3.08997e-02 +1450.0 5.07620e-02 2.98924e-02 1.75472e-02 2.19127e-02 2.06284e-02 3.05564e-02 +1500.0 5.01917e-02 2.95566e-02 1.73501e-02 2.16665e-02 2.03966e-02 3.02130e-02 diff --git a/property_file_dir/cnrs-benchmark/benchmark_SP0.txt b/property_file_dir/cnrs-benchmark/benchmark_SP0.txt index 0a2584a8cb..6d93d425e9 100644 --- a/property_file_dir/cnrs-benchmark/benchmark_SP0.txt +++ b/property_file_dir/cnrs-benchmark/benchmark_SP0.txt @@ -1 +1,13 @@ 900 1.08476e-01 5.23316e-02 4.01805e-03 1.09869e-04 2.53290e-05 3.78334e-06 0.0 1.83666e-01 3.19138e-02 2.34218e-05 2.25259e-06 2.00405e-07 0.0 0.0 2.98293e-01 1.63470e-02 1.70575e-05 1.24625e-06 0.0 0.0 0.0 2.17472e-02 1.90243e-02 1.36858e-08 0.0 0.0 0.0 0.0 2.27173e-01 1.05885e-02 0.0 0.0 0.0 0.0 0.0 2.37826e-01 +950.0 1.07391e-01 5.18083e-02 3.97787e-03 1.08770e-04 2.50757e-05 3.74551e-06 0.00000e+00 1.81829e-01 3.15947e-02 2.31876e-05 2.23006e-06 1.98401e-07 0.00000e+00 0.00000e+00 2.95310e-01 1.61835e-02 1.68869e-05 1.23379e-06 0.00000e+00 0.00000e+00 0.00000e+00 2.15297e-02 1.88341e-02 1.35489e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.24901e-01 1.04826e-02 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.35448e-01 +1000.0 1.06306e-01 5.12850e-02 3.93769e-03 1.07672e-04 2.48224e-05 3.70767e-06 0.00000e+00 1.79993e-01 3.12755e-02 2.29534e-05 2.20754e-06 1.96397e-07 0.00000e+00 0.00000e+00 2.92327e-01 1.60201e-02 1.67164e-05 1.22132e-06 0.00000e+00 0.00000e+00 0.00000e+00 2.13123e-02 1.86438e-02 1.34121e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.22630e-01 1.03767e-02 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.33069e-01 +1050.0 1.05222e-01 5.07617e-02 3.89751e-03 1.06573e-04 2.45691e-05 3.66984e-06 0.00000e+00 1.78156e-01 3.09564e-02 2.27191e-05 2.18501e-06 1.94393e-07 0.00000e+00 0.00000e+00 2.89344e-01 1.58566e-02 1.65458e-05 1.20886e-06 0.00000e+00 0.00000e+00 0.00000e+00 2.10948e-02 1.84536e-02 1.32752e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.20358e-01 1.02708e-02 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.30691e-01 +1100.0 1.04137e-01 5.02383e-02 3.85733e-03 1.05474e-04 2.43158e-05 3.63201e-06 0.00000e+00 1.76319e-01 3.06372e-02 2.24849e-05 2.16249e-06 1.92389e-07 0.00000e+00 0.00000e+00 2.86361e-01 1.56931e-02 1.63752e-05 1.19640e-06 0.00000e+00 0.00000e+00 0.00000e+00 2.08773e-02 1.82633e-02 1.31384e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.18086e-01 1.01650e-02 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.28313e-01 +1150.0 1.03052e-01 4.97150e-02 3.81715e-03 1.04376e-04 2.40626e-05 3.59417e-06 0.00000e+00 1.74483e-01 3.03181e-02 2.22507e-05 2.13996e-06 1.90385e-07 0.00000e+00 0.00000e+00 2.83378e-01 1.55297e-02 1.62046e-05 1.18394e-06 0.00000e+00 0.00000e+00 0.00000e+00 2.06598e-02 1.80731e-02 1.30015e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.15814e-01 1.00591e-02 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.25935e-01 +1200.0 1.01967e-01 4.91917e-02 3.77697e-03 1.03277e-04 2.38093e-05 3.55634e-06 0.00000e+00 1.72646e-01 2.99990e-02 2.20165e-05 2.11743e-06 1.88381e-07 0.00000e+00 0.00000e+00 2.80395e-01 1.53662e-02 1.60340e-05 1.17147e-06 0.00000e+00 0.00000e+00 0.00000e+00 2.04424e-02 1.78828e-02 1.28647e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.13543e-01 9.95319e-03 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.23556e-01 +1250.0 1.00883e-01 4.86684e-02 3.73679e-03 1.02178e-04 2.35560e-05 3.51851e-06 0.00000e+00 1.70809e-01 2.96798e-02 2.17823e-05 2.09491e-06 1.86377e-07 0.00000e+00 0.00000e+00 2.77412e-01 1.52027e-02 1.58635e-05 1.15901e-06 0.00000e+00 0.00000e+00 0.00000e+00 2.02249e-02 1.76926e-02 1.27278e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.11271e-01 9.84730e-03 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.21178e-01 +1300.0 9.97979e-02 4.81451e-02 3.69661e-03 1.01079e-04 2.33027e-05 3.48067e-06 0.00000e+00 1.68973e-01 2.93607e-02 2.15481e-05 2.07238e-06 1.84373e-07 0.00000e+00 0.00000e+00 2.74430e-01 1.50392e-02 1.56929e-05 1.14655e-06 0.00000e+00 0.00000e+00 0.00000e+00 2.00074e-02 1.75024e-02 1.25909e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.08999e-01 9.74142e-03 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.18800e-01 +1350.0 9.87132e-02 4.76218e-02 3.65643e-03 9.99808e-05 2.30494e-05 3.44284e-06 0.00000e+00 1.67136e-01 2.90416e-02 2.13138e-05 2.04986e-06 1.82369e-07 0.00000e+00 0.00000e+00 2.71447e-01 1.48758e-02 1.55223e-05 1.13409e-06 0.00000e+00 0.00000e+00 0.00000e+00 1.97900e-02 1.73121e-02 1.24541e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.06727e-01 9.63554e-03 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.16422e-01 +1400.0 9.76284e-02 4.70984e-02 3.61624e-03 9.88821e-05 2.27961e-05 3.40501e-06 0.00000e+00 1.65299e-01 2.87224e-02 2.10796e-05 2.02733e-06 1.80365e-07 0.00000e+00 0.00000e+00 2.68464e-01 1.47123e-02 1.53518e-05 1.12163e-06 0.00000e+00 0.00000e+00 0.00000e+00 1.95725e-02 1.71219e-02 1.23172e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.04456e-01 9.52965e-03 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.14043e-01 +1450.0 9.65436e-02 4.65751e-02 3.57606e-03 9.77834e-05 2.25428e-05 3.36717e-06 0.00000e+00 1.63463e-01 2.84033e-02 2.08454e-05 2.00481e-06 1.78360e-07 0.00000e+00 0.00000e+00 2.65481e-01 1.45488e-02 1.51812e-05 1.10916e-06 0.00000e+00 0.00000e+00 0.00000e+00 1.93550e-02 1.69316e-02 1.21804e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.02184e-01 9.42377e-03 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.11665e-01 +1500.0 9.54589e-02 4.60518e-02 3.53588e-03 9.66847e-05 2.22895e-05 3.32934e-06 0.00000e+00 1.61626e-01 2.80841e-02 2.06112e-05 1.98228e-06 1.76356e-07 0.00000e+00 0.00000e+00 2.62498e-01 1.43854e-02 1.50106e-05 1.09670e-06 0.00000e+00 0.00000e+00 0.00000e+00 1.91375e-02 1.67414e-02 1.20435e-08 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 1.99912e-01 9.31788e-03 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 0.00000e+00 2.09287e-01 diff --git a/src/actions/NtAction.C b/src/actions/NtAction.C index ece82cfe87..3de5c6c2f4 100644 --- a/src/actions/NtAction.C +++ b/src/actions/NtAction.C @@ -251,43 +251,21 @@ NtAction::act() if (getParam("account_delayed")) { - if (!getParam("eigen")) - { - // not the eigenkernel: - InputParameters params = _factory.getValidParams("DelayedNeutronSource"); - params.set("variable") = var_name; - params.set("group_number") = op; - if (isParamValid("pre_blocks")) - params.set>("block") = - getParam>("pre_blocks"); - if (isParamValid("use_exp_form")) - params.set("use_exp_form") = getParam("use_exp_form"); - std::vector include = {"temperature", "pre_concs"}; - params.applySpecificParameters(parameters(), include); - params.set("num_precursor_groups") = _num_precursor_groups; - params.set("eigenvalue_scaling") = getParam("eigenvalue_scaling"); - - std::string kernel_name = "DelayedNeutronSource_" + var_name; - _problem->addKernel("DelayedNeutronSource", kernel_name, params); - } - else - { - // must also scale precursor source term by 1/k: - InputParameters params = _factory.getValidParams("DelayedNeutronEigenSource"); - params.set("variable") = var_name; - params.set("group_number") = op; - if (isParamValid("pre_blocks")) - params.set>("block") = - getParam>("pre_blocks"); - if (isParamValid("use_exp_form")) - params.set("use_exp_form") = getParam("use_exp_form"); - std::vector include = {"temperature", "pre_concs"}; - params.applySpecificParameters(parameters(), include); - params.set("num_precursor_groups") = _num_precursor_groups; - - std::string kernel_name = "DelayedNeutronEigenSource_" + var_name; - _problem->addKernel("DelayedNeutronEigenSource", kernel_name, params); - } + InputParameters params = _factory.getValidParams("DelayedNeutronSource"); + params.set("variable") = var_name; + params.set("group_number") = op; + if (isParamValid("pre_blocks")) + params.set>("block") = + getParam>("pre_blocks"); + if (isParamValid("use_exp_form")) + params.set("use_exp_form") = getParam("use_exp_form"); + std::vector include = {"temperature", "pre_concs"}; + params.applySpecificParameters(parameters(), include); + params.set("num_precursor_groups") = _num_precursor_groups; + params.set("eigenvalue_scaling") = getParam("eigenvalue_scaling"); + + std::string kernel_name = "DelayedNeutronSource_" + var_name; + _problem->addKernel("DelayedNeutronSource", kernel_name, params); } } diff --git a/src/actions/PrecursorAction.C b/src/actions/PrecursorAction.C index d9b17f30a6..86499edb25 100644 --- a/src/actions/PrecursorAction.C +++ b/src/actions/PrecursorAction.C @@ -188,16 +188,32 @@ PrecursorAction::act() void PrecursorAction::addPrecursorSource(const unsigned & op, const std::string & var_name) { - InputParameters params = _factory.getValidParams("PrecursorSource"); - setVarNameAndBlock(params, var_name); - params.set("num_groups") = _num_groups; - params.set("precursor_group_number") = op; - std::vector include = {"temperature", "group_fluxes"}; - params.applySpecificParameters(parameters(), include); - params.set("use_exp_form") = getParam("nt_exp_form"); - - std::string kernel_name = "PrecursorSource_" + var_name + "_" + _object_suffix; - _problem->addKernel("PrecursorSource", kernel_name, params); + if (getParam("eigen")) + { + InputParameters params = _factory.getValidParams("PrecursorEigenSource"); + setVarNameAndBlock(params, var_name); + params.set("num_groups") = _num_groups; + params.set("precursor_group_number") = op; + std::vector include = {"temperature", "group_fluxes"}; + params.applySpecificParameters(parameters(), include); + params.set("use_exp_form") = getParam("nt_exp_form"); + + std::string kernel_name = "PrecursorEigenSource_" + var_name + "_" + _object_suffix; + _problem->addKernel("PrecursorEigenSource", kernel_name, params); + } + else + { + InputParameters params = _factory.getValidParams("PrecursorSource"); + setVarNameAndBlock(params, var_name); + params.set("num_groups") = _num_groups; + params.set("precursor_group_number") = op; + std::vector include = {"temperature", "group_fluxes"}; + params.applySpecificParameters(parameters(), include); + params.set("use_exp_form") = getParam("nt_exp_form"); + + std::string kernel_name = "PrecursorSource_" + var_name + "_" + _object_suffix; + _problem->addKernel("PrecursorSource", kernel_name, params); + } } void diff --git a/src/kernels/DelayedNeutronEigenSource.C b/src/kernels/DelayedNeutronEigenSource.C deleted file mode 100644 index 01b70133ba..0000000000 --- a/src/kernels/DelayedNeutronEigenSource.C +++ /dev/null @@ -1,80 +0,0 @@ -#include "DelayedNeutronEigenSource.h" - -registerMooseObject("MoltresApp", DelayedNeutronEigenSource); - -InputParameters -DelayedNeutronEigenSource::validParams() -{ - InputParameters params = EigenKernel::validParams(); - params += ScalarTransportBase::validParams(); - params.addRequiredParam("num_precursor_groups", "The number of precursor groups."); - params.addCoupledVar("temperature", "The temperature used to interpolate material properties"); - params.addRequiredCoupledVar("pre_concs", "All the variables that hold the precursor " - "concentrations. These MUST be listed by increasing " - "group number."); - params.addRequiredParam("group_number","neutron energy group number for chi_d"); - return params; -} - -DelayedNeutronEigenSource::DelayedNeutronEigenSource(const InputParameters & parameters) - : EigenKernel(parameters), - ScalarTransportBase(parameters), - _decay_constant(getMaterialProperty>("decay_constant")), - _d_decay_constant_d_temp(getMaterialProperty>("d_decay_constant_d_temp")), - _group(getParam("group_number")), - _chi_d(getMaterialProperty>("chi_d")), - _num_precursor_groups(getParam("num_precursor_groups")), - _temp_id(coupled("temperature")), - _temp(coupledValue("temperature")) -{ - unsigned int n = coupledComponents("pre_concs"); - if (!(n == _num_precursor_groups)) - { - mooseError("The number of coupled variables doesn't match the number of groups."); - } - _pre_concs.resize(n); - _pre_ids.resize(n); - for (unsigned int i = 0; i < _pre_concs.size(); ++i) - { - _pre_concs[i] = &coupledValue("pre_concs", i); - _pre_ids[i] = coupled("pre_concs", i); - } -} - -Real -DelayedNeutronEigenSource::computeQpResidual() -{ - Real r = 0; - for (unsigned int i = 0; i < _num_precursor_groups; ++i) - r += -_decay_constant[_qp][i] * computeConcentration((*_pre_concs[i]), _qp); - - return _chi_d[_qp][_group-1] * _test[_i][_qp] * r; -} - -Real -DelayedNeutronEigenSource::computeQpJacobian() -{ - return 0.; -} - -Real -DelayedNeutronEigenSource::computeQpOffDiagJacobian(unsigned int jvar) -{ - Real jac = 0; - for (unsigned int i = 0; i < _num_precursor_groups; ++i) - { - if (jvar == _pre_ids[i]) - { - jac += -_test[_i][_qp] * _decay_constant[_qp][i] * - computeConcentrationDerivative((*_pre_concs[i]), _phi, _j, _qp); - break; - } - } - - if (jvar == _temp_id) - for (unsigned int i = 0; i < _num_precursor_groups; ++i) - jac += -_test[_i][_qp] * computeConcentration((*_pre_concs[i]), _qp) * - _d_decay_constant_d_temp[_qp][i] * _phi[_j][_qp]; - - return _chi_d[_qp][_group-1] * jac; -} diff --git a/src/kernels/PrecursorEigenSource.C b/src/kernels/PrecursorEigenSource.C new file mode 100644 index 0000000000..be43e9b90b --- /dev/null +++ b/src/kernels/PrecursorEigenSource.C @@ -0,0 +1,89 @@ +#include "PrecursorEigenSource.h" + +registerMooseObject("MoltresApp", PrecursorEigenSource); + +InputParameters +PrecursorEigenSource::validParams() +{ + InputParameters params = EigenKernel::validParams(); + params += ScalarTransportBase::validParams(); + params.addClassDescription("Computes the precursor source term in the delayed neutron precursor " + "equation for the k-eigenvalue problem."); + params.addRequiredParam("num_groups", "The total number of energy groups"); + params.addRequiredCoupledVar("group_fluxes", "All the variables that hold the group fluxes. " + "These MUST be listed by decreasing " + "energy/increasing group number."); + params.addParam("precursor_group_number", + "What precursor group this kernel is acting on."); + params.addCoupledVar( + "temperature", 800, "The temperature used to interpolate material properties."); + params.addParam("prec_scale", 1, "Thefactor by which the neutron fluxes are scaled."); + return params; +} + +PrecursorEigenSource::PrecursorEigenSource(const InputParameters & parameters) + : EigenKernel(parameters), + ScalarTransportBase(parameters), + _nsf(getMaterialProperty>("nsf")), + _d_nsf_d_temp(getMaterialProperty>("d_nsf_d_temp")), + _num_groups(getParam("num_groups")), + _beta_eff(getMaterialProperty>("beta_eff")), + _d_beta_eff_d_temp(getMaterialProperty>("d_beta_eff_d_temp")), + _precursor_group(getParam("precursor_group_number") - 1), + _temp(coupledValue("temperature")), + _temp_id(coupled("temperature")), + _prec_scale(getParam("prec_scale")) +{ + _group_fluxes.resize(_num_groups); + _flux_ids.resize(_num_groups); + for (unsigned int i = 0; i < _group_fluxes.size(); ++i) + { + _group_fluxes[i] = &coupledValue("group_fluxes", i); + _flux_ids[i] = coupled("group_fluxes", i); + } +} + +Real +PrecursorEigenSource::computeQpResidual() +{ + Real r = 0; + for (unsigned int i = 0; i < _num_groups; ++i) + { + r += -_test[_i][_qp] * _beta_eff[_qp][_precursor_group] * _nsf[_qp][i] * + computeConcentration((*_group_fluxes[i]), _qp) * _prec_scale; + } + + return r; +} + +Real +PrecursorEigenSource::computeQpJacobian() +{ + return 0; +} + +Real +PrecursorEigenSource::computeQpOffDiagJacobian(unsigned int jvar) +{ + Real jac = 0; + for (unsigned int i = 0; i < _num_groups; ++i) + if (jvar == _flux_ids[i]) + { + jac = -_test[_i][_qp] * _beta_eff[_qp][_precursor_group] * _nsf[_qp][i] * + computeConcentrationDerivative((*_group_fluxes[i]), _phi, _j, _qp) * _prec_scale; + return jac; + } + + if (jvar == _temp_id) + { + for (unsigned int i = 0; i < _num_groups; ++i) + jac += -_test[_i][_qp] * + (_beta_eff[_qp][_precursor_group] * _d_nsf_d_temp[_qp][i] * _phi[_j][_qp] * + computeConcentration((*_group_fluxes[i]), _qp) * _prec_scale + + _d_beta_eff_d_temp[_qp][_precursor_group] * _phi[_j][_qp] * _nsf[_qp][i] * + computeConcentration((*_group_fluxes[i]), _qp) * _prec_scale); + return jac; + } + + return 0; +} diff --git a/src/postprocessors/ElmIntegTotFissNtsPostprocessor.C b/src/postprocessors/ElmIntegTotFissNtsPostprocessor.C index 9c936980cf..b9ff710b38 100644 --- a/src/postprocessors/ElmIntegTotFissNtsPostprocessor.C +++ b/src/postprocessors/ElmIntegTotFissNtsPostprocessor.C @@ -9,7 +9,12 @@ ElmIntegTotFissNtsPostprocessor::validParams() params.addRequiredCoupledVar( "group_fluxes", "The group fluxes. MUST be arranged by decreasing energy/increasing group number."); + params.addCoupledVar("pre_concs", "All the variables that hold the precursor " + "concentrations. These MUST be listed by increasing " + "group number."); params.addRequiredParam("num_groups", "The number of energy groups."); + params.addParam("num_precursor_groups", 0, "The number of precursor groups."); + params.addRequiredParam("account_delayed", "Whether to account for delayed neutrons."); return params; } @@ -17,19 +22,42 @@ ElmIntegTotFissNtsPostprocessor::ElmIntegTotFissNtsPostprocessor(const InputPara : ElementIntegralPostprocessor(parameters), // MooseVariableInterface(this, false), _num_groups(getParam("num_groups")), + _num_precursor_groups(getParam("num_precursor_groups")), + _account_delayed(getParam("account_delayed")), _nsf(getMaterialProperty>("nsf")), + _decay_constant(getMaterialProperty>("decay_constant")), _vars(getCoupledMooseVars()) { addMooseVariableDependency(_vars); int n = coupledComponents("group_fluxes"); if (!(n == _num_groups)) - mooseError("The number of coupled variables doesn't match the number of groups."); + mooseError("The number of group flux variables doesn't match the number of energy groups."); _group_fluxes.resize(n); for (unsigned int i = 0; i < _group_fluxes.size(); ++i) { _group_fluxes[i] = &coupledValue("group_fluxes", i); } + + if (_account_delayed) + { + int m = coupledComponents("pre_concs"); + if (m == 0) + { + mooseError("account_delayed flag set to true but no precursor groups specified." + "If there are no precursor groups, set account_delayed to false"); + } + else if (!(m == _num_precursor_groups)) + { + mooseError("The number of precursor conc variables doesn't match the number" + "of precursor groups."); + } + _pre_concs.resize(m); + for (unsigned int i = 0; i < _pre_concs.size(); ++i) + { + _pre_concs[i] = &coupledValue("pre_concs", i); + } + } } Real @@ -39,5 +67,11 @@ ElmIntegTotFissNtsPostprocessor::computeQpIntegral() for (int i = 0; i < _num_groups; ++i) sum += _nsf[_qp][i] * (*_group_fluxes[i])[_qp]; + if (_account_delayed) + { + for (int i = 0; i < _num_precursor_groups; ++i) + sum += _decay_constant[_qp][i] * (*_pre_concs[i])[_qp]; + } + return sum; } diff --git a/tests/twod_axi_coupled/2d_lattice_structured.geo b/tests/coupled/2d_lattice_structured.geo similarity index 100% rename from tests/twod_axi_coupled/2d_lattice_structured.geo rename to tests/coupled/2d_lattice_structured.geo diff --git a/tests/twod_axi_coupled/2d_lattice_structured.msh b/tests/coupled/2d_lattice_structured.msh similarity index 100% rename from tests/twod_axi_coupled/2d_lattice_structured.msh rename to tests/coupled/2d_lattice_structured.msh diff --git a/tests/twod_axi_coupled/auto_diff_rho.i b/tests/coupled/auto_diff_rho.i similarity index 100% rename from tests/twod_axi_coupled/auto_diff_rho.i rename to tests/coupled/auto_diff_rho.i diff --git a/tests/twod_axi_coupled/auto_diff_rho_serpent.i b/tests/coupled/auto_diff_rho_serpent.i similarity index 100% rename from tests/twod_axi_coupled/auto_diff_rho_serpent.i rename to tests/coupled/auto_diff_rho_serpent.i diff --git a/tests/coupled/coupled_eigenvalue.i b/tests/coupled/coupled_eigenvalue.i new file mode 100644 index 0000000000..edfa92a660 --- /dev/null +++ b/tests/coupled/coupled_eigenvalue.i @@ -0,0 +1,169 @@ +flow_velocity=21.7 # cm/s. See MSRE-properties.ods + +[GlobalParams] + num_groups = 2 + num_precursor_groups = 6 + use_exp_form = false + group_fluxes = 'group1 group2' + temperature = 922 + sss2_input = true + pre_concs = 'pre1 pre2 pre3 pre4 pre5 pre6' + account_delayed = true +[] + +[Mesh] + coord_type = RZ + file = '2d_lattice_structured.msh' +[../] + +[Nt] + var_name_base = group + vacuum_boundaries = 'fuel_bottoms fuel_tops moder_bottoms moder_tops outer_wall' + create_temperature_var = false + eigen = true + pre_blocks = 'fuel' +[] + +[Precursors] + [./pres] + var_name_base = pre + block = 'fuel' + outlet_boundaries = 'fuel_tops' + u_def = 0 + v_def = ${flow_velocity} + w_def = 0 + nt_exp_form = false + loop_precursors = false + family = MONOMIAL + order = CONSTANT + transient = false + eigen = true + [../] +[] + +[Materials] + [./fuel] + type = GenericMoltresMaterial + property_tables_root = '../../property_file_dir/newt_msre_converted_to_serpent/serpent_msre_fuel_' + interp_type = 'spline' + block = 'fuel' + [../] + [./moder] + type = GenericMoltresMaterial + property_tables_root = '../../property_file_dir/newt_msre_converted_to_serpent/serpent_msre_mod_' + interp_type = 'spline' + prop_names = 'k cp' + prop_values = '.312 1760' # Cammi 2011 at 908 K + block = 'moder' + [../] +[] + +[Executioner] + type = InversePowerMethod + max_power_iterations = 50 + xdiff = 'group1diff' + + bx_norm = 'bnorm' + k0 = 1 + l_max_its = 100 + eig_check_tol = 1e-7 + + normal_factor = 1e7 + normalization = powernorm + + solve_type = 'PJFNK' + 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 + block = 'fuel' + execute_on = linear + [] + [powernorm] + type = ElmIntegTotFissHeatPostprocessor + execute_on = linear + [] + [tot_fissions] + type = ElmIntegTotFissPostprocessor + execute_on = linear + [] + [group1norm] + type = ElementIntegralVariablePostprocessor + variable = group1 + execute_on = linear + [] + [group1max] + type = NodalExtremeValue + value_type = max + variable = group1 + execute_on = timestep_end + [] + [group1diff] + type = ElementL2Diff + variable = group1 + execute_on = 'linear timestep_end' + use_displaced_mesh = false + [] + [group2norm] + type = ElementIntegralVariablePostprocessor + variable = group2 + execute_on = linear + [] + [group2max] + type = NodalExtremeValue + value_type = max + variable = group2 + execute_on = timestep_end + [] + [group2diff] + type = ElementL2Diff + variable = group2 + execute_on = 'linear timestep_end' + use_displaced_mesh = false + [] +[] + +[Outputs] + perf_graph = true + print_linear_residuals = true + [./exodus] + type = Exodus + file_base = 'coupled_eigenvalue' + [../] +[] + +[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/tests/twod_axi_coupled/gold/auto_diff_rho.e b/tests/coupled/gold/auto_diff_rho.e similarity index 100% rename from tests/twod_axi_coupled/gold/auto_diff_rho.e rename to tests/coupled/gold/auto_diff_rho.e diff --git a/tests/twod_axi_coupled/gold/auto_diff_rho_serpent.e b/tests/coupled/gold/auto_diff_rho_serpent.e similarity index 100% rename from tests/twod_axi_coupled/gold/auto_diff_rho_serpent.e rename to tests/coupled/gold/auto_diff_rho_serpent.e diff --git a/tests/coupled/gold/coupled_eigenvalue.e b/tests/coupled/gold/coupled_eigenvalue.e new file mode 100644 index 0000000000..d27e8ae2f9 Binary files /dev/null and b/tests/coupled/gold/coupled_eigenvalue.e differ diff --git a/tests/coupled/tests b/tests/coupled/tests new file mode 100644 index 0000000000..191a5737d7 --- /dev/null +++ b/tests/coupled/tests @@ -0,0 +1,23 @@ +[Tests] + [coupled_transient_scale] + type = 'Exodiff' + input = 'auto_diff_rho.i' + exodiff = 'auto_diff_rho.e' + heavy = true + max_time = 300 + [] + [coupled_transient_serpent] + type = 'Exodiff' + input = 'auto_diff_rho_serpent.i' + exodiff = 'auto_diff_rho_serpent.e' + heavy = true + max_time = 300 + [] + [coupled_eigenvalue] + type = 'Exodiff' + input = 'coupled_eigenvalue.i' + exodiff = 'coupled_eigenvalue.e' + # We loosen up the tolerance to make the test pass in parallel. Alternatively, could explore tightening some of the eigen solve tolerances + rel_err = 1e-4 + [] +[] diff --git a/tests/twod_axi_coupled/tests b/tests/twod_axi_coupled/tests deleted file mode 100644 index 0865530bda..0000000000 --- a/tests/twod_axi_coupled/tests +++ /dev/null @@ -1,16 +0,0 @@ -[Tests] - [./coupled_scale] - type = 'Exodiff' - input = 'auto_diff_rho.i' - exodiff = 'auto_diff_rho.e' - heavy = true - max_time = 300 - [../] - [./coupled_serpent] - type = 'Exodiff' - input = 'auto_diff_rho_serpent.i' - exodiff = 'auto_diff_rho_serpent.e' - heavy = true - max_time = 300 - [../] -[]