sctfcoil.f90 Source File


Contents

Source Code


Source Code

module sctfcoil_module

!! Module containing superconducting TF coil routines
!! author: P J Knight, CCFE, Culham Science Centre
!! author: J Morris, CCFE, Culham Science Centre
!! author: S Kahn, CCFE, Culham Science Centre
!! N/A
!! This module contains routines for calculating the
!! parameters of a superconducting TF coil system for a
!! fusion power plant.
!! PROCESS Superconducting TF Coil Model, J. Morris, CCFE, 1st May 2014
!
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#ifndef dp
   use, intrinsic :: iso_fortran_env, only: dp=>real64
#endif
   use resistive_materials, only: resistive_material, volume_fractions, &
      supercon_strand
   implicit none

! Module variables
!-----------------

   real(dp) :: tf_fit_t
!! Dimensionless winding pack width

   real(dp) :: tf_fit_z
!! Dimensionless winding pack radial thickness

   real(dp) :: tf_fit_y
!! Ratio of peak field with ripple to nominal axisymmetric peak field

   real(dp) :: tfc_current
!! Current in each TF coil

   real(dp) :: awpc
!! Total cross-sectional area of winding pack including
!! GW insulation and insertion gap [m2]

   real(dp) :: awptf
!! Total cross-sectional area of winding pack without
!! ground insulation and insertion gap [m2]

   real(dp) :: a_tf_steel
!! Inboard coil steel coil cross-sectional area [m2]

   real(dp) :: a_tf_ins
!! Inboard coil insulation cross-section per coil [m2]

   real(dp) :: f_tf_steel
!! Inboard coil steel fraction [-]

   real(dp) :: f_tf_ins
!! Inboard coil insulation fraction [-]

   real(dp) :: h_cp_top
!! Vertical distance from the midplane to the top of the tapered section [m]

   real(dp) :: r_tf_outboard_in
!! Radial position of plasma-facing edge of TF coil outboard leg [m]

   real(dp) :: r_tf_outboard_out
!! Radial position of outer edge of TF coil inboard leg [m]

   real(dp) :: r_wp_inner
!! Radial position of inner edge and centre of winding pack [m]

   real(dp) :: r_wp_outer
!! Radial position of outer edge and centre of winding pack [m]

   real(dp) :: r_wp_centre
!! Radial position of centre and centre of winding pack [m]

   real(dp) :: dr_tf_wp_top
!! Conductor layer radial thickness at centercollumn top [m]
!! Ground insulation layer included, only defined for itart = 1

   real(dp) :: vol_ins_cp
!! CP turn insulation volume [m3]

   real(dp) :: vol_gr_ins_cp
!! CP ground insulation volume [m3]

   real(dp) :: vol_case_cp
!! Volume of the CP outer casing cylinder

   real(dp) :: t_wp_toroidal
!! Minimal toroidal thickness of of winding pack [m]

   real(dp) :: t_wp_toroidal_av
!! Averaged toroidal thickness of of winding pack [m]

   real(dp) :: t_lat_case_av
!! Average lateral casing thickness [m]

   real(dp) :: a_case_front
!! Front casing area [m2]

   real(dp) :: a_case_nose
!! Nose casing area [m2]

   real(dp) :: a_ground_ins
!! Inboard mid-plane cross-section area of the WP ground insulation [m2]

   real(dp) :: a_leg_ins
!! TF ouboard leg turn insulation area per coil [m2]

   real(dp) :: a_leg_gr_ins
!! TF outboard leg ground insulation area per coil [m2]

   real(dp) :: a_leg_cond
!! Exact TF ouboard leg conductor area [m2]

   real(dp) :: theta_coil
!! Half toroidal angular extent of a single TF coil inboard leg

   real(dp) :: tan_theta_coil
!! Tan half toroidal angular extent of a single TF coil inboard leg

   real(dp) :: t_conductor_radial, t_conductor_toroidal
!! Conductor area radial and toroidal dimension (integer turn only) [m]

   real(dp) :: t_cable_radial, t_cable_toroidal
!! Cable area radial and toroidal dimension (integer turn only) [m]

   real(dp) :: t_turn_radial, t_turn_toroidal
!! Turn radial and toroidal dimension (integer turn only) [m]

   real(dp) :: t_cable
