Skip to content

Commit d97f06e

Browse files
authored
πŸ› Fix optimised design example (#4159)
* πŸ› Fix optimised design example * ✨ Add design materials file * πŸ› Fix path
1 parent 3261782 commit d97f06e

File tree

3 files changed

+84
-4
lines changed

3 files changed

+84
-4
lines changed

β€Žbluemira/materials/cache.pyβ€Ž

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ def _d(p, name, initial_p):
9595
mod = p
9696
for n in name:
9797
mod = _d(mod, n, initial_p)
98-
if isinstance(mod, Material):
98+
if mod is not None and (
99+
isinstance(mod, Material) or issubclass(mod, Material)
100+
):
99101
return mod
100102
raise AttributeError(f"No such material: {name}")
101103

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# SPDX-FileCopyrightText: 2021-present M. Coleman, J. Cook, F. Franza
2+
# SPDX-FileCopyrightText: 2021-present I.A. Maione, S. McIntosh
3+
# SPDX-FileCopyrightText: 2021-present J. Morris, D. Short
4+
#
5+
# SPDX-License-Identifier: LGPL-2.1-or-later
6+
7+
"""Materials for design examples"""
8+
9+
from matproplib.conditions import OperationalConditions
10+
from matproplib.converters.neutronics import OpenMCNeutronicConfig
11+
from matproplib.library.beryllium import Be12Ti
12+
from matproplib.library.fluids import Helium
13+
from matproplib.library.tungsten import PlanseeTungsten
14+
from matproplib.material import material, mixture
15+
from matproplib.properties.group import props
16+
17+
from bluemira.materials.neutronics import make_KALOS_ACB_mat
18+
19+
EUROFER_MAT = material(
20+
name="eurofer",
21+
elements={
22+
"Fe": 0.9006,
23+
"Cr": 0.0886,
24+
"W182": 0.0108 * 0.266,
25+
"W183": 0.0108 * 0.143,
26+
"W184": 0.0108 * 0.307,
27+
"W186": 0.0108 * 0.284,
28+
"fraction_type": "mass",
29+
},
30+
properties=props(density=(7.78, "g/cm^3")),
31+
converters=OpenMCNeutronicConfig(),
32+
)()
33+
HELIUM_MAT = Helium()
34+
35+
TUNGSTEN_MAT = PlanseeTungsten()
36+
37+
BB_FW_MATERIAL = mixture(
38+
name="FW material",
39+
materials=[
40+
(TUNGSTEN_MAT, 2.0 / 27.0),
41+
(EUROFER_MAT, 25.0 * 0.573 / 27.0),
42+
(HELIUM_MAT, 25.0 * 0.427 / 27.0),
43+
],
44+
fraction_type="volume",
45+
mix_condition=OperationalConditions(temperature=673.15, pressure=8e6),
46+
converters=OpenMCNeutronicConfig(material_id=101),
47+
)
48+
49+
structural_fraction_vo = 0.128
50+
multiplier_fraction_vo = 0.493
51+
breeder_fraction_vo = 0.103
52+
helium_fraction_vo = 0.276
53+
li6_enrich_atomic = 0.6
54+
KALOS_ACB_MATERIAL = make_KALOS_ACB_mat(li6_enrich_atomic)
55+
56+
BB_BZ_MATERIAL = mixture(
57+
name="BZ material",
58+
materials=[
59+
(EUROFER_MAT, structural_fraction_vo),
60+
(Be12Ti(), multiplier_fraction_vo),
61+
(KALOS_ACB_MATERIAL, breeder_fraction_vo),
62+
(HELIUM_MAT, helium_fraction_vo),
63+
],
64+
fraction_type="volume",
65+
mix_condition=OperationalConditions(temperature=673.15, pressure=8e6),
66+
converters=OpenMCNeutronicConfig(
67+
material_id=102,
68+
enrichment=li6_enrich_atomic * 100,
69+
enrichment_target="Li6",
70+
enrichment_type="atomic",
71+
),
72+
)

β€Žexamples/design/optimised_reactor.ex.pyβ€Ž

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from bluemira.base.builder import Builder
3737
from bluemira.base.components import Component, PhysicalComponent
3838
from bluemira.base.designer import Designer
39+
from bluemira.base.file import get_bluemira_root
3940
from bluemira.base.logs import set_log_level
4041
from bluemira.base.look_and_feel import bluemira_print
4142
from bluemira.base.parameter_frame import Parameter, ParameterFrame
@@ -399,7 +400,12 @@ def __init__(self, reactor_params: OptimisedReactorParams):
399400
"""Initialise the optimised reactor."""
400401
self.params = reactor_params
401402
super().__init__("OptimisedReactor", n_sectors=reactor_params.n_TF.value)
402-
establish_material_cache(["matproplib"])
403+
establish_material_cache([
404+
Path(get_bluemira_root(), "examples", "design", "design_materials.py")
405+
.resolve()
406+
.as_posix(),
407+
"matproplib",
408+
])
403409

404410
def build_plasma(self):
405411
"""Build the plasma component."""
@@ -448,8 +454,8 @@ def build_tf_coils(self, mat_name: str):
448454
)
449455

450456
r.build_plasma()
451-
r.build_bb("Homogenised_HCPB_2015_v3_BZ")
452-
r.build_tf_coils("Toroidal_Field_Coil_2015")
457+
r.build_bb("BB_BZ_MATERIAL")
458+
r.build_tf_coils("EUROFER_MAT")
453459

454460
major_radius = r.params.R_0.value * 100
455461
aspect_ratio = r.params.A.value

0 commit comments

Comments
Β (0)