Parametric Reactors

These are the current reactor designs that can be created using the Paramak.

https://user-images.githubusercontent.com/8583900/115291309-7fe17300-a14c-11eb-9859-be85075eb0b9.png

FlfSystemCodeReactor()

https://user-images.githubusercontent.com/8583900/136050185-da7e3cc8-1ead-4e11-8c17-2cbe2e4a3ad2.png
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()

https://user-images.githubusercontent.com/8583900/99136724-91af6f00-261e-11eb-9956-476b818a0ee3.png

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.

https://user-images.githubusercontent.com/8583900/119011892-6458ca80-b98d-11eb-92b1-bbc370cb9c84.png
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()

https://user-images.githubusercontent.com/8583900/99136727-94aa5f80-261e-11eb-965d-0ccceb2743fc.png

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.

https://user-images.githubusercontent.com/8583900/99431100-1db4e580-2902-11eb-82ce-3f864d13524c.png

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()

https://user-images.githubusercontent.com/8583900/99136728-983de680-261e-11eb-8398-51ae433f5546.png

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()

https://user-images.githubusercontent.com/8583900/99136719-8e1be800-261e-11eb-907d-a9bafaebdbb8.png

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.

https://user-images.githubusercontent.com/8583900/116117207-e36f2180-a6b3-11eb-8c65-4263336b6a68.png
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()

https://user-images.githubusercontent.com/8583900/99136731-9aa04080-261e-11eb-87a5-502708dfebcc.png

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()

https://user-images.githubusercontent.com/8583900/99136734-9e33c780-261e-11eb-837b-16a0bc59f8a7.png

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.

https://user-images.githubusercontent.com/8583900/98946297-9e7f7600-24eb-11eb-92cd-1c3bd13ad49b.png
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()

https://user-images.githubusercontent.com/8583900/110224418-4f62b400-7ed3-11eb-85f1-e40dc74f5671.png

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()

https://user-images.githubusercontent.com/40028739/110248118-cf3e5c00-7f6f-11eb-9e68-864c1a1e8676.png

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()

https://user-images.githubusercontent.com/8583900/100032191-5ae01280-2def-11eb-9654-47c3869b3a2c.png
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()

https://user-images.githubusercontent.com/85617935/144302746-181689dd-a4a8-43d4-9ed5-33518f36d4de.png https://user-images.githubusercontent.com/85617935/144303187-8cb71e2d-fc35-450f-a8f4-88b6650d56b7.png

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.

https://user-images.githubusercontent.com/85617935/144302481-022bf072-c7f7-409e-9701-1e24b7a9a7de.jpg
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,