diff --git a/.civet/blue_crab.yaml b/.civet/blue_crab.yaml index c95d774c8..7a395d92a 100644 --- a/.civet/blue_crab.yaml +++ b/.civet/blue_crab.yaml @@ -12,6 +12,7 @@ lfs_include: - microreactors/KRUSTY - htgr/pbmr400 - htgr/htr10 + - htgr/htr-pm/core-multiphysics - htgr/gpbr200 - htgr/open-xe100 - sfr/vtr diff --git a/.civet/dire_wolf.yaml b/.civet/dire_wolf.yaml index 2ca1c62a5..787e0b99b 100644 --- a/.civet/dire_wolf.yaml +++ b/.civet/dire_wolf.yaml @@ -8,4 +8,5 @@ lfs_include: - microreactors/KRUSTY - htgr/pbmr400 - htgr/open-xe100 + - htgr/htr-pm/core-multiphysics - sfr/vtr diff --git a/.civet/griffin.yaml b/.civet/griffin.yaml index a7cebdb45..28197c7ae 100644 --- a/.civet/griffin.yaml +++ b/.civet/griffin.yaml @@ -14,6 +14,7 @@ lfs_include: - htgr/httr - htgr/gpbr200 - htgr/open-xe100 + - htgr/htr-pm/core-multiphysics - sfr/vtr - sfr/sefor - microreactors/gcmr/assembly/MESH diff --git a/doc/content/bib/vtb.bib b/doc/content/bib/vtb.bib index b3104cecd..893df4bd2 100755 --- a/doc/content/bib/vtb.bib +++ b/doc/content/bib/vtb.bib @@ -2735,6 +2735,88 @@ @techreport{Yan2025sefor month = {09} } +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% references for Gas-Cooled High-Temperature Pebble-Bed Reactor (HTR-PM) + +@article{zhang2016shandong, + title={The Shandong Shidao Bay 200 MWe high-temperature gas-cooled reactor pebble-bed module (HTR-PM) demonstration power plant: an engineering and technological innovation}, + author={Zhang, Zuoyi and Dong, Yujie and Li, Fu and Zhang, Zhengming and Wang, Haitao and Huang, Xiaojin and Li, Hong and Liu, Bing and Wu, Xinxin and Wang, Hong and others}, + journal={Engineering}, + volume={2}, + number={1}, + pages={112--118}, + year={2016}, + publisher={Elsevier} +} + +@article{reitsma2013pbmr, + title={PBMR Coupled Neutronics/Thermal-hydraulics Transient Benchmark. The PBMR-400 Core Design-Volume 1 The Benchmark Definition}, + author={Reitsma, Frederik and Ivanov, Kostadin and Sartori, Enrico and Lee, Hyun Chul and Daavittila, Antti and Leppanen, Jaakko and Girardi, Enrico and Grimod, Maurice and Koeberl, Oliver and Massara, Simone and others}, + year={2013}, + journal={} +} + + +@article{hebert2009development, + title={Development of the subgroup projection method for resonance self-shielding calculations}, + author={H{\'e}bert, Alain}, + journal={Nuclear science and engineering}, + volume={162}, + number={1}, + pages={56--75}, + year={2009}, + publisher={Taylor \& Francis} +} + + +@techreport{schunert2020nrc, + title={NRC Multiphysics Analysis Capability Deployment (FY2021--Part 1)}, + author={Schunert, Sebastian and Giudicelli, Guillaume Louis and Balestra, Paolo and Ortensi, Javier and Freile, Ramiro and Harbour, Logan}, + year={2020}, + institution={Idaho National Lab.(INL), Idaho Falls, ID (United States)} +} + +@techreport{jaradat2023gas, + title={Gas-cooled high-temperature pebble-bed reactor reference plant model}, + author={Jaradat, Mustafa Kamel Mohammad and Schunert, Sebastian and Ortensi, Javier}, + year={2023}, + institution={Idaho National Laboratory (INL), Idaho Falls, ID (United States)} +} + + +@techreport{schunert2022improvements, + title={Improvements in High Temperature Gas Cooled Reactor Modeling Capabilities in the Pronghorn Code}, + author={Schunert, Sebastian and Mohammad Jaradat, Mustafa Kamel and Calvin, Olin W and Giudicelli, Guillaume Louis and Lindsay, Alexander D and Wang, Yaqi and Tano Retamales, Mauricio Eduardo and Walker, Samuel Austin}, + year={2022}, + institution={Idaho National Laboratory (INL), Idaho Falls, ID (United States)} +} + + +@techreport{schunert2021deployment, + title={Deployment of the Finite Volume Method in Pronghorn for Gas and Salt cooled Pebble Bed Reactors}, + author={Schunert, Sebastian and Giudicelli, Guillaume Louis and Lindsay, Alexander D and Balestra, Paolo and Harper, Sterling and Freile, Ramiro and Tano, Mauricio and Ragusa, Jean}, + year={2021}, + institution={Idaho National Laboratory (INL), Idaho Falls, ID (United States)} +} + + +@article{zheng2018study, + title={Study on the DLOFC and PLOFC accidents of the 200 MWe pebble-bed modular high temperature gas-cooled reactor with TINTE and SPECTRA codes}, + author={Zheng, Yanhua and Stempniewicz, Marek M and Chen, Zhipeng and Shi, Lei}, + journal={Annals of Nuclear Energy}, + volume={120}, + pages={763--777}, + year={2018}, + publisher={Elsevier} +} + +@article{strydom2008tinte, + title={TINTE transient results for the OECD 400 MW PBMR benchmark}, + author={Strydom, Gerhard}, + journal={Proceedings of ICAPP ‘08, Anaheim, USA}, + year={2008} +} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % References for SMR-conditions U-50Zr HCF model diff --git a/doc/content/htgr/htr-pm/core-multiphysics/index.md b/doc/content/htgr/htr-pm/core-multiphysics/index.md new file mode 100644 index 000000000..ee7797415 --- /dev/null +++ b/doc/content/htgr/htr-pm/core-multiphysics/index.md @@ -0,0 +1,27 @@ +# HTR-PM Multiphysics Model + +!tag name=HTR-PM Core multiphysics + description=Steady state and transient core model + image=https://mooseframework.inl.gov/virtual_test_bed/media/htrpm_coremultiphysics/solid-temperature-dist.png + pairs=reactor_type:HTGR + reactor:HTR_PM + geometry:core + simulation_type:thermal_hydraulics;neutronics + transient:steady_state;DLOFC + codes_used:Pronghorn;Griffin + input_features:multiapps + V_and_V:verification + computing_needs:Workstation + fiscal_year:2025 + sponsor:NRC + institution:INL + +* Model Point of Contact: Mustafa Jaradat (mustafa.jaradat.at.inl.gov) * + +[Model Description](htr-pm/core-multiphysics/model-description.md) + +[Neutronics Model](htr-pm/core-multiphysics/neutronics-model.md) + +[Thermal Fluid Model](htr-pm/core-multiphysics/thermal-fluid-model.md) + +[Depressurized Loss of Forced Cooling Transient](htr-pm/core-multiphysics/transient.md) diff --git a/doc/content/htgr/htr-pm/core-multiphysics/model-description.md b/doc/content/htgr/htr-pm/core-multiphysics/model-description.md new file mode 100644 index 000000000..a616f58b2 --- /dev/null +++ b/doc/content/htgr/htr-pm/core-multiphysics/model-description.md @@ -0,0 +1,80 @@ +# Gas-Cooled High-Temperature Pebble-Bed Reactor Reference Plant Model + +# Authorship: + +1. Mustafa Jaradat: neutronics model development and Multiphysics analysis (INL). +2. Sebastian Schunert: conceptual development, code development, thermal fluids model development (INL). +3. Javier Ortensi: conceptual development, cross sections, Principal Investigator (INL). + + +# Design Description + +The HTR-PM design is based on the combined experience from the German pebble-bed reactor program from the 1960s through the 1990s and the HTR-10 experience in China [!citep](zhang2016shandong). +The HTR-PM is 250 MWth reactor with the main characteristics include a cylindrical pebble-bed region surrounded by radial, lower, and upper reflectors made of graphite, and it is cooled through gas forced convection. +The radial reflector includes various orifices for the control rod channels, Kleine Absorber Kugel Systeme (KLAK) channels (shutdown system), and fluid riser channels. +This benchmark studies the HTR-PM core in equilibrium conditions and in depressurized loss of forced cooling (DLOFC) transient. +The benchmark problem uses information available on the open literature to develop an equilibrium model of the HTR-PM by depleting fresh core and considering Pebble loading and unloading from the core [!citep](reitsma2013pbmr). + + +The HTR-PM core specifications are as follows: + +| Parameter | Value | +| :-------- |:-----:| +| Core power MWth | 250.00 | +| Core inlet temperature K | 523.15 | +| Core outlet temperature K | 1023.15 | +| Core outlet pressure MPa | 7.0 | +| Pebble-bed radius m | 1.50 | +| Pebble-bed height m | 11.00 | +| Reflector outer radius m | 2.50 | +| Control rods channels | 24 | +| Reactivity Shutdown Channels | 4 | +| Barrel outer radius m | 2.69 | +| Bypass outer radius m | 1.69 | +| Vessel outer radius m | 3.00 | +| Number of pebbles | 419,384 (420,000) | +| Pebble types | 1 pebble type | +| Pebble packing fraction (average) | 0.61 | +| Average number of passes | 15 | +| Average pebble residence time days | 70.5 | + + +The HTR-PM pebble specifications are as follows: + +| Parameter | Value | +| :-------- | :----:| +| Fueled region radius cm | 2.5 | +| Shell layer thickness cm | 0.5 | +| Pebble diameter cm | 6.0 | +| Heavy metal loading per pebble g | 6.95 | +| Number of particles per pebble | 11,668 | +| Particle packing $\%$ | 7.034 | +| Discharge burnup MWd/kg, J/m3 | 90, 4.82 $\times 10^{14}$ | + + +The HTR-PM TRISO particle specifications are as follows + +| Parameter | Value | +| :-------- | :----:| +| Fuel kernel radius cm | 0.025 | +| Buffer outer radius cm | 0.034 | +| IPyC outer radius cm | 0.038 | +| SiC outer radius cm | 0.0415 | +| OPyC outer radius cm | 0.0455 | +| Particle diameter cm | 0.091 | +| Fuel type | UO2 | +| Fuel enrichment | 8.6$\%$ | +| Fuel kernel density kg/m3 | 10,400 | +| Buffer graphite density kg/m3 | 1,100 | +| IPyC, OPyC graphite density kg/m3 | 1,900 | +| SiC density kg/m3 | 3,180 | + + +The benchmark model is composed of four elements. These are: + +- Griffin neutronics model +- Griffin depletion model +- Pronghorn thermal-hydraulics model +- Pebble and TRISO temperature model + + diff --git a/doc/content/htgr/htr-pm/core-multiphysics/neutronics-model.md b/doc/content/htgr/htr-pm/core-multiphysics/neutronics-model.md new file mode 100644 index 000000000..e030dfed3 --- /dev/null +++ b/doc/content/htgr/htr-pm/core-multiphysics/neutronics-model.md @@ -0,0 +1,149 @@ +# Reactor Physics Models + +## Cross Section Generation + +The cross-section preparation capability for PBRs in Griffin is not currently available. Thus, the benchmark relied on the lattice code DRAGON [!citep](reitsma2013pbmr) to prepare microscopic cross sections. + +The DRAGON data libraries used in this work are based on the ENDF/B-VIII.r0 evaluation. For the neutron self-shielding method, the SHEM 281 group library was used with the subgroup projection method [!citep](hebert2009development). The double heterogeneity treatment is based on the H\'ebert method. A current-coupled collision probability (CCCP) flux solution is used for spatial homogenization and energy condensation of microscopic cross sections. The intra-core neutron leakage affects the local spectrum significantly, and it will have an impact on the cross-section homogenization. Nevertheless, this approach with the generated cross sections serves as an initial set to perform preliminary calculations until more sophisticated methods are available in Griffin. +The nominal depletion values are as follows: + +| Parameter | Value | +| :-------- | :----:| +| Fuel temperature K | 898.0 | +| Moderator temperature K | 803.0 | +| Neutron flux n/cm2/sec | 1.521 $\times 10^{14}$ | + +Two models were built in DRAGON. +These are a pebble model and a pebble ensemble as show in [dragon-model]. +The cross sections were prepared in 9 energy group structure and the transmutation and decay chain has 295 isotopes. + +!media htrpm_coremultiphysics/dragon-models.png + style=width:50% + id=dragon-model + caption=Dragon models. + + +### Cross Section File + +The cross-section files are located under "\HTR_PM_PD\xsections\HTR-PM_9G-Tnew.xml.tar.gz". +first you need to unzip the compressed file using the following command + +```tar -zxvf HTR-PM_9G-Tnew.xml.tar.gz``` + +The transmutation and decay chain file is located under "HTR_PM_PD\xsections\DRAGON5_DT.xml". + +The cross sections were prepared in 9 energy group structure and the transmutaion and decay chain has 295 isotopes. + + + +## Neutronics Model + +A neutronics model of the HTR-PM core was developed with Griffin using an axisymmetric (R-Z) geometry with homogenized core regions. Griffin solves steady-state neutron diffusion equation and pebble streamline calculations which solves 1D streamline advection transmutation equation for pebble depletion. +The model is shown in [htr-pm-griffin-model]. + +!media /htrpm_coremultiphysics/htr-pm-griffin-model.png + style=width:50% + id=htr-pm-griffin-model + caption=Griffin model. + +The Griffin model uses six equally spaced streamlines to represent pebble depletion that are centered within the active core elements. The streamlines are located at radii of $r=12.5, 37.5, 62.5, 87.5, 112.5, 137.5$ cm. Pebble velocity is assumed to be uniform so that the fraction of the volumetric flow rate of pebbles through each channel is proportional to the channel area. The six channels are straight down and end at the bottom of the pebble bed. + +The heavy metal loading of $7$ g per pebble, the average discharge burnup of $90$ MWd/kg, the average power density, and the packing fraction of $0.61$, the total irradiation time in the core is estimated to be $1,055$ days, which corresponds to $70$ days per pass in the 15-pass core design The pebble speed ($15.6$ cm/d) and pebble reloading rates ($5,949$ pebbles per day). The discharge burnup of $90$~MWd/kg or $4.82E+14$ $J/m^3$. A total of 10 burnup groups forms the base discretization of the burnup variable. + +The local decay heat power in Griffin is computed from the decay released by fission products as a function of time along with provided by the neutron transmutation and decay chain. + +The steady state neutronics calculation is run through bluecrab using the following command + +``` + mpirun -np 48 blue_crab-opt -i htr_pm_neutronics_ss.i +``` + +The steady state input is composed of blocks. +Initially, the cross sections are imported in the ```GlobalParams``` block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=GlobalParams + +The characteristics of the transport solution are identified as + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=TransportSystems + +The mesh is identified as and contains assignment of materials IDs through ```assign_material_id```as follows: + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=Mesh + +Depletion for the pebbles is defined using the ```PebbleBed``` block as + +!listing htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=PebbleBed + +Materials are defined using the ```Materials``` block as + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=Materials + +Preconditioning parameters for the solver are defined as + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=Preconditioning + +Finally, the execution characteristics of the problem are defined with the ```Executioner``` block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=Executioner + + + + + +## Equilibrium Core Calculations + +The equilibrium core is attained via the streamline depletion method available in Griffin [!citep](schunert2020nrc). +In this depletion approach, a 2D or 3D core flux solution is mapped to 1D axial streamlines. +A set of 1D steady-state advection-transmutation equations for all isotopes are solved in each +streamline. Griffin assumes that the pebble loading and unloading rates are identical. +Full details on the equilibrium model can be found in [!citep](jaradat2023gas). + +The depletion setup is requested through the Griffin input. +Specifically, in the input, the definition of the ```DepletionScheme``` as in the following is used to define +the fuel pebbles as depletable material as + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=DepletionScheme + +## Decay Heat Calculation + +A decay heat model was added for the equilibrium core model to properly perform the loss of +forced cooling transients. The decay heat source is mainly important for transient analyses when +the fission power is reduced to zero due to negative reactivity insertion. In steady state, the decay +heat is assumed to be included in the energy released per fission, and, thus, assumed to have the +same distribution as the prompt fission power. In this decay heat model, the fission products are +grouped into a few decay heat precursor groups (KD), and each group has its unique decay heat +fraction ($f_k$) and constant ($\lambda_k$). +Details on the decay model can be found in [!citep](jaradat2023gas). + + +To calculate the decay heat using Griffin, an ```AuxVariable``` for the decay heat is defined and then using an ```AuxKernel``` the methods of how it is calculated is defined. +Here is definition of the HTR-PM neutronic model ```AuxVariables``` + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=AuxVariables + +The ```AuxKernels``` for the HTR-PM neutronic model are defined as: + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=AuxKernels + +## Multiphysics + +Linking the neutronic solution calculation with thermal fluid solution (which is presented in the next section) is done using the ```MultiApps``` block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=MultiApps + +Transferring field data is done through defining the following block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i block=Transfers + + +The setup of the applications is described in [apps_setup_3]. +Due to the effectively "larger" time step in the neutronics calculations, Griffin is set as the parent application. +The neutronics calculation (a depletion step) is run as a multiapp, this is followed by running the pebble/Triso conduction model which obtains pebble temperatures in various places in the core. +Then Pronghorn is run to perform thermal conduction uses the solution from the conduction model to calculate the coolant temperature. + +!media /htrpm_coremultiphysics/apps_setup_3.png + style=width:50% + id=apps_setup_3 + caption=Application setup for equilibrium core calculation. + diff --git a/doc/content/htgr/htr-pm/core-multiphysics/thermal-fluid-model.md b/doc/content/htgr/htr-pm/core-multiphysics/thermal-fluid-model.md new file mode 100644 index 000000000..56dc5e56e --- /dev/null +++ b/doc/content/htgr/htr-pm/core-multiphysics/thermal-fluid-model.md @@ -0,0 +1,94 @@ +# Thermal Fluid and Thermal Conduction Model + +## Thermal Fluids Model + +The thermal-hydraulics model for Pronghorn is based on ongoing NEAMS work [!citep](schunert2022improvements) [!citep](schunert2021deployment) with some additional improvements. The Pronghorn model uses the weakly compressible finite volume formulation for discretizing the fluid mass, fluid momentum, fluid energy, and solid energy conservation equations. The model includes a riser and bypass flow channels, and the fueling chute as an open flow region. + + +The cold fluid from the circulators enters the core via the vertical risers in the reflector region. The flow then enters the cold plenum, where the flow is diverted into the cavity, upper reflector, and control and shutdown system bypass channels. From the upper cavity, the fluid enters the active core region, then the lower reflector, and finally the outlet plenum. + + +The radiative heat transfer at the outer boundary of the reactor vessel has a small impact on steady-state calculations and a larger impact during the loss of forced cooling (DLOFC) transients. Also, during the loss of flow transient, fluid inflow and outflow boundary conditions are not changed to wall boundary conditions, which leads to a significant change in the helium leaving the core due to thermal expansion, which tends to increase temperature estimates. + +The model for the thermal fluid calculations can be found in [this input](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm-2/htr-pm-flow-fv-ss.i). +A depiction of the geometry and materials in the Pronghorn thermal-hydraulic model and the fluid flow path is shown in [thermo-fluid-model]. + +!media htrpm_coremultiphysics/htr-pm-domain.png + style=width:50% + id=thermo-fluid-model + +The boundary condition for the Pronghorn model of the HTR-PM include: +* Inlet helium flow rate of 96.0 kg/s. +* The inlet fluid temperature is set to 523.15 K. +* The outlet fluid pressure is set to $7\times 10^{6}$ Pa. +* Inlet velocity, outlet pressure, slip-wall, and symmetry boundary conditions are used for the fluid mass, momentum, and energy equations. +* All walls are assumed to be adiabatic for the fluid energy equation, and conjugate heat transfer is treated as a volumetric phenomenon. +* The solid energy equations have adiabatic boundary conditions except for the outside of the pressure vessel +* Radiative and convective boundary conditions were applied between the pressure vessel and isothermal cylindrical reactor cavity cooling system (RCCS) panel with an inner diameter of 4 m, a temperature of $T_{\infty}=300$ K, a heat transfer coefficient of 5 W/m$^{2}$.K, and a surface emissivities are assumed to be 0.8. + +The model input starts by defining geometric parameters for the problem. +Then, global parameters are defined in ```[GlobalParams]``` and the mesh is defined in the ```[Mesh]``` block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-ss.i block=GlobalParams + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-ss.i block=Mesh + + +The definition of the pronghorn Navier-Stokes equation for the solution of the weakly-compressible fluid, and the properties of the fluid go into ```Physics``` block. + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-ss.i block=Physics + +Material properties are defined in the ```[Materials]``` block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-ss.i block=Materials + +The characteristics of the execution of the problem are defined in ```[Executioner]``` block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-ss.i block=Executioner + +And control of output is defined in ```[Outputs]``` block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-ss.i block=Outputs + + +## Pebble Conduction Model: + +The pebble heat conduction model solves the 1D spherical conduction problem assuming a thermal equilibrium approximation in pebble simulations during transient calculations. +Several sources of heat transfer nonuniformity around the pebble were ignored: the coolant flow orientation, pebble-to-pebble contact, pebble-to-reflector contact, and radiation. +A Dirichlet boundary condition is set at the TRISO surface to obtain the fuel temperature, and a Neumann boundary condition would improve energy conservation. + +The model of the pebble conduction is found in ```/htgr/htr-pm-2/pebble_triso.i```. +The model set up is visually depicted in [pebble_conduction_model]. + +!media htrpm_coremultiphysics/apps_setup_3.png + style=width:50% + id=pebble_conduction_model + + +In this model, the mesh is defined as follows + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i block=Mesh + +The model also defines pebble and TRISO temperatures as follows + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i block=Variables + +Materials are defined in ```[Materials]``` block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i block=Materials + +materials thermal conductivity and burnup are defined in ```[Functions]``` block: + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i block=Functions + +These properties are linked to a type of object in the ```[UserObject]``` block as follows + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i block=UserObjects + +The boundary conditions are applied in the ```[BCs]``` block + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i block=BCs + +Finally, the characteristics of the execution process are provided in + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i block=Executioner diff --git a/doc/content/htgr/htr-pm/core-multiphysics/transient.md b/doc/content/htgr/htr-pm/core-multiphysics/transient.md new file mode 100644 index 000000000..f0ab49b34 --- /dev/null +++ b/doc/content/htgr/htr-pm/core-multiphysics/transient.md @@ -0,0 +1,75 @@ +# Depressurized Loss of Forced Cooling Transient (DLOFC) + +The DLOFC transient simulation was initiated by [!citep](reitsma2013pbmr): + +1. Reducing the mass flow rate of the coolant linearly from its nominal value to zero over thirteen seconds. +2. The system pressure was reduced linearly from 7.0 MPa to atmospheric pressure (0.101 MPa). +3. the control rods were fully inserted (SCRAM) to shutdown the reactor after completing the flow rate and pressure ramps. +4. Beyond that, there were no changes to the system's main parameters, and the simulation was performed for up to 140 hours. + +During the DLOFC transient simulation, coupled neutronics and thermal-hydraulics calculations were performed and the following progression of the reactor parameters was observed during the transient: + +1. The reactor power starts decreasing at the beginning of the transient due to the negative thermal feedback. +2. The prompt power goes to zero while the remaining reactor power is just the decay heat component of the fuel. +3. The maximum fluid and solid temperatures start moving axially and toward the top of the core. +4. Temperature distributions change mainly in the radial direction, and there is a significant change in the solid temperature of the reflector and RPV regions. +5. The maximum fuel temperature reaches 1503.26 °C (1776.41 K) during DLOFC transient compared to the reference results which is around 1500 °C [!citep](zheng2018study) and [!citep](strydom2008tinte). + +The set of input files to run the DLOFC can be thought of as the left hand side of the app setup show in [apps_setup_3]. + +!media media/htrpm_coremultiphysics/apps_setup_3.png + style=width:50% + id=apps_setup_3 + +Thus, two inputs are required for this problem. +These are the ```htr_pm_neutronics_tr_dlofc.i``` and ```htr-pm-flow-fv-tr-dlofc.i``` +The first input sets the neutronics calculations and calls the second input which performs the Pronghorn calculations. +The neutronics input is mostly similar to the input in the neutronics section model. +The major difference is in the ```MultiApps``` block in which the pebble/Triso conduction solution is eliminated compared to the steady state input ```htr_pm_neutronics_ss.i```. + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_tr_dlofc.i block=MultiApps + +For the reader's information, ```Mesh``` is imported from a previous run instead of redefining it. + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i block=Mesh + +The ```Physics``` block, variables are imported from the Exodus file. Notice ```velocity_variable```, ```pressure_variable```, and ```fluid_temperature_variable``` definition in ```Physics```. + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i block=Physics + +Additional initial conditions are imported from previous run as in the ```Variables``` block. + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i block=Variables + +The most important difference between the steady state and the transient case calculation is the fact that the transient case (i.e. DLOFC) changes the boundary conditions to mimic the DLOFC, while the steady state case is run with eigenvalue for neutronics and in "transient" mode for other physics until the calculation is converged to the steady state solution. +The pressure, temperature, mass flow variations are defined in the ```Functions``` block as follows + +!listing htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i block=Functions + +# Results + +The fluid temperature distribution at different time steps of the transient are +in [fluid-temperature-dist]. +The pebble surface temperature distribution as a function of time is shown in +[solid-temperature-dist]. + +!media media/htrpm_coremultiphysics/fluid-temperature-dist.png + style=width:50% + id=fluid-temperature-dist + caption=Fluid temperature distribution as a function of time in DLOFC accident condition + +!media media/htrpm_coremultiphysics/solid-temperature-dist.png + style=width:50% + id=solid-temperature-dist + caption=Pebble surface temperature distribution as a function of time in DLOFC accident condition + + +# Input Execution + +The execution lines for the equilibrium core calculations, null transient, and DLOFC transient + +1. mpirun -np 48 blue_crab-opt -i htr_pm_neutronics_ss.i +2. mpirun -np 48 blue_crab-opt -i htr_pm_neutronics_tr_null.i +3. mpirun -np 48 blue_crab-opt -i htr_pm_neutronics_tr_dlofc.i + +Note that the steady state solution should be provided before running any transient calculations to setup initial conditions. diff --git a/doc/content/htgr/htr-pm/htr-pm_model.md b/doc/content/htgr/htr-pm/sam-model/htr-pm_model.md similarity index 84% rename from doc/content/htgr/htr-pm/htr-pm_model.md rename to doc/content/htgr/htr-pm/sam-model/htr-pm_model.md index eb9e4af7b..8b3801b7d 100644 --- a/doc/content/htgr/htr-pm/htr-pm_model.md +++ b/doc/content/htgr/htr-pm/sam-model/htr-pm_model.md @@ -68,19 +68,19 @@ Parameters and variables that are used repeatedly in the input file are first de Parameters that are globally true are defined in this block. Some of these include the direction of gravity, the name of Equation of State (eos) used, and the name of parameters such as velocity (in x and y directions), pressure, temperature, and density. By doing so, users can avoid defining these parameters in the subsequent blocks where the definitions of these parameters are required. However, it should be pointed out that the global definition can be overwritten by simply defining them separately in a block. Note that the velocity in x and y directions are defined as `u` and `v` here, respectively. -!listing htgr/htr-pm/ss-main.i block=GlobalParams language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=GlobalParams language=cpp ### Mesh The mesh file is specified in this block. In this model, the mesh file is in Exodus (.e) format. If R-Z coordinate is used, the direction of the vertical axis also needs to be specified. -!listing htgr/htr-pm/ss-main.i block=Mesh language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Mesh language=cpp ### Problem This block specifies the type of problem being solved by SAM. The type of coordinate system used in the model is also specified here. Note that if not provided, SAM assumes a Cartesian coordinate by default. -!listing htgr/htr-pm/ss-main.i block=Problem language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Problem language=cpp To restart a simulation, the location of the checkpoint file is specified with the `restart_file_base` parameter. The keyword `LATEST` is used to restart the problem from the most recent checkpoint. @@ -92,159 +92,159 @@ To restart a simulation, the location of the checkpoint file is specified with t Functions are defined in this block. Some examples of function types are `PieceWiseLinear`, `CompositeFunction`, and `ParsedFunction`. The `PieceWiseLinear` function is used to define the change of a parameter with respect to position or time. Below is an example of a time-dependent `PieceWiseLinear` function: -!listing htgr/htr-pm/ss-main.i block=Q_time language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Q_time language=cpp For a position-dependent `PieceWiseLinear` function, the parameter `axis` is used to define the direction in which the position is changing. -!listing htgr/htr-pm/ss-main.i block=Q_axial language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Q_axial language=cpp A `CompositeFunction` is used to combine multiple functions, as shown below: -!listing htgr/htr-pm/ss-main.i block=Q_fn language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Q_fn language=cpp A `ParsedFunction` allows operation to be performed to an variable. The variable can be postprocessor outputs or other variables. The example below shows how the average temperature is calculated using the inlet and outlet temperatures obtained from two postprocessors named `2Dreceiver_temperature_in` and `2Dreceiver_temperature_out`. -!listing htgr/htr-pm/ss-main.i block=T_reactor_in T_core_out language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=T_reactor_in T_core_out language=cpp ### EOS This block specifies the Equation of State. The user can choose from built-in fluid library for common fluids like air, nitrogen, helium, sodium, molten salts, etc. The user can also input the properties of the fluid as constants or function of temperature. This model uses a combination of constant and temperature-dependent values for helium properties: -!listing htgr/htr-pm/ss-main.i block=EOS language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=EOS language=cpp ### MaterialProperties Material properties are input in this block. The values can be constants or temperature dependent as defined in the Functions block. In this model, constant material properties are used -!listing htgr/htr-pm/ss-main.i block=MaterialProperties language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=MaterialProperties language=cpp ### Variables This block is used to input the variables in the model, namely velocities in the $x$ and $y$ (or $r$ and $z$) directions, pressure, fluid temperature, and solid temperature, with each variable defined in an individual sub-block. In the sub-block, the scaling factor and initial condition are defined for each variable. Additionally, the `block` parameter is used to specify the block names at which the variable exists. For instance, fluid temperature is only defined in the fluid blocks and not solid blocks. -!listing htgr/htr-pm/ss-main.i block=Variables language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Variables language=cpp ### AuxVariables This block is used to input auxiliary variables, which are used to compute or store intermediate quantities that are not the main variables (the ones being solved for) of the equation system. Similar to `Variables`, initial condition and block can be specified for `AuxVariables`. Users can also set the order and family of the `AuxVariables` to fit their needs. For instance, porosity is defined as an `AuxVariable` with a `CONSTANT` order and a `MONOMIAL` family. -!listing htgr/htr-pm/ss-main.i block=AuxVariables language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=AuxVariables language=cpp ### Materials This block is used to set material properties of solid and porous blocks using the input from the `MaterialProperties` block defined earlier. For components where heat conduction is modeled, `SAMHeatConductionMaterial` is used such as: -!listing htgr/htr-pm/ss-main.i block=pebble_mat graphite_mat graphite_porous_mat core_barrel_steel_mat rpv_steel_mat He_gap_mat language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=pebble_mat graphite_mat graphite_porous_mat core_barrel_steel_mat rpv_steel_mat He_gap_mat language=cpp For porous region where convection is modeled, `PorousFluidMaterial` is used, as shown below. The correlations used for computing heat transfer and frictional pressure drop coefficients are specified here along with other pebble geometry information. -!listing htgr/htr-pm/ss-main.i block=pebble_bed language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=pebble_bed language=cpp Heat transfer in the pebble bed is a complex phenomenon that involves pebble-pebble conduction, pebble-fluid convection, and pebble-pebble radiation. For simplicity, an effective thermal conductivity, $k_{eff}$, is often used to model these heat transfer mechanisms rather than modeling them individually. One widely used correlation to compute $k_{eff}$ is the ZBS correlation [!citep](PBMR400). In SAM, $k_{eff}$ is defined using `PebbleBedEffectiveThermalConductivity` as shown below: -!listing htgr/htr-pm/ss-main.i block=pebble_keff language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=pebble_keff language=cpp ### Kernels The block is used to define the physics of the model. In SAM, the governing equations are essentially divided into the time derivative and spatial terms. The mass equation is modeled using `PINSFEFluidPressureTimeDerivative` and `MDFluidMassKernel` as below: -!listing htgr/htr-pm/ss-main.i block=mass_time mass_space language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=mass_time mass_space language=cpp The $x$ and $y$ momentum terms are modeled with `PINSFEFluidVelocityTimeDerivative` and `MDFluidMomentumKernel`. Note that the `component` parameter in `MDFluidMomentumKernel` is defined as `0` and `1` for $x$ and $y$ momentum, respectively. -!listing htgr/htr-pm/ss-main.i block=mass_time x_momentum_time x_momentum_space y_momentum_time y_momentum_space language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=mass_time x_momentum_time x_momentum_space y_momentum_time y_momentum_space language=cpp Fluid energy is modeled with `PINSFEFluidTemperatureTimeDerivative`, `MDFluidEnergyKernel`, and `PorousMediumEnergyKernel`. The first two model the time derivative and spatial terms of the fluid heat transfer equation while the third models the heat transfer between fluid and solid. -!listing htgr/htr-pm/ss-main.i block=temperature_time temperature_space temperature_heat_transfer language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=temperature_time temperature_space temperature_heat_transfer language=cpp Pebble heat transfer is modeled with `PMSolidTemperatureTimeDerivative` and `PMSolidTemperatureKernel`. For region with heat generation, the `power_density_var` term is set to the name of the `AuxVariable` for power density. -!listing htgr/htr-pm/ss-main.i block=solid_time solid_conduction solid_conduction_core language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=solid_time solid_conduction solid_conduction_core language=cpp Heat conduction in pure solid regions is modeled with `HeatConductionTimeDerivative` and `HeatConduction`: -!listing htgr/htr-pm/ss-main.i block=transient_term_reflector diffusion_term_reflector language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=transient_term_reflector diffusion_term_reflector language=cpp ### AuxKernels The AuxKernel system mimics the kernels system but compute values that can be defined explicitly with a known function. In SAM, density is modeled using `DensityAux` as: -!listing htgr/htr-pm/ss-main.i block=rho_aux language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=rho_aux language=cpp Porosities of different regions are also modeled using `ConstantAux` as: -!listing htgr/htr-pm/ss-main.i block=porosity_bed porosity_reflector_top porosity_reflector_bottom porosity_top_cavity language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=porosity_bed porosity_reflector_top porosity_reflector_bottom porosity_top_cavity language=cpp Lastly, the power density is modeled using `FunctionAux` as: -!listing htgr/htr-pm/ss-main.i block=power_density language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=power_density language=cpp ### BCs This block sets the boundary conditions of the model. The inlet conditions are set using `MDFluidMassBC` as below where the `boundary` parameter is set to the inlet of the model. -!listing htgr/htr-pm/ss-main.i block=BC_inlet_mass language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=BC_inlet_mass language=cpp The $x$ and $y$ inlet momentum boundary conditions are set using `DirichletBC` and `PostprocessorDirichletBC`, respectively as below: -!listing htgr/htr-pm/ss-main.i block=BC_inlet_x_mom BC_inlet_y_mom language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=BC_inlet_x_mom BC_inlet_y_mom language=cpp In this model, the inlet is taken as the top of the core and the inlet flow is assumed to be fully vertically downward. As a result, the $x$ momentum is set to zero at the inlet. Conversely, for the $y$ velocity (momentum), the inlet value is set to the value obtained by the `2Dreceiver_velocity_in` postprocessor. The inlet temperature is set using `INSFEFluidEnergyDirichletBC` as below where the `out_norm` parameter is used to set the outward normal of the inlet boundary or sideset. -!listing htgr/htr-pm/ss-main.i block=BC_inlet_T language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=BC_inlet_T language=cpp At the outlet of the core, a pressure boundary condition is set as below using `DirichletBC`. Note that the value of the pressure is set at zero at outlet boundary because the EOS used in this model is incompressible (temperature dependent only), hence the value of the pressure has no effect on the simulation results. -!listing htgr/htr-pm/ss-main.i block=BC_outlet_mass language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=BC_outlet_mass language=cpp Additionally, a flow direction-dependent outlet temperature is set using `INSFEFluidEnergyDirichletBC` as below. Note that this boundary condition is only applicable if the helium flow direction is reversed. Such a reversal may happen during certain transients where forced flow is lost. -!listing htgr/htr-pm/ss-main.i block=BC_outlet_T language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=BC_outlet_T language=cpp A zero flow boundary condition is set for flow in the $x$ direction at the wall as no fluid can enter or exit the wall. -!listing htgr/htr-pm/ss-main.i block=BC_fluidWall_x_mom language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=BC_fluidWall_x_mom language=cpp The conjugate heat transfer between the walls of the bypass and riser channels in the 2-D model and the fluids in 1-D channel in the primary loop model is modeled as below. The `T_infinity` and `htc` parameters are set to `AuxVariables` whose values are set using the MultiApp system based on their corresponding variables in the 1-D primary loop model. -!listing htgr/htr-pm/ss-main.i block=HeatTransfer_bypass_inner_wall HeatTransfer_riser_inner_wall language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=HeatTransfer_bypass_inner_wall HeatTransfer_riser_inner_wall language=cpp The radiation heat transfer between the RPV outer surface and the RCCS panel in the 1-D RCCS model is modeled as below. In this approach, `TRad` is an `AuxVariable` that takes its value from the inner wall temperature of the RCCS panel in the 1-D RCCS model. -!listing htgr/htr-pm/ss-main.i block=HeatTransfer_bypass_inner_wall RPV_out language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=HeatTransfer_bypass_inner_wall RPV_out language=cpp ### Postprocessors In this block, postprocessors are set up to obtain simulation results from the model. Below are some examples of of postprocessors from the input file. -!listing htgr/htr-pm/ss-main.i block=Postprocessors language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Postprocessors language=cpp Furthermore, using `Receiver` type postprocessors, values of postprocessors from the 1-D primary loop and RCCS models can be transferred to the 2-D model, such as -!listing htgr/htr-pm/ss-main.i block=2Dreceiver_temperature_in language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=2Dreceiver_temperature_in language=cpp ### MultiApps THe MultiApp system is set up in this block. Two sub blocks are included here - one for each of the SubApps. `TransientMultiApp` is used here as all of the models are set up to perform transient analyses. The `catch_up` parameter is set to `True` to allow failed solves to attempt to 'catch up' using smaller timesteps. -!listing htgr/htr-pm/ss-main.i block=MultiApps language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=MultiApps language=cpp ### Transfers This block is used to control the transfer of information between the `MainApp` and the `SubApps`. `MultiAppPostprocessorTransfer` is used to transfer postprocessor values between the `Apps`. The example below shows the transfer of postprocessor (`2Dsource_temperature_in`) value in the 2-D model to another postprocessor (`1Dreceiver_temperature_in`) in the primary loop model. -!listing htgr/htr-pm/ss-main.i block=2Dto1D_temperature_in_transfer language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=2Dto1D_temperature_in_transfer language=cpp `MultiAppUserObjectTransfer` is used to transfer the value of an `UserObject` from one `App` to a `variable` on the other `App` as below. The `direction` parameter is used to determine the direction of the data transfer, i.e. from `MainApp` to `SubApp` or the other way round where the `multi_app` parameter is used for setting the `SubApp` of choice. -!listing htgr/htr-pm/ss-main.i block=To_subApp_Twall_riser language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=To_subApp_Twall_riser language=cpp `MultiAppGeneralFieldNearestNodeTransfer` is used to directly transfer field data between the `Apps` based on their nodal positions: -!listing htgr/htr-pm/ss-main.i block=from_subApp_T_fluid language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=from_subApp_T_fluid language=cpp In this example, temperature is transferred from the primary loop model (`SubApp`) to the 2-D model (`MainApp`), hence, the `direction` is set to `from_multiapp` with the `multi_app` being the primary loop model. `source_variable` is used to set the variable in the `SubApp` that is to be transferred to the `MainApp`. On the other hand, `variable` is the name of the variable in the `MainApp` to receive the transferred value. Since the transfer mechanism is based on the positions of the models, there is a possibility that the wrong field data may be transferred. To avoid that, the `from_blocks` and `to_blocks` options are set to make sure that the data transfer only involves the correct blocks. @@ -252,7 +252,7 @@ In this example, temperature is transferred from the primary loop model (`SubApp This `UserObjects` system is used to perform custom algorithms or calculations that may not fit well within any other system in MOOSE. -!listing htgr/htr-pm/ss-main.i block=UserObjects language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=UserObjects language=cpp In this model, `LayeredSideAverage` is used to obtain the layered average field data such as the wall temperatures on the riser and bypass channels and the radiative heat flux on the RPV outer wall. The `num_layers` option is used to set the number of layers over which a field data is averaged and the `direction` option is used to set the averaging direction. @@ -264,7 +264,7 @@ the single matrix preconditioner (SMP) and the finite difference preconditioner The theory behind the preconditioner can be found in the SAM Theory Manual [!citep](Hu2021). New users can leave this block unchanged. -!listing htgr/htr-pm/ss-main.i block=Preconditioning language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Preconditioning language=cpp ### Executioner @@ -274,13 +274,13 @@ to use an adaptive time step size with the [IterationAdaptiveDT time stepper](ht Other inputs in this block include PETSc solver options, convergence tolerance, quadrature for elements, etc. -!listing htgr/htr-pm/ss-main.i block=Executioner language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Executioner language=cpp ### Outputs This block is used to control the information to be output by the model. Users can choose the output format as `Exodus` and/or `CSV` files. Checkpoint files can also be produced. User can set the output frequency via the `interval` option. -!listing htgr/htr-pm/ss-main.i block=Outputs language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-main.i block=Outputs language=cpp ## 0-D/1-D Primary Loop Model @@ -290,89 +290,89 @@ As described earlier, the so-called domain overlapping approach is used to coupl The surrogate channel consists of a `PBOneDFluidComponent` with inlet and outlet boundary conditions. -!listing htgr/htr-pm/ss-primary-loop-full.i block=core_pipe language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=core_pipe language=cpp The geometric information such as the length, flow area, hydraulic diameter, position, etc. are the same as that in the porous media model. In the domain overlapping approach, frictional pressure drop in the porous media model is computed and then applied to the surrogate channel. The pressure drop is then used by the code to internally calculate a friction factor that is then applied to the surrogate channel. By doing so, the flow rate in the surrogate channel is ensured to be the same as that in the porous media model. This capability is enabled by setting `overlap_coupled` to `true`. The `overlap_pp` parameter sets the postprocessor name that receives the pressure drop information from the porous media model. Note that pressure drop is defined as the change of pressure per unit length, $dP/dZ$, with a unit of Pa/m, and NOT the total pressure drop across the core. The inlet and outlet boundary conditions are set using a coupled postprocessor time-dependent junction (CoupledPPSTDJ) and coupled postprocessor time-dependent volume (CoupledPPSTDV), respectively. At the inlet, the velocity and temperature boundary conditions are set to the mean values obtained from the inlet of the multi-D model using their respective postprocessors. On the other hand, at the outlet, using their respective postprocessors, the temperature is set to the mean temperature obtained at the outlet of the multi-D model while the pressure is set to the pressure of the hot plenum. -!listing htgr/htr-pm/ss-primary-loop-full.i block=coupled_inlet_top coupled_outlet language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=coupled_inlet_top coupled_outlet language=cpp Other than the surrogate channel, the remainder of the primary loop is shown in [htr-pm/ss-loop-schematic]. In this model, the hot plenum can be seen as the inlet and the cold plenum the outlet. To couple the outlet of the surrogate channel to the hot plenum, the outlet conditions of the surrogate channel are used as the inlet conditions of the hot plenum. The hot plenum is modeled using the `PBVolumeBranch` component as: -!listing htgr/htr-pm/ss-primary-loop-full.i block=hot_plenum language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=hot_plenum language=cpp Given that boundary conditions cannot be directly set to a `PBVolumeBranch`, a short pipe called the 'hot_plenum_inlet_pipe' is connected to the 'hot_plenum' on one end, while the end is set to the outlet conditions from the surrogate channel using the `CoupledPPSTDJ` component as: -!listing htgr/htr-pm/ss-primary-loop-full.i block=coupled_inlet language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=coupled_inlet language=cpp After the hot plenum is a horizontal flow channel known as the 'outlet_pipe': -!listing htgr/htr-pm/ss-primary-loop-full.i block=outlet_pipe language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=outlet_pipe language=cpp Downstream of 'outlet_pipe' is a `PBVolumeBranch` known as 'SG_inlet_plenum' that connects the outlet pipe to the heat exchanger: -!listing htgr/htr-pm/ss-primary-loop-full.i block=SG_inlet_plenum language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=SG_inlet_plenum language=cpp The heat exchanger is intended to represent the steam generator in the actual HTR-PM reactor. The geometries of the heat exchanger used in this work are obtained from publicly available information: -!listing htgr/htr-pm/ss-primary-loop-full.i block=IHX language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=IHX language=cpp Water is used as the coolant on the secondary side of the heat exchanger. For simplicity, the secondary side is not modeled and is simply given inlet and outlet boundary conditions: -!listing htgr/htr-pm/ss-primary-loop-full.i block=IHX2-in IHX2-out language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=IHX2-in IHX2-out language=cpp Similar to the inlet, the outlet of the heat exchanger is connected to a `PBVolumeBranch` component: -!listing htgr/htr-pm/ss-primary-loop-full.i block=SG_outlet_plenum language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=SG_outlet_plenum language=cpp Downstream of the heat exchanger is another flow channel that connects the outlet of the heat exchanger to the inlet of the blower: -!listing htgr/htr-pm/ss-primary-loop-full.i block=SG_outlet_pipe language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=SG_outlet_pipe language=cpp The outlet of 'SG_outlet_pipe' is connected to the blower through a `PBVolumeBranch`: -!listing htgr/htr-pm/ss-primary-loop-full.i block=pump_inlet_plenum language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=pump_inlet_plenum language=cpp Additionally, the reference pressure of the system is set using a `PBTDV` component that is connected to 'pump_inlet_plenum'. During steady-state, the system pressre is set to 7 MPa. -!listing htgr/htr-pm/ss-primary-loop-full.i block=ref_pressure_pipe reference_pressure language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=ref_pressure_pipe reference_pressure language=cpp Downstream of that is a flow channel that connects the `PBVolumeBranch` to the blower: -!listing htgr/htr-pm/ss-primary-loop-full.i block=pump_inlet_pipe language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=pump_inlet_pipe language=cpp The blower is modeled using the `PBPump` component. Note that the pump head is set using the 'f_pump_head' function via the `Head_fn` parameter. The pump head and the k-loss values are tuned such that the steady-state mass flow rate is 96 kg/s. -!listing htgr/htr-pm/ss-primary-loop-full.i block=blower language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=blower language=cpp Located downstream of the blower are a pipe and a `PBVolumeBranch` that is connected to the horizontal inlet pipe: -!listing htgr/htr-pm/ss-primary-loop-full.i block=pump_outlet_pipe pump_outlet_branch inlet_pipe language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=pump_outlet_pipe pump_outlet_branch inlet_pipe language=cpp The outlet of the horizontal inlet pipe is connected to the inlet of the riser. In order to accurately account for the heat transfer between the 2-D surfaces and the riser, the heat transfer area density is set via the `HT_surface_area_density` parameter. -!listing htgr/htr-pm/ss-primary-loop-full.i block=riser joint_outlet_1 language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=riser joint_outlet_1 language=cpp The outlet of the riser is connected to the cold plenum: -!listing htgr/htr-pm/ss-primary-loop-full.i block=cold_plenum language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=cold_plenum language=cpp A bypass channel connects the cold and hot plena. Similar to the riser, the heat transfer area density of the bypass channel is set to accurately capture the heat transfer between the helium in the bypass channel and the surrounding 2-D solid structures. A friction factor, `f`, is tuned such that the flow in the bypass channel is roughly 1 kg/s: -!listing htgr/htr-pm/ss-primary-loop-full.i block=bypass language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=bypass language=cpp The cold plenum can be seen as the outlet of the primary loop. Similar to the hot plenum, a small pipe is connected to the cold plenum on one end where the boundary conditions are set on the other end using the `CoupledPPSTDV` component. The outlet pressure is set to the pressure at the outlet of the surrogate channel while the temperature is set to the mean temperature at the inlet of the 2-D core: -!listing htgr/htr-pm/ss-primary-loop-full.i block=cold_plenum_outlet_pipe coupled_outlet_top language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=cold_plenum_outlet_pipe coupled_outlet_top language=cpp The wall separating the horizontal inlet and outlet pipes is modeled using a `PBCoupledHeatStructure`. The boundary conditions both sides of the wall are set to `Coupled` to model the heat transfer between the helium in the inlet and outlet pipe across the wall. -!listing htgr/htr-pm/ss-primary-loop-full.i block=concentric-pipe-wall language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=concentric-pipe-wall language=cpp The `HeatTransferWithExternalHeatStructure` is used to model the heat transfer between the solids in the multi-D model and the 1-D bypass and riser channels in the primary loop model. In this approach, the wall temperatures from the 2-D model are transferred to 1-D channels. In return, the 2-D walls receive the fluid temperatures and the heat transfer coefficients from the 1-D channels. The `T_wall_name` is the variable name to which the MultiApp transfers the wall temperatures from the multi-D model. -!listing htgr/htr-pm/ss-primary-loop-full.i block=from_main_app_riser from_main_app_bypass language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i block=from_main_app_riser from_main_app_bypass language=cpp ## 0-D/1-D RCCS Model @@ -380,54 +380,54 @@ The input file of the 0-D/1-D model is described here. Similarly, blocks that ar The RCCS panel in the model receives heat flux from the outer surface of the RPV in the multi-D porous media model via thermal radiation. To do so, an `AuxVariable` named 'QRad' is defined to receive that flux. Note that the name of the `AuxVariable` ('QRad' in this case) must match the name provided in the `[QRad_to_subRCCS]` block in the multi-D model. At the same time, due to the difference in the surface area of the RPV and the RCCS panel, the heat flux needs to be properly scaled to ensure energy conservation. This is done through another `AuxVariable` named 'QRad_multiplied'. -!listing htgr/htr-pm/ss-rccs-water.i block=AuxVariables language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-rccs-water.i block=AuxVariables language=cpp The scaling of the heat flux is performed through an `AuxKernel` of type `ParsedAux`. The scaling factor is defined as the ratio between the RPV surface area to the RCCS panel surface area. -!listing htgr/htr-pm/ss-rccs-water.i block=AuxKernels language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-rccs-water.i block=AuxKernels language=cpp In return, the multi-D porous media model receives a layer-averaged wall temperature from the surface of the RCCS and imposes that as the $T_{\infty}$ of the radiative boundary condition imposed on the RPV outer surface. The layer-averaging is done through a `UserObjects` of type `LayeredSideAverage`. Note that the same of the `UserObject`, 'TRad_UO' must match the `user_object` name provided in the `[TRad_from_RCCS_sub]` block in the multi-D model. -!listing htgr/htr-pm/ss-rccs-water.i block=UserObjects language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-rccs-water.i block=UserObjects language=cpp The components of the RCCS model are modeled in the `[Components]` block in the input file. The RCCS panel is modeled as a `PBCoupledHeatStructure` with a 'Convective' boundary condition on the inner surface and a 'Coupled' boundary condition on the outer surface. The scaled heat flux, 'QRad_multiplied' is applied to the inner surface through the `qs_external_left` parameter. On the other hand, the outer surface is coupled to a fluid component named 'rccs-heated-riser' via the `name_comp_right` parameter. The heat transfer surface area density on the right side is provided through the `HT_surface_area_density_right` parameter. -!listing htgr/htr-pm/ss-rccs-water.i block=rccs-panel language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-rccs-water.i block=rccs-panel language=cpp The riser is coupled to the outer surface of the RCCS panel. Downstream of the riser is an unheated chimney. The chimney is assumed to be fairly tall to provide sufficient thermal driving head for natural circulation. -!listing htgr/htr-pm/ss-rccs-water.i block=rccs-heated-riser rccs-chimney language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-rccs-water.i block=rccs-heated-riser rccs-chimney language=cpp The outlet of the chimney is connected to a reservoir/pool that is modeled using a `PBLiquidVolume` component with an initial level of 10 m. The pool is assumed to be at atmospheric pressure. -!listing htgr/htr-pm/ss-rccs-water.i block=pool language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-rccs-water.i block=pool language=cpp A heat exchanger is used in the pool for decay heat removal. On the primary side, the inlet and outlet of the heat exchanger are connected to the pool while a time-dependent junction and volume are used at the inlet and outlet on the seconday side. Water enters the secondary side at 303 K. Note that a large inlet flow rate is set on the secondary side to ensure to provide sufficient cooling to the pool. -!listing htgr/htr-pm/ss-rccs-water.i block=IHX IHX-inlet-pipe IHX-outlet-pipe IHX-junc-out IHX-junc-in IHX2-in IHX2-out language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-rccs-water.i block=IHX IHX-inlet-pipe IHX-outlet-pipe IHX-junc-out IHX-junc-in IHX2-in IHX2-out language=cpp Downstream of the pool is the downcomer consisting of a vertical and horizontal section. The outlet of the horizontal section is connected to the inlet of the riser, thus completing the loop. -!listing htgr/htr-pm/ss-rccs-water.i block=rccs-downcomer rccs-downcomer-horizontal language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-rccs-water.i block=rccs-downcomer rccs-downcomer-horizontal language=cpp The flow channels are connected to each other with `PBVolumeBranch`. -!listing htgr/htr-pm/ss-rccs-water.i block=junc-riser-chimney junc-horizontal-riser junc-downcomer-horizontal language=cpp +!listing htgr/htr-pm/sam-htrpm/ss-rccs-water.i block=junc-riser-chimney junc-horizontal-riser junc-downcomer-horizontal language=cpp # Input File Descriptions - Pressurized Loss of Forced Cooling (PLOFC) Transient The transient PLOFC simulation is a restart from the steady-state simulation with some minor modifications in the input files. As mentioned earlier, a simplified primary loop model is used in the PLOFC simulation. As a result, the full coupled model needs to be re-run with the simplified primary loop in lieu of the full primary loop model whose output is then used to restart the PLOFC simulation. The `[Problem]` block in all three input files are modified where the path of the restart file is specified using the `restart_file_base` parameter. The `LATEST` keyword is used to specify the latest checkpoint as the restart time stamp. Alternatively, the restart time stamp can be set to another time step by specifying the time-step number. -!listing htgr/htr-pm/plofc-main-transient.i block=Problem language=cpp +!listing htgr/htr-pm/sam-htrpm/plofc-main-transient.i block=Problem language=cpp -!listing htgr/htr-pm/plofc-primary-loop-transient.i block=Problem language=cpp +!listing htgr/htr-pm/sam-htrpm/plofc-primary-loop-transient.i block=Problem language=cpp -!listing htgr/htr-pm/plofc-rccs-water-transient.i block=Problem language=cpp +!listing htgr/htr-pm/sam-htrpm/plofc-rccs-water-transient.i block=Problem language=cpp The SubApp files in the `[MultiApps]` block are changed to the transient files -!listing htgr/htr-pm/plofc-main-transient.i block=MultiApps language=cpp +!listing htgr/htr-pm/sam-htrpm/plofc-main-transient.i block=MultiApps language=cpp Furthermore, the `start_time` and `end_time` parameters in the `[Executioner]` blocks of all three input files are modified to the desired values. @@ -435,7 +435,7 @@ In the multi-D input file, the `initial_condition` parameters in the `[Variables Lastly, as discussed previously, the primary loop is simplified where components such as the blower, heat exchanger, and reference pressures are removed and replaced with inlet and outlet boundary conditions. Note that in the `[inlet]` block, the mass flow rate is set using the `m_fn` user-defined function. -!listing htgr/htr-pm/plofc-primary-loop-transient.i block=inlet outlet language=cpp +!listing htgr/htr-pm/sam-htrpm/plofc-primary-loop-transient.i block=inlet outlet language=cpp # Running the Simulation diff --git a/doc/content/htgr/htr-pm/htr-pm_results.md b/doc/content/htgr/htr-pm/sam-model/htr-pm_results.md similarity index 100% rename from doc/content/htgr/htr-pm/htr-pm_results.md rename to doc/content/htgr/htr-pm/sam-model/htr-pm_results.md diff --git a/doc/content/htgr/htr-pm/index.md b/doc/content/htgr/htr-pm/sam-model/index.md similarity index 88% rename from doc/content/htgr/htr-pm/index.md rename to doc/content/htgr/htr-pm/sam-model/index.md index efecc4bc6..bccaf8fde 100644 --- a/doc/content/htgr/htr-pm/index.md +++ b/doc/content/htgr/htr-pm/sam-model/index.md @@ -16,6 +16,6 @@ sponsor:NRC institution:ANL -[SAM HTR-PM model](htr-pm/htr-pm_model.md) +[SAM HTR-PM model](htr-pm/sam-model/htr-pm_model.md) -[SAM HTR-PM results](htr-pm/htr-pm_results.md) +[SAM HTR-PM results](htr-pm/sam-model/htr-pm_results.md) diff --git a/doc/content/htgr/index.md b/doc/content/htgr/index.md index bec6c78ac..82f156f1a 100644 --- a/doc/content/htgr/index.md +++ b/doc/content/htgr/index.md @@ -28,7 +28,9 @@ [Pronghorn Generic Pebble Bed HTGR Tutorial](generic-pbr-tutorial/index.md) -[SAM HTR-PM model](htr-pm/index.md) +[SAM HTR-PM model](htr-pm/sam-model/index.md) + +[HTR-PM multiphysics](htr-pm/core-multiphysics/index.md) [3D-MHTGR mesh](3D_MHTGR/index.md) diff --git a/doc/content/media/htrpm_coremultiphysics/apps_setup_3.png b/doc/content/media/htrpm_coremultiphysics/apps_setup_3.png new file mode 100644 index 000000000..c2e5087f0 Binary files /dev/null and b/doc/content/media/htrpm_coremultiphysics/apps_setup_3.png differ diff --git a/doc/content/media/htrpm_coremultiphysics/dragon-models.png b/doc/content/media/htrpm_coremultiphysics/dragon-models.png new file mode 100644 index 000000000..3cfa84f9c Binary files /dev/null and b/doc/content/media/htrpm_coremultiphysics/dragon-models.png differ diff --git a/doc/content/media/htrpm_coremultiphysics/fluid-temperature-dist.png b/doc/content/media/htrpm_coremultiphysics/fluid-temperature-dist.png new file mode 100644 index 000000000..2268d5920 Binary files /dev/null and b/doc/content/media/htrpm_coremultiphysics/fluid-temperature-dist.png differ diff --git a/doc/content/media/htrpm_coremultiphysics/htr-pm-domain.png b/doc/content/media/htrpm_coremultiphysics/htr-pm-domain.png new file mode 100644 index 000000000..ec86f22fa Binary files /dev/null and b/doc/content/media/htrpm_coremultiphysics/htr-pm-domain.png differ diff --git a/doc/content/media/htrpm_coremultiphysics/htr-pm-griffin-model.png b/doc/content/media/htrpm_coremultiphysics/htr-pm-griffin-model.png new file mode 100644 index 000000000..ef8873439 Binary files /dev/null and b/doc/content/media/htrpm_coremultiphysics/htr-pm-griffin-model.png differ diff --git a/doc/content/media/htrpm_coremultiphysics/solid-temperature-dist.png b/doc/content/media/htrpm_coremultiphysics/solid-temperature-dist.png new file mode 100644 index 000000000..2b48e92d6 Binary files /dev/null and b/doc/content/media/htrpm_coremultiphysics/solid-temperature-dist.png differ diff --git a/doc/content/msr/cnrs/model_description.md b/doc/content/msr/cnrs/model_description.md index f263df755..a9e4a9ad2 100644 --- a/doc/content/msr/cnrs/model_description.md +++ b/doc/content/msr/cnrs/model_description.md @@ -1,6 +1,6 @@ # CNRS Model -*Contact: Mustafa Jaradat, (mustafa.jaradat@inl.gov), Namjae Choi (namjae.choi@inl.gov), Abdalla Abou-Jaoude (abdalla.aboujaoude@inl.gov) +*Contact: Mustafa Jaradat, (mustafa.jaradat.at.inl.gov), Namjae Choi (namjae.choi.at.inl.gov), Abdalla Abou-Jaoude (abdalla.aboujaoude.at.inl.gov)* *Model summarized and documented by Dr. Khaldoon Al-Dawood diff --git a/doc/content/vtb_pages/models_by_codes_used.md b/doc/content/vtb_pages/models_by_codes_used.md index ae5ed3de4..e2ac77d0d 100644 --- a/doc/content/vtb_pages/models_by_codes_used.md +++ b/doc/content/vtb_pages/models_by_codes_used.md @@ -67,6 +67,8 @@ obtained through INL's [NCRC](https://inl.gov/ncrc/). - Molten Salt Reactor Experiment RZ multiphysics core model [documentation](msr/msre/multiphysics_rz_model/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/msr/msre/multiphysics_core_model/steady_state) +- HTR-PM multiphysics model [documentation](htgr/htr-pm/core-multiphysics/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm/core-multiphysics) + ### Cardinal / OpenMC (open-source) @@ -128,8 +130,7 @@ obtained through INL's [NCRC](https://inl.gov/ncrc/). - Generic Pebble Bed Reactor core model [documentation](htgr/generic-pbr/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/generic-pbr) -- HTR-PM reference plant model [documentation](htgr/htr-pm/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm) - +- HTR-PM reference plant model [documentation](htgr/htr-pm/sam-model/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm/sam-model) ### Thermal-hydraulics module (open-source) diff --git a/doc/content/vtb_pages/models_by_input_features.md b/doc/content/vtb_pages/models_by_input_features.md index 83f8f9376..3b20b682a 100644 --- a/doc/content/vtb_pages/models_by_input_features.md +++ b/doc/content/vtb_pages/models_by_input_features.md @@ -84,7 +84,7 @@ the input file, but generally reside in the same folder in the repository. - Thermochimica Steady-State Model of Molten Salt Fast Reactor Core [documentation](msr/msfr/thermo_model) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/devel/msr/msfr/thermochemistry) -- HTR-PM reference plant model [documentation](htgr/htr-pm/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm) +- HTR-PM reference plant model [documentation](htgr/htr-pm/sam-model/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm/sam-htrpm) ### Multiphysics and multiscale simulations @@ -94,6 +94,7 @@ the input file, but generally reside in the same folder in the repository. - HTTR Core multiphysics [documentation](httr/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/httr/steady_state_and_null_transient) +- HTR-PM multiphysics [documentation](htgr/htr-pm/core-multiphysics/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm/core-multiphysics) ## Restarting from a previous simulation @@ -114,7 +115,7 @@ Documentation for the [Checkpoint system](https://mooseframework.inl.gov/applica - HTTR Core multiphysics [documentation](httr/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/httr/steady_state_and_null_transient) -- HTR-PM reference plant model [documentation](htgr/htr-pm/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm) +- HTR-PM reference plant model [documentation](htgr/htr-pm/sam-model/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm/sam-htrpm) ### Binary restart @@ -188,7 +189,7 @@ specified. The MRAD and PBMR-400 models listed below are an example of this. - Thermochimica Steady-State Model of Molten Salt Fast Reactor Core [documentation](msr/msfr/thermo_model) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/devel/msr/msfr/thermochemistry) -- HTR-PM reference plant model [documentation](htgr/htr-pm/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm) +- HTR-PM reference plant model [documentation](htgr/htr-pm/sam-model/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm/sam-htrpm) ### HPC required diff --git a/doc/content/vtb_pages/models_by_simulation_type.md b/doc/content/vtb_pages/models_by_simulation_type.md index 2917edb1a..29e2ae3cd 100644 --- a/doc/content/vtb_pages/models_by_simulation_type.md +++ b/doc/content/vtb_pages/models_by_simulation_type.md @@ -116,7 +116,7 @@ help creating it. - Mk1 FHR Primary loop simulation [documentation](pbfhr/mark_1/pbfhr_sam/pbfhr_sam.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/pbfhr/mark_1/sam_model) -- HTR-PM Core analysis [documentation](htgr/htr-pm/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm) +- HTR-PM Core analysis [documentation](htgr/htr-pm/sam-model/index.md) and [inputs](https://github.com/idaholab/virtual_test_bed/tree/main/htgr/htr-pm/sam-htrpm) ### Unprotected loss of coolant flow (ULOF) diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_ss_out.csv b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_ss_out.csv new file mode 100644 index 000000000..68a56cc0a --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_ss_out.csv @@ -0,0 +1,4 @@ +time,Burnup_avg,Tfluid_avg,Tfuel_avg,Tfuel_max,Tmod_avg,Tmod_max,Tsolid_avg,Tsolid_max,UnscaledTotalPower,avg_power_density,decay_heat,eigenvalue,integrated_pebble_decay_heat,power_peak,power_scaling,prompt_power,total_power +0,2.6207e+14,500,500,500,500,500,500,500,1.3897950765193e-10,3215251.3755938,0.39687036499252,1,0,1.0000004278342,1.7988263465872e+18,250000000,250000000 +1,2.8779339938057e+14,653.55059272446,903.93021576793,1118.8232278285,889.83727971076,1116.6208444971,672.58133488605,1109.1225766961,1.1924620958267e-10,3215251.3755938,15502528.449847,0.99351067770078,15502528.449847,2.0067344360989,2.0965026970244e+18,250000000,250000000 +2,2.8779339938057e+14,653.55059272446,903.93021576793,1118.8232278285,889.83727971076,1116.6208444971,672.58133488605,1109.1225766961,1.1924620958267e-10,3215251.3755938,15502528.449847,0.99351067770078,15502528.449847,2.0067344360989,2.0965026970244e+18,250000000,250000000 diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_ss_out_flow0.csv b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_ss_out_flow0.csv new file mode 100644 index 000000000..0c236094b --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_ss_out_flow0.csv @@ -0,0 +1,24 @@ +time,advection_energy_balance,area_pp_reactor_inlet,barrel_avg_temperature,barrel_max_temperature,bed_solid_avg_temperature,bypass_mfr,core_delta_p,outlet_mfr,ref_avg_temperature,ref_max_temperature,rpv_avg_temperature,rpv_convection_diffusion,rpv_max_temperature,rpv_radiation,rpv_side_temp,rpv_tot_out,set_inlet_mfr,total_balance_percent,total_power +0,-102.31404702916,2.5509732347149,523.15,523.15,523.15,0,1.862645149231e-09,5.380331529211e-05,523.15,523.15,523.15,0,523.15,0,523.15,0,0,99.999959074382,250000000 +0.5,-141755319.68458,2.5509732347149,465.86391288292,548.63416446268,865.25015588493,-0.69415391848399,36739.63406794,51.255717711786,593.11757329948,1067.2566186611,426.73115259841,990.56347144419,474.28972896247,310886.6679862,424.75025518214,311877.23145765,48,43.422623018751,250000000 +1,-228895943.00805,2.5509732347149,465.86391293128,548.63416516689,865.27350559553,-1.0143950603304,124362.37878215,92.129206682871,593.1176078617,1067.25661739,426.73115263088,990.56347169656,474.28972935331,310886.66813509,424.75025521374,311877.23160679,96,8.5663736894215,250000000 +2,-248275919.68655,2.5509732347149,465.86391302802,548.6341665753,865.27692030082,-1.1232321210984,129820.71433027,95.787178467296,593.11767871443,1067.2566128481,426.73115269583,990.56347220129,474.28973013498,310886.66843286,424.75025527692,311877.23190506,96,0.81438301814311,250000000 +4,-249584896.68657,2.5509732347149,465.86391322149,548.63416939209,865.27520020501,-1.1448208230971,130260.28430691,96.030861372949,593.11782330174,1067.2565977315,426.73115282572,990.56347321074,474.28973169833,310886.6690284,424.7502554033,311877.23250161,96,0.29079221837446,250000000 +8,-249881322.65872,2.5509732347149,465.8639136084,548.6341750256,865.26635460303,-1.1587764240813,130377.32834572,96.066451443872,593.11810451261,1067.2565613357,426.7311530855,990.56347522962,474.28973482499,310886.67021947,424.75025565605,311877.2336947,96,0.17222182998929,250000000 +16,-249757293.0007,2.5509732347149,465.86391438215,548.63418629227,865.25779108224,-1.1622341507841,130359.12887578,96.026592498788,593.11861865657,1067.2565075239,426.73115360504,990.56347926726,474.2897410782,310886.67260154,424.75025616153,311877.23608081,96,0.22183369415262,250000000 +32,-249660631.12637,2.5509732347149,465.86391592937,548.63420882429,865.25041071043,-1.1584269107372,130326.80661442,96.002303887017,593.11953681482,1067.2564880464,426.73115464407,990.5634873421,474.28975358418,310886.67736543,424.75025717244,311877.24085277,96,0.26049844579436,250000000 +64,-249688715.50928,2.5509732347149,465.86391902259,548.634253883,865.22803369838,-1.1568398876981,130322.71496973,96.000092611663,593.12104392302,1067.2568773794,426.73115672187,990.56350348994,474.28977859438,310886.6868922,424.75025919405,311877.25039569,96,0.24926469644562,250000000 +128,-249735792.42579,2.5509732347149,465.86392520412,548.63434397896,865.16081790022,-1.1565179502057,130315.1899038,95.999804007974,593.12301473871,1067.2595984034,426.73116087651,990.56353577828,474.28982860766,310886.70594168,424.75026323638,311877.26947746,96,0.23043393747446,250000000 +256,-249737410.78626,2.5509732347149,465.86393754896,548.63452408449,865.03101676653,-1.1564197327316,130300.83731184,95.999852918603,593.12447774758,1067.2692028996,426.73116918177,990.56360032506,474.28992860559,310886.74402411,424.75027131745,311877.30762444,96,0.22978660854552,250000000 +512,-249674541.42034,2.5509732347149,465.86396221824,548.63488393669,864.9083548233,-1.1563464500741,130287.27160802,95.99993835034,593.12444143878,1067.2841619395,426.73118577583,990.56372929354,474.29012848051,310886.82011984,424.75028746432,311877.38384914,96,0.25493438540504,250000000 +1024,-249626101.26773,2.5509732347149,465.86401188698,548.63560220493,864.85622843409,-1.156316683986,130281.47488558,95.999986902744,593.12339985506,1067.2904852511,426.73121890759,990.5639867746,474.29052775273,310886.97205871,424.75031969864,311877.53604549,96,0.2743105073248,250000000 +2048,-249611842.68038,2.5509732347149,465.86411242706,548.63703110366,864.84602364267,-1.1563129223796,130280.29208835,95.999998505937,593.12205410072,1067.28397977,426.73128493665,990.56449977967,474.29132334429,310887.27480563,424.75038390469,311877.83930541,96,0.28001406356895,250000000 +4096,-249609131.40335,2.5509732347149,465.86430995203,548.63984638331,864.84487390546,-1.1563143569505,130280.13056182,95.999999836906,593.12052866064,1067.2760995024,426.73141548525,990.56551407848,474.29289600058,310887.87343067,424.75051085322,311878.43894475,96,0.28109881423975,250000000 +8192,-249608546.86446,2.5509732347149,465.86468420271,548.64539566547,864.84465107001,-1.1563155438714,130280.08836629,95.999999968202,593.11921767679,1067.2749930151,426.73167300441,990.56751626433,474.2960200005,310889.05636771,424.75076162556,311879.62388397,96,0.28133310376784,250000000 +16384,-249608546.86446,2.5509732347149,465.86468420271,548.64539566547,864.84465107001,-1.1563155438714,130280.08836629,95.999999968202,593.11921767679,1067.2749930151,426.73167300441,990.56751626433,474.2960200005,310889.05636771,424.75076162556,311879.62388397,96,0.28133310376784,250000000 +32768,-249608546.86446,2.5509732347149,465.86468420271,548.64539566547,864.84465107001,-1.1563155438714,130280.08836629,95.999999968202,593.11921767679,1067.2749930151,426.73167300441,990.56751626433,474.2960200005,310889.05636771,424.75076162556,311879.62388397,96,0.28133310376784,250000000 +65536,-249608546.86446,2.5509732347149,465.86468420271,548.64539566547,864.84465107001,-1.1563155438714,130280.08836629,95.999999968202,593.11921767679,1067.2749930151,426.73167300441,990.56751626433,474.2960200005,310889.05636771,424.75076162556,311879.62388397,96,0.28133310376784,250000000 +131072,-249608546.86446,2.5509732347149,465.86468420271,548.64539566547,864.84465107001,-1.1563155438714,130280.08836629,95.999999968202,593.11921767679,1067.2749930151,426.73167300441,990.56751626433,474.2960200005,310889.05636771,424.75076162556,311879.62388397,96,0.28133310376784,250000000 +262144,-249608546.86446,2.5509732347149,465.86468420271,548.64539566547,864.84465107001,-1.1563155438714,130280.08836629,95.999999968202,593.11921767679,1067.2749930151,426.73167300441,990.56751626433,474.2960200005,310889.05636771,424.75076162556,311879.62388397,96,0.28133310376784,250000000 +524288,-249608546.86446,2.5509732347149,465.86468420271,548.64539566547,864.84465107001,-1.1563155438714,130280.08836629,95.999999968202,593.11921767679,1067.2749930151,426.73167300441,990.56751626433,474.2960200005,310889.05636771,424.75076162556,311879.62388397,96,0.28133310376784,250000000 +1000000,-249608546.86446,2.5509732347149,465.86468420271,548.64539566547,864.84465107001,-1.1563155438714,130280.08836629,95.999999968202,593.11921767679,1067.2749930151,426.73167300441,990.56751626433,474.2960200005,310889.05636771,424.75076162556,311879.62388397,96,0.28133310376784,250000000 diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_dlofc_out.csv b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_dlofc_out.csv new file mode 100644 index 000000000..fc250d281 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_dlofc_out.csv @@ -0,0 +1,7 @@ +time,Tfluid_core,Tfuel_avg,Tfuel_max,Tmod_avg,Tmod_max,Tsolid_core,UnscaledTotalPower,decay_heat,dt,dt_max_pp,integrated_pebble_decay_heat,max_T_solid,power_peak,power_scaling,prompt_power,total_power,total_prompt_power +0.95,653.5561232115,903.93018541436,1118.8231829445,889.83724956067,1116.6207996086,672.5893064777,1.1924620840383e-10,15507728.892362,0,0,15502528.43882,1109.1290232953,2.0045835792552,2.0965027177498e+18,234497471.56118,250000000,234497471.56118 +1,653.5561232115,903.95438929567,1118.8264178682,889.85995283107,1116.6263232188,672.5893064777,1.1924620840383e-10,15507756.195673,0.05,1,15507756.195673,1109.1290232953,2.0044444881983,2.0965027177498e+18,234483028.07565,249990784.27132,234483028.07565 +1.1,653.55612530131,903.95261627597,1118.8260184215,889.85905705956,1116.6260433171,672.58930548812,1.1924620840383e-10,15507801.428734,0.1,1,15507801.428734,1109.1291656329,2.0042544935863,2.0965027177498e+18,234459007.51617,249966808.9449,234459007.51617 +1.2,653.4101411298,903.93616025142,1118.8197297279,889.84423342029,1116.6199873837,672.58619223874,1.1924620840383e-10,15507827.569152,0.1,1,15507827.569152,1109.1239043272,2.0042508504281,2.0965027177498e+18,234457808.73295,249965636.3021,234457808.73295 +1.4,653.28782647628,903.91580920833,1118.8116819342,889.82419546957,1116.6119725712,672.58153581909,1.1924620840383e-10,15507881.097411,0.2,1,15507881.097411,1109.1159905533,2.004464614963,2.0965027177498e+18,234480883.81117,249988764.90858,234480883.81117 +1.8,653.1920045789,903.87274388636,1118.793433506,889.7802726512,1116.5936812428,672.57097899914,1.1924620840383e-10,15508046.525568,0.4,1,15508046.525568,1109.097538841,2.0053996776275,2.0965027177498e+18,234591591.05033,250099637.5759,234591591.05033 diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_dlofc_out_flow0.csv b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_dlofc_out_flow0.csv new file mode 100644 index 000000000..ccd94bf94 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_dlofc_out_flow0.csv @@ -0,0 +1,7 @@ +time,advection_energy_balance,area_pp_reactor_inlet,barrel_avg_temperature,barrel_max_temperature,bed_solid_avg_temperature,bypass_mfr,core_delta_p,dt_max_pp,outlet_mfr,ref_avg_temperature,ref_max_temperature,rpv_avg_temperature,rpv_convection_diffusion,rpv_max_temperature,rpv_radiation,rpv_side_temp,rpv_tot_out,set_inlet_mfr,total_balance_percent,total_power +0.95,-249608560.63221,2.5509732347149,465.86543734883,548.65657217418,864.84466531124,-1.1563155600421,130280.09066004,0,95.999999967676,593.11954241402,1067.2816790651,426.7322339613,990.57188391289,474.30289859604,310891.64833177,424.75130948659,311882.22021568,96,0.28132863520059,250000000 +1,-249608570.40161,2.5509732347149,465.86543735296,548.65657223534,864.84466212024,-1.1563155309428,130280.04922806,1,96.000001351252,593.11954239822,1067.281679043,426.73223396416,990.57188393514,474.30289863072,310891.64834492,424.75130948938,311882.22022886,96,0.27763843597938,249990784.27132 +1.1,-326244663.93303,2.5509732347149,465.86543736121,548.65657235767,864.83189525566,-1.8484798703182,154746.44592407,1,110.15175447196,593.1195421724,1067.2816789985,426.73223396989,990.57188397964,474.3028987001,310891.64837122,424.75130949495,311882.2202552,95.2,-30.386389107151,249966808.9449 +1.2,-351158796.38356,2.5509732347149,465.86543736947,548.65657247999,864.81276735269,-2.0880606888474,164030.07658923,1,114.51322327136,593.11954166416,1067.2816789509,426.73223397561,990.57188402413,474.30289876947,310891.64839752,424.75130950053,311882.22028154,94.4,-40.352511144471,249965636.3021 +1.4,-362925053.79502,2.5509732347149,465.86543738598,548.65657272464,864.76932448175,-2.2332463587613,168296.01523836,1,115.97681855494,593.11953940957,1067.2816788186,426.73223398705,990.57188411313,474.30289890822,310891.64845012,424.75130951167,311882.22033423,92.8,-45.04976266644,249988764.90858 +1.8,-360886565.31585,2.5509732347149,465.86543741899,548.65657321393,864.69637558098,-2.2561337131495,166885.53768844,1,113.98742630286,593.11953090302,1067.2816783435,426.73223400994,990.57188429112,474.30289918571,310891.64855532,424.75130953397,311882.22043961,89.6,-44.190018207806,250099637.5759 diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_null_out.csv b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_null_out.csv new file mode 100644 index 000000000..22c05f015 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_null_out.csv @@ -0,0 +1,5 @@ +time,Burnup_avg,Tfluid_avg,Tfuel_avg,Tfuel_max,Tmod_avg,Tmod_max,Tsolid_avg,Tsolid_max,UnscaledTotalPower,decay_heat,dt,integrated_pebble_decay_heat,power_peak,power_scaling,prompt_power,total_power,total_prompt_power +0,2.8779339903123e+14,653.5561232115,903.93018541436,1118.8231829445,889.83724956067,1116.6207996086,672.5893064777,1109.1290232953,1.1924620840383e-10,15507728.892362,0,15502528.43882,2.0045835792552,2.0965027177498e+18,234497471.56118,250000000,234497471.56118 +10,2.8779339903123e+14,653.5561232115,903.95438929567,1118.8264178682,889.85995283107,1116.6263232188,672.5893064777,1109.1290232953,1.1916439807271e-10,15509503.066971,10,15509503.066971,2.0032867229057,2.0965027177498e+18,234336591.68036,249846094.74733,234336591.68036 +30,2.8779339903123e+14,653.55490971552,903.92197179111,1118.8446489338,889.83763054812,1116.6460058289,672.58657986365,1109.1536675101,1.1916855811109e-10,15506139.143237,20,15506139.143237,2.0033918616784,2.0965027177498e+18,234344772.38896,249850911.53219,234344772.38896 +70,2.8779339903123e+14,653.55142505753,903.89651490382,1118.8853880114,889.81218062571,1116.6868694648,672.58080093294,1109.1949958302,1.1948563577253e-10,15505667.93224,40,15505667.93224,2.0085052713327,2.0965027177498e+18,234968305.08564,250473973.01788,234968305.08564 diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_null_out_flow0.csv b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_null_out_flow0.csv new file mode 100644 index 000000000..9da7781f6 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/gold/htr_pm_griffin_tr_null_out_flow0.csv @@ -0,0 +1,5 @@ +time,advection_energy_balance,area_pp_reactor_inlet,barrel_avg_temperature,barrel_max_temperature,bed_solid_avg_temperature,bypass_mfr,core_delta_p,dt_max_pp,outlet_mfr,ref_avg_temperature,ref_max_temperature,rpv_avg_temperature,rpv_convection_diffusion,rpv_max_temperature,rpv_radiation,rpv_side_temp,rpv_tot_out,set_inlet_mfr,total_balance_percent,total_power +0,-249608560.63221,2.5509732347149,465.86543734883,548.65657217418,864.84466531124,-1.1563155600421,130280.09066004,0,95.999999967676,593.11954241402,1067.2816790651,426.7322339613,990.57188391289,474.30289859604,310891.64833177,424.75130948659,311882.22021568,96,0.28132863520059,250000000 +10,-249616745.04138,2.5509732347149,465.86543817414,548.65658440587,864.8332739502,-1.156306789587,130278.38411201,1,95.999761685916,593.11952596654,1067.2816796372,426.73223453352,990.57188836243,474.30290553304,310891.65096157,424.75131004397,311882.22284994,96,0.21649277151892,249846094.74733 +30,-249632161.35323,2.5509732347149,465.86543982422,548.65660886648,864.80878665819,-1.1562926779379,130275.72178274,20,95.999780992607,593.11944204634,1067.2817286637,426.73223567782,990.57189726053,474.30291940594,310891.65622063,424.75131115862,311882.22811789,96,0.21225296283022,249850911.53219 +70,-249685703.77371,2.5509732347149,465.86544312228,548.6566577766,864.91594834514,-1.1563590096346,130288.40989012,23.298969072165,96.000388993126,593.11978432309,1067.282344641,426.7322379659,990.5719150528,474.30294714734,310891.66673652,424.75131338743,311882.23865157,96,0.44006059313187,250473973.01788 diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-ss.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-ss.i new file mode 100644 index 000000000..8aad63140 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-ss.i @@ -0,0 +1,506 @@ +# ============================================================================== +# Model description +# ------------------------------------------------------------------------------ +# Steady state HTR-PM model +# Created & modifed by Sebastian Schunert, Mustafa Jaradat, April 11, 2023 +# Updated by Guillaume Giudicelli, June 15th 2026 +# ============================================================================== +# - htr-pm-FV: reference plant design based on 250MW HTR-PM plant. +# - FV using the new FV action +# ============================================================================== +# MODEL PARAMETERS +# ============================================================================== +# Problem Parameters ----------------------------------------------------------- + +# Geometry --------------------------------------------------------------------- +pebble_diameter = 0.06 # Diameter of the pebbles (m). +geometric_tolerance = 1e-3 # Geometric tolerance to generate the side-sets (m). +pbed_top = 14.228 # TAF (m). +pbed_bottom = 3.228 # Bottom of bed (m). +pbed_r = 1.500 # Pebble Bed radius (m). + +# Hydraulic diameter ----------------------------------------------------------- +D_H_bypass = 0.15 # Hydraulic diameter of bypass +D_H_riser = 0.1875 # Hydraulic diameter of riser +D_H_top_reflector = 0.2 # Hydraulic diameter of the top reflector +D_H_bottom_reflector = 0.2 # Hydraulic diameter of the top reflector +D_H_top_cavity = 0.67 # Hydraulic diameter of the top cavity + +# Properties ------------------------------------------------------------------- +global_emissivity = 0.80 # All the materials have the same emissivity (//). +pebble_bed_porosity = 0.39 # Pebble bed porosity (//). +fluid_channels_porosity = 0.20 # 20% is assumed in regions where the He flows in graphite areas (//). +bypass_channel_porosity = 0.32 # Porosity in the bypass channel (see engineering calc in spreadsheet) +riser_porosity = 0.32 # Porosity in the riser channel (see engineering calc in spreadsheet) +top_reflector_porosity = 0.3 # Porosity of the top reflector +bottom_reflector_porosity = 0.3 # Porosity of the bottom reflector + +# Operating conditions --------------------------------------------------------- +mfr = 96.0 # Total reactor He mass flow rate (kg/s). +T_inlet = 523.15 # Helium inlet temperature (K). +p_outlet = 7.0e+6 # Reactor outlet pressure (Pa) +T_exterior = 300.0 # External temperature (K) +reference_power = 250e6 # Reference power (W) + +# Heat transfer area per volume ------------------------------------------------ +C_DB = 0.023 # original Dittus Boelter constant for areal htc; modified by ApV +ApV_bypass = 8.521 # heat transfer area per volume bypass +ApV_riser = 6.927 # heat transfer area per volume riser +ApV_top_reflector = 5.737 # heat transfer area per volume top reflector +ApV_bottom_reflector = 5.737 # heat transfer area per volume bottom reflector + +# volumetric heat transfer coefficient between solid +# fluid and solid in the fluid/solid regions except the +# bed; currently applied in top_reflector bottom_reflector hot_plenum cold_plenum +# TODO: use correlations here +alpha_fluid_solid = 5e3 + +## block definitions +# fluid blocks define fluid vars and solve for them +fluid_blocks = '1 2 3 4 5 6 61 71' +# solid blocks define T_solid and solve for it +solid_blocks = '1 2 3 5 6 7 8 10 12 61 71 9 11' + +# friction scaling +scaling = 1 #0.05 + +[GlobalParams] + acceleration = '0.0 -9.81 0.0' # Gravity acceleration (m/s2). + fp = fluid_properties_obj + porosity = 'porosity' + pebble_diameter = ${pebble_diameter} + T_solid = T_solid + rhie_chow_user_object = pins_rhie_chow_interpolator +[] + +# ============================================================================== +# GEOMETRY AND MESH +# ============================================================================== + +[Mesh] + type = MeshGeneratorMesh + block_id = '1 2 3 4 5 6 7 8 10 12 61 71 9 11' + block_name = 'pebble_bed + top_reflector + bottom_reflector + top_cavity + hot_plenum + cold_plenum + side_reflector + carbon_brick + core_barrel + rpv + riser + bypass + refl_barrel_gap + barrel_rpv_gap' + uniform_refine = 1 + + [cartesian_mesh] + type = CartesianMeshGenerator + dim = 2 + + dx = ' 0.250 0.250 0.250 0.250 0.250 0.250 + 0.010 0.050 + 0.130 + 0.080 0.080 0.080 0.200 0.120 0.010 0.240 + 0.150 0.040 0.160 0.150 ' + ix = ' 1 1 1 1 1 1 + 1 1 + 1 + 1 1 1 2 1 1 1 + 1 1 1 1 ' + + dy = ' 0.400 0.400 0.100 0.100 + 0.800 0.300 0.200 0.300 0.216 0.412 + 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 + 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 + 0.760 0.712 0.300 + 0.400 0.400 ' + iy = ' 1 1 1 1 + 2 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 + 2 2 1 + 1 1 ' + + subdomain_id = ' 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 10 11 12 + 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 10 11 12 + 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 9 10 11 12 + 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 9 10 11 12 + 5 5 5 5 5 5 5 5 5 7 7 7 61 7 8 8 9 10 11 12 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 4 4 4 4 4 4 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 4 2 2 2 2 2 7 7 71 7 7 7 61 7 8 8 9 10 11 12 + 6 6 6 6 6 6 6 6 6 6 6 6 6 7 8 8 9 10 11 12 + 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 9 10 11 12 + 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 10 11 12 ' + [] + + # Side sets for gap conductance model. + [reflector_barrel_gap_inner] + type = SideSetsBetweenSubdomainsGenerator + primary_block = 8 + paired_block = 9 + input = cartesian_mesh + new_boundary = reflector_barrel_gap_inner + [] + [reflector_barrel_gap_outer] + type = SideSetsBetweenSubdomainsGenerator + primary_block = 10 + paired_block = 9 + input = reflector_barrel_gap_inner + new_boundary = reflector_barrel_gap_outer + [] + [barrel_rpv_gap_inner] + type = SideSetsBetweenSubdomainsGenerator + primary_block = 10 + paired_block = 11 + input = reflector_barrel_gap_outer + new_boundary = barrel_rpv_gap_inner + [] + [barrel_rpv_gap_outer] + type = SideSetsBetweenSubdomainsGenerator + primary_block = 12 + paired_block = 11 + input = barrel_rpv_gap_inner + new_boundary = barrel_rpv_gap_outer + [] + + # Side sets for inflow and outflow conditions. + [reactor_inlet] + type = ParsedGenerateSideset + included_subdomains = '61' + combinatorial_geometry = 'abs(y-1) < 1e-3' + fixed_normal = true + normal = '0 -1 0' + input = barrel_rpv_gap_outer + new_sideset_name = reactor_inlet + [] + [reactor_outlet] + type = SideSetsAroundSubdomainGenerator + block = '5' + fixed_normal = true + normal = '1 0 0' + input = reactor_inlet + new_boundary = reactor_outlet + [] + [riser_walls] + type = ParsedGenerateSideset + included_subdomains = '61' + included_neighbors = '7' + combinatorial_geometry = 'y > 1 + 1e-3' + input = reactor_outlet + new_sideset_name = riser_walls + [] + + # Side sets for wall boundaries. + [cold_plenum_walls] + type = SideSetsBetweenSubdomainsGenerator + primary_block = '6' + paired_block = '7' + input = riser_walls + new_boundary = cold_plenum_walls + [] + [hot_plenum_walls] + type = ParsedGenerateSideset + included_subdomains = 5 + included_neighbors = 7 + combinatorial_geometry = 'x < 1.69' + input = cold_plenum_walls + new_sideset_name = hot_plenum_walls + [] + [bypass_walls] + type = SideSetsBetweenSubdomainsGenerator + primary_block = '71' + paired_block = '7' + input = hot_plenum_walls + new_boundary = 'bypass_wall' + [] + [pbed_inner] + type = ParsedGenerateSideset + included_subdomains = '1 2 3 4 5 6' + combinatorial_geometry = '( abs(x - 0.000) < ${geometric_tolerance} & + y > ${fparse 1.000 - geometric_tolerance} & + y < ${fparse 16.00 + geometric_tolerance} )' + input = bypass_walls + new_sideset_name = pbed_inner + [] + [pbed_outer] + type = ParsedGenerateSideset + included_subdomains = '1 2 3 4' + combinatorial_geometry = '( abs(x - ${pbed_r}) < ${geometric_tolerance} & + y > ${fparse 1.800 - geometric_tolerance} & + y < ${fparse 15.70 + geometric_tolerance} ) ' + input = pbed_inner + new_sideset_name = pbed_outer + [] + [bypass_hot_plenum_interface] + type = SideSetsBetweenSubdomainsGenerator + primary_block = '71' + paired_block = '5' + new_boundary = 'bypass_hot_plenum_interface' + input = pbed_outer + [] + + coord_type = RZ +[] + +# ============================================================================== +# Physics Equations +# ============================================================================== + +[Physics] + [NavierStokes] + [Flow/all] + # basic settings + block = ${fluid_blocks} + compressibility = 'weakly-compressible' + gravity = '0.0 -9.81 0.0' + + # Porous treatement + porous_medium_treatment = true + friction_types = 'darcy forchheimer' + friction_coeffs = 'Darcy_coefficient Forchheimer_coefficient' + consistent_scaling = ${scaling} + porosity_smoothing_layers = 0 + use_friction_correction = true + + # fluid properties + density = 'rho' + dynamic_viscosity = 'mu' + + # initial conditions + initial_velocity = '1e-6 1e-6 0' + initial_pressure = '${p_outlet}' + + # boundary conditions + inlet_boundaries = 'reactor_inlet' + momentum_inlet_types = 'flux-mass' + flux_inlet_pps = 'set_inlet_mfr' + flux_inlet_directions = '0 1 0' + + outlet_boundaries = 'reactor_outlet' + momentum_outlet_types = 'fixed-pressure' + pressure_functors = '${p_outlet}' + + wall_boundaries = 'pbed_inner pbed_outer hot_plenum_walls cold_plenum_walls riser_walls bypass_wall' + momentum_wall_types = 'symmetry slip slip slip slip slip' + + # numerical scheme + pressure_face_interpolation = average + momentum_advection_interpolation = upwind + mass_advection_interpolation = upwind + # prevents solution jump on future restarts + time_derivative_contributes_to_RC_coefficients = false + [] + [FluidHeatTransfer/all] + block = ${fluid_blocks} + + # numerical scheme + energy_advection_interpolation = upwind + system_names = 'nl0' + + # convective heat transfer + ambient_convection_blocks = '1 2 3 5 6 61 71' + ambient_convection_alpha = 'alpha' + ambient_temperature = 'T_solid' + + # fluid properties + thermal_conductivity = 'kappa' + specific_heat = 'cp' + + # initial conditions + initial_temperature = '${T_inlet}' + + # boundary conditions + # see Flow physics for list of boundaries + energy_inlet_types = 'flux-mass' + energy_inlet_functors = '${T_inlet}' + + energy_wall_types = 'heatflux heatflux heatflux heatflux heatflux heatflux' + energy_wall_functors = '0 0 0 0 0 0' + [] + [] +[] + +[Variables] + [T_solid] + type = INSFVEnergyVariable + initial_condition = ${T_inlet} + block = '${solid_blocks}' + [] +[] + +[FVKernels] + [energy_storage] + type = PINSFVEnergyTimeDerivative + variable = T_solid + rho = rho_s + cp = cp_s + is_solid = true + [] + + [solid_energy_diffusion_core] + type = PINSFVEnergyAnisotropicDiffusion + variable = T_solid + kappa = 'effective_thermal_conductivity' + effective_diffusivity = true + # porosity won't be used because effective_diffusivity = true + # so set it to 1 + porosity = 1 + [] + [convection_pebble_bed_fluid] + type = PINSFVEnergyAmbientConvection + variable = T_solid + T_fluid = T_fluid + T_solid = T_solid + is_solid = true + h_solid_fluid = alpha + block = 'pebble_bed top_reflector + bottom_reflector hot_plenum + cold_plenum riser bypass' + [] + + [heat_source] + type = FVCoupledForce + variable = T_solid + v = power_density + block = 'pebble_bed' + [] +[] + +[FVBCs] + [radiation] + type = FVInfiniteCylinderRadiativeBC + variable = T_solid + boundary = right + temperature = T_solid + Tinfinity = ${T_exterior} + boundary_radius = 3.0 + boundary_emissivity = ${global_emissivity} + cylinder_radius = 4.0 + cylinder_emissivity = ${global_emissivity} + [] + [convection] + type = FVThermalResistanceBC + variable = T_solid + htc = natural_htc + T_ambient = ${T_exterior} + emissivity = 0 + thermal_conductivities = '0.025' + conduction_thicknesses = '1' + boundary = right + [] +[] + +# ============================================================================== +# Operating conditions and ramps to steady state +# ============================================================================== + +[AuxVariables] + [power_density] + type = MooseVariableFVReal + initial_condition = ${fparse reference_power / 77.754418176347} + # volume from postprocessing + block = 'pebble_bed' + [] +[] + +[Functions] + [mu_ramp_fn] + type = PiecewiseLinear + x = '0 1 10' + y = '10 1.5 1' + [] + [mfr_fn] + type = PiecewiseLinear + x = '0 1' + y = '0 ${mfr}' + [] +[] + +[Postprocessors] + [set_inlet_mfr] + type = FunctionValuePostprocessor + function = 'mfr_fn' + execute_on = TIMESTEP_BEGIN + [] +[] + +# ============================================================================== +# Materials and closure models +# ============================================================================== + +!include htr-pm-flow-fv_materials.i + +# ============================================================================== +# Solver parameters +# ============================================================================== + +[Executioner] + type = Transient + + # solver parameters + solve_type = NEWTON + petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart -pc_factor_shift_type -mat_mumps_icntl_20' + petsc_options_value = 'lu mumps 100 NONZERO 0' + automatic_scaling = true + nl_abs_tol = 1e-5 + line_search = l2 + nl_max_its = 50 + + # time stepping + end_time = 1e6 + [TimeStepper] + type = IterationAdaptiveDT + dt = 0.5 + optimal_iterations = 9 + iteration_window = 2 + growth_factor = 2 + cutback_factor = 0.5 + [] +[] + +# ============================================================================== +# Outputs and postprocessing +# ============================================================================== + +[Outputs] + csv = true + exodus = true + checkpoint = true + [console] + type = Console + hide = 'area_pp_reactor_inlet set_inlet_mfr' + [] + print_linear_converged_reason = false + print_linear_residuals = false + print_nonlinear_converged_reason = false +[] + +!include htr-pm-flow-fv_postprocessing.i diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i new file mode 100644 index 000000000..40fef32b8 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i @@ -0,0 +1,353 @@ +# ============================================================================== +# Model description +# ------------------------------------------------------------------------------ +# DLOFC HTR-PM model +# Created & modifed by Sebastian Schunert, Mustafa Jaradat, April 11, 2023 +# Updated by Guillaume Giudicelli, June 15th 2026 +# ============================================================================== +# - htr-pm-FV: reference plant design based on 250MW HTR-PM plant. +# - FV using the new FV action +# ============================================================================== +# MODEL PARAMETERS +# ============================================================================== +# Problem Parameters ----------------------------------------------------------- + +# Geometry --------------------------------------------------------------------- +pebble_diameter = 0.06 # Diameter of the pebbles (m). +pbed_top = 14.228 # TAF (m). +pbed_bottom = 3.228 # Bottom of bed (m). +pbed_r = 1.500 # Pebble Bed radius (m). + +# Hydraulic diameter ----------------------------------------------------------- +D_H_bypass = 0.15 # Hydraulic diameter of bypass +D_H_riser = 0.1875 # Hydraulic diameter of riser +D_H_top_reflector = 0.2 # Hydraulic diameter of the top reflector +D_H_bottom_reflector = 0.2 # Hydraulic diameter of the top reflector +D_H_top_cavity = 0.67 # Hydraulic diameter of the top cavity + +# Properties ------------------------------------------------------------------- +global_emissivity = 0.80 # All the materials has the same emissivity (//). +pebble_bed_porosity = 0.39 # Pebble bed porosity (//). +fluid_channels_porosity = 0.20 # 20% is assumed in regions where the He flows in graphite areas (//). +bypass_channel_porosity = 0.32 # Porosity in the bypass channel (see engineering calc in spreadsheet) +riser_porosity = 0.32 # Porosity in the riser channel (see engineering calc in spreadsheet) +top_reflector_porosity = 0.3 # Porosity of the top reflector +bottom_reflector_porosity = 0.3 # Porosity of the bottom reflector + +# Operating conditions --------------------------------------------------------- +mfr = 96.0 # Total reactor He mass flow rate (kg/s). +T_inlet = 523.15 # Helium inlet temperature (K). +p_outlet = 7.0e+6 # Reactor outlet pressure (Pa) +T_exterior = 300.0 # External temperature (K) +reference_power = 250e6 # Reference power (W) + +# Heat transfer area per volume ------------------------------------------------ +C_DB = 0.023 # original Dittus Boelter constant for areal htc; modified by ApV +ApV_bypass = 8.521 # heat transfer area per volume bypass +ApV_riser = 6.927 # heat transfer area per volume riser +ApV_top_reflector = 5.737 # heat transfer area per volume top reflector +ApV_bottom_reflector = 5.737 # heat transfer area per volume bottom reflector + +# volumetric heat transfer coefficient between solid +# fluid and solid in the fluid/solid regions except the +# bed; currently applied in top_reflector bottom_reflector hot_plenum cold_plenum +# TODO: use correlations here +alpha_fluid_solid = 5e3 + +## block definitions +# fluid blocks define fluid vars and solve for them +fluid_blocks = '1 2 3 4 5 6 61 71' +# solid blocks define T_solid and solve for it +solid_blocks = '1 2 3 5 6 7 8 10 12 61 71 9 11' + +# friction scaling +scaling = 1 #0.05 + +[GlobalParams] + acceleration = '0.0 -9.81 0.0' # Gravity acceleration (m/s2). + fp = fluid_properties_obj + porosity = 'porosity' + pebble_diameter = ${pebble_diameter} + T_solid = T_solid + rhie_chow_user_object = pins_rhie_chow_interpolator +[] + +# ============================================================================== +# GEOMETRY AND MESH +# ============================================================================== + +[Mesh] + [file] + type = FileMeshGenerator + # for single-physics simulation restart (as the parent app) + # file = 'htr-pm-flow-fv-ss_out.e' + # use_for_exodus_restart = true + # for multiphysics simulation restart (as a multiapp) + # We use the checkpoint to make sure to use the same partitioning + file = 'htr_pm_griffin_ss_out_flow0_cp/LATEST' + [] + coord_type = RZ +[] + +# ============================================================================== +# Physics Equations +# ============================================================================== + +[Physics] + [NavierStokes] + [Flow/all] + # exodus restart + # initialize_variables_from_mesh_file = true + + # basic settings + block = ${fluid_blocks} + compressibility = 'weakly-compressible' + gravity = '0.0 -9.81 0.0' + + # Variables, defined below for the Exodus restart + velocity_variable = 'superficial_vel_x superficial_vel_y' + pressure_variable = 'pressure' + + # Porous treatement + porous_medium_treatment = true + friction_types = 'darcy forchheimer' + friction_coeffs = 'Darcy_coefficient Forchheimer_coefficient' + use_friction_correction = true + consistent_scaling = ${scaling} + porosity_smoothing_layers = 0 + + # fluid properties + density = 'rho' + dynamic_viscosity = 'mu' + + # boundary conditions + inlet_boundaries = 'reactor_inlet' + momentum_inlet_types = 'flux-mass' + flux_inlet_pps = 'set_inlet_mfr' + flux_inlet_directions = '0 1 0' + + outlet_boundaries = 'reactor_outlet' + momentum_outlet_types = 'fixed-pressure' + pressure_functors = 'pressure_out_fn' + + wall_boundaries = 'pbed_inner pbed_outer hot_plenum_walls cold_plenum_walls riser_walls bypass_wall' + momentum_wall_types = 'symmetry slip slip slip slip slip' + + # numerical parameters + pressure_face_interpolation = average + momentum_advection_interpolation = upwind + mass_advection_interpolation = upwind + # prevents solution jump on future restarts + time_derivative_contributes_to_RC_coefficients = false + [] + [FluidHeatTransfer/all] + # exodus restart + # initialize_variables_from_mesh_file = true + + fluid_temperature_variable = 'T_fluid' + block = ${fluid_blocks} + + # material properties + thermal_conductivity = 'kappa' + specific_heat = 'cp' + + # convective heat transfer + ambient_convection_blocks = '1 2 3 5 6 61 71' + ambient_convection_alpha = 'alpha' + ambient_temperature = 'T_solid' + + # boundary conditions + # see Flow physics for list of boundaries + energy_inlet_types = 'flux-mass' + energy_inlet_functors = '${T_inlet}' + + energy_wall_types = 'heatflux heatflux heatflux heatflux heatflux heatflux' + energy_wall_functors = '0 0 0 0 0 0' + + # numerical parameters + energy_advection_interpolation = upwind + energy_scaling = 5e-6 + coupled_flow_physics = 'all' + system_names = 'nl0' + [] + [] +[] + +[Variables] + [T_solid] + type = INSFVEnergyVariable + block = '${solid_blocks}' + # restart from exodus + # initial_from_file_var = T_solid + # initial_from_file_timestep = LATEST + [] +[] + +[FVKernels] + [energy_storage] + type = PINSFVEnergyTimeDerivative + variable = T_solid + rho = rho_s + cp = cp_s + is_solid = true + [] + [solid_energy_diffusion_core] + type = PINSFVEnergyAnisotropicDiffusion + variable = T_solid + kappa = 'effective_thermal_conductivity' + effective_diffusivity = true + # porosity won't be used because effective_diffusivity = true + # so set it to 1 + porosity = 1 + [] + [convection_pebble_bed_fluid] + type = PINSFVEnergyAmbientConvection + variable = T_solid + T_fluid = T_fluid + T_solid = T_solid + is_solid = true + h_solid_fluid = alpha + block = 'pebble_bed top_reflector + bottom_reflector hot_plenum + cold_plenum riser bypass' + [] + [heat_source] + type = FVCoupledForce + variable = T_solid + v = power_density + block = 'pebble_bed' + [] +[] + +[FVBCs] + [radiation] + type = FVInfiniteCylinderRadiativeBC + variable = T_solid + boundary = right + temperature = T_solid + Tinfinity = ${T_exterior} + boundary_radius = 3.0 + boundary_emissivity = ${global_emissivity} + cylinder_radius = 4.0 + cylinder_emissivity = ${global_emissivity} + [] + [convection] + type = FVThermalResistanceBC + variable = T_solid + htc = natural_htc + T_ambient = ${T_exterior} + emissivity = 0 + thermal_conductivities = '0.025' + conduction_thicknesses = '1' + boundary = right + [] +[] + +# ============================================================================== +# DLOFC transient specifications +# ============================================================================== + +[AuxVariables] + [power_density] + type = MooseVariableFVReal + block = 'pebble_bed' + # restart from exodus + # initial_from_file_var = power_density + # initial_from_file_timestep = LATEST + [] +[] + +[Functions] + # viscosity was ramped in equilibrium calculation + [mu_ramp_fn] + type = PiecewiseLinear + x = '0 1 1e+7' + y = '1 1 1' + [] + # DLOFC transient + [mfr_fn] + type = PiecewiseLinear + x = ' 0 1 13' + y = ' ${mfr} ${mfr} 0.0' + [] + [pressure_out_fn] + type = PiecewiseLinear + x = ' 0 1 13' + y = '${p_outlet} ${p_outlet} 101325.0' + [] + # increase time steps as transient slows down + [dt_max_fn] + type = PiecewiseLinear + x = '-10 0 16 30 1000 5000 20000 100000 200000 500000' + y = ' 1 1 1 1 50 100 200 400 400 500' + [] +[] + +[Postprocessors] + [set_inlet_mfr] + type = FunctionValuePostprocessor + function = 'mfr_fn' + execute_on = TIMESTEP_BEGIN + [] + [dt_max_pp] + type = FunctionValuePostprocessor + function = dt_max_fn + execute_on = TIMESTEP_BEGIN + [] +[] + +# ============================================================================== +# Materials and closure models +# ============================================================================== + +!include htr-pm-flow-fv_materials.i + +# ============================================================================== +# Solver parameters +# ============================================================================== + +[Executioner] + type = Transient + + # solver parameters + solve_type = NEWTON + petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart -pc_factor_shift_type -mat_mumps_icntl_20' + petsc_options_value = 'lu mumps 100 NONZERO 0' + automatic_scaling = true + nl_abs_tol = 1e-5 + line_search = l2 + nl_max_its = 50 + + # time stepping + start_time = 0 + end_time = 5.0e+05 + [TimeStepper] + type = IterationAdaptiveDT + dt = 1 + timestep_limiting_postprocessor = dt_max_pp + optimal_iterations = 10 + iteration_window = 2 + growth_factor = 2 + cutback_factor = 0.5 + [] +[] + +# ============================================================================== +# Outputs and postprocessing +# ============================================================================== + +[Outputs] + csv = true + exodus = true + [console] + type = Console + # hide some trivial postprocessors, and the balance which we don't run long + # enough to establish + hide = 'area_pp_reactor_inlet set_inlet_mfr total_balance_percent advection_energy_balance' + [] + print_linear_converged_reason = false + print_linear_residuals = false + print_nonlinear_converged_reason = false +[] + +!include htr-pm-flow-fv_postprocessing.i diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-null.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-null.i new file mode 100644 index 000000000..ac2d21dd3 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-null.i @@ -0,0 +1,347 @@ +# ============================================================================== +# Model description +# ------------------------------------------------------------------------------ +# Null HTR-PM model +# Created & modifed by Sebastian Schunert, Mustafa Jaradat, April 11, 2023 +# Updated by Guillaume Giudicelli, June 15th 2026 +# ============================================================================== +# - htr-pm-FV: reference plant design based on 250MW HTR-PM plant. +# - 2D RZ geometry +# - FV using the new FV physics syntax +# ============================================================================== +# MODEL PARAMETERS +# ============================================================================== +# Problem Parameters ----------------------------------------------------------- + +# Geometry --------------------------------------------------------------------- +pebble_diameter = 0.06 # Diameter of the pebbles (m). +pbed_top = 14.228 # TAF (m). +pbed_bottom = 3.228 # Bottom of bed (m). +pbed_r = 1.500 # Pebble Bed radius (m). + +# Hydraulic diameter ----------------------------------------------------------- +D_H_bypass = 0.15 # Hydraulic diameter of bypass +D_H_riser = 0.1875 # Hydraulic diameter of riser +D_H_top_reflector = 0.2 # Hydraulic diameter of the top reflector +D_H_bottom_reflector = 0.2 # Hydraulic diameter of the top reflector +D_H_top_cavity = 0.67 # Hydraulic diameter of the top cavity + +# Properties ------------------------------------------------------------------- +global_emissivity = 0.80 # All the materials have the same emissivity (//). +pebble_bed_porosity = 0.39 # Pebble bed porosity (//). +fluid_channels_porosity = 0.20 # 20% is assumed in regions where the He flows in graphite areas (//). +bypass_channel_porosity = 0.32 # Porosity in the bypass channel (see engineering calc in spreadsheet) +riser_porosity = 0.32 # Porosity in the riser channel (see engineering calc in spreadsheet) +top_reflector_porosity = 0.3 # Porosity of the top reflector +bottom_reflector_porosity = 0.3 # Porosity of the bottom reflector + +# Operating conditions --------------------------------------------------------- +mfr = 96.0 # Total reactor He mass flow rate (kg/s). +T_inlet = 523.15 # Helium inlet temperature (K). +p_outlet = 7.0e+6 # Reactor outlet pressure (Pa) +T_exterior = 300.0 # External temperature (K) +reference_power = 250e6 # Reference power (W) + +# Heat transfer area per volume ------------------------------------------------ +C_DB = 0.023 # original Dittus Boelter constant for areal htc; modified by ApV +ApV_bypass = 8.521 # heat transfer area per volume bypass +ApV_riser = 6.927 # heat transfer area per volume riser +ApV_top_reflector = 5.737 # heat transfer area per volume top reflector +ApV_bottom_reflector = 5.737 # heat transfer area per volume bottom reflector + +# volumetric heat transfer coefficient between solid +# fluid and solid in the fluid/solid regions except the +# bed; currently applied in top_reflector bottom_reflector hot_plenum cold_plenum +# TODO: use correlations here +alpha_fluid_solid = 5e3 + +## block definitions +# fluid blocks define fluid vars and solve for them +fluid_blocks = '1 2 3 4 5 6 61 71' +# solid blocks define T_solid and solve for it +solid_blocks = '1 2 3 5 6 7 8 10 12 61 71 9 11' + +# friction scaling +scaling = 1 #0.05 + +[GlobalParams] + acceleration = '0.0 -9.81 0.0' # Gravity acceleration (m/s2). + fp = fluid_properties_obj + porosity = 'porosity' + pebble_diameter = ${pebble_diameter} + T_solid = T_solid + rhie_chow_user_object = pins_rhie_chow_interpolator +[] + +# ============================================================================== +# GEOMETRY AND MESH +# ============================================================================== + +[Mesh] + [file] + type = FileMeshGenerator + # for single-physics simulation restart (as the parent app) + # file = 'htr-pm-flow-fv-ss_out.e' + # use_for_exodus_restart = true + # for multiphysics simulation (as a multiapp) + # We use the checkpoint to make sure to use the same partitioning + file = 'htr_pm_griffin_ss_out_flow0_cp/LATEST' + [] + coord_type = RZ +[] + +# ============================================================================== +# Physics Equations +# ============================================================================== + +[Physics] + [NavierStokes] + [Flow/all] + # basic settings + block = ${fluid_blocks} + compressibility = 'weakly-compressible' + gravity = '0.0 -9.81 0.0' + # for exodus restart + # initialize_variables_from_mesh_file = true + + # Porous treatement + porous_medium_treatment = true + friction_types = 'darcy forchheimer' + friction_coeffs = 'Darcy_coefficient Forchheimer_coefficient' + consistent_scaling = ${scaling} + porosity_smoothing_layers = 0 + use_friction_correction = true + + # fluid properties + density = 'rho' + dynamic_viscosity = 'mu' + + # boundary conditions + inlet_boundaries = 'reactor_inlet' + momentum_inlet_types = 'flux-mass' + flux_inlet_pps = 'set_inlet_mfr' + flux_inlet_directions = '0 1 0' + + outlet_boundaries = 'reactor_outlet' + momentum_outlet_types = 'fixed-pressure' + pressure_functors = '${p_outlet}' + + wall_boundaries = 'pbed_inner pbed_outer hot_plenum_walls cold_plenum_walls riser_walls bypass_wall' + momentum_wall_types = 'symmetry slip slip slip slip slip' + + # numerical scheme + pressure_face_interpolation = average + momentum_advection_interpolation = upwind + mass_advection_interpolation = upwind + # prevents solution jump on future restarts + time_derivative_contributes_to_RC_coefficients = false + [] + [FluidHeatTransfer/all] + block = ${fluid_blocks} + # for exodus restart + # initialize_variables_from_mesh_file = true + + # numerical scheme + energy_advection_interpolation = upwind + system_names = 'nl0' + + # convective heat transfer + ambient_convection_blocks = '1 2 3 5 6 61 71' + ambient_convection_alpha = 'alpha' + ambient_temperature = 'T_solid' + + # fluid properties + thermal_conductivity = 'kappa' + specific_heat = 'cp' + + # boundary conditions + # see Flow physics for list of boundaries + energy_inlet_types = 'flux-mass' + energy_inlet_functors = '${T_inlet}' + + energy_wall_types = 'heatflux heatflux heatflux heatflux heatflux heatflux' + energy_wall_functors = '0 0 0 0 0 0' + [] + [] +[] + +[Variables] + [T_solid] + type = INSFVEnergyVariable + block = '${solid_blocks}' + # for exodus restart + # initial_from_file_var = T_solid + # initial_from_file_timestep = LATEST + [] +[] + +[FVKernels] + [energy_storage] + type = PINSFVEnergyTimeDerivative + variable = T_solid + rho = rho_s + cp = cp_s + is_solid = true + [] + [solid_energy_diffusion_core] + type = PINSFVEnergyAnisotropicDiffusion + variable = T_solid + kappa = 'effective_thermal_conductivity' + effective_diffusivity = true + # porosity won't be used because effective_diffusivity = true + # so set it to 1 + porosity = 1 + [] + [convection_pebble_bed_fluid] + type = PINSFVEnergyAmbientConvection + variable = T_solid + T_fluid = T_fluid + T_solid = T_solid + is_solid = true + h_solid_fluid = alpha + block = 'pebble_bed top_reflector + bottom_reflector hot_plenum + cold_plenum riser bypass' + [] + [heat_source] + type = FVCoupledForce + variable = T_solid + v = power_density + block = 'pebble_bed' + [] +[] + +[FVBCs] + # Note: applying the radiation separately is not best practice + # because the surface temperature used here does not take into account + # conduction and convection + [radiation] + type = FVInfiniteCylinderRadiativeBC + variable = T_solid + boundary = right + temperature = T_solid + Tinfinity = ${T_exterior} + boundary_radius = 3.0 + boundary_emissivity = ${global_emissivity} + cylinder_radius = 4.0 + cylinder_emissivity = ${global_emissivity} + [] + [convection] + type = FVThermalResistanceBC + variable = T_solid + htc = natural_htc + T_ambient = ${T_exterior} + emissivity = 0 + thermal_conductivities = '0.025' + conduction_thicknesses = '1' + boundary = right + [] +[] + +# ============================================================================== +# Constant (q,v,mu,p,T) conditions as we hold the null transient +# ============================================================================== + +[AuxVariables] + [power_density] + type = MooseVariableFVReal + block = 'pebble_bed' + # restart from exodus + # initial_from_file_var = power_density + # initial_from_file_timestep = LATEST + [] +[] + +[Functions] + # Viscosity is constant, rampdown has been performed in steady-state inputs + [mu_ramp_fn] + type = PiecewiseLinear + x = '0 1 1e+7' + y = '1 1 1' + [] + # MFR is constant, ramp-up has been performed in steady-state inputs + [mfr_fn] + type = PiecewiseLinear + x = ' 0 13' + y = ' ${mfr} ${mfr}' + [] + # Pressure is constant in null transient + [pressure_out_fn] + type = PiecewiseLinear + x = ' 0 13' + y = '${p_outlet} ${p_outlet}' + [] + # Allows for fast growth in time step size + [dt_max_fn] + type = PiecewiseLinear + x = '-10 0 16 30 1000 5000 20000 100000 200000 500000' + y = ' 1 1 1 20 100 200 400 1000 1000 1000' + [] +[] + +[Postprocessors] + [set_inlet_mfr] + type = FunctionValuePostprocessor + function = 'mfr_fn' + execute_on = 'INITIAL TIMESTEP_BEGIN' + [] + [dt_max_pp] + type = FunctionValuePostprocessor + function = dt_max_fn + execute_on = TIMESTEP_BEGIN + [] +[] + +# ============================================================================== +# Materials and closure models +# ============================================================================== + +!include htr-pm-flow-fv_materials.i + +# ============================================================================== +# Solver parameters +# ============================================================================== + +[Executioner] + type = Transient + + # solver parameters + solve_type = NEWTON + petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart -pc_factor_shift_type -mat_mumps_icntl_20' + petsc_options_value = 'lu mumps 100 NONZERO 0' + automatic_scaling = true + nl_abs_tol = 1e-5 + nl_max_its = 50 + + # time stepping + start_time = 0 + end_time = 5.0e+05 + [TimeStepper] + type = IterationAdaptiveDT + dt = 1e7 + timestep_limiting_postprocessor = dt_max_pp + optimal_iterations = 10 + iteration_window = 2 + growth_factor = 2 + cutback_factor = 0.5 + [] +[] + +# ============================================================================== +# Outputs and postprocessing +# ============================================================================== + +[Outputs] + csv = true + exodus = true + # Remove two postprocessors created by the action to control verbosity + [console] + type = Console + hide = 'area_pp_reactor_inlet set_inlet_mfr' + [] + print_linear_converged_reason = false + print_linear_residuals = false + print_nonlinear_converged_reason = false +[] + +!include htr-pm-flow-fv_postprocessing.i diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv_materials.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv_materials.i new file mode 100644 index 000000000..d1c31e2ad --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv_materials.i @@ -0,0 +1,299 @@ +# ============================================================================== +# Materials and closure models +# ============================================================================== + +[FluidProperties] + [fluid_properties_obj] + type = HeliumFluidProperties + allow_imperfect_jacobians = true + [] +[] + +[Materials] + ## natural htc for BC + [natural_htc_mat] + type = ADGenericConstantMaterial + prop_names = 'natural_htc' + prop_values = '5' + [] +[] + +[FunctorMaterials] + ## Solid thermal properties + [graphite_rho_and_cp] + type = ADGenericFunctorMaterial + prop_names = 'rho_s cp_s' + prop_values = '1780.0 1697' + block = 'pebble_bed side_reflector carbon_brick + bottom_reflector hot_plenum cold_plenum bypass riser + top_reflector' + [] + [He_rho_and_cp] + type = ADGenericFunctorMaterial + prop_names = 'rho_s cp_s' + prop_values = '6 5000' + block = 'refl_barrel_gap barrel_rpv_gap' + [] + [pebble_bed_ks] + type = ADGenericFunctorMaterial + prop_names = 'k_s' + prop_values = '26.0' + block = 'pebble_bed' + [] + + [reflector_ks] + type = ADGenericFunctorMaterial + prop_names = 'k_s' + prop_values = '26.0' + block = 'side_reflector carbon_brick' + [] + + [core_barrel_steel] + type = ADGenericFunctorMaterial + prop_names = 'rho_s cp_s k_s' + prop_values = '7800.0 540 17.0' + block = 'core_barrel' + [] + + [rpv_steel] + type = ADGenericFunctorMaterial + prop_names = 'rho_s cp_s k_s' + prop_values = '7800.0 525.0 38.0' + block = 'rpv' + [] + + [channels_ks] + type = ADGenericFunctorMaterial + prop_names = 'k_s' + prop_values = '20.8' + block = 'hot_plenum cold_plenum' + [] + + [bypass_ks] + type = ADGenericFunctorMaterial + prop_names = 'k_s' + prop_values = '${fparse 26.0 * (1 - bypass_channel_porosity)}' + block = 'bypass' + [] + + [riser_ks] + type = ADGenericFunctorMaterial + prop_names = 'k_s' + prop_values = '${fparse 26.0 * (1 - riser_porosity)}' + block = 'riser' + [] + + [top_reflector_ks] + type = ADGenericFunctorMaterial + prop_names = 'k_s' + prop_values = '${fparse 26.0 * (1 - top_reflector_porosity)}' + block = 'top_reflector' + [] + + [bottom_reflector_ks] + type = ADGenericFunctorMaterial + prop_names = 'k_s' + prop_values = '${fparse 26.0 * (1 - bottom_reflector_porosity)}' + block = 'bottom_reflector' + [] + + # Effective solid thermal conductivity in the bed + [pebble_effective_thermal_conductivity] + type = FunctorPebbleBedKappaSolid + radiation = BreitbachBarthels + emissivity = ${global_emissivity} + Youngs_modulus = 11.5e9 + Poisson_ratio = 0.31 + wall_distance = wall_distance_uo + block = 'pebble_bed' + [] + + # we use effective_thermal_conductivity everywhere as thermal conductivity + # in most regions effective_thermal_conductivity = k_s + [effective_solid_thermal_conductivity_pb] + type = ADGenericVectorFunctorMaterial + prop_names = 'effective_thermal_conductivity' + prop_values = 'kappa_s kappa_s kappa_s' + block = 'pebble_bed' + [] + + [effective_solid_thermal_conductivity] + type = ADGenericVectorFunctorMaterial + prop_names = 'effective_thermal_conductivity' + prop_values = 'k_s k_s k_s' + block = 'top_reflector + bottom_reflector + hot_plenum + cold_plenum + side_reflector + carbon_brick + core_barrel + rpv + riser + bypass' + [] + [non_pebble_bed_eff_solid_conductivity] + type = ADGenericVectorFunctorMaterial + prop_names = 'effective_thermal_conductivity' + # cannot set to 0, and should be isotropic + prop_values = '4 4 4' + block = 'refl_barrel_gap barrel_rpv_gap' + [] + + ## hydraulic diameter and porosity - fixed number per block + [porosity] + type = ADPiecewiseByBlockFunctorMaterial + prop_name = 'porosity' + subdomain_to_prop_value = 'pebble_bed ${pebble_bed_porosity} + top_reflector ${top_reflector_porosity} + bottom_reflector ${bottom_reflector_porosity} + top_cavity 1 + hot_plenum ${fluid_channels_porosity} + cold_plenum ${fluid_channels_porosity} + side_reflector 0 + carbon_brick 0 + core_barrel 0 + rpv 0 + riser ${riser_porosity} + bypass ${bypass_channel_porosity} + refl_barrel_gap 0 + barrel_rpv_gap 0 + ' + [] + + [hydraulic_diameter] + type = PiecewiseByBlockFunctorMaterial + prop_name = 'characteristic_length' + subdomain_to_prop_value = 'pebble_bed ${pebble_diameter} + top_reflector ${D_H_top_reflector} + bottom_reflector ${D_H_bottom_reflector} + top_cavity ${D_H_top_cavity} + hot_plenum 1 + cold_plenum 1 + riser ${D_H_riser} + bypass ${D_H_bypass} + ' + block = ${fluid_blocks} + [] + + ## Fluid properties and non-dimensional numbers + [fluid_props_to_mat_props] + type = GeneralFunctorFluidProps + pressure = 'pressure' + T_fluid = 'T_fluid' + speed = 'speed' + # To initialize with a high viscosity + mu_rampdown = 'mu_ramp_fn' + # For porous flow + characteristic_length = characteristic_length + block = ${fluid_blocks} + [] + + ## Volumetric heat transfer coefficient correlations + [pebble_volumetric_heat_transfer] + type = FunctorWakaoPebbleBedHTC + block = 'pebble_bed' + [] + + [bypass_volumetric_heat_transfer] + type = FunctorDittusBoelterWallHTC + C = ${fparse C_DB * ApV_bypass} + block = 'bypass' + [] + + [riser_volumetric_heat_transfer] + type = FunctorDittusBoelterWallHTC + C = ${fparse C_DB * ApV_riser} + block = 'riser' + [] + + [top_reflector_volumetric_heat_transfer] + type = FunctorDittusBoelterWallHTC + C = ${fparse C_DB * ApV_top_reflector} + block = 'top_reflector' + [] + + [bottom_reflector_volumetric_heat_transfer] + type = FunctorDittusBoelterWallHTC + C = ${fparse C_DB * ApV_bottom_reflector} + block = 'bottom_reflector' + [] + + [rename_wall_htc_to_alpha] + type = ADGenericFunctorMaterial + prop_names = 'alpha' + prop_values = 'wall_htc' + block = 'bypass riser top_reflector bottom_reflector' + [] + + [other_fluid_solid_volumetric_heat_transfer] + type = ADGenericFunctorMaterial + prop_names = 'alpha' + prop_values = '${alpha_fluid_solid}' + block = 'hot_plenum cold_plenum' + [] + + ## Effective fluid thermal conductivities + [pebble_bed_effective_fluid_thermal_conductivity] + type = FunctorLinearPecletKappaFluid + block = 'pebble_bed' + [] + + #inactive = 'effective_thermal_conductivity_top_cavity' + [non_pebble_bed_eff_solid_conductivity_2] + type = ADGenericVectorFunctorMaterial + prop_names = 'kappa' + prop_values = '15 15 15' + block = 'top_cavity' + [] + + [effective_fluid_thermal_conductivity] + type = ADGenericVectorFunctorMaterial + prop_names = 'kappa' + prop_values = 'k k k' + block = 'top_reflector bottom_reflector + hot_plenum cold_plenum riser bypass' + [] + + ## Drag correlations + [drag_pebble_bed] + type = FunctorKTADragCoefficients + block = 'pebble_bed' + [] + + [isotropic_drag_hot_plenum] + type = FunctorIsotropicFunctorDragCoefficients + Darcy_coefficient_sub = 0 + Forchheimer_coefficient_sub = ${fparse 1.25*scaling} + block = 'hot_plenum' + [] + [isotropic_drag_cold_plenum_cavity] + type = FunctorIsotropicFunctorDragCoefficients + Darcy_coefficient_sub = 0 + Forchheimer_coefficient_sub = ${fparse 1.25*scaling} + block = 'cold_plenum top_cavity' + [] + + [drag_Churchill] + type = FunctorChurchillDragCoefficients + block = 'riser top_reflector bottom_reflector' + multipliers = ' 1.0e+05 1.0 1.0e+05 ' + [] + + [drag_bypass] + type = FunctorIsotropicFunctorDragCoefficients + Darcy_coefficient_sub = 0 + Forchheimer_coefficient_sub = 2000 + block = 'bypass' + [] +[] + +[UserObjects] + [wall_distance_uo] + type = WallDistanceCylindricalBed + outer_radius = ${pbed_r} + axis = 1 + bottom = ${pbed_bottom} + top = ${pbed_top} + [] +[] diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv_postprocessing.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv_postprocessing.i new file mode 100644 index 000000000..e9227ce07 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv_postprocessing.i @@ -0,0 +1,251 @@ +# ============================================================================== +# Material property output +# ============================================================================== + +[AuxVariables] + [porosity_var] + type = MooseVariableFVReal + block = ${fluid_blocks} + [] + + [alpha_var] + type = MooseVariableFVReal + block = 'pebble_bed top_reflector + bottom_reflector hot_plenum + cold_plenum riser bypass' + [] + + [effective_thermal_conductivity_var0] + type = MooseVariableFVReal + block = ${solid_blocks} + [] + + [effective_thermal_conductivity_var1] + type = MooseVariableFVReal + block = ${solid_blocks} + [] + + [kappa_f_var0] + type = MooseVariableFVReal + block = ${fluid_blocks} + [] + + [kappa_f_var1] + type = MooseVariableFVReal + block = ${fluid_blocks} + [] +[] + +[AuxKernels] + [porosity_var_aux] + type = FunctorAux + variable = porosity_var + functor = 'porosity' + block = ${fluid_blocks} + [] + + [alpha_var_aux] + type = FunctorAux + variable = alpha_var + functor = 'alpha' + block = 'pebble_bed top_reflector + bottom_reflector hot_plenum + cold_plenum riser bypass' + [] + + [effective_thermal_conductivity_var0_aux] + type = ADFunctorVectorElementalAux + variable = effective_thermal_conductivity_var0 + functor = 'effective_thermal_conductivity' + block = ${solid_blocks} + component = 0 + [] + + [effective_thermal_conductivity_var1_aux] + type = ADFunctorVectorElementalAux + variable = effective_thermal_conductivity_var1 + functor = 'effective_thermal_conductivity' + block = ${solid_blocks} + component = 1 + [] + + [kappa_f_var0_aux] + type = ADFunctorVectorElementalAux + variable = kappa_f_var0 + functor = 'kappa' + block = ${fluid_blocks} + component = 0 + [] + + [kappa_f_var1_aux] + type = ADFunctorVectorElementalAux + variable = kappa_f_var1 + functor = 'kappa' + block = ${fluid_blocks} + component = 1 + [] +[] + +# ============================================================================== +# Integral postprocessing +# ============================================================================== + +[Postprocessors] + + # Flow rate postprocessing + [outlet_mfr] + type = VolumetricFlowRate + vel_x = superficial_vel_x + vel_y = superficial_vel_y + advected_quantity = rho + boundary = reactor_outlet + execute_on = 'initial timestep_end' + [] + [bypass_mfr] + type = VolumetricFlowRate + vel_x = superficial_vel_x + vel_y = superficial_vel_y + advected_quantity = rho + boundary = bypass_hot_plenum_interface + [] + + # Pressure postprocessing + [pressure_inlet] + type = SideAverageValue + boundary = 'reactor_inlet' + variable = pressure + execute_on = 'initial TIMESTEP_END' + outputs = 'none' + [] + [pressure_outlet] + type = SideAverageValue + boundary = 'reactor_outlet' + variable = pressure + execute_on = 'initial TIMESTEP_END' + outputs = 'none' + [] + [core_delta_p] + type = ParsedPostprocessor + expression ='pressure_inlet - pressure_outlet' + pp_names = 'pressure_inlet pressure_outlet' + execute_on = 'initial TIMESTEP_END' + [] + + [total_power] + type = ElementIntegralVariablePostprocessor + variable = power_density + block = 'pebble_bed' + execute_on = 'initial timestep_end' + [] + [core_volume] + type = VolumePostprocessor + block = 'pebble_bed' + execute_on = 'initial timestep_end' + outputs = 'none' + [] + + # Temperature postprocessing + [bed_solid_avg_temperature] + type = ElementAverageValue + variable = T_solid + execute_on = 'initial timestep_end' + block = 'pebble_bed' + [] + [ref_max_temperature] + type = ElementExtremeValue + variable = T_solid + execute_on = 'initial timestep_end' + block = 'side_reflector' + [] + [ref_avg_temperature] + type = ElementAverageValue + variable = T_solid + execute_on = 'initial timestep_end' + block = 'side_reflector' + [] + [barrel_max_temperature] + type = ElementExtremeValue + variable = T_solid + execute_on = 'initial timestep_end' + block = 'core_barrel' + [] + [barrel_avg_temperature] + type = ElementAverageValue + variable = T_solid + execute_on = 'initial timestep_end' + block = 'core_barrel' + [] + [rpv_max_temperature] + type = ElementExtremeValue + variable = T_solid + execute_on = 'initial timestep_end' + block = 'rpv' + [] + [rpv_avg_temperature] + type = ElementAverageValue + variable = T_solid + execute_on = 'initial timestep_end' + block = 'rpv' + [] + [rpv_side_temp] + type = SideAverageValue + variable = 'T_solid' + execute_on = 'initial timestep_end' + boundary = 'right' + [] + + # Exterior heat flux postprocessing + [rpv_convection_diffusion] + type = SideFVFluxBCIntegral + boundary = right + fvbcs = 'convection' + [] + [rpv_radiation] + type = SideFVFluxBCIntegral + boundary = right + fvbcs = 'radiation' + [] + [rpv_tot_out] + type = ParsedPostprocessor + expression ='rpv_radiation + rpv_convection_diffusion' + pp_names = 'rpv_radiation rpv_convection_diffusion' + execute_on = 'initial timestep_end' + [] + + # Advective heat flux postprocessing + [h_flow_in] + type = VolumetricFlowRate + vel_x = superficial_vel_x + vel_y = superficial_vel_y + advected_quantity = 'rho_h' + boundary = reactor_inlet + execute_on = 'initial timestep_end' + outputs = 'none' + [] + [h_flow_out] + type = VolumetricFlowRate + vel_x = superficial_vel_x + vel_y = superficial_vel_y + advected_quantity = 'rho_h' + boundary = reactor_outlet + execute_on = 'initial timestep_end' + outputs = 'none' + [] + [advection_energy_balance] + type = ParsedPostprocessor + expression ='h_flow_in - h_flow_out' + pp_names = 'h_flow_in h_flow_out' + execute_on = 'initial timestep_end' + [] + + # should be 0 at steady-state, demonstrating conservation of energy + # imbalance generally comes from: + # - an inadequacy of the postprocessing of fluxes for the discretization chosen + # - transient behavior, the heat needs time to reach rpv outer surface + [total_balance_percent] + type = ParsedPostprocessor + expression = '(advection_energy_balance + rpv_tot_out + total_power) / ${reference_power} * 100' + pp_names = 'advection_energy_balance rpv_tot_out total_power' + execute_on = 'initial timestep_end' + [] +[] diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i new file mode 100644 index 000000000..a494ae282 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_ss.i @@ -0,0 +1,660 @@ +# ============================================================================== +# Model description +# Equilibrium core neutronics model coupled with TH and pebble temperature models +# ------------------------------------------------------------------------------ +# Idaho Falls, INL, April 11, 2023 +# Author(s): Dr. Mustafa Jaradat Dr. Sebastian Schunert, Dr. Javier Ortensi +# ============================================================================== +# MODEL PARAMETERS +# ============================================================================== +initial_temperature = 500.0 # (K) +total_power = 250.0e+6 # Total reactor Power (W) +burnup_group_boundaries = '5.35E+13 1.070E+14 1.604E+14 2.139E+14 2.674E+14 3.209E+14 3.743E+14 4.278E+14 4.818E+14' +# ============================================================================== +# parameters describing the reactor geometry +core_height = 11.0 +axial_reflector_height = 3.228 +fuel_radius = 1.5 +r_streamline_1 = 12.5e-2 +r_streamline_2 = 37.5e-2 +r_streamline_3 = 62.5e-2 +r_streamline_4 = 87.5e-2 +r_streamline_5 = 112.5e-2 +r_streamline_6 = 137.5e-2 +pebble_radius = 3e-2 +pebble_volume = ${fparse 4/3*pi * pebble_radius * pebble_radius * pebble_radius} +residence_time = 70.5 +pebble_speed = ${fparse core_height / (residence_time * 3600 * 24)} +area = ${fparse pi * fuel_radius * fuel_radius} +pebble_unloading_rate = ${fparse pebble_speed * area * 0.61 / pebble_volume} +# ============================================================================== +# GLOBAL PARAMETERS +# ============================================================================== +[GlobalParams] + library_file = '../xsections/HTR-PM_9G-Tnew.xml' + library_name = 'HTR-PM' + is_meter = true + plus = true +[] +[TransportSystems] + particle = neutron + equation_type = eigenvalue + G = 9 + ReflectingBoundary = 'left' + VacuumBoundary = 'right top bottom' + [diff] + scheme = CFEM-Diffusion + family = LAGRANGE + order = FIRST + n_delay_groups = 6 + assemble_scattering_jacobian = true + assemble_fission_jacobian = true + [] +[] +# ============================================================================== +# GEOMETRY AND MESH +# ============================================================================== +[Mesh] + type = MeshGeneratorMesh + block_id = ' 1 2 3 4 5 6 + 7 8 61 71' + block_name = 'pebble_bed upper_ref lower_ref cavity hot_plenum cold_plenum + radial_ref carbon_brick riser cr' + #uniform_refine = 1 + [cartesian_mesh] + type = CartesianMeshGenerator + dim = 2 + # Total height: 16.8 m + dx = ' 0.250 0.250 0.250 0.250 0.250 0.250 + 0.010 0.050 0.130 0.080 0.080 0.080 + 0.200 0.120 0.125 0.125' + ix = ' 1 1 1 1 1 1 + 1 1 1 1 1 1 + 1 1 1 1' + dy = ' 0.400 0.400 0.100 0.100 0.800 0.300 0.200 0.300 0.216 0.412 + 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 + 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 + 0.760 0.712 0.300 0.400 0.400 ' + # base: converges fine + iy = '1 1 1 1 2 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 + 2 2 1 1 1' + subdomain_id = ' 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 + 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 + 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 + 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 + 5 5 5 5 5 5 5 5 5 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 4 4 4 4 4 4 7 7 71 7 7 7 61 7 8 8 + 4 2 2 2 2 2 7 7 71 7 7 7 61 7 8 8 + 6 6 6 6 6 6 6 6 71 6 6 6 6 7 8 8 + 7 7 7 7 7 7 7 7 71 7 7 7 7 7 8 8 + 8 8 8 8 8 8 8 8 71 8 8 8 8 8 8 8 ' + [] + [assign_material_id] + type = SubdomainExtraElementIDGenerator + input = cartesian_mesh + extra_element_id_names = 'material_id' + subdomains = '1 2 3 4 5 6 7 8 61 71' + extra_element_ids = '1 1 1 1 1 1 1 1 1 1' + [] + coord_type = RZ +[] + +# ============================================================================== +# AUXVARIABLES AND AUXKERNELS +# ============================================================================== +[Functions] + [CR_bott] + type = ConstantFunction + value = '13.678' + [] +[] +[AuxVariables] + [T_solid] + family = MONOMIAL + order = CONSTANT + initial_condition = ${initial_temperature} + [] + [T_fluid] + family = MONOMIAL + order = CONSTANT + initial_condition = ${initial_temperature} + [] + [Tfuel_avg] + order = CONSTANT + family = MONOMIAL + [] + [Tfuel_max] + order = CONSTANT + family = MONOMIAL + [] + [Tmod_avg] + order = CONSTANT + family = MONOMIAL + [] + [Tmod_max] + order = CONSTANT + family = MONOMIAL + [] + [Burnup] + order = CONSTANT + family = MONOMIAL + components = 10 + # use burnup midpoints and add one additional for discard group + initial_condition = '2.675E+13 8.025E+13 1.337E+14 1.872E+14 2.407E+14 2.942E+14 3.476E+14 4.011E+14 4.546E+14 4.546E+14' + outputs = none + [] + [Burnup_avg] + order = CONSTANT + family = MONOMIAL + [] + [porosity] + family = MONOMIAL + order = CONSTANT + initial_condition = 0.39 + block = 'pebble_bed' + [] + # Prompt power density is only added automatically for transients + [prompt_power_density] + order = CONSTANT + family = MONOMIAL + [] + [power_peaking] + order = CONSTANT + family = MONOMIAL + [] + [pden_avg] + order = CONSTANT + family = MONOMIAL + [] + [pden_max] + order = CONSTANT + family = MONOMIAL + [] +[] +[AuxKernels] + [Tfuel_avg_aux] + type = PebbleAveragedAux + block = pebble_bed + variable = Tfuel_avg + array_variable = triso_temperature + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] + [Tfuel_max_aux] + type = ArrayVarExtremeValueAux + block = pebble_bed + variable = Tfuel_max + array_variable = triso_temperature + value_type = MAX + execute_on = 'INITIAL TIMESTEP_END' + [] + [Tmod_avg_aux] + type = PebbleAveragedAux + block = pebble_bed + variable = Tmod_avg + array_variable = graphite_temperature + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] + [Tmod_max_aux] + type = ArrayVarExtremeValueAux + block = pebble_bed + variable = Tmod_max + array_variable = graphite_temperature + value_type = MAX + execute_on = 'INITIAL TIMESTEP_END' + [] + [Burnup_avg_aux] + type = PebbleAveragedAux + block = pebble_bed + variable = Burnup_avg + array_variable = Burnup + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] + + [prompt_power_density_aux] + type = VectorReactionRate + block = 'pebble_bed' + scalar_flux = 'sflux_g0 sflux_g1 sflux_g2 sflux_g3 sflux_g4 + sflux_g5 sflux_g6 sflux_g7 sflux_g8' + variable = prompt_power_density + cross_section = kappa_sigma_fission + scale_factor = power_scaling + dummies = UnscaledTotalPower + execute_on = 'INITIAL timestep_end' + [] + + [pden_max_aux] + type = ArrayVarExtremeValueAux + block = 'pebble_bed' + variable = pden_max + array_variable = partial_power_density + value_type = MAX + execute_on = 'INITIAL TIMESTEP_END' + [] + [pden_avg_aux] + type = PebbleAveragedAux + block = 'pebble_bed' + variable = pden_avg + array_variable = partial_power_density + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] + [power_peaking_aux] + type = ParsedAux + block = 'pebble_bed' + variable = power_peaking + coupled_variables = 'power_density' + expression = 'power_density / 3.21525E+06' + execute_on = 'initial timestep_end' + [] +[] + +# These objects were used for manual restart +# [UserObjects] +# [power_map] +# type = VariableCartesianCoreMap +# variables = 'power_density' +# block = pebble_bed +# execute_on = 'FINAL' +# output_in = 'power_ss.out' +# [] +# [isotopic_map] +# type = VariableCartesianCoreMap +# variables = ' isotope_density_U235 isotope_density_U236 isotope_density_U238 isotope_density_PU238 +# isotope_density_PU239 isotope_density_PU240 isotope_density_PU241 isotope_density_PU242 +# isotope_density_AM241 isotope_density_AM242M isotope_density_CS135 isotope_density_CS137 +# isotope_density_XE135 isotope_density_XE136 isotope_density_I131 isotope_density_I135 +# isotope_density_SR90' +# block = pebble_bed +# execute_on= 'FINAL' +# output_in = 'isotopics_ss.out' +# [] +# [burnup_map] +# type = VariableCartesianCoreMap +# variables = 'Burnup_avg' +# block = pebble_bed +# execute_on = 'FINAL' +# output_in = 'burnup_ss.out' +# [] +# [transport_solution] +# type = TransportSolutionVectorFile +# transport_system = diff +# writing = true +# execute_on = 'FINAL' +# [] +# [depletion_solution] +# type = SolutionVectorFile +# var = 'pebble_isotope_density pebble_volume_fraction graphite_temperature +# triso_temperature power_density partial_power_density +# sflux_g0 sflux_g1 sflux_g2 +# sflux_g3 sflux_g4 sflux_g5 +# sflux_g6 sflux_g7 sflux_g8' +# writing = true +# execute_on = 'FINAL' +# [] +# [TH_solution] +# type = SolutionVectorFile +# var = 'T_solid T_fluid' +# writing = true +# execute_on = 'FINAL' +# [] +# [init_power_density] +# type = SolutionVectorFile +# var = 'prompt_power_density total_pebble_decay_heat' +# writing = true +# execute_on = 'FINAL' +# [] +# [] +# ============================================================================== +# MATERIALS +# ============================================================================== +[PebbleBed] + block = 'pebble_bed' + power = ${fparse total_power} + integrated_power_postprocessor = total_power + power_density_variable = power_density + family = MONOMIAL + order = CONSTANT + + porosity_name = porosity + burnup_group_boundaries = ${burnup_group_boundaries} + + # cross section data + library_file = '../xsections/HTR-PM_9G-Tnew.xml' + library_name = 'HTR-PM' + burnup_grid_name = 'Burnup' + fuel_temperature_grid_name = 'Tfuel' + moderator_temperature_grid_name = 'Tmod' + # avoid physicality check (old XS library) + dtl_physicality = DISABLE + + # transmutation data + dataset = ISOXML + isoxml_data_file = '../xsections/DRAGON5_DT_DH_295.xml' + isoxml_lib_name = 'DRAGON' + + initial_moderator_temperature = ${initial_temperature} + initial_fuel_temperature = ${initial_temperature} + n_fresh_pebble_types = 1 + fresh_pebble_compositions = 'fresh_pebble' + track_isotopes = ' U235 U236 U238 PU238 PU239 PU240 PU241 PU242 AM241 + AM242M CS135 CS137 XE135 XE136 I131 I135 SR90' + output_densities_to_exodus = false + + [DepletionScheme] + type = ConstantStreamlineEquilibrium + pebble_unloading_rate = ${pebble_unloading_rate} + pebble_flow_rate_distribution = '0.027777778 0.083333333 0.138888889 0.194444444 0.25 0.305555556' + burnup_limit = 4.818E+14 + major_streamline_axis = y + pebble_diameter = 0.06 + streamline_points = '${r_streamline_1} ${fparse core_height + axial_reflector_height} 0 ${r_streamline_1} ${axial_reflector_height} 0; + ${r_streamline_2} ${fparse core_height + axial_reflector_height} 0 ${r_streamline_2} ${axial_reflector_height} 0; + ${r_streamline_3} ${fparse core_height + axial_reflector_height} 0 ${r_streamline_3} ${axial_reflector_height} 0; + ${r_streamline_4} ${fparse core_height + axial_reflector_height} 0 ${r_streamline_4} ${axial_reflector_height} 0; + ${r_streamline_5} ${fparse core_height + axial_reflector_height} 0 ${r_streamline_5} ${axial_reflector_height} 0; + ${r_streamline_6} ${fparse core_height + axial_reflector_height} 0 ${r_streamline_6} ${axial_reflector_height} 0' + streamline_segment_subdivisions = '20; 20; 20; 20; 20; 20' + sweep_tol = 1e-7 + sweep_max_iterations = 200 + [] + + # pebble conduction + pebble_conduction_input_file = 'pebble_triso_ss.i' + pebble_positions_file = 'pebble_heat_pos.txt' + surface_temperature_sub_app_postprocessor = T_surface + surface_temperature_main_app_variable = T_solid + power_sub_app_postprocessor = pebble_power_density + fuel_temperature_sub_app_postprocessor = T_fuel + moderator_temperature_sub_app_postprocessor = T_mod + decay_heat = true +[] + +[Materials] + # upper and lower reflectors at 70% density + [axial_reflector] + type = CoupledFeedbackNeutronicsMaterial + block = 'upper_ref lower_ref' + grid_names = 'Tmod' + grid_variables = 'T_solid' + isotopes = 'Graphite U235' + densities = '6.25284E-02 0.0' + material_id = 1 + [] + # upper lower plenum at 80% density + [plenum] + type = CoupledFeedbackNeutronicsMaterial + block = 'hot_plenum cold_plenum' + grid_names = 'Tmod' + grid_variables = 'T_solid' + isotopes = 'Graphite U235' + densities = '7.14611E-02 0.0' + material_id = 1 + [] + [reflector] + type = CoupledFeedbackNeutronicsMaterial + block = 'radial_ref carbon_brick' + grid_names = 'Tmod' + grid_variables = 'T_solid' + isotopes = 'Graphite U235' + densities = '8.93263E-02 0.0' + material_id = 1 + [] + # control_rod at 68% density + [control_rod] + type = CoupledFeedbackRoddedNeutronicsMaterial + block = 'cr' + grid_names = 'Tmod Tmod Tmod' + grid_variables = 'T_solid T_solid T_solid' + isotopes = ' Graphite ; Graphite B10 B11 C12 ; Graphite B10 B11 C12 ' + densities = ' 6.4277e-02 6.4277e-02 1.6373e-03 5.9938e-03 1.6004e-02 6.4277e-02 1.6373e-03 5.9938e-03 1.6004e-02 ' + segment_material_ids = '1 1 1' + rod_segment_length = 11.878 + front_position_function = 'CR_bott' + rod_withdrawn_direction = 'y' + [] + # riser at 68% density + [riser] + type = CoupledFeedbackNeutronicsMaterial + block = 'riser' + grid_names = 'Tmod' + grid_variables = 'T_solid' + isotopes = 'Graphite U235' + densities = '6.07419E-02 0.0' + material_id = 1 + [] + [cavity] + type = ConstantNeutronicsMaterial + block = 'cavity' + fromFile = false + # computed from Serpent CMM + diffusion_coef = '4.68857E-01 1.52760E-01 1.21025E-01 1.08241E-01 1.72433E-01 1.65906E-01 1.96579E-01 1.79868E-01 2.14727E-01' + sigma_r = '0 0 0 0 0 0 0 0 0' + sigma_s = ' 7.10949E-01 0 0 0 0 0 0 0 0 + 0 2.18207E+00 0 0 0 0 0 0 0 + 0 0 2.75425E+00 0 0 0 0 0 0 + 0 0 0 3.07955E+00 0 0 0 0 0 + 0 0 0 0 1.93312E+00 0 0 0 0 + 0 0 0 0 0 2.00917E+00 0 0 0 + 0 0 0 0 0 0 1.69567E+00 0 0 + 0 0 0 0 0 0 0 1.85321E+00 0 + 0 0 0 0 0 0 0 0 1.55236E+00' + diffusion_coefficient_scheme = user_supplied + [] +[] + +[Compositions] + [fresh_pebble] + type = IsotopeComposition + density_type = atomic + isotope_densities = 'U234 1.0887E-07 + U235 1.3550E-05 + U238 1.4209E-04 + O16 3.1137E-04 + O17 1.1837E-07 + Graphite 8.5357E-02 + SI28 3.1399E-04 + SI29 1.5944E-05 + SI30 1.0510E-05 + C12 3.4044E-04' + [] +[] + +# ============================================================================== +# MultiApps & Transfers +# ============================================================================== +[MultiApps] + [flow] + type = FullSolveMultiApp + input_files = 'htr-pm-flow-fv-ss.i' + keep_solution_during_restore = true + update_old_solution_when_keeping_solution_during_restore = true + positions = '0 0 0' + execute_on = 'TIMESTEP_END' + [] +[] +[Transfers] + [power_density_to_flow] + type = MultiAppNearestNodeTransfer + to_multi_app = flow + source_variable = power_density + variable = power_density + fixed_meshes = true + execute_on = 'TIMESTEP_END' + [] + [T_solid_from_flow] + type = MultiAppNearestNodeTransfer + from_multi_app = flow + source_variable = T_solid + variable = T_solid + execute_on = 'TIMESTEP_END' + fixed_meshes = true + [] + [T_fluid_from_flow] + type = MultiAppNearestNodeTransfer + from_multi_app = flow + source_variable = T_fluid + variable = T_fluid + execute_on = 'TIMESTEP_END' + fixed_meshes = true + [] +[] +# ============================================================================== +# EXECUTION PARAMETERS +# ============================================================================== +[Preconditioning] + [SMP] + type = SMP + full = true + [] +[] +[Executioner] + type = Eigenvalue + solve_type = PJFNKMO + constant_matrices = true + petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart ' + petsc_options_value = 'hypre boomeramg 100' + line_search = l2 #none + + # Linear/nonlinear iterations. + l_max_its = 200 + l_tol = 1e-3 + nl_max_its = 200 + # tolerances on the equilibrium calculation are + # similar to on the transients at this time, a small drift + # in the null transient could occur + nl_rel_tol = 1e-5 + nl_abs_tol = 1e-6 + fixed_point_max_its = 50 + fixed_point_rel_tol = 1e-5 + fixed_point_abs_tol = 1e-6 + free_power_iterations = 4 +[] +# ============================================================================== +# POSTPROCESSORS DEBUG AND OUTPUTS +# ============================================================================== +[Outputs] + file_base = htr_pm_griffin_ss_out + checkpoint = true + exodus = true + csv = true + perf_graph = true + execute_on = 'INITIAL FINAL TIMESTEP_END' +[] +[Postprocessors] + [Tsolid_max] + type = ElementExtremeValue + variable = T_solid + execute_on = 'initial timestep_end' + [] + [Tsolid_avg] + type = ElementAverageValue + variable = T_solid + execute_on = 'initial timestep_end' + [] + [Tfluid_avg] + type = ElementAverageValue + variable = T_fluid + execute_on = 'initial timestep_end' + [] + [Tfuel_avg] + type = ElementAverageValue + block = 'pebble_bed' + variable = Tfuel_avg + execute_on = 'initial timestep_end' + [] + [Tfuel_max] + type = ElementExtremeValue + block = 'pebble_bed' + value_type = max + variable = Tfuel_avg + execute_on = 'initial timestep_end' + [] + [Tmod_avg] + type = ElementAverageValue + block = 'pebble_bed' + variable = Tmod_avg + execute_on = 'initial timestep_end' + [] + [Tmod_max] + type = ElementExtremeValue + block = 'pebble_bed' + variable = Tmod_max + value_type = max + execute_on = 'initial timestep_end' + [] + [Burnup_avg] + type = ElementAverageValue + block = 'pebble_bed' + variable = Burnup_avg + execute_on = 'initial timestep_end' + [] + + [UnscaledTotalPower] + type = FluxRxnIntegral + block = 'pebble_bed' + cross_section = kappa_sigma_fission + coupled_flux_groups = 'sflux_g0 sflux_g1 sflux_g2 + sflux_g3 sflux_g4 sflux_g5 + sflux_g6 sflux_g7 sflux_g8' + execute_on = 'initial transfer timestep_end' + [] + [prompt_power] + type = ElementIntegralVariablePostprocessor + block = 'pebble_bed' + variable = prompt_power_density + execute_on = 'initial transfer timestep_end' + [] + [avg_power_density] + type = ElementAverageValue + block = 'pebble_bed' + variable = power_density + execute_on = 'INITIAL transfer timestep_end' + [] + [power_peak] + type = ElementExtremeValue + variable = power_peaking + value_type = max + execute_on = 'initial timestep_end' + [] + + [decay_heat] + type = ElementIntegralVariablePostprocessor + variable = total_pebble_decay_heat + block = 'pebble_bed' + execute_on = 'INITIAL TIMESTEP_END' + [] +[] diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_tr_dlofc.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_tr_dlofc.i new file mode 100644 index 000000000..415eb2636 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_tr_dlofc.i @@ -0,0 +1,574 @@ +# ============================================================================== +# Model description +# DLOFC Transient neutronics model coupled with TH and pebble temperature models +# ------------------------------------------------------------------------------ +# Idaho Falls, INL, April 11, 2023 +# Author(s): Dr. Mustafa Jaradat Dr. Sebastian Schunert, Dr. Javier Ortensi +# ============================================================================== +# MODEL PARAMETERS +# ============================================================================== +# initial_temperature = 500.0 # (K) +total_power = 250.0e+6 # Total reactor Power (W) +burnup_group_boundaries = '5.35E+13 1.070E+14 1.604E+14 2.139E+14 2.674E+14 3.209E+14 3.743E+14 4.278E+14 4.818E+14' +#========================================================================== +# GLOBAL PARAMETERS +# ============================================================================== +[GlobalParams] + library_file ='../xsections/HTR-PM_9G-Tnew.xml' + library_name = 'HTR-PM' + is_meter = true +[] +[TransportSystems] + particle = neutron + equation_type = transient + G = 9 + ReflectingBoundary = 'left' + VacuumBoundary = 'right top bottom' + [diff] + scheme = CFEM-Diffusion + family = LAGRANGE + order = FIRST + n_delay_groups = 6 + assemble_scattering_jacobian = true + assemble_fission_jacobian = true + [] +[] +[Problem] + restart_file_base = 'htr_pm_griffin_ss_out_cp/LATEST' +[] +# ============================================================================== +# GEOMETRY AND MESH +# ============================================================================== +[Mesh] + type = MeshGeneratorMesh + block_id = ' 1 2 3 4 5 6 + 7 8 61 71' + block_name = 'pebble_bed upper_ref lower_ref cavity hot_plenum cold_plenum + radial_ref carbon_brick riser cr' + #uniform_refine = 1 + [cartesian_mesh] + type = CartesianMeshGenerator + dim = 2 + # Total height: 16.8 m + dx = ' 0.250 0.250 0.250 0.250 0.250 0.250 + 0.010 0.050 0.130 0.080 0.080 0.080 + 0.200 0.120 0.125 0.125' + ix = ' 1 1 1 1 1 1 + 1 1 1 1 1 1 + 1 1 1 1' + dy = ' 0.400 0.400 0.100 0.100 0.800 0.300 0.200 0.300 0.216 0.412 + 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 + 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 + 0.760 0.712 0.300 0.400 0.400' + # base: converges fine + iy = ' 1 1 1 1 2 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 + 2 2 1 1 1' + subdomain_id = ' 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 + 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 + 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 + 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 + 5 5 5 5 5 5 5 5 5 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 4 4 4 4 4 4 7 7 71 7 7 7 61 7 8 8 + 4 2 2 2 2 2 7 7 71 7 7 7 61 7 8 8 + 6 6 6 6 6 6 6 6 71 6 6 6 6 7 8 8 + 7 7 7 7 7 7 7 7 71 7 7 7 7 7 8 8 + 8 8 8 8 8 8 8 8 71 8 8 8 8 8 8 8 ' + [] + [assign_material_id] + type = SubdomainExtraElementIDGenerator + input = cartesian_mesh + extra_element_id_names = 'material_id' + subdomains = '1 2 3 4 5 6 7 8 61 71' + extra_element_ids = '1 1 1 1 1 1 1 1 1 1' + [] + coord_type = RZ +[] +# ============================================================================== +# AUXVARIABLES AND AUXKERNELS +# ============================================================================== +[Functions] + [CR_bott] + type = PiecewiseLinear + x = ' 0.000 13.000 16.000 1.8e+5 ' + y = '13.678 13.678 1.800 1.800' + [] + [dt_max_fn] + type = PiecewiseLinear + x = '-10 0 16 30 1000 5000 20000 100000 200000 500000' + y = ' 1 1 1 1 50 100 200 400 400 500' + [] + [del_t_function] + type = ParsedFunction + expression = 'dt' + symbol_names = 'dt' + symbol_values = 'dt' + [] +[] +[AuxVariables] + [T_solid] + family = MONOMIAL + order = CONSTANT + [] + [T_fluid] + family = MONOMIAL + order = CONSTANT + [] + [Tfuel_avg] + order = CONSTANT + family = MONOMIAL + [] + [Tfuel_max] + order = CONSTANT + family = MONOMIAL + [] + [Tmod_avg] + order = CONSTANT + family = MONOMIAL + [] + [Tmod_max] + order = CONSTANT + family = MONOMIAL + [] + [porosity] + family = MONOMIAL + order = CONSTANT + # reloaded from file + # initial_condition = 0.39 + block = 'pebble_bed' + [] + [del_t] + type = MooseVariableFVReal + [] + [prompt_power_density] + order = CONSTANT + family = MONOMIAL + [] + [power_density] + order = CONSTANT + family = MONOMIAL + [] + [decay_heat_bybg] + family = MONOMIAL + order = CONSTANT + components = 10 + block = 'pebble_bed' + [] + [decay_heat] + family = MONOMIAL + order = CONSTANT + block = 'pebble_bed' + [] + [power_peaking] + order = CONSTANT + family = MONOMIAL + [] + [pden_avg] + order = CONSTANT + family = MONOMIAL + [] + [pden_max] + order = CONSTANT + family = MONOMIAL + [] +[] +[AuxKernels] + [Tfuel_avg] + type = PebbleAveragedAux + block = 1 + variable = Tfuel_avg + array_variable = triso_temperature + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] + [Tfuel_max] + type = ArrayVarExtremeValueAux + block = 1 + variable = Tfuel_max + array_variable = triso_temperature + value_type = MAX + execute_on = 'INITIAL TIMESTEP_END' + [] + [Tmod_avg] + type = PebbleAveragedAux + block = 1 + variable = Tmod_avg + array_variable = graphite_temperature + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] + [Tmod_max] + type = ArrayVarExtremeValueAux + block = 1 + variable = Tmod_max + array_variable = graphite_temperature + value_type = MAX + execute_on = 'INITIAL TIMESTEP_END' + [] + [del_t_aux] + type = FunctionAux + variable = del_t + function = del_t_function + [] + [power_peaking] + type = ParsedAux + block = 'pebble_bed' + variable = power_peaking + coupled_variables = 'power_density' + expression = 'power_density / 3.21525E+06' + execute_on = 'INITIAL timestep_end' + [] + [pden_max_aux] + type = ArrayVarExtremeValueAux + block = 'pebble_bed' + variable = pden_max + array_variable = partial_power_density + value_type = MAX + execute_on = 'INITIAL TIMESTEP_END' + [] + [pden_avg_aux] + type = PebbleAveragedAux + block = 'pebble_bed' + variable = pden_avg + array_variable = partial_power_density + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] +[] +# ============================================================================== +# MATERIALS +# ============================================================================== +[PebbleBed] + block = 'pebble_bed' + power = ${fparse total_power} + integrated_power_postprocessor = total_power + power_density_variable = power_density + family = MONOMIAL + order = CONSTANT + + porosity_name = porosity + burnup_group_boundaries = ${burnup_group_boundaries} + + # cross section data + library_file = '../xsections/HTR-PM_9G-Tnew.xml' + library_name = 'HTR-PM' + burnup_grid_name = 'Burnup' + fuel_temperature_grid_name = 'Tfuel' + moderator_temperature_grid_name = 'Tmod' + # avoid physicality check (old XS library) + dtl_physicality = DISABLE + + # transmutation data + dataset = ISOXML + isoxml_data_file = '../xsections/DRAGON5_DT_DH_295.xml' + isoxml_lib_name = 'DRAGON' + + # initial_moderator_temperature = ${initial_temperature} + # initial_fuel_temperature = ${initial_temperature} + n_fresh_pebble_types = 1 + fresh_pebble_compositions = 'fresh_pebble' + track_isotopes = ' U235 U236 U238 PU238 PU239 PU240 PU241 PU242 AM241 + AM242M CS135 CS137 XE135 XE136 I131 I135 SR90' + + # pebble conduction + pebble_conduction_input_file = 'pebble_triso.i' + pebble_positions_file = 'pebble_heat_pos.txt' + surface_temperature_sub_app_postprocessor = T_surface + surface_temperature_main_app_variable = T_solid + power_sub_app_postprocessor = pebble_power_density + fuel_temperature_sub_app_postprocessor = T_fuel + moderator_temperature_sub_app_postprocessor = T_mod + decay_heat = true +[] + +[Materials] + # upper and lower reflectors at 70% density + [axial_reflector] + type = CoupledFeedbackNeutronicsMaterial + block = 'upper_ref lower_ref' + grid_names = 'Tmod' + grid_variables = 'T_solid' + plus = true + isotopes = 'Graphite U235' + densities = '6.25284E-02 0.0' + material_id = 1 + [] + # upper lower plenum at 80% density + [plenum] + type = CoupledFeedbackNeutronicsMaterial + block = 'hot_plenum cold_plenum' + grid_names = 'Tmod' + grid_variables = 'T_solid' + plus = true + isotopes = 'Graphite U235' + densities = '7.14611E-02 0.0' + material_id = 1 + [] + [reflector] + type = CoupledFeedbackNeutronicsMaterial + block = 'radial_ref carbon_brick' + grid_names = 'Tmod' + grid_variables = 'T_solid' + plus = true + isotopes = 'Graphite U235' + densities = '8.93263E-02 0.0' + material_id = 1 + [] + # control_rod at 68% density + [control_rod] + type = CoupledFeedbackRoddedNeutronicsMaterial + block = 'cr' + grid_names = 'Tmod Tmod Tmod' + grid_variables = 'T_solid T_solid T_solid' + plus = true + #isotopes = ' Graphite U235 ; Graphite C12 B10 B11 U235; Graphite C12 B10 B11 U235' + #densities = '6.074191E-02 0.0 6.074191E-02 8.734066E-03 8.734066E-04 7.860660E-03 0.0 6.074191E-02 8.734066E-03 8.734066E-04 7.860660E-03 0.0' + isotopes = ' Graphite U235 ; Graphite B10 B11 C12 U235; Graphite B10 B11 C12 U235' + densities = ' 6.4277e-02 0.0 6.4277e-02 1.6373e-03 5.9938e-03 1.6004e-02 0.0 6.4277e-02 1.6373e-03 5.9938e-03 1.6004e-02 0.0' + segment_material_ids = '1 1 1' + rod_segment_length = 11.878 + front_position_function = 'CR_bott' + rod_withdrawn_direction = 'y' + [] + # riser at 68% density + [riser] + type = CoupledFeedbackNeutronicsMaterial + block = 'riser' + grid_names = 'Tmod' + grid_variables = 'T_solid' + plus = true + isotopes = 'Graphite U235' + densities = '6.07419E-02 0.0' + material_id = 1 + [] + [cavity] + type = ConstantNeutronicsMaterial + block = 'cavity' + fromFile = false + # computed from Serpent CMM + neutron_speed = '1.164872386937E+09 1.225755729920E+08 1.358941921623E+07 3.924789509810E+06 2.395847846182E+06 1.814298529894E+06 1.399342656828E+06 7.200528593684E+05 2.911858619061E+05' + diffusion_coef = '4.68857E-01 1.52760E-01 1.21025E-01 1.08241E-01 1.72433E-01 1.65906E-01 1.96579E-01 1.79868E-01 2.14727E-01' + sigma_r = '0 0 0 0 0 0 0 0 0' + sigma_s = ' 7.10949E-01 0 0 0 0 0 0 0 0 + 0 2.18207E+00 0 0 0 0 0 0 0 + 0 0 2.75425E+00 0 0 0 0 0 0 + 0 0 0 3.07955E+00 0 0 0 0 0 + 0 0 0 0 1.93312E+00 0 0 0 0 + 0 0 0 0 0 2.00917E+00 0 0 0 + 0 0 0 0 0 0 1.69567E+00 0 0 + 0 0 0 0 0 0 0 1.85321E+00 0 + 0 0 0 0 0 0 0 0 1.55236E+00' + + diffusion_coefficient_scheme = user_supplied + [] +[] + +[Compositions] + [fresh_pebble] + type = IsotopeComposition + density_type = atomic + isotope_densities = 'U234 1.0887E-07 + U235 1.3550E-05 + U238 1.4209E-04 + O16 3.1137E-04 + O17 1.1837E-07 + Graphite 8.5357E-02 + SI28 3.1399E-04 + SI29 1.5944E-05 + SI30 1.0510E-05 + C12 3.4044E-04' + [] +[] + +# ============================================================================== +# MultiApps & Transfers +# ============================================================================== +[MultiApps] + [flow] + type = TransientMultiApp + input_files = 'htr-pm-flow-fv-tr-dlofc.i' + positions = '0 0 0' + execute_on = 'TIMESTEP_END' + [] +[] +[Transfers] + [power_density_to_flow] + type = MultiAppShapeEvaluationTransfer + to_multi_app = flow + source_variable = power_density + variable = power_density + execute_on = 'TIMESTEP_END' + [] + [T_solid_from_flow] + type = MultiAppNearestNodeTransfer + from_multi_app = flow + source_variable = T_solid + variable = T_solid + execute_on = 'TIMESTEP_END' + [] + [T_fluid_from_flow] + type = MultiAppNearestNodeTransfer + from_multi_app = flow + source_variable = T_fluid + variable = T_fluid + execute_on = 'TIMESTEP_END' + [] +[] +# ============================================================================== +# EXECUTION PARAMETERS +# ============================================================================== +[Preconditioning] + [SMP] + type = SMP + full = true + [] +[] +[Executioner] + type = Transient + + # solver parameters + solve_type = NEWTON + petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart ' + petsc_options_value = 'hypre boomeramg 100' + line_search = l2 #none + # Linear/nonlinear iterations. + l_max_its = 200 + l_tol = 1e-3 + nl_max_its = 50 + nl_rel_tol = 1e-5 + nl_abs_tol = 1e-6 + fixed_point_max_its = 50 + fixed_point_rel_tol = 1e-5 + fixed_point_abs_tol = 1e-6 + + # time stepping + start_time = 0 + end_time = 6.0e5 + auto_advance = true + [TimeStepper] + type = IterationAdaptiveDT + dt = 0.05 + timestep_limiting_postprocessor = dt_max_pp + optimal_iterations = 10 + iteration_window = 2 + growth_factor = 2 + cutback_factor = 0.5 + [] +[] +# ============================================================================== +# POSTPROCESSORS DEBUG AND OUTPUTS +# ============================================================================== +[Outputs] + file_base = htr_pm_griffin_tr_dlofc_out + exodus = true + csv = true + perf_graph = true + execute_on = 'INITIAL FINAL TIMESTEP_END' +[] +[Postprocessors] + [dt] + type = TimestepSize + [] + [dt_max_pp] + type = FunctionValuePostprocessor + function = dt_max_fn + execute_on = TIMESTEP_BEGIN + [] + [max_T_solid] + type = ElementExtremeValue + variable = T_solid + execute_on = 'initial timestep_end' + [] + [Tsolid_core] + type = ElementAverageValue + variable = T_solid + execute_on = 'initial timestep_end' + [] + [Tfluid_core] + type = ElementAverageValue + variable = T_fluid + execute_on = 'initial timestep_end' + [] + [Tfuel_avg] + type = ElementAverageValue + block = 'pebble_bed' + variable = Tfuel_avg + execute_on = 'initial timestep_end' + [] + [Tfuel_max] + type = ElementExtremeValue + block = 'pebble_bed' + value_type = max + variable = Tfuel_avg + execute_on = 'initial timestep_end' + [] + [Tmod_avg] + type = ElementAverageValue + block = 'pebble_bed' + variable = Tmod_avg + execute_on = 'initial timestep_end' + [] + [Tmod_max] + type = ElementExtremeValue + block = 'pebble_bed' + variable = Tmod_max + value_type = max + execute_on = 'initial timestep_end' + [] + [UnscaledTotalPower] + type = FluxRxnIntegral + block = 'pebble_bed' + cross_section = kappa_sigma_fission + coupled_flux_groups = 'sflux_g0 sflux_g1 sflux_g2 + sflux_g3 sflux_g4 sflux_g5 + sflux_g6 sflux_g7 sflux_g8' + execute_on = 'initial' + [] + [prompt_power] + type = ElementIntegralVariablePostprocessor + block = 'pebble_bed' + variable = prompt_power_density + execute_on = 'initial timestep_end' + [] + [decay_heat] + type = ElementIntegralVariablePostprocessor + variable = total_pebble_decay_heat + block = 'pebble_bed' + execute_on = 'INITIAL TIMESTEP_END' + [] + [power_peak] + type = ElementExtremeValue + variable = power_peaking + value_type = max + execute_on = 'initial timestep_end' + [] +[] diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_tr_null.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_tr_null.i new file mode 100644 index 000000000..f28148e27 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_tr_null.i @@ -0,0 +1,564 @@ +# ============================================================================== +# Model description +# NULL Transient neutronics model coupled with TH and pebble temperature models +# ------------------------------------------------------------------------------ +# Idaho Falls, INL, April 11, 2023 +# Author(s): Dr. Mustafa Jaradat Dr. Sebastian Schunert, Dr. Javier Ortensi +# ============================================================================== +# MODEL PARAMETERS +# ============================================================================== +# initial_temperature = 500.0 # (K) +total_power = 250.0e+6 # Total reactor Power (W) +burnup_group_boundaries = '5.35E+13 1.070E+14 1.604E+14 2.139E+14 2.674E+14 3.209E+14 3.743E+14 4.278E+14 4.818E+14' +# ============================================================================== +# GLOBAL PARAMETERS +# ============================================================================== +[GlobalParams] + library_file = '../xsections/HTR-PM_9G-Tnew.xml' + library_name = 'HTR-PM' + is_meter = true + plus = true +[] +[TransportSystems] + particle = neutron + equation_type = transient + G = 9 + ReflectingBoundary = 'left' + VacuumBoundary = 'right top bottom' + [diff] + scheme = CFEM-Diffusion + family = LAGRANGE + order = FIRST + n_delay_groups = 6 + # Note: by default Griffin only assembles the block-diagonal Jacobian + # assembling other jacobians improves preconditioning + # fission is only used in difusion + assemble_scattering_jacobian = true + assemble_fission_jacobian = true + [] +[] +[Problem] + restart_file_base = 'htr_pm_griffin_ss_out_cp/LATEST' +[] +# ============================================================================== +# GEOMETRY AND MESH +# ============================================================================== +[Mesh] + type = MeshGeneratorMesh + block_id = ' 1 2 3 4 5 6 + 7 8 61 71' + block_name = 'pebble_bed upper_ref lower_ref cavity hot_plenum cold_plenum + radial_ref carbon_brick riser cr' + #uniform_refine = 1 + [cartesian_mesh] + type = CartesianMeshGenerator + dim = 2 + # Total height: 16.8 m + dx = ' 0.250 0.250 0.250 0.250 0.250 0.250 + 0.010 0.050 0.130 0.080 0.080 0.080 + 0.200 0.120 0.125 0.125' + ix = ' 1 1 1 1 1 1 + 1 1 1 1 1 1 + 1 1 1 1' + dy = ' 0.400 0.400 0.100 0.100 0.800 0.300 0.200 0.300 0.216 0.412 + 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 + 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 + 0.760 0.712 0.300 0.400 0.400 ' + # base: converges fine + iy = '1 1 1 1 2 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 + 2 2 1 1 1' + subdomain_id = ' 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 + 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 + 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 + 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 + 5 5 5 5 5 5 5 5 5 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8 + 4 4 4 4 4 4 7 7 71 7 7 7 61 7 8 8 + 4 2 2 2 2 2 7 7 71 7 7 7 61 7 8 8 + 6 6 6 6 6 6 6 6 71 6 6 6 6 7 8 8 + 7 7 7 7 7 7 7 7 71 7 7 7 7 7 8 8 + 8 8 8 8 8 8 8 8 71 8 8 8 8 8 8 8 ' + [] + [assign_material_id] + type = SubdomainExtraElementIDGenerator + input = cartesian_mesh + extra_element_id_names = 'material_id' + subdomains = '1 2 3 4 5 6 7 8 61 71' + extra_element_ids = '1 1 1 1 1 1 1 1 1 1' + [] + coord_type = RZ +[] + +# ============================================================================== +# AUXVARIABLES AND AUXKERNELS +# ============================================================================== +[Functions] + # no control rod profiles so we can run the null forever + [CR_bott] + type = PiecewiseLinear + x = ' 0.000 1e5' + y = '13.678 13.678' + [] +[] +[AuxVariables] + [T_solid] + family = MONOMIAL + order = CONSTANT + [] + [T_fluid] + family = MONOMIAL + order = CONSTANT + [] + [Tfuel_avg] + order = CONSTANT + family = MONOMIAL + [] + [Tfuel_max] + order = CONSTANT + family = MONOMIAL + [] + [Tmod_avg] + order = CONSTANT + family = MONOMIAL + [] + [Tmod_max] + order = CONSTANT + family = MONOMIAL + [] + [porosity] + family = MONOMIAL + order = CONSTANT + # initial_condition = 0.39 # loaded from file + block = 'pebble_bed' + [] + [Burnup] + order = CONSTANT + family = MONOMIAL + components = 10 + outputs = none + [] + [Burnup_avg] + order = CONSTANT + family = MONOMIAL + [] + [power_density] + order = CONSTANT + family = MONOMIAL + [] + [power_peaking] + order = CONSTANT + family = MONOMIAL + [] + [pden_avg] + order = CONSTANT + family = MONOMIAL + [] + [pden_max] + order = CONSTANT + family = MONOMIAL + [] +[] +[AuxKernels] + [Tfuel_avg_aux] + type = PebbleAveragedAux + block = pebble_bed + variable = Tfuel_avg + array_variable = triso_temperature + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] + [Tfuel_max_aux] + type = ArrayVarExtremeValueAux + block = pebble_bed + variable = Tfuel_max + array_variable = triso_temperature + value_type = MAX + execute_on = 'INITIAL TIMESTEP_END' + [] + [Tmod_avg_aux] + type = PebbleAveragedAux + block = pebble_bed + variable = Tmod_avg + array_variable = graphite_temperature + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] + [Tmod_max_aux] + type = ArrayVarExtremeValueAux + block = pebble_bed + variable = Tmod_max + array_variable = graphite_temperature + value_type = MAX + execute_on = 'INITIAL TIMESTEP_END' + [] + [Burnup_avg_aux] + type = PebbleAveragedAux + block = pebble_bed + variable = Burnup_avg + array_variable = Burnup + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] + [power_peaking_aux] + type = ParsedAux + block = 'pebble_bed' + variable = power_peaking + coupled_variables = 'power_density' + expression = 'power_density / 3.21525E+06' + execute_on = 'initial timestep_end' + [] + [pden_max_aux] + type = ArrayVarExtremeValueAux + block = 'pebble_bed' + variable = pden_max + array_variable = partial_power_density + value_type = MAX + execute_on = 'INITIAL TIMESTEP_END' + [] + [pden_avg_aux] + type = PebbleAveragedAux + block = 'pebble_bed' + variable = pden_avg + array_variable = partial_power_density + pebble_volume_fraction = pebble_volume_fraction + n_fresh_pebble_types = 1 + execute_on = 'INITIAL TIMESTEP_END' + [] +[] +# ============================================================================== +# MATERIALS +# ============================================================================== + +[PebbleBed] + block = 'pebble_bed' + power = ${fparse total_power} + integrated_power_postprocessor = total_power + power_density_variable = power_density + family = MONOMIAL + order = CONSTANT + + porosity_name = porosity + burnup_group_boundaries = ${burnup_group_boundaries} + + # cross section data + library_file = '../xsections/HTR-PM_9G-Tnew.xml' + library_name = 'HTR-PM' + burnup_grid_name = 'Burnup' + fuel_temperature_grid_name = 'Tfuel' + moderator_temperature_grid_name = 'Tmod' + # avoid physicality check (old XS library) + dtl_physicality = DISABLE + + # transmutation data + dataset = ISOXML + isoxml_data_file = '../xsections/DRAGON5_DT_DH_295.xml' + isoxml_lib_name = 'DRAGON' + + # initial_moderator_temperature = ${initial_temperature} + # initial_fuel_temperature = ${initial_temperature} + n_fresh_pebble_types = 1 + fresh_pebble_compositions = 'fresh_pebble' + track_isotopes = ' U235 U236 U238 PU238 PU239 PU240 PU241 PU242 AM241 + AM242M CS135 CS137 XE135 XE136 I131 I135 SR90' + + # pebble conduction + pebble_conduction_input_file = 'pebble_triso.i' + pebble_positions_file = 'pebble_heat_pos.txt' + surface_temperature_sub_app_postprocessor = T_surface + surface_temperature_main_app_variable = T_solid + power_sub_app_postprocessor = pebble_power_density + fuel_temperature_sub_app_postprocessor = T_fuel + moderator_temperature_sub_app_postprocessor = T_mod + decay_heat = true +[] + +[Materials] + # upper and lower reflectors at 70% density + [axial_reflector] + type = CoupledFeedbackNeutronicsMaterial + block = 'upper_ref lower_ref' + grid_names = 'Tmod' + grid_variables = 'T_solid' + isotopes = 'Graphite U235' + densities = '6.25284E-02 0.0' + material_id = 1 + [] + # upper lower plenum at 80% density + [plenum] + type = CoupledFeedbackNeutronicsMaterial + block = 'hot_plenum cold_plenum' + grid_names = 'Tmod' + grid_variables = 'T_solid' + isotopes = 'Graphite U235' + densities = '7.14611E-02 0.0' + material_id = 1 + [] + [reflector] + type = CoupledFeedbackNeutronicsMaterial + block = 'radial_ref carbon_brick' + grid_names = 'Tmod' + grid_variables = 'T_solid' + isotopes = 'Graphite U235' + densities = '8.93263E-02 0.0' + material_id = 1 + [] + # control_rod at 68% density + [control_rod] + type = CoupledFeedbackRoddedNeutronicsMaterial + block = 'cr' + grid_names = 'Tmod Tmod Tmod' + grid_variables = 'T_solid T_solid T_solid' + isotopes = ' Graphite ; Graphite B10 B11 C12 ; Graphite B10 B11 C12 ' + densities = ' 6.4277e-02 6.4277e-02 1.6373e-03 5.9938e-03 1.6004e-02 6.4277e-02 1.6373e-03 5.9938e-03 1.6004e-02 ' + segment_material_ids = '1 1 1' + rod_segment_length = 11.878 + front_position_function = 'CR_bott' + rod_withdrawn_direction = 'y' + [] + # riser at 68% density + [riser] + type = CoupledFeedbackNeutronicsMaterial + block = 'riser' + grid_names = 'Tmod' + grid_variables = 'T_solid' + isotopes = 'Graphite U235' + densities = '6.07419E-02 0.0' + material_id = 1 + [] + [cavity] + type = ConstantNeutronicsMaterial + block = 'cavity' + fromFile = false + # computed from Serpent CMM + neutron_speed = '1.164872386937E+09 1.225755729920E+08 1.358941921623E+07 3.924789509810E+06 2.395847846182E+06 1.814298529894E+06 1.399342656828E+06 7.200528593684E+05 2.911858619061E+05' + diffusion_coef = '4.68857E-01 1.52760E-01 1.21025E-01 1.08241E-01 1.72433E-01 1.65906E-01 1.96579E-01 1.79868E-01 2.14727E-01' + sigma_r = '0 0 0 0 0 0 0 0 0' + sigma_s = ' 7.10949E-01 0 0 0 0 0 0 0 0 + 0 2.18207E+00 0 0 0 0 0 0 0 + 0 0 2.75425E+00 0 0 0 0 0 0 + 0 0 0 3.07955E+00 0 0 0 0 0 + 0 0 0 0 1.93312E+00 0 0 0 0 + 0 0 0 0 0 2.00917E+00 0 0 0 + 0 0 0 0 0 0 1.69567E+00 0 0 + 0 0 0 0 0 0 0 1.85321E+00 0 + 0 0 0 0 0 0 0 0 1.55236E+00' + diffusion_coefficient_scheme = user_supplied + [] +[] + +[Compositions] + [fresh_pebble] + type = IsotopeComposition + density_type = atomic + isotope_densities = 'U234 1.0887E-07 + U235 1.3550E-05 + U238 1.4209E-04 + O16 3.1137E-04 + O17 1.1837E-07 + Graphite 8.5357E-02 + SI28 3.1399E-04 + SI29 1.5944E-05 + SI30 1.0510E-05 + C12 3.4044E-04' + [] +[] + +# ============================================================================== +# MultiApps & Transfers +# ============================================================================== +[MultiApps] + [flow] + type = TransientMultiApp + input_files = 'htr-pm-flow-fv-tr-null.i' + positions = '0 0 0' + execute_on = 'TIMESTEP_END' + + # allow sub-stepping + catch_up = true + max_catch_up_steps = 10 + [] +[] +[Transfers] + [power_density_to_flow] + type = MultiAppShapeEvaluationTransfer + to_multi_app = flow + source_variable = power_density + variable = power_density + execute_on = 'TIMESTEP_END' + [] + [T_solid_from_flow] + type = MultiAppNearestNodeTransfer + from_multi_app = flow + source_variable = T_solid + variable = T_solid + execute_on = 'TIMESTEP_END' + [] + [T_fluid_from_flow] + type = MultiAppNearestNodeTransfer + from_multi_app = flow + source_variable = T_fluid + variable = T_fluid + execute_on = 'TIMESTEP_END' + [] +[] +# ============================================================================== +# EXECUTION PARAMETERS +# ============================================================================== +[Preconditioning] + [SMP] + type = SMP + full = true + [] +[] +[Executioner] + type = Transient + solve_type = NEWTON + petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart ' + petsc_options_value = 'hypre boomeramg 100' + line_search = l2 #none + + # Linear/nonlinear iterations. + l_max_its = 200 + l_tol = 1e-3 + nl_max_its = 200 + nl_rel_tol = 1e-5 + nl_abs_tol = 1e-6 + fixed_point_rel_tol = 1e-5 + fixed_point_abs_tol = 1e-6 + # should not be needed for a null transient + fixed_point_max_its = 30 + accept_on_max_fixed_point_iteration = true + + # time stepping + [TimeStepper] + type = IterationAdaptiveDT + # can take large steps + dt = 10 + optimal_iterations = 10 + iteration_window = 2 + growth_factor = 2 + cutback_factor = 0.5 + [] + start_time = 0 + end_time = 6.0e5 +[] +# ============================================================================== +# POSTPROCESSORS DEBUG AND OUTPUTS +# ============================================================================== +[Outputs] + file_base = htr_pm_griffin_tr_null_out + exodus = true + csv = true + perf_graph = true + execute_on = 'INITIAL FINAL TIMESTEP_END' +[] +[Postprocessors] + [dt] + type = TimestepSize + [] + [Tsolid_max] + type = ElementExtremeValue + variable = T_solid + execute_on = 'initial timestep_end' + [] + [Tsolid_avg] + type = ElementAverageValue + variable = T_solid + execute_on = 'initial timestep_end' + [] + [Tfluid_avg] + type = ElementAverageValue + variable = T_fluid + execute_on = 'initial timestep_end' + [] + [Tfuel_avg] + type = ElementAverageValue + block = 'pebble_bed' + variable = Tfuel_avg + execute_on = 'initial timestep_end' + [] + [Tfuel_max] + type = ElementExtremeValue + block = 'pebble_bed' + value_type = max + variable = Tfuel_avg + execute_on = 'initial timestep_end' + [] + [Tmod_avg] + type = ElementAverageValue + block = 'pebble_bed' + variable = Tmod_avg + execute_on = 'initial timestep_end' + [] + [Tmod_max] + type = ElementExtremeValue + block = 'pebble_bed' + variable = Tmod_max + value_type = max + execute_on = 'initial timestep_end' + [] + [Burnup_avg] + type = ElementAverageValue + block = 'pebble_bed' + variable = Burnup_avg + execute_on = 'initial timestep_end' + [] + + [UnscaledTotalPower] + type = FluxRxnIntegral + block = 'pebble_bed' + cross_section = kappa_sigma_fission + coupled_flux_groups = 'sflux_g0 sflux_g1 sflux_g2 + sflux_g3 sflux_g4 sflux_g5 + sflux_g6 sflux_g7 sflux_g8' + execute_on = 'initial transfer timestep_end' + [] + [prompt_power] + type = ElementIntegralVariablePostprocessor + block = 'pebble_bed' + variable = prompt_power_density + execute_on = 'initial transfer timestep_end' + [] + [power_peak] + type = ElementExtremeValue + variable = power_peaking + value_type = max + execute_on = 'initial timestep_end' + [] + + [decay_heat] + type = ElementIntegralVariablePostprocessor + variable = total_pebble_decay_heat + block = 'pebble_bed' + execute_on = 'INITIAL TIMESTEP_END' + [] +[] diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_heat_pos.txt b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_heat_pos.txt new file mode 100644 index 000000000..1df535ef8 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_heat_pos.txt @@ -0,0 +1,153 @@ +1.250000E-01 3.495326E+00 0.000000E+00 +1.250000E-01 4.029978E+00 0.000000E+00 +1.250000E-01 4.564630E+00 0.000000E+00 +1.250000E-01 5.099282E+00 0.000000E+00 +1.250000E-01 5.633934E+00 0.000000E+00 +1.250000E-01 6.168586E+00 0.000000E+00 +1.250000E-01 6.703238E+00 0.000000E+00 +1.250000E-01 7.237890E+00 0.000000E+00 +1.250000E-01 7.772542E+00 0.000000E+00 +1.250000E-01 8.307194E+00 0.000000E+00 +1.250000E-01 8.841847E+00 0.000000E+00 +1.250000E-01 9.376499E+00 0.000000E+00 +1.250000E-01 9.911151E+00 0.000000E+00 +1.250000E-01 1.044580E+01 0.000000E+00 +1.250000E-01 1.098045E+01 0.000000E+00 +1.250000E-01 1.151511E+01 0.000000E+00 +1.250000E-01 1.204976E+01 0.000000E+00 +1.250000E-01 1.258441E+01 0.000000E+00 +1.250000E-01 1.311906E+01 0.000000E+00 +1.250000E-01 1.365371E+01 0.000000E+00 +3.750000E-01 3.495326E+00 0.000000E+00 +3.750000E-01 4.029978E+00 0.000000E+00 +3.750000E-01 4.564630E+00 0.000000E+00 +3.750000E-01 5.099282E+00 0.000000E+00 +3.750000E-01 5.633934E+00 0.000000E+00 +3.750000E-01 6.168586E+00 0.000000E+00 +3.750000E-01 6.703238E+00 0.000000E+00 +3.750000E-01 7.237890E+00 0.000000E+00 +3.750000E-01 7.772542E+00 0.000000E+00 +3.750000E-01 8.307194E+00 0.000000E+00 +3.750000E-01 8.841847E+00 0.000000E+00 +3.750000E-01 9.376499E+00 0.000000E+00 +3.750000E-01 9.911151E+00 0.000000E+00 +3.750000E-01 1.044580E+01 0.000000E+00 +3.750000E-01 1.098045E+01 0.000000E+00 +3.750000E-01 1.151511E+01 0.000000E+00 +3.750000E-01 1.204976E+01 0.000000E+00 +3.750000E-01 1.258441E+01 0.000000E+00 +3.750000E-01 1.311906E+01 0.000000E+00 +3.750000E-01 1.365371E+01 0.000000E+00 +6.250000E-01 3.495326E+00 0.000000E+00 +6.250000E-01 4.029978E+00 0.000000E+00 +6.250000E-01 4.564630E+00 0.000000E+00 +6.250000E-01 5.099282E+00 0.000000E+00 +6.250000E-01 5.633934E+00 0.000000E+00 +6.250000E-01 6.168586E+00 0.000000E+00 +6.250000E-01 6.703238E+00 0.000000E+00 +6.250000E-01 7.237890E+00 0.000000E+00 +6.250000E-01 7.772542E+00 0.000000E+00 +6.250000E-01 8.307194E+00 0.000000E+00 +6.250000E-01 8.841847E+00 0.000000E+00 +6.250000E-01 9.376499E+00 0.000000E+00 +6.250000E-01 9.911151E+00 0.000000E+00 +6.250000E-01 1.044580E+01 0.000000E+00 +6.250000E-01 1.098045E+01 0.000000E+00 +6.250000E-01 1.151511E+01 0.000000E+00 +6.250000E-01 1.204976E+01 0.000000E+00 +6.250000E-01 1.258441E+01 0.000000E+00 +6.250000E-01 1.311906E+01 0.000000E+00 +6.250000E-01 1.365371E+01 0.000000E+00 +8.750000E-01 3.495326E+00 0.000000E+00 +8.750000E-01 4.029978E+00 0.000000E+00 +8.750000E-01 4.564630E+00 0.000000E+00 +8.750000E-01 5.099282E+00 0.000000E+00 +8.750000E-01 5.633934E+00 0.000000E+00 +8.750000E-01 6.168586E+00 0.000000E+00 +8.750000E-01 6.703238E+00 0.000000E+00 +8.750000E-01 7.237890E+00 0.000000E+00 +8.750000E-01 7.772542E+00 0.000000E+00 +8.750000E-01 8.307194E+00 0.000000E+00 +8.750000E-01 8.841847E+00 0.000000E+00 +8.750000E-01 9.376499E+00 0.000000E+00 +8.750000E-01 9.911151E+00 0.000000E+00 +8.750000E-01 1.044580E+01 0.000000E+00 +8.750000E-01 1.098045E+01 0.000000E+00 +8.750000E-01 1.151511E+01 0.000000E+00 +8.750000E-01 1.204976E+01 0.000000E+00 +8.750000E-01 1.258441E+01 0.000000E+00 +8.750000E-01 1.311906E+01 0.000000E+00 +8.750000E-01 1.365371E+01 0.000000E+00 +1.125000E+00 3.495326E+00 0.000000E+00 +1.125000E+00 4.029978E+00 0.000000E+00 +1.125000E+00 4.564630E+00 0.000000E+00 +1.125000E+00 5.099282E+00 0.000000E+00 +1.125000E+00 5.633934E+00 0.000000E+00 +1.125000E+00 6.168586E+00 0.000000E+00 +1.125000E+00 6.703238E+00 0.000000E+00 +1.125000E+00 7.237890E+00 0.000000E+00 +1.125000E+00 7.772542E+00 0.000000E+00 +1.125000E+00 8.307194E+00 0.000000E+00 +1.125000E+00 8.841847E+00 0.000000E+00 +1.125000E+00 9.376499E+00 0.000000E+00 +1.125000E+00 9.911151E+00 0.000000E+00 +1.125000E+00 1.044580E+01 0.000000E+00 +1.125000E+00 1.098045E+01 0.000000E+00 +1.125000E+00 1.151511E+01 0.000000E+00 +1.125000E+00 1.204976E+01 0.000000E+00 +1.125000E+00 1.258441E+01 0.000000E+00 +1.125000E+00 1.311906E+01 0.000000E+00 +1.125000E+00 1.365371E+01 0.000000E+00 +1.375000E+00 3.495326E+00 0.000000E+00 +1.375000E+00 4.029978E+00 0.000000E+00 +1.375000E+00 4.564630E+00 0.000000E+00 +1.375000E+00 5.099282E+00 0.000000E+00 +1.375000E+00 5.633934E+00 0.000000E+00 +1.375000E+00 6.168586E+00 0.000000E+00 +1.375000E+00 6.703238E+00 0.000000E+00 +1.375000E+00 7.237890E+00 0.000000E+00 +1.375000E+00 7.772542E+00 0.000000E+00 +1.375000E+00 8.307194E+00 0.000000E+00 +1.375000E+00 8.841847E+00 0.000000E+00 +1.375000E+00 9.376499E+00 0.000000E+00 +1.375000E+00 9.911151E+00 0.000000E+00 +1.375000E+00 1.044580E+01 0.000000E+00 +1.375000E+00 1.098045E+01 0.000000E+00 +1.375000E+00 1.151511E+01 0.000000E+00 +1.375000E+00 1.204976E+01 0.000000E+00 +1.375000E+00 1.258441E+01 0.000000E+00 +1.375000E+00 1.311906E+01 0.000000E+00 +1.375000E+00 1.365371E+01 0.000000E+00 +4.166667E-02 2.578479E+00 0.000000E+00 +1.041667E-01 2.578479E+00 0.000000E+00 +1.666667E-01 2.578479E+00 0.000000E+00 +2.291667E-01 2.578479E+00 0.000000E+00 +2.916667E-01 2.578479E+00 0.000000E+00 +3.541667E-01 2.578479E+00 0.000000E+00 +6.250000E-02 2.722817E+00 0.000000E+00 +1.666667E-01 2.722817E+00 0.000000E+00 +2.708333E-01 2.722817E+00 0.000000E+00 +3.750000E-01 2.722817E+00 0.000000E+00 +4.791667E-01 2.722817E+00 0.000000E+00 +5.833333E-01 2.722817E+00 0.000000E+00 +8.333333E-02 2.867155E+00 0.000000E+00 +2.291667E-01 2.867155E+00 0.000000E+00 +3.750000E-01 2.867155E+00 0.000000E+00 +5.208333E-01 2.867155E+00 0.000000E+00 +6.666667E-01 2.867155E+00 0.000000E+00 +8.125000E-01 2.867155E+00 0.000000E+00 +1.041667E-01 3.011493E+00 0.000000E+00 +2.916667E-01 3.011493E+00 0.000000E+00 +4.791667E-01 3.011493E+00 0.000000E+00 +6.666667E-01 3.011493E+00 0.000000E+00 +8.541667E-01 3.011493E+00 0.000000E+00 +1.041667E+00 3.011493E+00 0.000000E+00 +1.250000E-01 3.155831E+00 0.000000E+00 +3.541667E-01 3.155831E+00 0.000000E+00 +5.833333E-01 3.155831E+00 0.000000E+00 +8.125000E-01 3.155831E+00 0.000000E+00 +1.041667E+00 3.155831E+00 0.000000E+00 +1.270833E+00 3.155831E+00 0.000000E+00 +0.000000E+00 1.907000E+00 0.000000E+00 +0.000000E+00 2.121000E+00 0.000000E+00 +0.000000E+00 2.367155E+00 0.000000E+00 diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i new file mode 100644 index 000000000..efc5ea24a --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso.i @@ -0,0 +1,328 @@ +# ============================================================================== +# Model description +# Single Pebble temperature model +# ------------------------------------------------------------------------------ +# Idaho Falls, INL, September 29, 2022 +# Author(s): Dr. Sebastian Schunert, Dr. Javier Ortensi, Dr. Mustafa Jaradat +# ============================================================================== +# MODEL PARAMETERS +# ============================================================================== +# Geometry and data ------------------------------------------------------------ +pebble_radius = 3.0e-2 # pebble radius (m) +pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m) +pebble_volume = ${fparse 4/3*pi*pow(pebble_radius,3)} # volume of the pebble (m3) +pebble_core_volume = ${fparse 4/3*pi*pow(pebble_radius-pebble_shell_thickness,3)} # volume of the pebble occupied by TRISO (m3) +kernel_radius = 2.50e-04 # kernel particle radius (m) +kernel_volume = ${fparse 4/3*pi*pow(kernel_radius,3)} # volume of the kernel (m3) +triso_number = 11668 # number of TRISO particle in a pebble (//) +initial_temperature = 500.0 # (K) + +# GEOMETRY AND MESH +# ============================================================================== +[Mesh] + block_id = '1 2 3 4 5 6 7' + block_name = 'core + shell + kernel + buffer + ipyc + sic + opyc' + dim = 1 + [pebble_mesh] + type = CartesianMeshGenerator + dim = 1 + dx = '2.50e-02 5.00e-03' + ix = '15 3' + subdomain_id = '1 2' + [] + [triso_mesh] + type = CartesianMeshGenerator + dim = 1 + dx = '2.50e-04 9.00e-05 4.00e-05 3.50e-05 4.00e-05' + ix = '21 8 3 3 3' + subdomain_id = '3 4 5 6 7' + [] + [mesh_combine] + type = CombinerGenerator + inputs = 'pebble_mesh triso_mesh' + [] + [pebble_surface] + type = SideSetsAroundSubdomainGenerator + block = '2' + fixed_normal = 1 + normal = '1 0 0' + input = mesh_combine + new_boundary = pebble_surface + [] + [triso_surface] + type = SideSetsAroundSubdomainGenerator + block = '7' + fixed_normal = 1 + normal = '1 0 0' + input = pebble_surface + new_boundary = triso_surface + [] + coord_type = 'RSPHERICAL' +[] + +# ============================================================================== +# VARIABLES AND KERNELS +# ============================================================================== +[Variables] + [T_pebble] + block = '1 2' + # initial_condition = ${initial_temperature} + [] + [T_triso] + block = '3 4 5 6 7' + # initial_condition = ${initial_temperature} + [] +[] + +[Kernels] + [pebble_diffusion] + type = ADHeatConduction + variable = T_pebble + thermal_conductivity = 'k_s' + block = '1 2' + [] + + [pebble_core_heat_source] + type = HeatSource + variable = T_pebble + postprocessor = pebble_power_density + value = ${fparse pebble_volume/pebble_core_volume} + block = '1' + [] + + [triso_diffusion] + type = ADHeatConduction + variable = T_triso + thermal_conductivity = 'k_s' + block = '3 4 5 6 7' + [] + [kernel_heat_source] + type = HeatSource + variable = T_triso + postprocessor = pebble_power_density + value = ${fparse pebble_volume/triso_number/kernel_volume} + block = '3' + [] +[] + +# ============================================================================== +# MATERIALS AND USER OBJECTS +# ============================================================================== +[Materials] + [pebble_core] + type = PronghornSteadyStateSolidMaterial + T_solid = T_pebble + solid = pebble_core + block = '1' + [] + [pebble_shell] + type = PronghornSteadyStateSolidMaterial + T_solid = T_pebble + solid = gmatrix + block = '2' + [] + + # TRISO. + [kernel] + type = PronghornSteadyStateSolidMaterial + T_solid = T_triso + solid = kernel + block = '3' + [] + [buffer] + type = PronghornSteadyStateSolidMaterial + T_solid = T_triso + solid = buffer + block = '4' + [] + [ipyc] + type = PronghornSteadyStateSolidMaterial + T_solid = T_triso + solid = ipyc + block = '5' + [] + [sic] + type = PronghornSteadyStateSolidMaterial + T_solid = T_triso + solid = sic + block = '6' + [] + [opyc] + type = PronghornSteadyStateSolidMaterial + T_solid = T_triso + solid = opyc + block = '7' + [] +[] + +[Functions] + [uo2_k] + type = ParsedFunction + expression = 'if(bnp < 1e-10, (115.8/(7.5408+17.692*(t/1000)+3.6142*(t/1000)^2)+7410.5*(t/1000)^(-5./2.)*exp(-16.35/(t/1000))), + (115.8/(7.5408+17.692*(t/1000)+3.6142*(t/1000)^2)+7410.5*(t/1000)^(-5./2.)*exp(-16.35/(t/1000)))* + (1.09/bnp^(3.265)+0.0643*sqrt(t/bnp))*atan(1./(1.09/bnp^(3.265)+0.0643*sqrt(t/bnp)))* + (1+0.019*bnp/(3.-0.019*bnp)*(1.+exp(-(t-1200)/100))^(-1))* + (1.-0.2/(1+exp((t-900.)/80.))) )' + symbol_names = 'bnp' + symbol_values = 'fima' + [] + [buffer_k] + type = ParsedFunction + expression = 244.3/2*t^(-0.574)*(970/(2.2*(1930.-970)+970))*(1.-0.336*(1.-exp(-1.005*gam))-3.50e-2*gam) + symbol_names = 'gam' + symbol_values = 'fluence' + [] + [pyc_k] + type = ParsedFunction + expression = 244.3*t^(-0.574)*(1900/(2.2*(1930.-1900)+1900))*(1.-0.336*(1.-exp(-1.005*gam))-3.50e-2*gam) + symbol_names = 'gam' + symbol_values = 'fluence' + [] + [sic_k] + type = ParsedFunction + expression = (17885/t+2.)*exp(-0.1277*gam) + symbol_names = 'gam' + symbol_values = 'fluence' + [] + [gmatrix_k] + type = ParsedFunction + expression = 47.4*(1-9.7556E-4*(t-373.15)*exp(-6.036E-4*(t-273.15)))*(1740/(2.2*(1700.-1740)+1740))*(1.-0.336*(1.-exp(-1.005*gam))-3.50e-2*gam) + symbol_names = 'gam' + symbol_values = 'fluence' + [] + [fluence] + type = ParsedFunction + expression = 7.41611E-06*bnp*bnp*bnp-5.36979E-06*bnp*bnp+1.37527E-02*bnp-4.48921E-02 + symbol_names = 'bnp' + symbol_values = 'burnup' + [] + [fima] + type = ParsedFunction + expression = -2.022642E-06*bnp*bnp+1.053601E-03*bnp + symbol_names = 'bnp' + symbol_values = 'burnup' + [] +[] + +[UserObjects] + [kernel] + type = FunctionSolidProperties + k_s = uo2_k + [] + [buffer] + type = FunctionSolidProperties + k_s = buffer_k + [] + [ipyc] + type = FunctionSolidProperties + k_s = pyc_k + [] + [sic] + type = FunctionSolidProperties + k_s = sic_k + [] + [opyc] + type = FunctionSolidProperties + k_s = pyc_k + [] + [gmatrix] + type = FunctionSolidProperties + k_s = gmatrix_k + [] + + # Mixtures. + [triso] + type = CompositeSolidProperties + materials = 'kernel buffer ipyc sic opyc' + fractions = '0.1659 0.2514 0.1653 0.1762 0.2412' # volume fractions. + k_mixing = 'series' + [] + [pebble_core] + type = CompositeSolidProperties + materials = 'triso gmatrix' + fractions = '0.090484107 0.909515893' # volume fractions. + k_mixing = 'chiew' + [] +[] + +# ============================================================================== +# BOUNDARY CONDITIONS +# ============================================================================== +[BCs] + [pebble_surface_temp] + type = PostprocessorDirichletBC + variable = T_pebble + postprocessor = T_surface + boundary = 'pebble_surface' + [] + [triso_surface_temp] + type = PostprocessorDirichletBC + variable = T_triso + postprocessor = pebble_core_average_temp + boundary = 'triso_surface' + [] +[] +# ============================================================================== +# EXECUTION PARAMETERS +# ============================================================================== +[Executioner] + type = Steady + petsc_options_iname = '-pc_type -pc_hypre_type' + petsc_options_value = 'hypre boomeramg' + line_search = 'l2' + # Linear/nonlinear iterations. + nl_abs_tol = 1e-8 +[] + +# ============================================================================== +# POSTPROCESSORS DEBUG AND OUTPUTS +# ============================================================================== +[Debug] + show_var_residual_norms = false +[] + +[Postprocessors] + # transferred to this app + [pebble_power_density] + type = Receiver + default = 5.36E+06 + [] + [burnup] # MWd/kg + type = Receiver + default = 0 + [] + [pebble_core_average_temp] + type = ElementAverageValue + variable = T_pebble + block = '1' + execute_on = 'INITIAL LINEAR' + [] + [T_mod] + type = ElementAverageValue + variable = T_pebble + block = '1 2' + execute_on = 'INITIAL TIMESTEP_END' + [] + [T_fuel] + type = ElementAverageValue + variable = T_triso + block = '3' + execute_on = 'INITIAL TIMESTEP_END' + [] + [T_surface] + type = Receiver + default = ${initial_temperature} + [] +[] + +[Outputs] + exodus = false + csv = false + console = false +[] diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso_ss.i b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso_ss.i new file mode 100644 index 000000000..5118c39fc --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/pebble_triso_ss.i @@ -0,0 +1,21 @@ +# ============================================================================== +# Model description +# Single Pebble temperature model +# ------------------------------------------------------------------------------ +# Idaho Falls, INL, September 29, 2022 +# Author(s): Dr. Sebastian Schunert, Dr. Javier Ortensi, Dr. Mustafa Jaradat +# ============================================================================== +# MODEL PARAMETERS +# ============================================================================== + +!include pebble_triso.i + +# the steady state case needs an initialization +[Variables] + [T_pebble] + initial_condition = ${initial_temperature} + [] + [T_triso] + initial_condition = ${initial_temperature} + [] +[] diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/run.sh b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/run.sh new file mode 100644 index 000000000..8211aec94 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/run.sh @@ -0,0 +1,40 @@ +#!/bin/bash +#PBS -j oe +#PBS -koe +###PBS -l nodes=2:ppn=2 +#PBS -l select=1:ncpus=48:mpiprocs=48 +#PBS -l walltime=4:00:00 +#PBS -l place=scatter:excl +#PBS -P nrc + + + +nprocs=`cat $PBS_NODEFILE | wc -l` +cat $PBS_NODEFILE +module purge +module load use.moose moose-apps blue_crab + +module load mpich/3.3.2 +#module load mpich +#module load fftw +module list + +export MV2_SMP_USE_CMA=0 + +# +cd $PBS_O_WORKDIR +JOB_NUM=${PBS_JOBID%\.*} +if [ $PBS_O_WORKDIR != $HOME ] +then +ln -s $HOME/$PBS_JOBNAME.o$JOB_NUM $PBS_JOBNAME.o$JOB_NUM +fi +# + +time mpirun -np $nprocs blue_crab-opt -i htr_pm_neutronics_ss.i > O_htr_pm_neutronics_ss.out + +# +if [ $PBS_O_WORKDIR != $HOME ] +then +rm $PBS_JOBNAME.o$JOB_NUM +mv $HOME/$PBS_JOBNAME.o$JOB_NUM $PBS_JOBNAME.o$JOB_NUM +fi diff --git a/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/tests b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/tests new file mode 100644 index 000000000..e8cf66127 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/updated_equilibrium_core/tests @@ -0,0 +1,136 @@ +[Tests] + # Individual steady syntax checks + [neutronics_syntax_SS] + type = RunApp + input = 'htr_pm_neutronics_ss.i' + check_input = True + executable_pattern = 'blue_crab*|fenix*' + # This does not remove the pebble creation, and thus we need to use blue_crab + cli_args = "MultiApps/active='' Transfers/active=''" + # XS branching ratio warning + allow_warnings = true + min_parallel = 4 + max_time = 400 + [] + [neutronics_syntax_null] + type = RunApp + input = 'htr_pm_neutronics_tr_null.i' + check_input = True + executable_pattern = 'blue_crab*|fenix*' + # need a checkpoint + prereq = 'htr_pm_regression_1' + cli_args = "MultiApps/active='' Transfers/active=''" + # XS branching ratio warning + allow_warnings = true + min_parallel = 4 + max_time = 400 + [] + [neutronics_syntax_dlofc] + type = RunApp + input = 'htr_pm_neutronics_tr_dlofc.i' + check_input = True + executable_pattern = 'blue_crab*|fenix*' + # need a checkpoint + prereq = 'htr_pm_regression_1' + cli_args = "MultiApps/active='' Transfers/active=''" + # XS branching ratio warning + allow_warnings = true + min_parallel = 4 + max_time = 400 + [] + [flow_syntax_fv_ss] + type = RunApp + input = 'htr-pm-flow-fv-ss.i' + check_input = True + executable_pattern = 'blue_crab*|pronghorn*|fenix*' + # warning from setting fp in porous media physics through global parameters + allow_warnings = true + [] + [flow_syntax_fv_null] + type = RunApp + input = 'htr-pm-flow-fv-tr-null.i' + check_input = True + executable_pattern = 'blue_crab*|fenix*' + # need a checkpoint + prereq = 'htr_pm_regression_1' + # warning from setting fp in porous media physics through global parameters + allow_warnings = true + [] + [flow_syntax_fv_dlofc] + type = RunApp + input = 'htr-pm-flow-fv-tr-dlofc.i' + check_input = True + executable_pattern = 'blue_crab*|fenix*' + # need a checkpoint + prereq = 'htr_pm_regression_1' + # warning from setting fp in porous media physics through global parameters + allow_warnings = true + [] + [pebble_heat_conduction] + type = RunApp + input = 'pebble_triso_ss.i' + check_input = True + executable_pattern = 'blue_crab*|fenix*' + [] + + # Regression tests + [htr_pm_regression_1] + type = CSVDiff + input = htr_pm_neutronics_ss.i + cli_args = "Outputs/exodus=false" + csvdiff = 'htr_pm_griffin_ss_out.csv htr_pm_griffin_ss_out_flow0.csv' + prereq = 'neutronics_syntax_SS' + executable_pattern = 'blue_crab*' + # 420s on M4 on 8 cores + # 800s on civet on 16 cores + max_time = 1400 + min_parallel = 16 + capabilities = 'method=opt' + # XS branching ratio warning + allow_warnings = true + # Observed 7e-4 on balance from changing min_parallel from 8 to 16 + rel_err = 7e-4 + # Core delta_p at time 0 is numerical error level + abs_zero = 1e-8 + ignore_columns = 'total_balance_percent' + [] + [htr_pm_regression_2] + type = CSVDiff + input = htr_pm_neutronics_tr_null.i + csvdiff = 'htr_pm_griffin_tr_null_out.csv htr_pm_griffin_tr_null_out_flow0.csv' + cli_args = 'Executioner/num_steps=3 Executioner/fixed_point_abs_tol=1e-3' + # need a checkpoint + prereq = 'htr_pm_regression_1 flow_syntax_fv_null' + executable_pattern = 'blue_crab*' + # 190s on M4 + max_time = 600 + min_parallel = 16 + capabilities = 'method=opt' + # XS branching ratio warning + allow_warnings = true + # Observed 7e-4 on balance from changing min_parallel from 8 to 16 + rel_err = 7e-4 + abs_zero = 1e-8 + ignore_columns = 'total_balance_percent' + [] + [htr_pm_regression_3] + type = CSVDiff + input = htr_pm_neutronics_tr_dlofc.i + cli_args = 'Executioner/num_steps=5 Executioner/start_time=0.95 Executioner/fixed_point_abs_tol=1e-3 MultiApps/flow/cli_args=Executioner/start_time=0.95' + csvdiff = 'htr_pm_griffin_tr_dlofc_out.csv htr_pm_griffin_tr_dlofc_out_flow0.csv' + # need a checkpoint + prereq = 'htr_pm_regression_1 flow_syntax_fv_dlofc' + executable_pattern = 'blue_crab*' + # 500s on M4 + max_time = 1500 + min_parallel = 16 + capabilities = 'method=opt' + # XS branching ratio warning + allow_warnings = true + # Observed 7e-4 on balance from changing min_parallel from 8 to 16 + rel_err = 7e-4 + abs_zero = 1e-8 + ignore_columns = 'total_balance_percent' + [] + [] + diff --git a/htgr/htr-pm/core-multiphysics/xsections/.gitattributes b/htgr/htr-pm/core-multiphysics/xsections/.gitattributes new file mode 100644 index 000000000..361fceb0b --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/xsections/.gitattributes @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c07d47065903836e519e4f277b62664592bb7882e4e1d625032714f113e13f33 +size 151 diff --git a/htgr/htr-pm/core-multiphysics/xsections/DRAGON5_DT_DH_295.xml b/htgr/htr-pm/core-multiphysics/xsections/DRAGON5_DT_DH_295.xml new file mode 100644 index 000000000..5caef4d98 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/xsections/DRAGON5_DT_DH_295.xml @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df7d3d5459b42101e7193036e04763d1348f9a48154b700a6605d9ef3cecdfa3 +size 735700 diff --git a/htgr/htr-pm/core-multiphysics/xsections/HTR-PM_9G-Tnew.xml b/htgr/htr-pm/core-multiphysics/xsections/HTR-PM_9G-Tnew.xml new file mode 100644 index 000000000..13f3b0ff4 --- /dev/null +++ b/htgr/htr-pm/core-multiphysics/xsections/HTR-PM_9G-Tnew.xml @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8806088b7862ee339f2e0bc14125c8406f04b31a95959e079589b565e513d0e +size 320127819 diff --git a/htgr/htr-pm/gold/plofc-main-transient_csv.csv b/htgr/htr-pm/sam-htrpm/gold/plofc-main-transient_csv.csv similarity index 100% rename from htgr/htr-pm/gold/plofc-main-transient_csv.csv rename to htgr/htr-pm/sam-htrpm/gold/plofc-main-transient_csv.csv diff --git a/htgr/htr-pm/gold/plofc-primary-loop-ss_csv.csv b/htgr/htr-pm/sam-htrpm/gold/plofc-primary-loop-ss_csv.csv similarity index 100% rename from htgr/htr-pm/gold/plofc-primary-loop-ss_csv.csv rename to htgr/htr-pm/sam-htrpm/gold/plofc-primary-loop-ss_csv.csv diff --git a/htgr/htr-pm/gold/ss-main-simplified.csv b/htgr/htr-pm/sam-htrpm/gold/ss-main-simplified.csv similarity index 100% rename from htgr/htr-pm/gold/ss-main-simplified.csv rename to htgr/htr-pm/sam-htrpm/gold/ss-main-simplified.csv diff --git a/htgr/htr-pm/gold/ss-main_csv.csv b/htgr/htr-pm/sam-htrpm/gold/ss-main_csv.csv similarity index 100% rename from htgr/htr-pm/gold/ss-main_csv.csv rename to htgr/htr-pm/sam-htrpm/gold/ss-main_csv.csv diff --git a/htgr/htr-pm/gold/ss-primary-loop-full_csv.csv b/htgr/htr-pm/sam-htrpm/gold/ss-primary-loop-full_csv.csv similarity index 100% rename from htgr/htr-pm/gold/ss-primary-loop-full_csv.csv rename to htgr/htr-pm/sam-htrpm/gold/ss-primary-loop-full_csv.csv diff --git a/htgr/htr-pm/gold/ss-rccs-water_csv.csv b/htgr/htr-pm/sam-htrpm/gold/ss-rccs-water_csv.csv similarity index 100% rename from htgr/htr-pm/gold/ss-rccs-water_csv.csv rename to htgr/htr-pm/sam-htrpm/gold/ss-rccs-water_csv.csv diff --git a/htgr/htr-pm/htr-pm-common.i b/htgr/htr-pm/sam-htrpm/htr-pm-common.i similarity index 100% rename from htgr/htr-pm/htr-pm-common.i rename to htgr/htr-pm/sam-htrpm/htr-pm-common.i diff --git a/htgr/htr-pm/htr-pm-mesh-bypass-riser.e b/htgr/htr-pm/sam-htrpm/htr-pm-mesh-bypass-riser.e similarity index 100% rename from htgr/htr-pm/htr-pm-mesh-bypass-riser.e rename to htgr/htr-pm/sam-htrpm/htr-pm-mesh-bypass-riser.e diff --git a/htgr/htr-pm/plofc-main-transient.i b/htgr/htr-pm/sam-htrpm/plofc-main-transient.i similarity index 100% rename from htgr/htr-pm/plofc-main-transient.i rename to htgr/htr-pm/sam-htrpm/plofc-main-transient.i diff --git a/htgr/htr-pm/plofc-primary-loop-ss.i b/htgr/htr-pm/sam-htrpm/plofc-primary-loop-ss.i similarity index 100% rename from htgr/htr-pm/plofc-primary-loop-ss.i rename to htgr/htr-pm/sam-htrpm/plofc-primary-loop-ss.i diff --git a/htgr/htr-pm/plofc-primary-loop-transient.i b/htgr/htr-pm/sam-htrpm/plofc-primary-loop-transient.i similarity index 100% rename from htgr/htr-pm/plofc-primary-loop-transient.i rename to htgr/htr-pm/sam-htrpm/plofc-primary-loop-transient.i diff --git a/htgr/htr-pm/plofc-rccs-water-transient.i b/htgr/htr-pm/sam-htrpm/plofc-rccs-water-transient.i similarity index 100% rename from htgr/htr-pm/plofc-rccs-water-transient.i rename to htgr/htr-pm/sam-htrpm/plofc-rccs-water-transient.i diff --git a/htgr/htr-pm/ss-main.i b/htgr/htr-pm/sam-htrpm/ss-main.i similarity index 100% rename from htgr/htr-pm/ss-main.i rename to htgr/htr-pm/sam-htrpm/ss-main.i diff --git a/htgr/htr-pm/ss-primary-loop-full.i b/htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i similarity index 100% rename from htgr/htr-pm/ss-primary-loop-full.i rename to htgr/htr-pm/sam-htrpm/ss-primary-loop-full.i diff --git a/htgr/htr-pm/ss-rccs-water.i b/htgr/htr-pm/sam-htrpm/ss-rccs-water.i similarity index 100% rename from htgr/htr-pm/ss-rccs-water.i rename to htgr/htr-pm/sam-htrpm/ss-rccs-water.i diff --git a/htgr/htr-pm/tests b/htgr/htr-pm/sam-htrpm/tests similarity index 100% rename from htgr/htr-pm/tests rename to htgr/htr-pm/sam-htrpm/tests