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: 2 additions & 0 deletions process/data_structure/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Module containing data structure variables"""

from process.data_structure import (
blanket_variables,
build_variables,
Expand Down
29 changes: 3 additions & 26 deletions process/data_structure/blanket_variables.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,4 @@
"""This library contains routines that can be shared by the blanket modules used in PROCESS.

@clmould clmould Aug 3, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Some of the var files had a huge chunk of text copied from their corresponding process/models file (which didn't make a huge amount of sense in the var file, i.e. mentioning functions or acronyms that are not used in the var file) so where I've deleted a large bit of text like this it is still in the code so not losing any info, but it tidies up the files a bit


These include:
- component_volumes
- component_masses
- thermo_hydraulic_model



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 Module 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
"""
"""Module containing variables relating to the blanket routines"""

from dataclasses import dataclass
from enum import IntEnum
Expand All @@ -38,6 +13,8 @@ class BlktModelTypes(IntEnum):

@dataclass(slots=True)
class BlanketData:
"""Dataclass holding blanket variables"""

vol_shld_inboard: float = 0.0
"""Volume of inboard shield (m3)"""

Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/build_variables.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Module containing variables relating to the build routines"""

from dataclasses import dataclass
from enum import IntEnum
from types import DynamicClassAttribute
Expand Down Expand Up @@ -51,6 +53,8 @@ def description(self):

@dataclass(slots=True)
class BuildData:
"""Dataclass holding build variables"""

rminor_min: float = 0.25
"""Minimum allowed minor radius (m)"""

Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/buildings_variables.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Module containing variables relating to the buildings routines"""

from dataclasses import dataclass
from enum import IntEnum

Expand All @@ -13,6 +15,8 @@ class BuildingsModel(IntEnum):

@dataclass(slots=True)
class BuildingsData:
"""Dataclass holding buildings variables"""

admv: float = 1.0e5
"""administration building volume (m3)"""

Expand Down
10 changes: 3 additions & 7 deletions process/data_structure/ccfe_hcpb_variables.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
"""
This module contains the PROCESS CCFE HCPB blanket model
based on CCFE HCPB model from the PROCESS engineering paper
PROCESS Engineering paper (M. Kovari et al.)
### References
- Kovari et al., Fusion Engineering and Design 104 (2016) 9-20
"""
"""Module containing variables relating to the CCFE HCPB routines"""

from dataclasses import dataclass


@dataclass(slots=True)
class CCFEHCPBData:
"""Dataclass holding CCFE HCPB variables"""

armour_density: float = 0.0
"""FW armour density [kg/m3]"""

Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/constraint_variables.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
"""Module containing variables relating to the constraint routines"""

from dataclasses import dataclass


@dataclass(slots=True)
class ConstraintData:
"""Dataclass holding constraint variables"""

p_hcd_injected_min_mw: float = 0.1
"""minimum auxiliary power (MW) (`constraint equation 40`)"""

Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/cost_2015_variables.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
"""Module containing variables relating to the costs 2015 routines"""

from dataclasses import dataclass, field

import numpy as np


@dataclass(slots=True)
class Cost2015Data:
"""Dataclass holding cost 2015 variables"""

mean_electric_output: float = 0.0

annual_electric_output: float = 0.0
Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/cost_variables.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Module containing variables relating to the costs routines"""

from dataclasses import dataclass, field
from enum import IntEnum

Expand All @@ -17,6 +19,8 @@ class CostModels(IntEnum):

@dataclass(slots=True)
class CostData:
"""Dataclass holding cost variables"""

c228: float = 0.0
"""c228 account cost"""

Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/cs_fatigue_variables.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
"""Module containing variables relating to the CS fatigue routines"""

from dataclasses import dataclass


@dataclass(slots=True)
class CSFatigueData:
"""Dataclass holding CS fatigue variables"""

residual_sig_hoop: float = 2.4e8
"""residual hoop stress in structural material (Pa)"""

Expand Down
6 changes: 3 additions & 3 deletions process/data_structure/current_drive_variables.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
"""
Module containing global variables relating to the current drive system
"""
"""Module containing variables relating to the current drive system routines"""

from dataclasses import dataclass


@dataclass(slots=True)
class CurrentDriveData:
"""Dataclass holding current drive variables"""

dx_beam_duct: float = 0.58
"""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,
Expand Down
73 changes: 3 additions & 70 deletions process/data_structure/dcll_variables.py
Original file line number Diff line number Diff line change
@@ -1,79 +1,12 @@
"""This module contains the Dual Coolant Lead Lithium (DCLL) specific submods of PROCESS.



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 Module Segment
IB Inboard
OB Outboard
HCD Heating & Current Drive
FCI Flow Channel Insert

IN.DAT info for DCLL:

Select DCLL model
i_blanket_type = 5 * DCLL

Liquid Metal Breeder Material = PbLi
i_blkt_liquid_breeder_type = 0 * Liquid Metal Breeder Material = PbLi

Specify dual-coolant i.e., get mass flow required from heat extracted from liquid metal breeder
i_blkt_dual_coolant = 2

FIC switch: 0 = no FIC, Eurofer; 1 = FCIs, perfect electrical insulator, 2 = FCIs, with specified conductance
i_blkt_liquid_breeder_channel_type = 0, 1, or 2

Liquid metal duct wall conductance initialized at Eurofer value in fwbs_variables, or can input other value, used for i_blkt_liquid_breeder_channel_type = 0 or 2
(bz_channel_conduct_liq)

Choose if FW and BB structure are on the same pumping system (unless have different coolants), default is same coolant with flow IN->FW->BB->OUT
(i_fw_blkt_shared_coolant)

Can set inlet and outlet temperature for liquid metal breeder
(inlet_temp_liq)
(outlet_temp_liq)

References
----------
[Nat1995] Natesan et al. (1995), Assessment of alkali metal coolants for
for the ITER blanket, Fusion Engineering and Design 27, 457-466

[Mal1995] Malang and Mattas (1995), Comparison of lithium and the eutectic
lead-lithium alloy, two candidate liquid metal breeder materials
for self-cooled blankets, Fusion Engineering and Design 27, 399-406

[Gas2001] Gasior and Mozer (2001), Thermodynamic study of liquid lithium-lead
alloys using the EMF method, Journal of Nuclear Materials, 294, 77-83

[Pal2016] Palermo et al. (2016), Neutronic analyses of the preliminary design
of a DCLL blanket for the EUROfusion DEMO power plant,
Fusion Engineering and Design 109-111.

[Gar2017] Garcinuno et al. (2017), Design of a permeator against vacuum for
tritium extraction from eutectic lithium-lead in a DCLL DEMO,
Fusion Engineering and Design, 117, 226-231

[Fer2021] Fernandez-Berceruelo et al. (2021), Alternatives for upgrading the
eu dcll breeding blanket from mms to sms, Fusion Engineering and
Design 167, 112380


Note: request for when CCFE Bluemira neutronics work is added: output maximum values, as well as average values, for wall neutronics calculation if possible.
"""
"""Module containing variables relating to the Dual Coolant Lead Lithium (DCLL) routines"""

from dataclasses import dataclass


@dataclass(slots=True)
class DCLLData:
"""Dataclass holding DCLL variables"""

r_fci: float = 0.0
"""Radial thickness of FCIs [m]"""

Expand Down
4 changes: 3 additions & 1 deletion process/data_structure/divertor_variables.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Module containing variables relating to the divertor routines"""

from dataclasses import dataclass
from enum import IntEnum

Expand All @@ -17,7 +19,7 @@ class DivertorHeatLoadModel(IntEnum):

@dataclass(slots=True)
class DivertorData:
"""Divertor model dataclass"""
"""Dataclass holding divertor variables"""

anginc: float = 0.262
"""angle of incidence of field line on plate (rad)"""
Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/first_wall_variables.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
"""Module containing variables relating to the first wall routines"""

from dataclasses import dataclass


@dataclass(slots=True)
class FirstWallData:
"""Dataclass holding first wall variables"""

a_fw_total_full_coverage: float = 0.0
"""First wall total surface area with no holes or ports [m^2]"""

Expand Down
9 changes: 3 additions & 6 deletions process/data_structure/fwbs_variables.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
"""
Module containing global variables relating to the first wall, blanket and
shield components
### References
-
"""
"""Module containing variables relating to the first wall, blanket and shield components"""

from dataclasses import dataclass, field


@dataclass(slots=True)
class FWBSData:
"""Dataclass holding first wall, blanket and shield variables"""

life_blkt_fpy: float = 0.0
"""Full power blanket lifetime (years)"""

Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/global_variables.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
"""Module containing variables necessary for running PROCESS"""

from dataclasses import dataclass


@dataclass(slots=True)
class GlobalData:
"""Dataclass holding global variables"""

icase: str = "Steady-state tokamak model"
"""Power plant type"""

Expand Down
7 changes: 3 additions & 4 deletions process/data_structure/heat_transport_variables.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
"""
This module contains global variables relating to the heat transport system
"""Module containing variables relating to the heat transport system
of a fusion power plant, and also those for a hydrogen production plant.
### References
-
"""

from dataclasses import dataclass


@dataclass(slots=True)
class HeatTransportData:
"""Dataclass holding heat transport variables"""

p_plant_electric_base: float = 5.0e6
"""base plant electric load (W)"""

Expand Down
4 changes: 3 additions & 1 deletion process/data_structure/ife_variables.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Module containing global variables relating to the inertial fusion energy model
"""Module containing global variables relating to the Inertial Fusion Energy (IFE) routines



Expand Down Expand Up @@ -31,6 +31,8 @@

@dataclass(slots=True)
class IFEData:
"""Dataclass holding IFE variables"""

bldr: float = 1.0
"""radial thickness of IFE blanket (m; calculated `if ifetyp=4`)"""

Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/impurity_radiation_variables.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Module containing variables relating to the impurity radiation routines"""

from dataclasses import dataclass, field

import numpy as np
Expand All @@ -24,6 +26,8 @@

@dataclass(slots=True)
class ImpurityRadiationData:
"""Dataclass holding impurity radiation variables"""

radius_plasma_core_norm: float = 0.6
"""Normalised radius defining the 'core' region"""

Expand Down
4 changes: 3 additions & 1 deletion process/data_structure/neoclassics_variables.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Module containing neoclassical computations
"""Module containing variables relating to the neoclassical computations

Formulas used are described in:
Beidler (2013), https://doi.org/10.1088/0029-5515/51/7/076001
Expand All @@ -14,6 +14,8 @@

@dataclass(slots=True)
class NeoclassicsData:
"""Dataclass holding neoclassics variables"""

densities: list[float] = field(default_factory=lambda: np.zeros(4))
"""Densities of the species that are considered [/m3]"""

Expand Down
4 changes: 4 additions & 0 deletions process/data_structure/numerics.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Module containing variables relating to the numerics"""

from dataclasses import dataclass, field
from enum import IntEnum
from types import DynamicClassAttribute
Expand Down Expand Up @@ -112,6 +114,8 @@ def description(self):

@dataclass(slots=True)
class NumericsData:
"""Dataclass holding numerics variables"""

ioptimz: int = 1
"""Code operation switch:
* -2 for evaluation mode (i.e. no optimisation)
Expand Down
Loading
Loading