Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion documentation/source/eng-models/fw-blanket.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ landing on the armour. It does not breed tritium. Due to the hostile environment
the first wall and armour have only a short lifetime and therefore need to be
replaced regularly. It is cooled either by gaseous helium or by pressurised
liquid water, depending on the selection of blanket type using the switch
`blkttype`.
`i_blanket_type_stellarator`.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not generic enough. A small sentence to discern between setting the blanket for a tokamak and a stellarator is needed

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we have consistency with whether we're using "blanket" or "blkt" in variable names?
There's another switch i_blkt_coolant_type. I don't mind which we use but I think it should be consistent.


## Wall Load Calculation

Expand Down
12 changes: 7 additions & 5 deletions documentation/source/fusion-devices/stellarator.md
Original file line number Diff line number Diff line change
Expand Up @@ -250,12 +250,14 @@ All items external to the fusion power core (buildings, turbines, power conversi
## Stellarator Blanket

There are two blanket modules implemented in stellarator-PROCESS at the moment,
- `blktmodel = 1`: Calls the KIT HCPB model
- `blktmodel = 0` AND `ipowerflow=1`: Calls a "simple" model (`ipowerflow=0` is even simpler and not advised)
- `i_blanket_type_stellarator = 0` AND `ipowerflow=1`: Calls a "simple" model (`ipowerflow=0` is even simpler and not advised)
- `i_blanket_type_stellarator = 1`: Calls the KIT HCPB model
- `i_blanket_type_stellarator = 2`: WCLL; efficiency taken from WP13-DAS08-T02, EFDA_D_2M97B7
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not rendering as a bullet point list when I look at it

- `i_blanket_type_stellarator = 3`: HCLL; efficiency taken from WP12-DAS08-T01, EFDA_D_2LLNBX and M. Kovari 2016 "PROCESS": A systems code for fusion power plants - Part 2: Engineering https://www.sciencedirect.com/science/article/pii/S0920379616300072 Feedheat & reheat cycle assumed
- `i_blanket_type_stellarator = 4`: HCPB; efficiency taken from WP12-DAS08-T01, EFDA_D_2LLNBX and M. Kovari 2016 "PROCESS": A systems code for fusion power plants - Part 2: Engineering https://www.sciencedirect.com/science/article/pii/S0920379616300072 Feedheat & reheat cycle assumed

The KIT HCPB model is documented elsewhere, for the simple module the following set of input parameters should be provided:
```
blkttype = 0,1,2 (only relevant for mass calculations)
f_p_blkt_multiplication = 1.18 *Energy multiplication in blanket and shield
eta_coolant_pump_electric = 1. *Electrical efficiency of primary coolant pumps
fblbe = 0.47 *Beryllium fraction of blanket by volume (only relevant for mass calculations)
Expand All @@ -270,7 +272,7 @@ p_blkt_coolant_pump_mw = 120. *Blanket coolant mechanical pumping power (MW)
p_fw_coolant_pump_mw = 56. *First wall coolant mechanical pumping power (MW)
p_div_coolant_pump_mw = 24. *Divertor coolant mechanical pumping power (MW)
i_thermal_electric_conversion = 2 *Switch for power conversion cycle (2: user input thermal-electric efficiency)
f_a_blkt_cooling_channels = 0.1 *Coolant void fraction in blanket (blktmodel=0) (only relevant for mass calculations)
f_a_blkt_cooling_channels = 0.1 *Coolant void fraction in blanket (i_blanket_type_stellarator=0) (only relevant for mass calculations)
vfshld = 0.6 *Coolant void fraction in shield
declblkt = 0.075 *Neutron decay length in blanket area (m)
declfw = 0.075 *Neutron decay length in first wall (m)
Expand All @@ -291,7 +293,7 @@ vgap = 0. *Vertical gap between x-point and divertor (m)

The simple stellarator blanket module is largely reduced to calculating masses given on blanket and shield sizes as defined in the input file.
It also calculates neutron heat depositions based on the neutron decay length (this enters the cost function via shield pumping powers e.g.).
Most of the blanket constraints implemented in tokamak PROCESS, namely `icc=52,53,54,55` are not available with `blktmodel = 0` and the KIT HCPB model, `blktmodel = 1` should be used instead.
Most of the blanket constraints implemented in tokamak PROCESS, namely `icc=52,53,54,55` are not available with `i_blanket_type_stellarator = 0` and the KIT HCPB model, `i_blanket_type_stellarator = 1` should be used instead.
Note, that PROCESS also features other blanket models (HCLL, WCLL) and thermohydraulic blanket models but they are not yet available for stellarators.


Expand Down
4 changes: 2 additions & 2 deletions examples/data/large_tokamak_eval_IN.DAT
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ ixc = 6 * nd_plasma_electrons_vol_avg

*-----------------Build Variables------------------*

dr_blkt_inboard = 0.7 * inboard blanket thickness (m); (calculated if `blktmodel>0`) (=0;0 if `i_blkt_inboard=0`)
dr_blkt_outboard = 1.0 * outboard blanket thickness (m); calculated if `blktmodel>0`
dr_blkt_inboard = 0.7 * inboard blanket thickness (m); (calculated if `i_blanket_type_stellarator>0`) (=0;0 if `i_blkt_inboard=0`)
dr_blkt_outboard = 1.0 * outboard blanket thickness (m); calculated if `i_blanket_type_stellarator>0`
dr_bore = 2.003843190236783 * central solenoid inboard radius (m) (`iteration variable 29`)
dr_cryostat = 0.15 * cryostat thickness (m)
dr_vv_inboard = 0.3 * vacuum vessel inboard thickness (TF coil / shield) (m)
Expand Down
5 changes: 3 additions & 2 deletions process/core/input.py
Original file line number Diff line number Diff line change
Expand Up @@ -1801,8 +1801,9 @@ def __post_init__(self):
"zeff_max": InputVariable(
data_structure.constraint_variables, float, range=(1.0, 10.0)
),
"blktmodel": InputVariable(data_structure.fwbs_variables, int, choices=[0, 1]),
"blkttype": InputVariable(data_structure.fwbs_variables, int, choices=[1, 2, 3]),
"i_blanket_type_stellarator": InputVariable(
data_structure.fwbs_variables, int, choices=[0, 1, 2, 3, 4]
),
"breedmat": InputVariable(data_structure.fwbs_variables, int, choices=[1, 2, 3]),
"ccl0_ma": InputVariable(data_structure.pfcoil_variables, float, array=True),
"ccls_ma": InputVariable(data_structure.pfcoil_variables, float, array=True),
Expand Down
2 changes: 1 addition & 1 deletion process/core/solver/constraints.py
Original file line number Diff line number Diff line change
Expand Up @@ -1244,7 +1244,7 @@ def constraint_equation_54(constraint_registration):
"""Equation for peak TF coil nuclear heating upper limit

ptfnucmax: maximum nuclear heating in TF coil (MW/m3)
ptfnucpm3: nuclear heating in the TF coil (MW/m3) (blktmodel>0)
ptfnucpm3: nuclear heating in the TF coil (MW/m3) (i_blanket_type_stellarator>0)
"""
return leq(
data_structure.fwbs_variables.ptfnucpm3,
Expand Down
18 changes: 9 additions & 9 deletions process/data_structure/build_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,35 +28,35 @@


blbmith: float = None
"""inboard blanket box manifold thickness (m) (`blktmodel>0`)"""
"""inboard blanket box manifold thickness (m) (`i_blanket_type_stellarator>0`)"""


blbmoth: float = None
"""outboard blanket box manifold thickness (m) (`blktmodel>0`)"""
"""outboard blanket box manifold thickness (m) (`i_blanket_type_stellarator>0`)"""


blbpith: float = None
"""inboard blanket base plate thickness (m) (`blktmodel>0`)"""
"""inboard blanket base plate thickness (m) (`i_blanket_type_stellarator>0`)"""


blbpoth: float = None
"""outboard blanket base plate thickness (m) (`blktmodel>0`)"""
"""outboard blanket base plate thickness (m) (`i_blanket_type_stellarator>0`)"""


blbuith: float = None
"""inboard blanket breeding zone thickness (m) (`blktmodel>0`) (`iteration variable 90`)"""
"""inboard blanket breeding zone thickness (m) (`i_blanket_type_stellarator>0`) (`iteration variable 90`)"""


blbuoth: float = None
"""outboard blanket breeding zone thickness (m) (`blktmodel>0`) (`iteration variable 91`)"""
"""outboard blanket breeding zone thickness (m) (`i_blanket_type_stellarator>0`) (`iteration variable 91`)"""


dr_blkt_inboard: float = None
"""inboard blanket thickness (m); (calculated if `blktmodel>0`) (=0.0 if `i_blkt_inboard=0`)"""
"""inboard blanket thickness (m); (calculated if `i_blanket_type_stellarator>0`) (=0.0 if `i_blkt_inboard=0`)"""


dr_blkt_outboard: float = None
"""outboard blanket thickness (m); calculated if `blktmodel>0`"""
"""outboard blanket thickness (m); calculated if `i_blanket_type_stellarator>0`"""


dz_blkt_upper: float = None
Expand Down Expand Up @@ -291,7 +291,7 @@


dz_shld_upper: float = None
"""upper/lower shield thickness (m); calculated if `blktmodel > 0` (= dz_shld_lower if double-null)"""
"""upper/lower shield thickness (m); calculated if `i_blanket_type_stellarator > 0` (= dz_shld_lower if double-null)"""


sigallpc: float = None
Expand Down
2 changes: 1 addition & 1 deletion process/data_structure/constraint_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
"""maximum neutral beam shine-through fraction (`constraint equation 59`)"""

nflutfmax: float = None
"""max fast neutron fluence on TF coil (n/m2) (`blktmodel>0`) (`constraint equation 53`)
"""max fast neutron fluence on TF coil (n/m2) (`i_blanket_type_stellarator>0`) (`constraint equation 53`)
Also used for demontable magnets (itart = 1) and superconducting coils (i_tf_sup = 1)
and quench protection
To set the CP lifetime (`constraint equation 85`)
Expand Down
4 changes: 2 additions & 2 deletions process/data_structure/cost_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@
c22128: float = None

abktflnc: float = None
"""allowable first wall/blanket neutron fluence (MW-yr/m2) (`blktmodel=0`)"""
"""allowable first wall/blanket neutron fluence (MW-yr/m2) (`i_blanket_type_stellarator=0`)"""


adivflnc: float = None
Expand Down Expand Up @@ -663,7 +663,7 @@


ucblbreed: float = None
"""unit cost for breeder material ($/kg) (`blktmodel>0`)"""
"""unit cost for breeder material ($/kg) (`i_blanket_type_stellarator>0`)"""


ucblli: float = None
Expand Down
37 changes: 15 additions & 22 deletions process/data_structure/fwbs_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@


dewmkg: float = None
"""total mass of vacuum vessel + cryostat [kg] (calculated if blktmodel>0)"""
"""total mass of vacuum vessel + cryostat [kg] (calculated if i_blanket_type_stellarator>0)"""


f_p_blkt_multiplication: float = None
Expand Down Expand Up @@ -357,7 +357,7 @@


i_blkt_coolant_type: int = None
"""Switch for blanket coolant (set via blkttype):
"""Switch for blanket coolant:
- =1 helium
- =2 pressurized water
"""
Expand Down Expand Up @@ -499,7 +499,7 @@


ptfnucpm3: float = None
"""nuclear heating in the TF coil (MW/m3) (`blktmodel>0`)"""
"""nuclear heating in the TF coil (MW/m3) (`i_blanket_type_stellarator>0`)"""


r_cryostat_inboard: float = None
Expand Down Expand Up @@ -613,10 +613,19 @@
"""coolant void fraction in blanket."""


blktmodel: int = None
i_blanket_type_stellarator: int = None
"""switch for blanket/tritium breeding model (see i_blanket_type):
- =0 original simple model
- =1 KIT model based on a helium-cooled pebble-bed blanket (HCPB) reference design
- =2 WCLL; efficiency taken from WP13-DAS08-T02, EFDA_D_2M97B7
- =3 HCLL; efficiency taken from WP12-DAS08-T01, EFDA_D_2LLNBX and M. Kovari 2016
"PROCESS": A systems code for fusion power plants - Part 2: Engineering
https://www.sciencedirect.com/science/article/pii/S0920379616300072
Feedheat & reheat cycle assumed
- =4 HCPB; efficiency taken from WP12-DAS08-T01, EFDA_D_2LLNBX and M. Kovari 2016
"PROCESS": A systems code for fusion power plants - Part 2: Engineering
https://www.sciencedirect.com/science/article/pii/S0920379616300072
Feedheat & reheat cycle assumed
"""


Expand All @@ -632,20 +641,6 @@
"""neutron power deposition decay length of shield structural material [m] (stellarators only)"""


blkttype: int = None
"""Switch for blanket type:
- =1 WCLL;
- =2 HCLL; efficiency taken from M. Kovari 2016
"PROCESS": A systems code for fusion power plants - Part 2: Engineering
https://www.sciencedirect.com/science/article/pii/S0920379616300072
Feedheat & reheat cycle assumed
- =3 HCPB; efficiency taken from M. Kovari 2016
"PROCESS": A systems code for fusion power plants - Part 2: Engineering
https://www.sciencedirect.com/science/article/pii/S0920379616300072
Feedheat & reheat cycle assumed
"""


etaiso: float = None
"""isentropic efficiency of FW and blanket coolant pumps"""

Expand Down Expand Up @@ -1049,11 +1044,10 @@ def init_fwbs_variables():
m_blkt_vanadium, \
m_blkt_lithium, \
f_a_blkt_cooling_channels, \
blktmodel, \
i_blanket_type_stellarator, \
declblkt, \
declfw, \
declshld, \
blkttype, \
etaiso, \
eta_coolant_pump_electric, \
i_fw_blkt_shared_coolant, \
Expand Down Expand Up @@ -1245,11 +1239,10 @@ def init_fwbs_variables():
m_blkt_vanadium = 0.0
m_blkt_lithium = 0.0
f_a_blkt_cooling_channels = 0.25
blktmodel = 0
i_blanket_type_stellarator = 0
declblkt = 0.075
declfw = 0.075
declshld = 0.075
blkttype = 3
etaiso = 0.85
eta_coolant_pump_electric = 0.95
pnuc_cp = 0.0
Expand Down
2 changes: 1 addition & 1 deletion process/data_structure/scan_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
<LI> 24 p_fusion_total_max_mw
<LI> 25 kappa
<LI> 26 triang
<LI> 27 tbrmin (for blktmodel > 0 only)
<LI> 27 tbrmin (for i_blanket_type_stellarator > 0 only)
<LI> 28 b_plasma_toroidal_on_axis
<LI> 29 radius_plasma_core_norm
<LI> 30 fimpvar # OBSOLETE
Expand Down
4 changes: 2 additions & 2 deletions process/models/availability.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def avail(self, output: bool):
dpa_fpy = f_scale * ref_dpa_fpy

# First wall / blanket lifetime (years)
# TODO MDK Do this calculation whatever the value of blktmodel (whatever that is)
# TODO MDK Do this calculation whatever the value of i_blanket_type_stellarator (whatever that is)
# For some reason life_fw_fpy is not always calculated, so ignore it if it is still zero.
if fwbsv.life_fw_fpy < 0.0001e0:
# Calculate blanket lifetime using neutron fluence model (ibkt_life=0)
Expand Down Expand Up @@ -220,7 +220,7 @@ def avail(self, output: bool):
# Output section
if output:
po.oheadr(self.outfile, "Plant Availability")
if fwbsv.blktmodel == 0:
if fwbsv.i_blanket_type_stellarator == 0:
po.ovarre(
self.outfile,
"Allowable blanket neutron fluence (MW-yr/m2)",
Expand Down
2 changes: 1 addition & 1 deletion process/models/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -1690,7 +1690,7 @@ def calculate_radial_build(self, output: bool):
Flag indicating whether to output the results
"""

if fwbs_variables.blktmodel > 0:
if fwbs_variables.i_blanket_type_stellarator > 0:
build_variables.dr_blkt_inboard = (
build_variables.blbuith
+ build_variables.blbmith
Expand Down
2 changes: 1 addition & 1 deletion process/models/costs/costs.py
Original file line number Diff line number Diff line change
Expand Up @@ -2260,7 +2260,7 @@ def acc2261(self):
exphts = 0.7e0

# Pumps and piping system
# N.B. with blktmodel > 0, the blanket is assumed to be helium-cooled,
# N.B. with i_blanket_type_stellarator > 0, the blanket is assumed to be helium-cooled,
# but the shield etc. is water-cooled (i_blkt_coolant_type=2). Therefore, a slight
# inconsistency exists here...
cost_variables.cpp = (
Expand Down
2 changes: 1 addition & 1 deletion process/models/stellarator/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def st_build(stellarator, f_output: bool):


"""
if fwbs_variables.blktmodel > 0:
if fwbs_variables.i_blanket_type_stellarator > 0:
build_variables.dr_blkt_inboard = (
build_variables.blbuith + build_variables.blbmith + build_variables.blbpith
)
Expand Down
Loading
Loading