In-core thermal-hydraulic calculations

This application mode is used to calculate temperature distributions throughout the core when supplied with a power distribution. Calculations can be done for a single assembly, subset of assemblies or the entire core.

Note

This application is underpins by the SystemCoreThermalHydraulic application to perform system analysis. In addition this application is a building block for the Coupling application, which allows a multi-physics coupled analysis.

Typical Use Cases

  1. Calculate overall in-core temperature distributions

  2. In particular determine fuel temperature, clad temperature, water temperature and water density in all channels

  3. Find the hot assembly, hot plate and maximum local clad temperature

  4. Determine margins to saturation, onset of nucleate boiling or other supported safety related conditions

Additional Input Parameters

In the following cth denotes a core_thermal_hydraulics parameter set, created as follows:

import applications.core_thermal_hydraulics as app

cth = app.parameters()

The application accepts the typical Rapyds input sets, such as defining the model, setting the time_stamp, and working directory. In addition, a number of basic thermal-hydraulics parameters have to be set, as defined below:

cth.single_phase_heat_transfer_model

Define the heat transfer model of interest.

cth.critical_heat_flux_model

Define the critical_heat_flux_model of interest.

cth.pressure_drop

Define the pressure_drop over the core.

cth.inlet_pressure

Define the inlet_pressure.

cth.axial_power_shapes

Define the axial_power_shapes option. The value can be set to HotPlate or Striped, which determine the detail level of the power shapes provided to the thermal-hydraulic code. HotPlate uses the axial power shape of the hot plate for all plates, while Striped provides a detailed piece-of-plate level axial shape to each radial zone along each plate, of each assembly.

cth.flow_mode

Define the solution mode for the thermal-hydraulic analysis. Flow mode uses a defined flow to calculate a temperature distribution. Pressure mode iterates over the defined pressure drop to find the correct flow.

cth.thermal_data_sets

Define the location of the thermal data dictionary providing basic thermal-hydraulic properties for each assembly type. The typical location of this model extension can be found in the model folder, named thermal_hydraulic_data.py

cth.assemblies

Define the set of assemblies for which to calculate thermal-hydraulic solutions. If not specified, all assemblies are included. Three alternatives exist. An explicit list of assembly names may be specified, a regular expression as applied to assembly names can be given, or an assembly type identifier from the core.assembly class can be given.

cth.neutronic_result_set

Define the pointer to the neutronic result set to be used for the calculation. A path to a valid .res file must be provided.

. _core_thermal_hydraulics_cli:

Command Line Usage

This application supports all the standard application modes and options as described in General Application Command Line Interface (CLI).

Typical command line usage

oscar5 MY_REACTOR.projects.core_th_fuel --target-mode <MODE> --config-file <CONFIG> run --force

After output processing, a simple list of maximum temperatures are printed, with full detailed results provided in the produced .res file (can be viewed via the hdf5 viewer in the manager application.

Examples

The following example will calculate the detailed temperature and density distributions in all fuel assemblies in the specified core.

import applications.core_thermal_hydraulic as app
from core import *
from ..configurations.with_loadable_reflectors import model, create_heu_moly_batch
import sys
from ..model import thermal_hydraulic_assembly_data
from core.assembly import irradiation_rig, control, intra_assembly_control, fueled

param = app.CoreThermalHydraulicParameters()
param.model = model
param.working_directory = utilities.path_relative_to(__file__, 'TH_TEST_FUEL_FIX')
param.project_name = 'th_test'
param.model_scope = 'assemblies'
param.time_stamp = '9/12/2022, 7:30:00'

# basic options for the thermal-hydraulic setup
param.model.facility_description.design_coolant_flow_direction = 'DOWNWARDS'
#param.single_phase_heat_transfer_model = 'SiederTate'
param.single_phase_heat_transfer_model = 'DittusBoelter'
param.critical_heat_flux_model = 'MirshakDurantTowell'
param.pressure_drop = 0.069 * units.MPa
param.inlet_pressure = 194 * units.kPa
param.power_fraction_to_clad = 0.0
param.power_fraction_to_coolant = 0.0
param.axial_power_shapes = 'Striped'  # HotPlate or Striped
param.flow_mode = 'Flow'  #Pressure or Flow

param.full_core_flow = (0.28 * 3500) * units('kg/s')
param.force_total_flow_match = False
param.bypass_flow_fraction = 0.276


# Three region fuel plate assumed (centre is fuelled)
# The MORE input options has not yet been implemented - set to 0
# Fins not yet implemented (IH != -1)
# Searches not yet implemented (ISRCH = 0)
# Standard convergence parameters are assumed
# Values of zero typically imply automatic internal calculation of quantities

#assume thermal
param.thermal_data_sets = thermal_hydraulic_assembly_data.thermal_data_sets
param.thermal_data_sets['SAFARI-1-LEU-fuel']['PinMeshCrossPadding'] = 1
param.thermal_data_sets['SAFARI-1-LEU-fuel-follower']['PinMeshCrossPadding'] = 1
#param.thermal_data_sets['SAFARI-1-LEU-fuel-follower']['PinMeshPadding'] = 3

param.hot_channel_factors = \
{
'BulkCoolant'   : 1.0,
'Film'          : 1.0,
'HeatFlux'      : 1.0,
'HeatedDiameter': 1.0,
'Velocity'      : 1.0
}

# Assemblies which should be included in the model
#param.assemblies = ['EF444L', 'EF473L', 'EF488L'] #, 'EF118L', 'EF112L','EF128L']
#param.assemblies = ['CF086L']
param.assemblies = [fueled()]
param.neutronic_result_set = 'C:\\Users\\rianp\\Desktop\\Repos\\SAFARI_1\\projects\\C2208_critical_no_molly\\MGRAC\\C2208_Critical.res'


if __name__ == '__main__':
    sys.path.insert(0, 'C:\\oscar5\\rapyds_plugins\\pltemp')
    app.main(param)