Skip to content
Merged
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
13 changes: 3 additions & 10 deletions process/data_structure/blanket_variables.py
Original file line number Diff line number Diff line change
@@ -1,11 +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


"""Module containing variables for the blanket models

Acronyms for this module:

Expand All @@ -21,8 +14,6 @@
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
"""

from dataclasses import dataclass
Expand All @@ -38,6 +29,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 for the build models"""

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 for the buildings models"""

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 for the CCFE HCPB models"""

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 for the constraints"""

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 for the costs 2015 models"""

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 for the costs models"""

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 for the CS fatigue models"""

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 for the current drive system models"""

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
57 changes: 3 additions & 54 deletions process/data_structure/dcll_variables.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
"""This module contains the Dual Coolant Lead Lithium (DCLL) specific submods of PROCESS.


"""Module containing variables for the Dual Coolant Lead Lithium (DCLL) models

Acronyms for this module:

Expand All @@ -16,64 +14,15 @@
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.
"""

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 for the divertor models"""

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 for the first wall models"""

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 for 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 for 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 for the Inertial Fusion Energy (IFE) models



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 for the impurity radiation models"""

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 for the neoclassical models

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 for 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
6 changes: 3 additions & 3 deletions process/data_structure/pf_power_variables.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
"""
Module containing global variables relating to the PF coil power conversion system
"""
"""Module containing variables for the PF coil power models"""

from dataclasses import dataclass, field

Expand All @@ -9,6 +7,8 @@

@dataclass(slots=True)
class PFPowerData:
"""Dataclass holding PF power variables"""

acptmax: float = 0.0
"""average of currents in PF circuits (kA)"""

Expand Down
Loading
Loading