blanket_library Module

! This library contains routines that can be shared by the blanket modules used in PROCESS.

! These include: ! - component_volumes ! - component_masses ! - thermo_hydraulic_model

! author: G Graham, CCFE, Culham Science Centre

Acronyms for this module:

  BB          Breeding Blanket
  FW          First Wall
  BZ          Breeder Zone
  MF/BSS      Manifold/Back Supporting Structure
  LT          Low Temperature
  HT          High Temperature
  MMS         Multi Module Segment
  SMS         Single Modle Segment
  IB          Inboard
  OB          Outboard
  HCD         Heating & Current Drive
  FCI         Flow Channel Insert

! Any changes within a subroutine or function code will have a comment explaining the change

! VOLUME CALCULATIONS ! component_volumes: ! - component_half_height ! - dshaped_component ! - elliptical_component ! - apply_coverage_factors ! - external_cryo_geometry

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! MASS CALCULATIONS ! component_masses !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! THERMOHYDRAUIC CALCULATIONS ! thermo_hydraulic_model: ! - blanket_mod_pol_height ! - flow_velocity ! - liquid_breeder_properties ! - primary_coolant_properties ! - hydraulic_diameter ! - elbow_coeff ! - pressure_drop ! - liquid_breeder_pressure_drop_mhd ! - deltap_tot ! - pumppower !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



Contents


Variables

TypeVisibility AttributesNameInitial
real(kind=dp), public :: volshldi

Volume of inboard and outboard shield (m3)

real(kind=dp), public :: volshldo

Volume of inboard and outboard shield (m3)

real(kind=dp), public :: volvvi

Volume of inboard and outboard Vacuum Vessel (m3)

real(kind=dp), public :: volvvo

Volume of inboard and outboard Vacuum Vessel (m3)

real(kind=dp), public :: hcryopf

Clearance between uppermost PF coil and cryostat lid (m)

real(kind=dp), public :: vfblkti

Inboard/outboard void fraction of blanket

real(kind=dp), public :: vfblkto

Inboard/outboard void fraction of blanket

real(kind=dp), public :: bldepti

Inboard/outboard blanket coolant channel length (radial direction) (m)

real(kind=dp), public :: bldepto

Inboard/outboard blanket coolant channel length (radial direction) (m)

real(kind=dp), public :: blwidti

Inboard/outboard blanket mid-plan toroidal circumference for segment (m)

real(kind=dp), public :: blwidto

Inboard/outboard blanket mid-plan toroidal circumference for segment (m)

real(kind=dp), public :: bllengi

Inboard/outboard blanket segment poloidal length (m)

real(kind=dp), public :: bllengo

Inboard/outboard blanket segment poloidal length (m)

real(kind=dp), public :: bzfllengi

Inboard/outboard primary blanket flow lengths (m)

real(kind=dp), public :: bzfllengo

Inboard/outboard primary blanket flow lengths (m)

real(kind=dp), public :: bzfllengi_liq

Inboard/outboard secondary blanket flow lengths (m)

real(kind=dp), public :: bzfllengo_liq

Inboard/outboard secondary blanket flow lengths (m)

real(kind=dp), public :: pnucfwi

Inboard/outboard first wall nuclear heating (MW)

real(kind=dp), public :: pnucfwo

Inboard/outboard first wall nuclear heating (MW)

real(kind=dp), public :: tpeakfwi

Inboard/outboard first wall peak temperature (K)

real(kind=dp), public :: tpeakfwo

Inboard/outboard first wall peak temperature (K)

real(kind=dp), public :: mffwi

Inboard/outboard total mass flow rate to remove inboard FW power (kg/s)

real(kind=dp), public :: mffwo

Inboard/outboard total mass flow rate to remove inboard FW power (kg/s)

real(kind=dp), public :: mffw

Inboard/outboard total mass flow rate to remove inboard FW power (kg/s)

real(kind=dp), public :: npfwi

Inboard/utboard total number of pipes

real(kind=dp), public :: npfwo

Inboard/utboard total number of pipes

real(kind=dp), public :: mffwpi

Inboard/outboard mass flow rate per coolant pipe (kg/s)

real(kind=dp), public :: mffwpo

Inboard/outboard mass flow rate per coolant pipe (kg/s)

real(kind=dp), public :: pnucblkti

Neutron power deposited inboard/outboard blanket blanket (MW)

real(kind=dp), public :: pnucblkto

Neutron power deposited inboard/outboard blanket blanket (MW)

real(kind=dp), public :: mfblkti