!! Cable area averaged dimension (square shape) [m]

   real(dp) :: vforce_inboard_tot
!! Total inboard vertical tension (all coils) [N]

! Vacuum Vessel stress on TF coil quench

   real(dp) :: vv_stress_quench
   !! The Tresca stress experienced by the Vacuum Vessel when the SCTF coil quenches [Pa]


   type(resistive_material), private :: copper
   type(resistive_material), private :: hastelloy
   type(resistive_material), private :: solder
   type(resistive_material), private :: jacket
   type(resistive_material), private :: helium

! croco_strand
   real(dp) :: croco_strand_area
   real(dp) :: croco_strand_critical_current

! conductor
   real(dp) :: conductor_copper_area,  conductor_copper_fraction
   real(dp) :: conductor_copper_bar_area
   real(dp) :: conductor_hastelloy_area, conductor_hastelloy_fraction
   real(dp) :: conductor_helium_area, conductor_helium_fraction
   real(dp) :: conductor_solder_area, conductor_solder_fraction
   real(dp) :: conductor_jacket_area, conductor_jacket_fraction
   real(dp) :: conductor_rebco_area,  conductor_rebco_fraction
   real(dp) :: conductor_critical_current
   real(dp) :: conductor_acs
   real(dp) :: conductor_area
!! Area of cable space inside jacket

   real(dp):: T1, time2, tau2, estotft
! (OBSOLETE, but leave for moment)
! real (kind(1.0D0)) ::croco_quench_factor
! real(dp):: jwdgpro_1, jwdgpro_2,  etamax

! Var in tf_res_heating requiring re-initialisation on each new run
! Not sure what is really doing --> to be checked
   integer :: is_leg_cp_temp_same

contains

   subroutine init_sctfcoil_module
      !! Initialise module variables
      implicit none

      is_leg_cp_temp_same = 0
      tf_fit_t = 0.0D0
      tf_fit_z = 0.0D0
      tf_fit_y = 0.0D0
      tfc_current = 0.0D0
      awpc = 0.0D0
      awptf = 0.0D0
      a_tf_steel = 0.0D0
      a_tf_ins = 0.0D0
      f_tf_steel = 0.0D0
      f_tf_ins = 0.0D0
      h_cp_top = 0.0D0
      r_tf_outboard_in = 0.0D0
      r_tf_outboard_out = 0.0D0
      r_wp_inner = 0.0D0
      r_wp_outer = 0.0D0
      r_wp_centre = 0.0D0
      dr_tf_wp_top = 0.0D0
      vol_ins_cp = 0.0d0
      vol_gr_ins_cp = 0.0D0
      vol_case_cp = 0.0D0
      t_wp_toroidal = 0.0D0
      t_wp_toroidal_av = 0.0D0
      t_lat_case_av = 0.0D0
      a_case_front = 0.0D0
      a_case_nose = 0.0D0
      a_ground_ins = 0.0D0
      a_leg_ins = 0.0D0
      a_leg_gr_ins = 0.0D0
      a_leg_cond = 0.0D0
      theta_coil = 0.0D0
      tan_theta_coil = 0.0D0
      t_conductor_radial = 0.0D0
      t_conductor_toroidal = 0.0D0
      t_cable_radial = 0.0D0
      t_cable_toroidal = 0.0D0
      t_turn_radial = 0.0D0
      t_turn_toroidal = 0.0D0
      t_cable = 0.0D0
      vforce_inboard_tot = 0.0D0
      T1 = 0.0D0
      time2 = 0.0D0
      tau2 = 0.0D0
      estotft = 0.0D0
   end subroutine init_sctfcoil_module

! --------------------------------------------------------------------------
   subroutine initialise_cables()
      use rebco_variables, only: copper_rrr

      implicit none

      copper%rrr = copper_rrr
      copper%density = 8960.0d0
      hastelloy%density = 8890.0d0
      ! Solder: 60EN ie 60%Sn + 40%Pb solder (approx the same as eutectic 63/37)
      solder%density = 8400.0d0
      jacket%density = 8000.0d0       ! 304 stainless
   end subroutine initialise_cables
! --------------------------------------------------------------------------

end module sctfcoil_module