current_drive_variables.f90 Source File


Contents


Source Code

module current_drive_variables
  !! author: J. Morris (UKAEA)
  !!
  !! Module containing global variables relating to the current drive system
  !!
  !!### References
  !!
  !! -
#ifndef dp
  use, intrinsic :: iso_fortran_env, only: dp=>real64
#endif

  implicit none

  public

  real(dp) :: beamwd
  !! width of neutral beam duct where it passes between the TF coils (m)
  !! T Inoue et al, Design of neutral beam system for ITER-FEAT,
  !! <A HREF=http://dx.doi.org/10.1016/S0920-3796(01)00339-8>
  !! Fusion Engineering and Design, Volumes 56-57, October 2001, Pages 517-521</A>)

  real(dp) :: bigq
  !! Fusion gain; P_fusion / (P_injection + P_ohmic)

  real(dp) :: bootstrap_current_fraction
  !! bootstrap current fraction (enforced; see i_bootstrap_current)

  real(dp) :: bootstrap_current_fraction_max
  !! maximum fraction of plasma current from bootstrap; if `bootstrap_current_fraction_max < 0`,
  !! bootstrap fraction = abs(bootstrap_current_fraction_max)

  real(dp) :: bscf_iter89
  !! bootstrap current fraction, ITER 1989 model

  real(dp) :: bscf_nevins
  !! bootstrap current fraction, Nevins et al model

  real(dp) :: bscf_sauter
  !! bootstrap current fraction, Sauter et al model

  real(dp) :: bscf_wilson
  !! bootstrap current fraction, Wilson et al model

  real(dp) :: bscf_sakai
  !! Bootstrap current fraction, Sakai et al model

  real(dp) :: bscf_aries
  !! Bootstrap current fraction, ARIES model

  real(dp) :: bscf_andrade
  !! Bootstrap current fraction, Andrade et al model

  real(dp) :: bscf_hoang
  !! Bootstrap current fraction, Hoang et al model

  real(dp) :: bscf_wong
  !! Bootstrap current fraction, Wong et al model

  real(dp) :: bscf_gi_I
  !! Bootstrap current fraction, first Gi et al model

  real(dp) :: bscf_gi_II
  !! Bootstrap current fraction, second Gi et al model

  real(dp) :: cboot
  !! bootstrap current fraction multiplier

  real(dp) :: beam_current
  !! neutral beam current (A)

  real(dp) :: diacf_hender
  !! diamagnetic current fraction, Hender fit

  real(dp) :: diacf_scene
  !! diamagnetic current fraction, SCENE fit

  real(dp) :: diamagnetic_current_fraction
  !! diamagnetic current fraction

  real(dp) :: echpwr
  !! ECH power (MW)

  real(dp) :: echwpow
  !! ECH wall plug power (MW)

  real(dp) :: effcd
  !! current drive efficiency (A/W)

  real(dp) :: harnum
  !! cyclotron harmonic frequency number, used in cut-off function

  integer :: wave_mode
  !! Switch for ECRH wave mode :
  !!
  !!  - =0 O-mode
  !!  - =1 X-mode

  real(dp) :: beam_energy
  !! neutral beam energy (keV) (`iteration variable 19`)

  real(dp) :: etacd
  !! auxiliary power wall plug to injector efficiency

  real(dp) :: etacdfix
  !! secondary auxiliary power wall plug to injector efficiency

  real(dp) :: etaech
  !! ECH wall plug to injector efficiency

  real(dp) :: etalh
  !! lower hybrid wall plug to injector efficiency

  real(dp) :: etanbi
  !! neutral beam wall plug to injector efficiency

  real(dp) :: fpion
  !! fraction of beam energy to ions

  real(dp) :: pnbitot
  !! neutral beam power entering vacuum vessel

  real(dp) :: pscf_scene
  !! Pfirsch-Schlüter current fraction, SCENE fit

  real(dp) :: nbshinemw
  !! neutral beam shine-through power

  real(dp) :: feffcd
  !! current drive efficiency fudge factor (`iteration variable 47`)

  real(dp) :: forbitloss
  !! fraction of neutral beam power lost after ionisation but before
  !! thermalisation (orbit loss fraction)

  real(dp) :: frbeam
  !! R_tangential / R_major for neutral beam injection

  real(dp) :: f_tritium_beam
  !! fraction of beam that is tritium

  real(dp) :: gamcd
  !! normalised current drive efficiency (1.0e20 A/(W m^2))

  real(dp) :: gamma_ecrh
  !! User input ECRH gamma (1.0e20 A/(W m^2))

  real(dp) :: xi_ebw
  !! User scaling input for EBW plasma heating. Default 0.43

  integer :: iefrf
  !! Switch for current drive efficiency model:
  !!
  !!  - =1 Fenstermacher Lower Hybrid
  !!  - =2 Ion Cyclotron current drive
  !!  - =3 Fenstermacher ECH
  !!  - =4 Ehst Lower Hybrid
  !!  - =5 ITER Neutral Beam
  !!  - =6 new Culham Lower Hybrid model
  !!  - =7 new Culham ECCD model
  !!  - =8 new Culham Neutral Beam model
  !!  - =9 RFP option removed in PROCESS (issue #508)
  !!  - =10 ECRH user input gamma
  !!  - =11 ECRH "HARE" model (E. Poli, Physics of Plasmas 2019). Removed in #1811.
  !!  - =12 EBW user scaling input. Scaling (S. Freethy)

  integer :: iefrffix
  !! Switch for 2nd current drive efficiency model:
  !!
  !! - =0 No fixed current drive
  !! - =1 Fenstermacher Lower Hybrid
  !! - =2 Ion Cyclotron current drive
  !! - =3 Fenstermacher ECH
  !! - =4 Ehst Lower Hybrid
  !! - =5 ITER Neutral Beam
  !! - =6 new Culham Lower Hybrid model
  !! - =7 new Culham ECCD model
  !! - =8 new Culham Neutral Beam model
  !! - =9 RFP option removed in PROCESS (issue #508)
  !! - =10 ECRH user input gamma
  !! - =11 ECRH "HARE" model (E. Poli, Physics of Plasmas 2019). Removed in #1811.
  !! - =12 EBW user scaling input. Scaling (S. Freethy)

  integer :: irfcd
  !! Switch for current drive calculation:
  !!
  !! - =0 turned off
  !! - =1 turned on

  real(dp) :: nbshinef
  !! neutral beam shine-through fraction

  real(dp) :: nbshield
  !! neutral beam duct shielding thickness (m)

  real(dp) :: pheat
  !! heating power not used for current drive (MW) (`iteration variable 11`)

  real(dp) :: pheatfix
  !! secondary fixed heating power not used for current drive (MW)

  real(dp) :: pinjalw
  !! maximum allowable value for injected power (MW) (`constraint equation 30`)

  real(dp) :: pinjemw
  !! auxiliary injected power to electrons (MW)

  real(dp) :: pinjimw
  !! auxiliary injected power to ions (MW)

  real(dp) :: pinjmw
  !! total auxiliary injected power (MW)

  real(dp)  :: pinjfixmw
  !! secondary total fixed auxiliary injected power (MW)

  real(dp) :: plasma_current_internal_fraction
  !! plasma current fraction driven internally (Bootstrap + Diamagnetic + PS)

  real(dp) :: plhybd
  !! lower hybrid injection power (MW)

  real(dp) :: pnbeam
  !! neutral beam injection power (MW)

  real(dp) :: porbitlossmw
  !! neutral beam power lost after ionisation but before thermalisation (orbit loss power) (MW)

  real(dp) :: ps_current_fraction
  !! Pfirsch-Schlüter current fraction

  real(dp) :: pwplh
  !! lower hybrid wall plug power (MW)

  real(dp) :: pwpnb
  !! neutral beam wall plug power (MW)

  real(dp) :: rtanbeam
  !! neutral beam centreline tangency radius (m)

  real(dp) :: rtanmax
  !! maximum tangency radius for centreline of beam (m)

  real(dp) :: taubeam
  !! neutral beam e-decay lengths to plasma centre

  real(dp) :: tbeamin
  !! permitted neutral beam e-decay lengths to plasma centre

  contains

  subroutine init_current_drive_variables
    !! Initialise module variables
    implicit none

    beamwd = 0.58D0
    bigq = 0.0D0
    bootstrap_current_fraction = 0.0D0
    bootstrap_current_fraction_max = 0.9D0
    bscf_iter89 = 0.0D0
    bscf_nevins = 0.0D0
    bscf_sauter = 0.0D0
    bscf_wilson = 0.0D0
    bscf_sakai = 0.0D0
    bscf_aries = 0.0D0
    bscf_andrade = 0.0D0
    bscf_hoang = 0.0D0
    bscf_wong = 0.0D0
    bscf_gi_I = 0.0D0
    bscf_gi_II = 0.0D0
    cboot = 1.0D0
    beam_current = 0.0D0
    diacf_hender = 0.0D0
    diacf_scene = 0.0D0
    diamagnetic_current_fraction = 0.0D0
    echpwr = 0.0D0
    echwpow = 0.0D0
    effcd = 0.0D0
    harnum = 2.0
    wave_mode = 0
    beam_energy = 1.0D3
    etacd = 0.0D0
    etacdfix = 0.0D0
    etaech = 0.3D0
    etalh = 0.3D0
    etanbi = 0.3D0
    fpion = 0.5D0
    pnbitot = 0.0D0
    pscf_scene = 0.0D0
    nbshinemw = 0.0D0
    feffcd = 1.0D0
    forbitloss = 0.0D0
    frbeam = 1.05D0
    f_tritium_beam = 1.0D-6
    gamcd = 0.0D0
    gamma_ecrh = 0.35D0
    xi_ebw = 0.8D0
    iefrf = 5
    iefrffix = 0
    irfcd = 1
    nbshinef = 0.0D0
    nbshield = 0.5D0
    pheat = 0.0D0
    pheatfix = 0.0D0
    pinjalw = 150.0D0
    pinjemw = 0.0D0
    pinjimw = 0.0D0
    pinjmw = 0.0D0
    pinjfixmw = 0.0D0
    plasma_current_internal_fraction = 0.0D0
    plhybd = 0.0D0
    pnbeam = 0.0D0
    porbitlossmw = 0.0D0
    ps_current_fraction = 0.0D0
    pwplh = 0.0D0
    pwpnb = 0.0D0
    rtanbeam = 0.0D0
    rtanmax = 0.0D0
    taubeam = 0.0D0
    tbeamin = 3.0D0
  end subroutine init_current_drive_variables
end module current_drive_variables