Inboard/outboard blanket mass flow rate for coolant (kg/s)

real(kind=dp), public :: mfblkto

Inboard/outboard blanket mass flow rate for coolant (kg/s)

real(kind=dp), public :: mfblkt

Inboard/outboard blanket mass flow rate for coolant (kg/s)

real(kind=dp), public :: mfblkti_liq

Inboard/outboard blanket mass flow rate for liquid breeder (kg/s)

real(kind=dp), public :: mfblkto_liq

Inboard/outboard blanket mass flow rate for liquid breeder (kg/s)

real(kind=dp), public :: mfblkt_liq

Inboard/outboard blanket mass flow rate for liquid breeder (kg/s)

real(kind=dp), public :: mftotal

Total mass flow rate for coolant (kg/s)

real(kind=dp), public :: npblkti

Inboard/outboard total num of pipes

real(kind=dp), public :: npblkto

Inboard/outboard total num of pipes

real(kind=dp), public :: mfblktpi

Inboard/outboard mass flow rate per coolant pipe (kg/s)

real(kind=dp), public :: mfblktpo

Inboard/outboard mass flow rate per coolant pipe (kg/s)

real(kind=dp), public :: velblkti

Inboard/outboard coolant velocity in blanket (m/s)

real(kind=dp), public :: velblkto

Inboard/outboard coolant velocity in blanket (m/s)

real(kind=dp), public :: htpmw_fwi

Inboard/outboard first wall pumping power (MW)

real(kind=dp), public :: htpmw_fwo

Inboard/outboard first wall pumping power (MW)

real(kind=dp), public :: htpmw_blkti

Inboard/outboard blanket pumping power (MW)

real(kind=dp), public :: htpmw_blkto

Inboard/outboard blanket pumping power (MW)

real(kind=dp), public :: htpmw_fw_blkti

Inboard/outboard fw and blanket pumping power (MW)

real(kind=dp), public :: htpmw_fw_blkto

Inboard/outboard fw and blanket pumping power (MW)

real(kind=dp), public :: hblnkt

Blanket internal half-height (m)

real(kind=dp), public :: hshld

Shield internal half-height (m)

real(kind=dp), public :: hvv

Vacuum vessel internal half-height (m)

integer, public :: icomponent

Switch used to specify selected component: blanket=0, shield=1, vacuum vessel=2


Functions

public function component_half_height(icomponent)

Calculate the blanket, shield or vacuum vessel half-height Based on blanket_half_height, shield_half_height, vv_half_height original author: J. Morris, CCFE, Culham Science Centre author: G. Graham, CCFE, Culham Science Centre

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: icomponent

Return Value real(kind=dp)

public function flow_velocity(i_channel_shape, mass_flow_rate, flow_density)

Calculate the coolant flow velocity (m/s) for given pipe mass flow rate and pipe size/shape. N.B. Assumed that primary BB and FW coolants have same pipe radius (= afw). author: G. Graham, CCFE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: i_channel_shape

Coolant mass flow rate per pipe (kg/s)

real(kind=dp), intent(in) :: mass_flow_rate

Coolant density

real(kind=dp), intent(in) :: flow_density

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

If primary coolant then circular channels assumed

Return Value real(kind=dp)

Arguments !!!!!!!!!!!!!!!!!!!!!

Swicth for circular or rectangular channel crossection. Shape depends on whether primary or secondary coolant. - =1 circle (primary) - =2 rectangle (secondary)

public function pressure_drop(ip, ofile, i_ps, num_90, num_180, l_pipe, den, vsc, vv, label)

Pressure drops are calculated for a pipe with a number of 90 and 180 degree bends. The pressure drop due to frictional forces along the total straight length of the pipe is calculated, then the pressure drop due to the bends is calculated. The total pressure drop is the sum of all contributions.

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: ip

Swicth for primary or secondary coolant - =1 primary - =2 secondary

integer, intent(in) :: ofile

Swicth for primary or secondary coolant - =1 primary - =2 secondary

integer, intent(in) :: i_ps

Number of 90 and 180 degree bends in pipe

integer, intent(in) :: num_90

Total flow length along pipe (m)

integer, intent(in) :: num_180

Total flow length along pipe (m)

real(kind=dp), intent(in) :: l_pipe

Coolant density (kg/m3)

real(kind=dp), intent(in) :: den

Coolant viscosity (Pa s)

real(kind=dp), intent(in) :: vsc

Coolant flow velocity (m/s)

real(kind=dp), intent(in) :: vv

Description of this calculation

character(len=*), intent(in) :: label

