Steady-State Griffin-Pronghorn-SAM Coupling

Model link: Steady-State Coupling Model

Griffin, Pronghorn, and SAM are coupled with a domain overlapping approach. The steady-state Griffin-Pronghorn coupled model is described at Griffin-Pronghorn model. The coupling scheme between the Griffin-Pronghorn and SAM models is shown in Figure 1.

Figure 1: Coupling scheme between the different physics solvers

The core power is computed by the Griffin-Pronghorn model. This power is then applied to the core in SAM. Then, the computed cold primary heat exchanger temperature in SAM is applied as the cold source temperature in the Pronghorn model. The main blocks of the coupling are presented here below.

MultiApp coupling Griffin-Pronghorn to SAM

Pronghorn is the main application, whereas SAM is the sub-application. The MultiApp transferring data between Pronghorn and SAM is shown here below. This is a TransientMultiApp with matched time steps between Pronghorn and SAM.

[MultiApps]
  [sam_balance_of_plant]
    type = TransientMultiApp
    app_type = 'SamApp'
    input_files = msfr_system_1d.i
    max_procs_per_app = 1
    execute_on = 'timestep_end'
    keep_solution_during_restore = False

    # the balance of plant needs to be run separately first for 100 steps
    # here we are hardcoding a restart file path, to a file we checked in, but you should
    # re-create the checkpoint file and adapt the restart_file_base path for your own runs
    cli_args = 'Problem/restart_file_base=restart/msfr_system_1d_checkpoint_cp/0100;Problem/force_restart=true'
  []
[]
(msr/msfr/plant/steady/run_ns.i)

The two key transfers are shown in the following block. They consist of MultiAppPostprocessorVectorTransfer in which values between post-processors are communicated between both codes.

[Transfers]
  # Primary and secondary loops
  [send_flow_BCs]
    type = MultiAppPostprocessorVectorTransfer
    to_multi_app = sam_balance_of_plant
    from_postprocessors = 'total_power'
    to_postprocessors = 'core_power'
  []
  [receive_flow_BCs]
    type = MultiAppPostprocessorVectorTransfer
    from_multi_app = sam_balance_of_plant
    from_postprocessors = 'HX_cold_temp'
    to_postprocessors = 'heat_exchanger_T_ambient'
  []
[]
(msr/msfr/plant/steady/run_ns.i)

Post-processors transferred

Two sets of postprocessors are implemented to transfer data between Pronghorn and SAM. To transfer power, an ElementIntegralVariablePostprocessor computes the total power in Pronghorn (transferred previously from Griffin) and sends it to a Receiver postprocessor in SAM.

[Postprocessors]
  [total_power]
    type = ElementIntegralVariablePostprocessor
    variable = power_density
    block = 'fuel pump hx'
  []
[]
(msr/msfr/plant/steady/run_ns.i)
[Postprocessors]
  [core_power]
    type = Receiver
    default = ${core_power_val}
    execute_on = 'INITIAL TIMESTEP_BEGIN TIMESTEP_END TRANSFER'
  []
[]
(msr/msfr/plant/steady/msfr_system_1d.i)

To transfer the heat exchanger cold temperature, an ElementAverageValue computes the heat exchanger cold temperature in SAM and sends it to a Receiver postprocessor in Pronghorn.

[Postprocessors]
  [HX_cold_temp]
    type = ElementAverageValue
    variable = temperature
    block = 'pipe3'
  []
[]
(msr/msfr/plant/steady/msfr_system_1d.i)
[Postprocessors]
  [heat_exchanger_T_ambient]
    type = Receiver
    default = ${T_HX}
    execute_on = 'INITIAL TIMESTEP_END TRANSFER'
  []
[]
(msr/msfr/plant/steady/run_ns.i)