module cost_variables !! author: J. Morris, S. Muldrew, M. Kovari (UKAEA) !! !! Module containing global variables relating to the costing algorithms of a fusion power plant. !! !!### References !! !! - #ifndef dp use, intrinsic :: iso_fortran_env, only: dp=>real64 #endif implicit none public real(dp) :: abktflnc !! allowable first wall/blanket neutron fluence (MW-yr/m2) (`blktmodel=0`) real(dp) :: adivflnc !! allowable divertor heat fluence (MW-yr/m2) real(dp) :: blkcst !! blanket direct cost (M$) real(dp) :: c221 !! total account 221 cost (M$) - first wall, blanket, shield, support structure and div plates real(dp) :: c222 !! total account 222 cost (M$) - TF coils + PF coils real(dp) :: capcost !! total capital cost including interest (M$) real(dp) :: cconfix !! fixed cost of superconducting cable ($/m) real(dp) :: cconshpf !! cost of PF coil steel conduit/sheath ($/m) real(dp) :: cconshtf !! cost of TF coil steel conduit/sheath ($/m) real(dp) :: cdcost !! current drive direct costs (M$) real(dp) :: cdirt !! total plant direct cost (M$) real(dp) :: cdrlife !! Full power year lifetime of heating/current drive system (y) real(dp) :: cdrlife_cal !! Calendar year lifetime of heating/current drive system (y) real(dp) :: cfactr !! Total plant availability fraction; input if `iavail=0` real(dp) :: cpfact !! Total plant capacity factor real(dp), dimension(4) :: cfind !! indirect cost factor (func of lsa) (cost model = 0) real(dp) :: cland !! cost of land (M$) real(dp) :: coe !! cost of electricity ($/MW-hr) real(dp) :: coecap !! capital cost of electricity (m$/kW-hr) real(dp) :: coefuelt !! 'fuel' (including replaceable components) contribution to cost of electricity (m$/kW-hr) real(dp) :: coeoam !! operation and maintenance contribution to cost of electricity (m$/kW-hr) real(dp) :: concost !! plant construction cost (M$) real(dp) :: costexp !! cost exponent for scaling in 2015 costs model real(dp) :: costexp_pebbles !! cost exponent for pebbles in 2015 costs model real(dp) :: cost_factor_buildings !! cost scaling factor for buildings real(dp) :: cost_factor_land !! cost scaling factor for land real(dp) :: cost_factor_tf_coils !! cost scaling factor for TF coils real(dp) :: cost_factor_fwbs !! cost scaling factor for fwbs real(dp) :: cost_factor_rh !! cost scaling factor for remote handling real(dp) :: cost_factor_vv !! cost scaling factor for vacuum vessel real(dp) :: cost_factor_bop !! cost scaling factor for energy conversion system real(dp) :: cost_factor_misc !! cost scaling factor for remaining subsystems real(dp) :: maintenance_fwbs !! Maintenance cost factor: first wall, blanket, shield, divertor real(dp) :: maintenance_gen !! Maintenance cost factor: All other components except coils, vacuum vessel, !! thermal shield, cryostat, land real(dp) :: amortization !! amortization factor (fixed charge factor) "A" (years) integer :: cost_model !! Switch for cost model: !! !! - =0 use $ 1990 PROCESS model !! - =1 use $ 2014 Kovari model !! - =2 use user-provided model integer :: i_cp_lifetime !! Switch for the centrepost lifetime constraint !! 0 : The CP full power year lifetime is set by the user via cplife_input !! 1 : The CP lifetime is equal to the divertor lifetime !! 2 : The CP lifetime is equal to the breeding blankets lifetime !! 3 : The CP lifetime is equal to the plant lifetime real(dp) :: cowner !! owner cost factor real(dp) :: cplife_input !! User input full power year lifetime of the centrepost (years) (i_cp_lifetime = 0) real(dp) :: cplife !! Calculated full power year lifetime of centrepost (years) real(dp) :: cplife_cal !! Calculated calendar year lifetime of centrepost (years) real(dp) :: cpstcst !! ST centrepost direct cost (M$) real(dp) :: cpstflnc !! allowable ST centrepost neutron fluence (MW-yr/m2) real(dp) :: crctcore !! reactor core costs (categories 221, 222 and 223) real(dp) :: csi !! allowance for site costs (M$) real(dp) :: cturbb !! cost of turbine building (M$) real(dp) :: decomf !! proportion of constructed cost required for decommissioning fund real(dp) :: dintrt !! diff between borrowing and saving interest rates real(dp) :: divcst !! divertor direct cost (M$) real(dp) :: divlife !! Full power lifetime of divertor (y) real(dp) :: divlife_cal !! Calendar year lifetime of divertor (y) real(dp) :: dtlife !! period prior to the end of the plant life that the decommissioning fund is used (years) real(dp) :: fcap0 !! average cost of money for construction of plant assuming design/construction time of six years real(dp) :: fcap0cp !! average cost of money for replaceable components assuming lead time for these of two years real(dp) :: fcdfuel !! fraction of current drive cost treated as fuel (if `ifueltyp = 1`) real(dp) :: fcontng !! project contingency factor real(dp) :: fcr0 !! fixed charge rate during construction real(dp) :: fkind !! multiplier for Nth of a kind costs real(dp) :: fwallcst !! first wall cost (M$) integer :: iavail !! Switch for plant availability model: !! !! - =0 use input value for cfactr !! - =1 calculate cfactr using Taylor and Ward 1999 model !! - =2 calculate cfactr using new (2015) model !! - =3 calculate cfactr using ST model integer :: ibkt_life !! Switch for fw/blanket lifetime calculation in availability module: !! !! - =0 use neutron fluence model !! - =1 use fusion power model (DEMO only) real(dp) :: life_dpa !! Allowable DPA from DEMO fw/blanket lifetime calculation in availability module real(dp) :: bktcycles !! Number of fusion cycles to reach allowable DPA from DEMO fw/blanket lifetime calculation real(dp) :: avail_min !! Minimum availability (`constraint equation 61`) real(dp) :: tok_build_cost_per_vol !! Unit cost for tokamak complex buildings, including building and site services ($/m3) real(dp) :: light_build_cost_per_vol !! Unit cost for unshielded non-active buildings ($/m3) real(dp) :: favail !! F-value for minimum availability (`constraint equation 61`) integer :: num_rh_systems !! Number of remote handling systems (1-10) real(dp) :: conf_mag !! c parameter, which determines the temperature margin at which magnet lifetime starts to decline real(dp) :: div_prob_fail !! Divertor probability of failure (per op day) real(dp) :: div_umain_time !! Divertor unplanned maintenance time (years) real(dp) :: div_nref !! Reference value for cycle cycle life of divertor real(dp) :: div_nu !! The cycle when the divertor fails with 100% probability real(dp) :: fwbs_nref !! Reference value for cycle life of blanket real(dp) :: fwbs_nu !! The cycle when the blanket fails with 100% probability real(dp) :: fwbs_prob_fail !! Fwbs probability of failure (per op day) real(dp) :: fwbs_umain_time !! Fwbs unplanned maintenance time (years) real(dp) :: redun_vacp !! Vacuum system pump redundancy level (%) integer :: redun_vac !! Number of redundant vacuum pumps real(dp) :: t_operation !! Operational time (yrs) real(dp) :: tbktrepl !! time taken to replace blanket (y) (`iavail=1`) real(dp) :: tcomrepl !! time taken to replace both blanket and divertor (y) (`iavail=1`) real(dp) :: tdivrepl !! time taken to replace divertor (y) (`iavail=1`) real(dp) :: uubop !! unplanned unavailability factor for balance of plant (`iavail=1`) real(dp) :: uucd !! unplanned unavailability factor for current drive (`iavail=1`) real(dp) :: uudiv !! unplanned unavailability factor for divertor (`iavail=1`) real(dp) :: uufuel !! unplanned unavailability factor for fuel system (`iavail=1`) real(dp) :: uufw !! unplanned unavailability factor for first wall (`iavail=1`) real(dp) :: uumag !! unplanned unavailability factor for magnets (`iavail=1`) real(dp) :: uuves !! unplanned unavailability factor for vessel (`iavail=1`) integer :: ifueltyp !! Switch for fuel type: !! !! - =2 treat initial blanket, divertor, first wall !! as capital costs. Treat all later items and !! fraction fcdfuel of CD equipment as fuel costs !! - =1 treat blanket divertor, first wall and !! fraction fcdfuel of CD equipment as fuel cost !! - =0 treat these as capital cost integer :: ipnet !! Switch for net electric power calculation: !! !! - =0 scale so that always > 0 !! - =1 let go < 0 (no c-o-e) integer :: ireactor !! Switch for net electric power and cost of electricity calculations: !! !! - =0 do not calculate MW(electric) or c-o-e !! - =1 calculate MW(electric) and c-o-e integer :: lsa !! Level of safety assurance switch (generally, use 3 or 4): !! !! - =1 truly passively safe plant !! - =2,3 in-between !! - =4 like current fission plant real(dp) :: moneyint !! interest portion of capital cost (M$) integer :: output_costs !! Switch for costs output: !! !! - =0 do not write cost-related outputs to file !! - =1 write cost-related outputs to file real(dp) :: discount_rate !! effective cost of money in constant dollars real(dp) :: startupratio !! ratio of additional HCD power for start-up to flat-top operational requirements real(dp) :: startuppwr !! cost associated with additional HCD system power required on start-up ($) integer :: supercond_cost_model !! Switch for superconductor cost model: !! !! - =0 use $/kg !! - =1 use $/kAm real(dp) :: tlife !! Full power year plant lifetime (years) real(dp) :: tmain !! Maintenance time for replacing CP (years) (iavail = 3) real(dp) :: u_unplanned_cp !! User-input CP unplanned unavailability (iavail = 3) real(dp), parameter :: ucad = 180.0D0 !! unit cost for administration buildings (M$/m3) real(dp), parameter :: ucaf = 1.5D6 !! unit cost for aux facility power equipment ($) real(dp), parameter :: ucahts = 31.0D0 !! unit cost for aux heat transport equipment ($/W**exphts) real(dp), parameter :: ucap = 17.0D0 !! unit cost of auxiliary transformer ($/kVA) real(dp) :: ucblbe !! unit cost for blanket beryllium ($/kg) real(dp) :: ucblbreed !! unit cost for breeder material ($/kg) (`blktmodel>0`) real(dp) :: ucblli !! unit cost for blanket lithium ($/kg) (30% Li6) real(dp) :: ucblli2o !! unit cost for blanket Li_2O ($/kg) real(dp) :: ucbllipb !! unit cost for blanket Li-Pb ($/kg) (30% Li6) real(dp) :: ucblss !! unit cost for blanket stainless steel ($/kg) real(dp) :: ucblvd !! unit cost for blanket vanadium ($/kg) real(dp), parameter :: ucbpmp = 2.925D5 !! vacuum system backing pump cost ($) real(dp) :: ucbus !! cost of aluminium bus for TF coil ($/A-m) real(dp) :: uccase !! cost of superconductor case ($/kg) real(dp), parameter :: ucco = 350.0D0 !! unit cost for control buildings (M$/m3) real(dp) :: uccpcl1 !! cost of high strength tapered copper ($/kg) real(dp) :: uccpclb !! cost of TF outboard leg plate coils ($/kg) real(dp), parameter :: uccpmp = 3.9D5 !! vacuum system cryopump cost ($) real(dp), parameter :: uccr = 460.0D0 !! unit cost for cryogenic building (M$/vol) real(dp) :: uccry !! heat transport system cryoplant costs ($/W**expcry) real(dp) :: uccryo !! unit cost for vacuum vessel ($/kg) real(dp) :: uccu !! unit cost for copper in superconducting cable ($/kg) real(dp), parameter :: ucdgen = 1.7D6 !! cost per 8 MW diesel generator ($) real(dp) :: ucdiv !! cost of divertor blade ($) real(dp), parameter :: ucdtc = 13.0D0 !! detritiation, air cleanup cost ($/10000m3/hr) real(dp), parameter :: ucduct = 4.225D4 !! vacuum system duct cost ($/m) real(dp) :: ucech !! ECH system cost ($/W) real(dp), parameter :: ucel = 380.0D0 !! unit cost for electrical equipment building (M$/m3) real(dp), parameter :: uces1 = 3.2D4 !! MGF (motor-generator flywheel) cost factor ($/MVA**0.8) real(dp), parameter :: uces2 = 8.8D3 !! MGF (motor-generator flywheel) cost factor ($/MJ**0.8) real(dp) :: ucf1 !! cost of fuelling system ($) real(dp) :: ucfnc !! outer PF coil fence support cost ($/kg) real(dp), parameter :: ucfpr = 4.4D7 !! cost of 60g/day tritium processing unit ($) real(dp) :: ucfuel !! unit cost of D-T fuel (M$/year/1200MW) real(dp), parameter :: ucfwa = 6.0D4 !! first wall armour cost ($/m2) real(dp), parameter :: ucfwps = 1.0D7 !! first wall passive stabiliser cost ($) real(dp), parameter :: ucfws = 5.3D4 !! first wall structure cost ($/m2) real(dp), parameter :: ucgss = 35.0D0 !! cost of reactor structure ($/kg) real(dp) :: uche3 !! cost of helium-3 ($/kg) real(dp) :: uchrs !! cost of heat rejection system ($) real(dp), dimension(2) :: uchts !! cost of heat transport system equipment per loop ($/W); dependent on coolant type (coolwh) real(dp) :: uciac !! cost of instrumentation, control & diagnostics ($) real(dp) :: ucich !! ICH system cost ($/W) real(dp), parameter :: ucint = 35.0D0 !! superconductor intercoil structure cost ($/kg) real(dp) :: uclh !! lower hybrid system cost ($/W) real(dp), parameter :: uclv = 16.0D0 !! low voltage system cost ($/kVA) real(dp), parameter :: ucmb = 260.0D0 !! unit cost for reactor maintenance building (M$/m3) real(dp) :: ucme !! cost of maintenance equipment ($) real(dp) :: ucmisc !! miscellaneous plant allowance ($) real(dp) :: ucnbi !! NBI system cost ($/W) real(dp), parameter :: ucnbv = 1000.0D0 !! cost of nuclear building ventilation ($/m3) real(dp), dimension(4) :: ucoam !! annual cost of operation and maintenance (M$/year/1200MW**0.5) real(dp) :: ucpens !! penetration shield cost ($/kg) real(dp) :: ucpfb !! cost of PF coil buses ($/kA-m) real(dp) :: ucpfbk !! cost of PF coil DC breakers ($/MVA**0.7) real(dp) :: ucpfbs !! cost of PF burn power supplies ($/kW**0.7) real(dp) :: ucpfcb !! cost of PF coil AC breakers ($/circuit) real(dp) :: ucpfdr1 !! cost factor for dump resistors ($/MJ) real(dp) :: ucpfic !! cost of PF instrumentation and control ($/channel) real(dp) :: ucpfps !! cost of PF coil pulsed power supplies ($/MVA) real(dp), parameter :: ucphx = 15.0D0 !! primary heat transport cost ($/W**exphts) real(dp), parameter :: ucpp = 48.0D0 !! cost of primary power transformers ($/kVA**0.9) real(dp) :: ucrb !! cost of reactor building (M$/m3) real(dp), dimension(9) :: ucsc !! cost of superconductor ($/kg) real(dp), dimension(9) :: sc_mat_cost_0 !!cost of superconductor ($/kA m) at 6.4 T, 4.2 K real(dp), parameter :: ucsh = 115.0D0 !! cost of shops and warehouses (M$/m3) real(dp) :: ucshld !! cost of shield structural steel ($/kg) real(dp), parameter :: ucswyd = 1.84D7 !! switchyard equipment costs ($) real(dp) :: uctfbr !! cost of TF coil breakers ($/W**0.7) real(dp) :: uctfbus !! cost of TF coil bus ($/kg) real(dp), parameter :: uctfdr = 1.75D-4 !! cost of TF coil dump resistors ($/J) real(dp), parameter :: uctfgr = 5000.0D0 !! additional cost of TF coil dump resistors ($/coil) real(dp), parameter :: uctfic = 1.0D4 !! cost of TF coil instrumentation and control ($/coil/30) real(dp) :: uctfps !! cost of TF coil power supplies ($/W**0.7) real(dp) :: uctfsw !! cost of TF coil slow dump switches ($/A) real(dp), parameter :: uctpmp = 1.105D5 !! cost of turbomolecular pump ($) real(dp), parameter :: uctr = 370.0D0 !! cost of tritium building ($/m3) real(dp), dimension(2) :: ucturb !! cost of turbine plant equipment ($) (dependent on coolant type coolwh) real(dp), parameter :: ucvalv = 3.9D5 !! vacuum system valve cost ($) real(dp), parameter :: ucvdsh = 26.0D0 !! vacuum duct shield cost ($/kg) real(dp), parameter :: ucviac = 1.3D6 !! vacuum system instrumentation and control cost ($) real(dp) :: ucwindpf !! cost of PF coil superconductor windings ($/m) real(dp) :: ucwindtf !! cost of TF coil superconductor windings ($/m) real(dp), parameter :: ucws = 460.0D0 !! cost of active assembly shop ($/m3) real(dp), dimension(4) :: ucwst !! cost of waste disposal (M$/y/1200MW) contains subroutine init_cost_variables !! Initialise cost variables implicit none abktflnc = 5.0D0 adivflnc = 7.0D0 blkcst = 0.0D0 c221 = 0.0D0 c222 = 0.0D0 capcost = 0.0D0 cconfix = 80.0D0 cconshpf = 70.0D0 cconshtf = 75.0D0 cdcost = 0.0D0 cdirt = 0.0D0 cdrlife = 0.0D0 cdrlife_cal = 0.0D0 cfactr = 0.75D0 cpfact = 0.0D0 cfind = (/0.244D0, 0.244D0, 0.244D0, 0.29D0/) cland = 19.2D0 coe = 0.0D0 coecap = 0.0D0 coefuelt = 0.0D0 coeoam = 0.0D0 concost = 0.0D0 costexp = 0.8D0 costexp_pebbles = 0.6D0 cost_factor_buildings = 1.0D0 cost_factor_land = 1.0D0 cost_factor_tf_coils = 1.0D0 cost_factor_fwbs = 1.0D0 cost_factor_rh = 1.0D0 cost_factor_vv = 1.0D0 cost_factor_bop = 1.0D0 cost_factor_misc = 1.0D0 maintenance_fwbs = 0.2D0 maintenance_gen = 0.05D0 amortization = 13.6D0 cost_model = 1 cowner = 0.15D0 cplife = 0.0D0 cplife_cal = 0.0D0 cpstcst = 0.0D0 cpstflnc = 10.0D0 crctcore = 0.0D0 csi = 16.0D0 cturbb = 38.0D0 decomf = 0.1D0 dintrt = 0.0D0 divcst = 0.0D0 divlife = 0.0D0 divlife_cal = 0.0D0 dtlife = 0.0D0 fcap0 = 1.165D0 fcap0cp = 1.08D0 fcdfuel = 0.1D0 fcontng = 0.195D0 fcr0 = 0.0966D0 fkind = 1.0D0 fwallcst = 0.0D0 iavail= 2 ibkt_life = 0 life_dpa = 50 bktcycles = 1.0D3 avail_min = 0.75D0 tok_build_cost_per_vol = 1283.0D0 light_build_cost_per_vol = 270.0D0 favail = 1.0D0 num_rh_systems = 4 conf_mag = 0.99D0 div_prob_fail = 0.0002D0 div_umain_time = 0.25D0 div_nref = 7000.0D0 div_nu = 14000.0D0 fwbs_nref = 20000.0D0 fwbs_nu = 40000.0D0 fwbs_prob_fail = 0.0002D0 fwbs_umain_time = 0.25D0 redun_vacp = 25.0D0 redun_vac = 0 t_operation = 0.0D0 tbktrepl = 0.5D0 tcomrepl = 0.5D0 tdivrepl = 0.25D0 uubop = 0.02D0 uucd = 0.02D0 uudiv = 0.04D0 uufuel = 0.02D0 uufw = 0.04D0 uumag = 0.02D0 uuves = 0.04D0 ifueltyp = 0 ipnet = 0 ireactor = 1 lsa = 4 moneyint = 0.0D0 output_costs = 1 discount_rate = 0.0435D0 startupratio = 1.0 startuppwr = 0.0 tlife = 30.0D0 ucblbe = 260.0D0 ucblbreed = 875.0D0 ucblli = 875.0D0 ucblli2o = 600.0D0 ucbllipb = 10.3D0 ucblss = 90.0D0 ucblvd = 200.0D0 ucbus = 0.123D0 uccase = 50.0D0 uccpcl1 = 250.0D0 uccpclb = 150.0D0 uccry = 9.3D4 uccryo = 32.0D0 uccu = 75.0D0 ucdiv = 2.8D5 ucech = 3.0D0 ucf1 = 2.23D7 ucfnc = 35.0D0 ucfuel = 3.45D0 uche3 = 1.0D6 uchrs = 87.9D6 uchts = (/15.3D0, 19.1D0/) uciac = 1.5D8 ucich = 3.0D0 uclh = 3.3D0 ucme = 1.25D8 ucmisc = 2.5D7 ucnbi = 3.3D0 ucoam = (/68.8D0, 68.8D0, 68.8D0, 74.4D0/) ucpens = 32.0D0 ucpfb = 210.0D0 ucpfbk = 1.66D4 ucpfbs = 4.9D3 ucpfcb = 7.5D4 ucpfdr1 = 150.0D0 ucpfic = 1.0D4 ucpfps = 3.5D4 ucrb = 400.0D0 ucsc = & (/600.0D0, 600.0D0, 300.0D0, 600.0D0, 600.0D0, 600.0D0, 300.0D0, 1200.0D0, & 1200.0D0/) sc_mat_cost_0 = & (/4.8D0, 2.0D0, 1.0D0, 4.8D0, 4.8D0, 47.4D0, 1.0D0, 47.4D0, 47.4D0/) supercond_cost_model = 0 ucshld = 32.0D0 uctfbr = 1.22D0 uctfbus = 100.0D0 uctfps = 24.0D0 uctfsw = 1.0D0 ucturb = (/230.0D6, 245.0D6/) ucwindpf = 465.0D0 ucwindtf = 480.0D0 ucwst = (/0.0D0, 3.94D0, 5.91D0, 7.88D0/) u_unplanned_cp = 0.0 i_cp_lifetime = 0 cplife_input = 2.0D0 end subroutine init_cost_variables end module cost_variables