Parametric Reactors¶
These are the current reactor designs that can be created using the Paramak.
FlfSystemCodeReactor()¶
- class FlfSystemCodeReactor(inner_blanket_radius=100.0, blanket_thickness=70.0, blanket_height=500.0, lower_blanket_thickness=50.0, upper_blanket_thickness=40.0, blanket_vv_gap=20.0, upper_vv_thickness=10.0, vv_thickness=10.0, lower_vv_thickness=10.0, rotation_angle=180.0)¶
Bases:
paramak.reactor.Reactor
Creates the 3D geometry for the a simplified FLF reactor model based on parameters. Model design was originally presented at University of York in 2019. Model shown at 50 mins 48 seconds in presentation https://www.youtube.com/watch?v=DtvcEkIb4D4
- Parameters
inner_blanket_radius – The radial distance between the center of the reactor on the start of the blanket (cm).
blanket_thickness – The radial thickness of the blanket (cm).
blanket_height – The height (z axis direction) of the blanket (cm).
lower_blanket_thickness – The thickness (z axis direction) of the lower blanket pool (cm).
upper_blanket_thickness – The thickness (z axis direction) of the upper blanket pool (cm).
blanket_vv_gap – The radial distance between the outer edge of the blanket and the inner edge of the vaccum vessel (cm).
upper_vv_thickness – The thickness (z axis direction) of the upper section of vaccum vessel (cm).
vv_thickness – The radial thickness of the vaccum vessel (cm)
lower_vv_thickness – The thickness (z axis direction) of the lower section of vaccum vessel (cm).
rotation_angle – The angle of the sector simulated. Set to 360 for simulations and less when creating models for visualization.
- create_solids()¶
Creates a list of paramak.Shape for components and saves it in self.shapes_and_components
BallReactors¶
BallReactor()¶
The above image is colored by components. The TF coils are blue, the PF coils are red, PF coil cases are yellow, the center column shielding is dark green, the blanket is light green, the divertor is orange, the firstwall is grey and the rear wall of the blanket is teal.
- class BallReactor(inner_bore_radial_thickness=10.0, inboard_tf_leg_radial_thickness=30.0, center_column_shield_radial_thickness=60.0, divertor_radial_thickness=150.0, inner_plasma_gap_radial_thickness=30.0, plasma_radial_thickness=300.0, outer_plasma_gap_radial_thickness=30.0, plasma_gap_vertical_thickness=50.0, firstwall_radial_thickness=30.0, blanket_radial_thickness=50.0, blanket_rear_wall_radial_thickness=30.0, elongation=2.0, triangularity=0.55, divertor_to_tf_gap_vertical_thickness=0, number_of_tf_coils=12, rear_blanket_to_tf_gap=None, pf_coil_radial_thicknesses=[], pf_coil_vertical_thicknesses=[], pf_coil_radial_position=[], pf_coil_vertical_position=[], pf_coil_case_thicknesses=[], outboard_tf_coil_radial_thickness=None, outboard_tf_coil_poloidal_thickness=None, divertor_position='both', rotation_angle=180.0)¶
Bases:
paramak.reactor.Reactor
Creates geometry for a simple ball reactor including a plasma, cylindrical center column shielding, square toroidal field coils. There is no inboard breeder blanket on this ball reactor like most spherical reactors.
- Parameters
inner_bore_radial_thickness – the radial thickness of the inner bore (cm)
inboard_tf_leg_radial_thickness – the radial thickness of the inner leg of the toroidal field coils (cm)
center_column_shield_radial_thickness – the radial thickness of the center column shield (cm)
divertor_radial_thickness – the radial thickness of the divertor (cm), this fills the gap between the center column shield and blanket
inner_plasma_gap_radial_thickness – the radial thickness of the inboard gap between the plasma and the center column shield (cm)
plasma_radial_thickness – the radial thickness of the plasma
outer_plasma_gap_radial_thickness – the radial thickness of the outboard gap between the plasma and firstwall (cm)
firstwall_radial_thickness – the radial thickness of the first wall (cm)
blanket_radial_thickness – the radial thickness of the blanket (cm)
blanket_rear_wall_radial_thickness – the radial thickness of the rear wall of the blanket (cm)
elongation – the elongation of the plasma
triangularity – the triangularity of the plasma
plasma_gap_vertical_thickness – the vertical thickness of the gap between the plasma and firstwall (cm).
divertor_to_tf_gap_vertical_thickness – the vertical thickness of the gap between the divertor and the TF coils.
number_of_tf_coils – the number of tf coils
pf_coil_radial_thicknesses – the radial thickness of each poloidal field coil.
pf_coil_vertical_thicknesses – the vertical thickness of each poloidal field coil.
pf_coil_to_tf_coil_radial_gap – the radial distance between the rear of the poloidal field coil and the toroidal field coil.
pf_coil_radial_position – The radial (x) position(s) of the centers of the poloidal field coils.
pf_coil_vertical_position – The vertical (z) position(s) of the centers of the poloidal field coils.
pf_coil_case_thicknesses – the thickness(s) to use in both the radial and vertical direction for the casing around the pf coils. Each float value in the list will be applied to the pf coils one by one. To have no casing set each entry to 0 or leave as an empty list.
outboard_tf_coil_radial_thickness – the radial thickness of the toroidal field coil.
outboard_tf_coil_poloidal_thickness – the poloidal thickness of the toroidal field coil.
divertor_position – the position of the divertor, “upper”, “lower” or “both”.
rotation_angle – the angle of the sector that is desired.
- create_solids()¶
Creates a list of paramak.Shape for components and saves it in self.shapes_and_components
SegmentedBlanketBallReactor()¶
The above image is colored by components. The TF coils are blue, the PF coils are red, PF coil cases are yellow, the center column shielding is dark green, the blanket is light green, the divertor is orange, the firstwall is grey and the rear wall of the blanket is teal.
Note that there is an odd number of blanket segments in this diagram so that the blanket breeder zone and the first wall can be see in this 180 slice.
Note the above image has the plasma purposefully hidden on the right hand side so that the internal blanket structure can be seen.
- class SegmentedBlanketBallReactor(gap_between_blankets=15.0, number_of_blanket_segments=12, blanket_fillet_radius=10.0, **kwargs)¶
Bases:
paramak.parametric_reactors.ball_reactor.BallReactor
Creates geometry for a single ball reactor with a single divertor including a plasma, cylindrical center column shielding, square toroidal field coils. There is no inboard breeder blanket on this ball reactor like most spherical reactors.
- Parameters
gap_between_blankets (float) – the distance between adjacent blanket segments,
number_of_blanket_segments (int) – the number of segments to divide the blanket up into. This for a full 360 degrees rotation
blanket_fillet_radius (float) – the fillet radius to apply to the interface between the firstwall and th breeder zone. Set to 0 for no fillet. Defaults to 10.0.
- property number_of_blanket_segments¶
Sets the SegmentedBlanketBallReactor.number_of_blanket_segments attribute which controls the number of blanket segments.
SingleNullBallReactor()¶
The above image is colored by components. The TF coils are blue, the PF coils are red, PF coil cases are yellow, the center column shielding is dark green, the blanket is light green, the divertor is orange, the firstwall is grey and the rear wall of the blanket is teal.
- class SingleNullBallReactor(divertor_position='upper', **kwargs)¶
Bases:
paramak.parametric_reactors.ball_reactor.BallReactor
Creates geometry for a single ball reactor with a single divertor including a plasma, cylindrical center column shielding, square toroidal field coils. There is no inboard breeder blanket on this ball reactor like most spherical reactors.
- Parameters
divertor_position (str) – Defaults to “upper”.
Submersion Tokamaks¶
SubmersionTokamak()¶
The above image is colored by components, the TF coils are blue, the PF coils are red, PF coil cases are yellow, the center column shielding is dark green, the blanket is light green, the divertor is orange, the firstwall is grey and the rear wall of the blanket is teal and the support legs are black.
- class SubmersionTokamak(inner_bore_radial_thickness=30.0, inboard_tf_leg_radial_thickness=30, center_column_shield_radial_thickness=30, inboard_blanket_radial_thickness=80, firstwall_radial_thickness=20, inner_plasma_gap_radial_thickness=50, plasma_radial_thickness=200, divertor_radial_thickness=80, support_radial_thickness=90, outer_plasma_gap_radial_thickness=50, outboard_blanket_radial_thickness=30, blanket_rear_wall_radial_thickness=30, elongation=2.0, triangularity=0.5, number_of_tf_coils=16, rotation_angle=180.0, outboard_tf_coil_radial_thickness=None, rear_blanket_to_tf_gap=None, outboard_tf_coil_poloidal_thickness=None, pf_coil_radial_thicknesses=[], pf_coil_vertical_thicknesses=[], pf_coil_radial_position=[], pf_coil_vertical_position=[], pf_coil_case_thicknesses=[], divertor_position='both', support_position='both')¶
Bases:
paramak.reactor.Reactor
Creates geometry for a simple submersion reactor including a plasma, cylindrical center column shielding, inboard and outboard breeder blanket, divertor (upper and lower), support legs. Optional coat hanger shaped toroidal field coils and pf coils.
- Parameters
inner_bore_radial_thickness – the radial thickness of the inner bore (cm)
inboard_tf_leg_radial_thickness – the radial thickness of the inner leg of the toroidal field coils (cm)
center_column_shield_radial_thickness – the radial thickness of the center column shield (cm)
inboard_blanket_radial_thickness – the radial thickness of the inboard blanket (cm)
firstwall_radial_thickness – the radial thickness of the first wall (cm)
inner_plasma_gap_radial_thickness – the radial thickness of the inboard gap between the plasma and the center column shield (cm)
plasma_radial_thickness – the radial thickness of the plasma (cm)
divertor_radial_thickness – the radial thickness of the divertors (cm)
support_radial_thickness – the radial thickness of the upper and lower supports (cm)
outer_plasma_gap_radial_thickness – the radial thickness of the outboard gap between the plasma and the first wall (cm)
outboard_blanket_radial_thickness – the radial thickness of the blanket (cm)
blanket_rear_wall_radial_thickness – the radial thickness of the rear wall of the blanket (cm)
elongation – the elongation of the plasma
triangularity – the triangularity of the plasma
number_of_tf_coils – the number of tf coils.
rotation_angle – the angle of the sector that is desired.
outboard_tf_coil_radial_thickness – the radial thickness of the toroidal field coil.
rear_blanket_to_tf_gap – the radial distance between the rear of the blanket and the toroidal field coil.
outboard_tf_coil_poloidal_thickness – the vertical thickness of each poloidal field coil.
pf_coil_vertical_thicknesses – the vertical thickness of each poloidal field coil.
pf_coil_radial_thicknesses – the radial thickness of each poloidal field coil.
divertor_position – the position of the divertor, “upper”, “lower” or “both”. Defaults to “both”.
support_position – the position of the supports, “upper”, “lower” or “both”. Defaults to “both”.
- create_solids()¶
Creates a list of paramak.Shape for components and saves it in self.shapes_and_components
SingleNullSubmersionTokamak()¶
The above image is colored by component. The TF coils are blue, the PF coils are red, PF coil cases are yellow, the center column shielding is dark green, the blanket is light green, the divertor is orange, the firstwall is grey, the rear wall of the blanket is teal and the supports are black.
- class SingleNullSubmersionTokamak(divertor_position='upper', support_position='upper', **kwargs)¶
Bases:
paramak.parametric_reactors.submersion_reactor.SubmersionTokamak
Creates geometry for a submersion reactor with a single divertor including a plasma, cylindrical center column shielding, square toroidal field coils. There is an inboard breeder blanket on this submersion reactor.
- Parameters
divertor_position (str) – Defaults to “upper”.
support_position (str) – Defaults to “upper”.
Specific use case reactors¶
CenterColumnStudyReactor()¶
The above image is colored by component. The center column shielding is dark green, the blanket is light green, the divertor is orange, the firstwall is grey and the blanket is teal.
Note this reactor is purposefully simple so that center column parameter studies can be performed quickly.
- class CenterColumnStudyReactor(inner_bore_radial_thickness=20, inboard_tf_leg_radial_thickness=50.0, center_column_shield_radial_thickness_mid=50.0, center_column_shield_radial_thickness_upper=100.0, inboard_firstwall_radial_thickness=20.0, divertor_radial_thickness=100.0, inner_plasma_gap_radial_thickness=80.0, plasma_radial_thickness=200.0, outer_plasma_gap_radial_thickness=90, center_column_arc_vertical_thickness=520.0, elongation=2.3, triangularity=0.45, plasma_gap_vertical_thickness=40, rotation_angle=180.0)¶
Bases:
paramak.reactor.Reactor
Creates geometry for a simple reactor that is optimised for carrying out parametric studies on the center column shield. Several aspects such as outboard magnets are intentionally missing from this reactor so that the model runs quickly and only includes components that have a significant impact on the center column shielding. This allows the neutronics simulations to run quickly and the column design space to be explored efficiently.
- Parameters
inner_bore_radial_thickness (float) – the radial thickness of the inner bore (cm)
inboard_tf_leg_radial_thickness (float) – the radial thickness of the inner leg of the toroidal field coils (cm)
center_column_shield_radial_thickness_mid (float) – the radial thickness of the center column shield at the mid point (cm)
center_column_shield_radial_thickness_upper (float) – the radial thickness of the center column shield at the upper point (cm)
inboard_firstwall_radial_thickness (float) – the radial thickness of the inboard firstwall (cm)
divertor_radial_thickness (float) – the radial thickness of the divertor (cm)
inner_plasma_gap_radial_thickness (float) – the radial thickness of the inboard gap between the plasma and the center column shield (cm)
plasma_radial_thickness (float) – the radial thickness of the plasma (cm)
outer_plasma_gap_radial_thickness (float) – the radial thickness of the outboard gap between the plasma and the first wall (cm)
elongation (float) – the elongation of the plasma
triangularity (float) – the triangularity of the plasma
center_column_arc_vertical_thickness (float) – height of the outer hyperbolic profile of the center column shield.
plasma_gap_vertical_thickness (float) – the vertical thickness of the upper gap between the plasma and the blanket (cm)
rotation_angle (float) – the angle of the sector that is desired. Defaults to 360.0.
- create_solids()¶
Creates a 3d solids for each component.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
Reactors from publications¶
EuDemoFrom2015PaperDiagram()¶
The above image is colored by component.
- class EuDemoFrom2015PaperDiagram(rotation_angle=180.0, number_of_tf_coils=16)¶
Bases:
paramak.reactor.Reactor
Creates geometry of a simplified EU DEMO model based on the published diagram in Figure 2 of Definition of the basic DEMO tokamak geometry based on systems code studies. Published in Fusion Engineering and Design http://dx.doi.org/10.1016/j.fusengdes.2015.06.097 . Coordinates extracted from the figure are not exact and therefore this model does not perfectly represent the reactor.
- Parameters
rotation_angle – the angle of the sector that is desired.
number_of_tf_coils – the number of tf coils to include in the model
- create_pf_coils()¶
Creates a 3d solids for each pf coil.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- Return type
list
- create_plasma()¶
Creates a 3d solids for the plasma.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- Return type
list
- create_solids()¶
Creates a 3d solids for each component.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- create_tf_coils(vac_vessel_inner, vac_vessel)¶
Creates a 3d solids for each tf coil.
- Parameters
vac_vessel (Paramak.Shape) – The vac_vessel that is used in a Boolean cut opperation to prevent overlaps
vac_vessel_inner (Paramak.Shape) – The vac_vessel_inner that is used in a Boolean cut opperation to prevent overlaps
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- Return type
list
- create_vessel_components()¶
Creates a 3d solids for each vessel component.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- Return type
list
IterFrom2020PaperDiagram()¶
The above image is colored by component.
- class IterFrom2020PaperDiagram(rotation_angle=180.0, number_of_tf_coils=18)¶
Bases:
paramak.reactor.Reactor
Creates geometry of a simplified ITER model. The geometry was based on “ITER Project: International Cooperation and Energy Investment” available at https://link.springer.com/chapter/10.1007/978-3-030-42913-3_26 Many shapes are built-in paramak shapes therefore the model does not match the diagram exactly.
- Parameters
rotation_angle – the angle of the sector that is desired.
number_of_tf_coils – the number of tf coils to include in the model
- create_pf_coils()¶
Creates a 3d solids for each pf coil.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- Return type
list
- create_plasma()¶
Creates a 3d solids for the plasma.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- Return type
list
- create_solids()¶
Creates a 3d solids for each component.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- create_tf_coils()¶
Creates a 3d solids for each tf coil.
Args:
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- Return type
list
- create_vessel_components()¶
Creates a 3d solids for each vessel component.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- Return type
list
SparcFrom2020PaperDiagram()¶
- class SparcFrom2020PaperDiagram(rotation_angle=180.0)¶
Bases:
paramak.reactor.Reactor
Creates geometry of a simple SPARC reactor based on the published diagram in Figure 4 of Overview of the SPARC tokamak. Journal of Plasma Physics, 86(5), 865860502. doi:10.1017/S0022377820001257. Coordinates extracted from the figure are not exact and therefore this model does not perfectly represent the reactor.
- Parameters
rotation_angle (float) – the angle of the sector that is desired. Defaults to 360.0.
- create_pf_coils()¶
Creates a 3d solids for each pf coil.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- create_plasma()¶
Creates a 3d solids for the plasma.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- create_solids()¶
Creates a 3d solids for each component.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- create_tf_coils()¶
Creates a 3d solids for each tf coil.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
- create_vessel_components(vs_coils)¶
Creates a 3d solids for each vessel component.
- Parameters
vs_coils (Paramak.Shape) – The vs coils that are used in a Boolean cut with the inner vessel.
- Returns
A list of 3D solid volumes
- Return type
A list of CadQuery solids
NegativeTriangularityReactor()¶
The above image is coloured by component. On the left the low_aspect attribute is True, whereas on the right, the low_aspect attribute is set to False, as well as the PF coils outside were moved +200 units from default outward.
- class NegativeTriangularityReactor(inner_tf_coil_thickness=100, vacuum_vessel_thickness=50, central_shield_thickness=30, wall_to_plasma_gap=150, plasma_radial_thickness=650, elongation=2, triangularity=0.6, inner_wall_thickness=20, blanket_thickness=105, rear_wall_thickness=20, divertor_radial_thickness=430, divertor_height_full=300, number_of_coils=12, tf_width=75, pf_coil_heights=[75, 75, 150, 75, 75], pf_coil_widths=[70, 70, 150, 70, 70], pf_coil_center_points=[(350, 850), (1350, 650), (1350, 0), (1350, - 650), (350, - 850)], pf_coil_casing_thickness=[15, 15, 15, 15, 15], rotation_angle=180, inner_bore_radius=50, port_side_lengths=[200, 200, 150], port_heights=[200, 100, 400], port_angles=[75, 170, 15], port_z_pos=[500, - 500, 200], outer_tf_coil_thickness=None, low_aspect=False)¶
Bases:
paramak.reactor.Reactor
New class of reactor that builds a negative triangularity tokamak model.
- Parameters
inner_tf_coil_thickness – radial thickness of the Toroidal Field coil’s inner leg (cm),
vacuum_vessel_thickness – the radial and vertical thickness of the vacuum vessel (cm),
central_shield_thickness – radial thickness of the central heat shield (cm),
wall_to_plasma_gap – gap of inner blanket wall and the plasma outter edge (cm),
plasma_radial_thickness – radial thickness of the plasma (2x minor radius) (cm),
elongation – plasma elongation,
triangularity – plasma triangularity - both positive or negative values will result in negative triangularity,
inner_wall_thickness – plasma facing blanket wall thickness (cm),
blanket_thickness – breeder blanket thickness (cm),
rear_wall_thickness – outer blanket wall thickness (cm),
divertor_radial_thickness – radial thickness of the divertor (cm),
divertor_height_full – divertor vertical thickness (cm),
number_of_coils – number of Toroidal Field coils around the reactor evenly spaced,
tf_width – Toroidal Field coil extrusion distance / thickness (cm),
pf_coil_heights – List of Poloidal field coil heights (cm),
pf_coil_widths – List of Poloidal field coil widths (cm),
pf_coil_center_points – List of Poloidal field coil center points on the XZ workplane (cm),
pf_coil_casing_thickness – List of Poloidal field coil casing thickness (cm),
rotation_angle – Angle of rotation arounbd the Z axis of which the reactor is shown - 180° shows half a reactor,
inner_bore_radius – Inner bore radial thickness (cm); Defaults to 5 cm,
port_side_lengths – List containing the side lengths of the ports (cm),
port_heights – List containing the heights of the ports (cm),
port_angles – List containing the angles of the ports center points (°),
port_z_pos – List containing the Z position of the ports as Zero in the centre of the reactor (cm),
outer_tf_coil_thickness – Outer Toroidal Field coil thickness (cm) - defaults to the inner Toroidal Field coil thickness,,
low_aspect – Boolean allowing a swift switch between a lower aspect-ratio reactor (True) where the inner blanket is cut by the center column, whereas (False) non-low-aspect will produce a full inner blanket and only part being cut by the centre column is the rear blanket wall,