Local variables !!!!!!!!!!!!!!!

Hydraulic diameter of coolant flow channels (m)

Return Value real(kind=dp)

Arguments !!!!!!!!!!!!!!!!!!!!!

public function hydraulic_diameter(i_channel_shape)

Caculate the hydraulic diameter (m) for a given coolant pipe size/shape. author: G. Graham !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: i_channel_shape

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

If primary coolant then circular channels assumed

Return Value real(kind=dp)

Arguments !!!!!!!!!!!!!!!!!!!!!

Swicth for circular or rectangular channel crossection Shape depends on whether primary or secondary coolant - =1 circle (primary) - =2 rectangle (secondary)

public function elbow_coeff(r_elbow, ang_elbow, lambda, dh)

Function calculates elbow bends coefficients for pressure drop calculations.

Read more…

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(in) :: r_elbow

Pipe elbow angle (degrees)

real(kind=dp), intent(in) :: ang_elbow

Darcy Friction Factor

real(kind=dp), intent(in) :: lambda

Hydraulic Diameter (m)

real(kind=dp), intent(in) :: dh

Local variables !!!!!!!!!!!!!!!

A and B from singularity coefficient equation

Return Value real(kind=dp)

Arguments !!!!!!!!!!!!!!!!!!!!!

Pipe elbow radius (m)

public function liquid_breeder_pressure_drop_mhd(ip, ofile, vel, vsc, conduct_liq, l_channel, num_pol, label)

Calculates the pressure drop in a liquid metal flow channel due to MHD effects. The total pressure drop is the sum of contributions. This is only used for secondary coolant/breeder so rectangular flow channels are assumed.

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: ip

Liquid metal coolant/breeder flow velocity (m/s)

integer, intent(in) :: ofile

Liquid metal coolant/breeder flow velocity (m/s)

real(kind=dp), intent(in) :: vel

Liquid metal visosity

real(kind=dp), intent(in) :: vsc

Liquid metal conductivity

real(kind=dp), intent(in) :: conduct_liq

Length long poloidal sections of channel

real(kind=dp), intent(in) :: l_channel

Number long poloidal sections of channel

integer, intent(in) :: num_pol

Description of this calculation

character(len=*), intent(in) :: label

Local Variables !!!!!!!!!!!!!!!

Half-widths of channel (m)

Return Value real(kind=dp)

Arguments !!!!!!!!!!!!!!!!!!!!!


Subroutines

public subroutine init_blanket_library()

Initialise module variables

Arguments

None

public subroutine component_volumes()

Calculate the blanket, shield, vacuum vessel and cryostat volumes author: J. Morris, CCFE, Culham Science Centre Calculate the blanket, shield, vacuum vessel and cryostat volumes

Arguments

None

public subroutine dshaped_component(icomponent)

Calculate component surface area and volume using dshaped scheme Based on dshaped_blanket, dshaped_shield, dshaped_vv original author: J. Morris, CCFE, Culham Science Centre author: G. Graham, CCFE, Culham Science Centre

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: icomponent

public subroutine elliptical_component(icomponent)

Calculate component surface area and volume using elliptical scheme Based on elliptical_blanket, elliptical_shield, elliptical_vv original author: J. Morris, CCFE, Culham Science Centre author: G. Graham, CCFE, Culham Science Centre

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: icomponent

public subroutine apply_coverage_factors()

Apply coverage factors to volumes author: J. Morris, CCFE, Culham Science Centre Apply coverage factors to volumes

Arguments

None

public subroutine external_cryo_geometry()

Calculate cryostat geometry author: J. Morris, CCFE, Culham Science Centre Calculate cryostat geometry

Arguments

None

public subroutine component_masses()

Calculations for component masses author: J. Morris, CCFE, Culham Science Centre Calculations for component masses

Read more…

Arguments

None

public subroutine blanket_mod_pol_height()

Calculations for blanket module poloidal height author: J. Morris, CCFE, Culham Science Centre Calculations for blanket module poloidal height for D shaped and elliptical machines

Arguments

None

public subroutine liquid_breeder_properties(ip, ofile)

Calculates the fluid properties of the Liquid Metal Breeder/Coolant in the Blanket BZ Uses middle value of input and output temperatures of Liquid Metal Breeder/Coolant Curently have PbLi but can expand with e.g., Lithium

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: ip

Local variables !!!!!!!!!!!!!!!

Gas constant (J K-1 mol-1)

integer, intent(in) :: ofile

Local variables !!!!!!!!!!!!!!!

Gas constant (J K-1 mol-1)