Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
5a0fece
🔄 Rename `bldgs_sizes` to `calculate_building_sizes_chapman`
chris-ashe Mar 24, 2026
cec4366
🔄 Refactor building size calculation method to `calculate_building_si…
chris-ashe Mar 24, 2026
c4c2b6c
Add BuildingsModel enum and update building size calculation logic fo…
chris-ashe Mar 24, 2026
cd2f957
Fix BuildingsModel enum values and update building size calculation r…
chris-ashe Mar 24, 2026
638bba7
🔄 Rename `wsvol` to `vol_plant_warm_shop_building` and update referen…
chris-ashe Mar 24, 2026
f6eea19
🔄 Rename `rmbvol` to `vol_plant_maintenance_assembly_building` and up…
chris-ashe Mar 24, 2026
ba43095
🔄 Rename `elevol` to `vol_plant_electrical_building` and update refer…
chris-ashe Mar 24, 2026
c7d50b5
🔄 Rename `rbvol` to `vol_plant_reactor_building` and update reference…
chris-ashe Mar 24, 2026
1807876
🔄 Rename `volrci` to `vol_plant_reactor_building_internal` and update…
chris-ashe Mar 24, 2026
e4dc10a
🔄 Rename `cryvol` to `vol_plant_cryoplant_building` and update refere…
chris-ashe Mar 24, 2026
f78b733
🔄 Rename `rbwt` to `dx_plant_reactor_building_wall` and update refere…
chris-ashe Mar 24, 2026
5bf9337
🔄 Rename `rbrt` to `dz_plant_reactor_building_roof` and update refere…
chris-ashe Mar 24, 2026
a4a1225
🔄 Rename `tfcbv` to `vol_plant_tf_power_supplies_building` and update…
chris-ashe Mar 24, 2026
1949c1f
🔄 Refactor buildings and power models to improve variable usage and r…
chris-ashe Mar 24, 2026
0ad01c8
🔄 Add `dr_tf_full_midplane` variable to represent full radial thickne…
chris-ashe Mar 24, 2026
9aab25d
Update TF coil calculations to use `dr_tf_full_midplane` for improved…
chris-ashe Mar 24, 2026
aa97174
🔄 Add `dr_tf_internal_midplane` variable and update documentation for…
chris-ashe Mar 24, 2026
4674d2a
Update TF coil calculations to use `dr_tf_internal_midplane` for inte…
chris-ashe Mar 24, 2026
b26e1d2
🔄 Update building size calculations to use new model methods and impr…
chris-ashe Mar 25, 2026
57c5bab
:bug: Temporarily revert logic to allow proper regression testing
chris-ashe Mar 25, 2026
7d4428c
🔄 Refactor TF coil calculations to improve variable naming and enhanc…
chris-ashe Mar 25, 2026
b6e1f9b
🔄 Refactor building size calculations to improve variable naming and …
chris-ashe Mar 25, 2026
f01c77c
🔄 Rename transportation clearance variable to improve clarity and con…
chris-ashe Mar 25, 2026
2534ac5
🔄 Rename distance variable for building wall to improve clarity and c…
chris-ashe Mar 25, 2026
8b426fc
🔄 Rename reactor building crane capacity variable for clarity and con…
chris-ashe Mar 25, 2026
754558e
🔄 Rename tritium building volume variable to improve clarity and cons…
chris-ashe Mar 25, 2026
f3ec162
🔄 Rename nuclear building volume variable for clarity and consistency…
chris-ashe Mar 25, 2026
d4184f2
Refactor variable names for clarity and consistency in buildings and …
chris-ashe Mar 25, 2026
0f50bbe
🔄 Add internal height variable for reactor building and implement rea…
chris-ashe Apr 1, 2026
799a48e
Refactor building volume calculations and improve output reporting fo…
chris-ashe Apr 8, 2026
45dff08
Rename 'admv' to 'vol_plant_administration_building' for clarity and …
chris-ashe Apr 8, 2026
aa78196
Rename 'conv' to 'vol_plant_control_building' for clarity and consist…
chris-ashe Apr 8, 2026
8d85c19
Rename 'shov' to 'vol_plant_shops_warehouse_buildings' for clarity an…
chris-ashe Apr 8, 2026
563aee0
Rename 'rxcl' to 'dr_plant_reactor_extra_clearance' for clarity and c…
chris-ashe Apr 8, 2026
492be17
Rename 'row' to 'dr_plant_reactor_crane_clearance' for clarity and co…
chris-ashe Apr 8, 2026
6c2a784
Add dz_plant_reactor_building_crane for crane operation height in rea…
chris-ashe Apr 8, 2026
dbf6ccf
Rename 'fndt' to 'dz_plant_reactor_building_foundation' for clarity a…
chris-ashe Apr 8, 2026
fab097f
Rename 'stcl' to 'dz_plant_reactor_building_crane_roof_clearance' for…
chris-ashe Apr 8, 2026
f4f3547
Merge branch 'main' into refactor_buildings_01
chris-ashe Jul 26, 2026
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/unique-models/buildings_sizes.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,4 @@ Amalgamating multiple individual buildings (and using an average height), this e
## Summary variables

- Effective floor area for AC power module, `a_plant_floor_effective`: total floor area (m2) across all buildings. This estimate attempts to account for multiple floors within buildings by assuming an average storey height of 6m across the site; the volume of all buildings is therefore summed and divided by 6.
- Total volume of nuclear buildings, `volnucb`: sum of all nuclear building (external) volumes.
- Total volume of nuclear buildings, `vol_plant_nuclear_buildings`: sum of all nuclear building (external) volumes.
2 changes: 1 addition & 1 deletion process/core/init.py
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ def check_process(inputs, data): # noqa: ARG001
)

if data.physics.f_plasma_fuel_tritium < 1.0e-3: # tritium fraction is negligible
data.buildings.triv = 0.0
data.buildings.vol_plant_tritium_fuel_building = 0.0
data.heat_transport.p_tritium_plant_electric_mw = 0.0

if data.impurity_radiation.f_nd_impurity_electrons[1] != 0.1: # noqa: RUF069
Expand Down
36 changes: 24 additions & 12 deletions process/core/input.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"fkzohm": InputVariable("physics", float, range=(0.5, 2.0)),
"abktflnc": InputVariable("costs", float, range=(0.1, 100.0)),
"adivflnc": InputVariable("costs", float, range=(0.1, 100.0)),
"admv": InputVariable("buildings", float, range=(1.0e4, 1.0e6)),
"vol_plant_administration_building": InputVariable("buildings", float, range=(1.0e4, 1.0e6)),
"airtemp": InputVariable("water_use", float, range=(-15.0, 40.0)),
"alfapf": InputVariable("pf_coil", float, range=(1e-12, 1.0)),
"stress_cs_steel_max": InputVariable(
Expand Down Expand Up @@ -271,7 +271,7 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"control_buildings_h": InputVariable("buildings", float, range=(1.0, 100.0)),
"control_buildings_l": InputVariable("buildings", float, range=(10.0, 1000.0)),
"control_buildings_w": InputVariable("buildings", float, range=(10.0, 1000.0)),
"conv": InputVariable("buildings", float, range=(10000.0, 1000000.0)),
"vol_plant_control_building": InputVariable("buildings", float, range=(10000.0, 1000000.0)),
"coolp": InputVariable("fwbs", float, range=(100000.0, 100000000.0)),
"copper_rrr": InputVariable("rebco", float, range=(1.0, 10000.0)),
"dx_tf_hts_tape_copper": InputVariable(
Expand Down Expand Up @@ -478,7 +478,9 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"flpitch": InputVariable("stellarator", float, range=(0.0001, 0.01)),
"f_div_flux_expansion": InputVariable("divertor", float, range=(0.0, 10.0)),
"fmgdmw": InputVariable("heat_transport", float, range=(0.0, 100.0)),
"fndt": InputVariable("buildings", float, range=(0.0, 10.0)),
"dz_plant_reactor_building_foundation": InputVariable(
"buildings", float, range=(0.0, 10.0)
),
"f_p_beam_orbit_loss": InputVariable("current_drive", float, range=(0.0, 0.999)),
"f_p_blkt_coolant_pump_total_heat": InputVariable(
"heat_transport", float, range=(0.0, 0.2)
Expand Down Expand Up @@ -693,9 +695,13 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"rad_fraction_sol": InputVariable("physics", float, range=(0.0, 1.0)),
"radius_fw_channel": InputVariable("fwbs", float, range=(0.001, 0.5)),
"outgrat_fw": InputVariable("vacuum", float, range=(1e-10, 1e-06)),
"rbrt": InputVariable("buildings", float, range=(0.0, 10.0)),
"dz_plant_reactor_building_roof": InputVariable(
"buildings", float, range=(0.0, 10.0)
),
"rbvfac": InputVariable("buildings", float, range=(0.9, 3.0)),
"rbwt": InputVariable("buildings", float, range=(0.0, 10.0)),
"dx_plant_reactor_building_wall": InputVariable(
"buildings", float, range=(0.0, 10.0)
),
"radius_cp_coolant_channel": InputVariable("tfcoil", float, range=(1e-06, 1.0)),
"reactor_clrnc": InputVariable("buildings", float, range=(0.0, 10.0)),
"reactor_fndtn_thk": InputVariable("buildings", float, range=(0.25, 25.0)),
Expand Down Expand Up @@ -748,7 +754,9 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"rrin": InputVariable("ife", float, range=(0.1, 50.0)),
"rrmax": InputVariable("ife", float, range=(1.0, 50.0)),
"rrr_tf_cu": InputVariable("tfcoil", float, range=(1.0, 1000.0)),
"rxcl": InputVariable("buildings", float, range=(0.0, 10.0)),
"dr_plant_reactor_extra_clearance": InputVariable(
"buildings", float, range=(0.0, 10.0)
),
"sec_buildings_h": InputVariable("buildings", float, range=(1.0, 100.0)),
"sec_buildings_l": InputVariable("buildings", float, range=(10.0, 1000.0)),
"sec_buildings_w": InputVariable("buildings", float, range=(10.0, 1000.0)),
Expand All @@ -762,7 +770,7 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"dz_shld_lower": InputVariable("build", float, range=(0.0, 10.0)),
"dz_shld_upper": InputVariable("build", float, range=(0.0, 10.0)),
"shmf": InputVariable("buildings", float, range=(0.0, 1.0)),
"shov": InputVariable("buildings", float, range=(1000.0, 1000000.0)),
"vol_plant_shops_warehouse_buildings": InputVariable("buildings", float, range=(1000.0, 1000000.0)),
"sig_tf_case_max": InputVariable("tfcoil", float, range=(1000000.0, 100000000000.0)),
"sig_tf_wp_max": InputVariable("tfcoil", float, range=(1000000.0, 100000000000.0)),
"sigallpc": InputVariable("build", float, range=(0.0, 1000000000.0)),
Expand All @@ -775,7 +783,9 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
),
"staff_buildings_h": InputVariable("buildings", float, range=(1.0, 100.0)),
"startupratio": InputVariable("costs", float, range=(0.0, 10.0)),
"stcl": InputVariable("buildings", float, range=(0.0, 10.0)),
"dz_plant_reactor_building_crane_roof_clearance": InputVariable(
"buildings", float, range=(0.0, 10.0)
),
"str_cs_con_res": InputVariable("tfcoil", float, range=(-0.02, 0.02)),
"str_pf_con_res": InputVariable("tfcoil", float, range=(-0.02, 0.02)),
"str_tf_con_res": InputVariable("tfcoil", float, range=(-0.02, 0.02)),
Expand Down Expand Up @@ -834,7 +844,7 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"temp_fw_max": InputVariable("fwbs", float, range=(500.0, 2000.0)),
"temp_plasma_pedestal_kev": InputVariable("physics", float, range=(0.0, 20.0)),
"temp_plasma_separatrix_kev": InputVariable("physics", float, range=(0.0, 20.0)),
"tfcbv": InputVariable("buildings", float, range=(10000.0, 1000000.0)),
"vol_plant_tf_power_supplies_building": InputVariable("buildings", float, range=(10000.0, 1000000.0)),
"dx_tf_wp_insertion_gap": InputVariable("tfcoil", float, range=(1e-10, 0.1)),
"f_dr_tf_outboard_inboard": InputVariable("build", float, range=(0.2, 5.0)),
"tftmp": InputVariable("tfcoil", float, range=(0.01, 293.0)),
Expand Down Expand Up @@ -867,13 +877,15 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"i_t_current_ramp_up": InputVariable("times", int, choices=[0, 1]),
"transp_clrnc": InputVariable("buildings", float, range=(0.0, 10.0)),
"f_temp_plasma_ion_electron": InputVariable("physics", float, range=(0.0, 2.0)),
"trcl": InputVariable("buildings", float, range=(0.0, 10.0)),
"dr_plant_reactor_building_transport_clearance": InputVariable(
"buildings", float, range=(0.0, 10.0)
),
"triang": InputVariable("physics", float, range=(-1.0, 1.0)),
"triang95": InputVariable("physics", float, range=(0.0, 1.0)),
"p_tritium_plant_electric_mw": InputVariable(
"heat_transport", float, range=(0.0, 100.0)
),
"triv": InputVariable("buildings", float, range=(10000.0, 1000000.0)),
"vol_plant_tritium_fuel_building": InputVariable("buildings", float, range=(10000.0, 1000000.0)),
"turbine_hall_h": InputVariable("buildings", float, range=(1.0, 100.0)),
"turbine_hall_l": InputVariable("buildings", float, range=(10.0, 1000.0)),
"turbine_hall_w": InputVariable("buildings", float, range=(10.0, 1000.0)),
Expand Down Expand Up @@ -968,7 +980,7 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"water_buildings_l": InputVariable("buildings", float, range=(10.0, 1000.0)),
"water_buildings_w": InputVariable("buildings", float, range=(10.0, 1000.0)),
"watertemp": InputVariable("water_use", float, range=(0.0, 25.0)),
"wgt": InputVariable("buildings", float, range=(10000.0, 1000000.0)),
"m_plant_reactor_building_crane_capacity": InputVariable("buildings", float, range=(10000.0, 1000000.0)),
"wgt2": InputVariable("buildings", float, range=(10000.0, 1000000.0)),
"windspeed": InputVariable("water_use", float, range=(0.0, 10.0)),
"workshop_h": InputVariable("buildings", float, range=(1.0, 100.0)),
Expand Down
1 change: 1 addition & 0 deletions process/core/io/plot/summary.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
calculate_von_mises_stress,
poisson_steel,
)
from process.models.buildings import BuildingsITER1992
from process.models.geometry.blanket import (
blanket_geometry_double_null,
blanket_geometry_single_null,
Expand Down
47 changes: 26 additions & 21 deletions process/data_structure/buildings_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

@dataclass(slots=True)
class BuildingsData:
admv: float = 1.0e5
vol_plant_administration_building: float = 1.0e5
"""administration building volume (m3)"""

admvol: float = 0.0
Expand Down Expand Up @@ -54,7 +54,7 @@ class BuildingsData:
control_buildings_h: float = 6.0
"""control building height (m)"""

conv: float = 6.0e4
vol_plant_control_building: float = 6.0e4
"""control building volume (m3)"""

convol: float = 0.0
Expand Down Expand Up @@ -90,12 +90,15 @@ class BuildingsData:
cryostat_clrnc: float = 2.5
"""vertical clearance from TF coil to cryostat (m)"""

cryvol: float = 0.0
vol_plant_cryoplant_building: float = 0.0
"""volume of cryoplant building (m3)"""

a_plant_floor_effective: float = 0.0
"""effective total floor space (m2)"""


dz_plant_reactor_building_internal: float = None
"""Internal height of the reactor building (m)"""
elecdist_l: float = 380.0
"""Transformers and electrical distribution facilities length (m)"""

Expand Down Expand Up @@ -123,7 +126,7 @@ class BuildingsData:
elecstore_h: float = 12.0
"""Energy Storage facilities height (m)"""

elevol: float = 0.0
vol_plant_electrical_building: float = 0.0
"""volume of electrical equipment building (m3)"""

esbldgm3: float = 1.0e3
Expand All @@ -135,7 +138,7 @@ class BuildingsData:
fc_building_w: float = 60.0
"""Fuel Cycle facilities width (m)"""

fndt: float = 2.0
dz_plant_reactor_building_foundation: float = 2.0
"""foundation thickness (m)"""

gas_buildings_l: float = 25.0
Expand Down Expand Up @@ -270,13 +273,13 @@ class BuildingsData:
rbvfac: float = 1.6
"""reactor building volume multiplication factor"""

rbrt: float = 1.0
dz_plant_reactor_building_roof: float = 1.0
"""reactor building roof thickness (m)"""

rbvol: float = 0.0
vol_plant_reactor_building: float = 0.0
"""reactor building volume (m3)"""

rbwt: float = 2.0
dx_plant_reactor_building_wall: float = 2.0
"""reactor building wall thickness (m)"""

reactor_clrnc: float = 4.0
Expand All @@ -300,7 +303,7 @@ class BuildingsData:
reactor_wall_thk: float = 2.0
"""reactor building wall thickness (m)"""

rmbvol: float = 0.0
vol_plant_maintenance_assembly_building: float = 0.0
"""volume of maintenance and assembly building (m3)"""

robotics_l: float = 50.0
Expand All @@ -312,10 +315,12 @@ class BuildingsData:
robotics_h: float = 30.0
"""robotics buildings height (m)"""

row: float = 4.0
dr_plant_reactor_crane_clearance: float = 4.0
"""clearance to building wall for crane operation (m)"""

rxcl: float = 4.0
dz_plant_reactor_building_crane: float = None
"""Height of crane operation in the reactor building (m)"""
dr_plant_reactor_extra_clearance: float = 4.0
"""clearance around reactor (m)"""

sec_buildings_l: float = 30.0
Expand All @@ -330,7 +335,7 @@ class BuildingsData:
shmf: float = 0.5
"""fraction of shield mass per TF coil to be moved in the maximum shield lift"""

shov: float = 1.0e5
vol_plant_shops_warehouse_buildings: float = 1.0e5
"""shops and warehouse volume (m3)"""

shovol: float = 0.0
Expand All @@ -342,19 +347,19 @@ class BuildingsData:
staff_buildings_h: float = 5.0
"""staff buildings height (m)"""

stcl: float = 3.0
dz_plant_reactor_building_crane_roof_clearance: float = 3.0
"""clearance above crane to roof (m)"""

tfcbv: float = 2.0e4
vol_plant_tf_power_supplies_building: float = 2.0e4
"""volume of TF coil power supply building (m3) (calculated if TF coils are superconducting)"""

transp_clrnc: float = 1.0
"""transportation clearance between components (m)"""

trcl: float = 1.0
dr_plant_reactor_building_transport_clearance: float = 1.0
"""transportation clearance between components (m)"""

triv: float = 4.0e4
vol_plant_tritium_fuel_building: float = 4.0e4
"""volume of tritium, fuel handling and health physics buildings (m3)"""

turbine_hall_l: float = 109.0
Expand All @@ -375,10 +380,10 @@ class BuildingsData:
tw_storage_h: float = 5.0
"""tritiated waste storage building height (m)"""

volrci: float = 0.0
vol_plant_reactor_building_internal: float = 0.0
"""internal volume of reactor building (m3)"""

volnucb: float = 0.0
vol_plant_nuclear_buildings: float = 0.0
"""sum of nuclear buildings volumes (m3)"""

warm_shop_l: float = 100.0
Expand All @@ -399,7 +404,7 @@ class BuildingsData:
water_buildings_h: float = 5.0
"""water, laundry & drainage buildings height (m)"""

wgt: float = 5.0e5
m_plant_reactor_building_crane_capacity: float = 5.0e5
"""reactor building crane capacity (kg) (calculated if 0 is input)"""

wgt2: float = 1.0e5
Expand All @@ -414,10 +419,10 @@ class BuildingsData:
workshop_h: float = 10.0
"""[cold] workshop buildings height (m)"""

wrbi: float = 0.0
dr_plant_reactor_building_internal_half: float = 0.0
"""distance from centre of machine to building wall (m)"""

wsvol: float = 0.0
vol_plant_warm_shop_building: float = 0.0
"""volume of warm shop building (m3)"""

wsvfac: float = 1.9
Expand Down
Loading
Loading