Parametric Components¶
These are components that represent a selection of the components found in fusion reactors and are created from parameters. These components all inherit from the parametric Shape classes.
Blankets¶
BlanketConstantThicknessArcH()¶
- class BlanketConstantThicknessArcH(inner_mid_point, inner_upper_point, inner_lower_point, thickness, **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
An outboard blanket volume that follows the curvature of a circular arc and a constant blanket thickness. The upper and lower edges continue horizontally for the thickness of the blanket to back of the blanket.
- Parameters
inner_mid_point – the x,z coordinates of the mid point on the inner surface of the blanket.
inner_upper_point – the x,z coordinates of the upper point on the inner surface of the blanket.
inner_lower_point – the x,z coordinates of the lower point on the inner surface of the blanket.
thickness – the radial thickness of the blanket in cm.
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
BlanketConstantThicknessArcV()¶
- class BlanketConstantThicknessArcV(inner_mid_point, inner_upper_point, inner_lower_point, thickness, **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
An outboard blanket volume that follows the curvature of a circular arc and a constant blanket thickness. The upper and lower edges continue vertically for the thickness of the blanket to back of the blanket.
- Parameters
inner_mid_point – the x,z coordinates of the mid point on the inner surface of the blanket.
inner_upper_point – the x,z coordinates of the upper point on the inner surface of the blanket.
inner_lower_point – the x,z coordinates of the lower point on the inner surface of the blanket.
thickness – the radial thickness of the blanket in cm.
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
BlanketFP()¶
- class BlanketFP(thickness, start_angle, stop_angle, plasma=None, minor_radius=150.0, major_radius=450.0, triangularity=0.55, elongation=2.0, vertical_displacement=0.0, offset_from_plasma=0.0, num_points=50, allow_overlapping_shape=False, **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
A blanket volume created from plasma parameters.
- Parameters
thickness (float or [float] or callable or [(float), (float)]) – the thickness of the blanket (cm). If the thickness is a float then this produces a blanket of constant thickness. If the thickness is a tuple of floats, blanket thickness will vary linearly between the two values. If thickness is callable, then the blanket thickness will be a function of poloidal angle (in degrees). If thickness is a list of two lists (thicknesses and angles) then these will be used together with linear interpolation.
start_angle – the angle in degrees to start the blanket, measured anti clockwise from 3 o’clock.
stop_angle – the angle in degrees to stop the blanket, measured anti clockwise from 3 o’clock.
plasma – If not None, the parameters of the plasma Object will be used.
minor_radius – the minor radius of the plasma (cm).
major_radius – the major radius of the plasma (cm).
triangularity – the triangularity of the plasma.
elongation – the elongation of the plasma.
vertical_displacement – the vertical_displacement of the plasma (cm).
offset_from_plasma – the distance between the plasma and the blanket (cm). If float, constant offset. If list of floats, offset will vary linearly between the values. If callable, offset will be a function of poloidal angle (in degrees). If a list of two lists (angles and offsets) then these will be used together with linear interpolation.
num_points – number of points that will describe the shape.
- create_offset_points(thetas, offset)¶
generates a list of points following parametric equations with an offset
- Parameters
thetas (np.array) – the angles in degrees.
offset (callable) – offset value (cm). offset=0 will follow the parametric equations.
- Returns
list of points [[R1, Z1, connection1], [R2, Z2, connection2], …]
- Return type
list
- distribution(theta, pkg=<module 'numpy' from '/home/docs/checkouts/readthedocs.org/user_builds/paramak/conda/0.7.1/lib/python3.8/site-packages/numpy/__init__.py'>)¶
Plasma distribution theta in degrees
- Parameters
theta (float or np.array or sp.Symbol) – the angle(s) in degrees.
pkg (module, optional) – Module to use in the funciton. If sp, as sympy object will be returned. If np, a np.array or a float will be returned. Defaults to np.
- Returns
- (float, float) or (sympy.Add, sympy.Mul) or
(numpy.array, numpy.array): The R and Z coordinates of the point with angle theta
- find_points(angles=None)¶
Calculates the shape points. Empty method which some components overright when inheritting.
- make_callable(attribute)¶
This function transforms an attribute (thickness or offset) into a callable function of theta
BlanketFPPoloidalSegments()¶
- class BlanketFPPoloidalSegments(segments_angles=None, num_segments=7, length_limits=None, nb_segments_limits=None, segments_gap=0.0, **kwargs)¶
Bases:
paramak.parametric_components.blanket_fp.BlanketFP
Poloidally segmented Blanket inheriting from paramak.BlanketFP.
- Parameters
segments_angles – If not None, the segments ends will be located at these angles. If None and if the constraints length_limits and nb_segments_limits are not None, segments angles will be linearly distributed. Else, an optimum configuration meeting the set requirements will be found. Defaults to None.
num_segments – Number of segments (ignored if segments_angles is not None).
length_limits – The minimum and maximum acceptable length of the segments. Ex: (100, 500), (100, None), (None, 300), None, (None, None).
nb_segments_limits – The minimum and maximum acceptable number of segments. Ex: (3, 10), (5, None), (None, 7), None, (None, None).
segments_gap – Distance between segments.
- create_segment_cutters()¶
Creates a shape for cutting the blanket into segments and store it in segments_cutter attribute
- create_solid()¶
Creates a rotated 3d solid using points with straight and spline edges.
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
- get_angles()¶
Get the poloidal angles of the segments.
- Returns
the angles
- Return type
list
- compute_lengths_from_angles(angles, distribution)¶
Computes the length of segments between a set of points on a (x,y) distribution.
- Parameters
angles (list) – Contains the angles of the points (degree)
distribution (callable) – function taking an angle as argument and returning (x,y) coordinates.
- Returns
contains the lengths of the segments.
- Return type
list
- segments_optimiser(length_limits, nb_segments_limits, distribution, angles, stop_on_success=True)¶
Optimiser segmenting a given R(theta), Z(theta) distribution of points with constraints regarding the number of segments and the length of the segments.
- Parameters
length_limits ((float, float)) – The minimum and maximum acceptable length of the segments. Ex: (100, 500), (100, None), (None, 300), None, (None, None)
nb_segments_limits ((int, int)) – The minimum and maximum acceptable number of segments. Ex: (3, 10), (5, None), (None, 7), None, (None, None)
distribution (callable) – function taking an angle as argument and returning (x,y) coordinates.
angles ((float, float)) – the start and stop angles of the distribution.
stop_on_sucess (bool, optional) – If set to True, the optimiser will stop as soon as a configuration meets the requirements.
- Returns
list of optimised angles
- Return type
list
Blanket Cutting Tools¶
BlanketCutterParallels()¶
- class BlanketCutterParallels(thickness, gap_size, height=2000.0, width=2000.0, azimuth_placement_angle=[0.0, 36.0, 72.0, 108.0, 144.0, 180.0, 216.0, 252.0, 288.0, 324.0], name='blanket_cutter_parallels', **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_straight_shape.ExtrudeStraightShape
Creates an extruded shape with a parallel rectangular section repeated around the reactor. The shape is used to cut other components (eg. blankets and firstwalls) in order to create a banana section of the blankets with parallel sides.Typically used to divide a blanket into vertical sections with a fixed distance between each section.
- Parameters
thickness – extruded distance (cm) of the cutter which translates to being the gap size between blankets when the cutter is used to segment blankets.
gap_size – the distance between the inner edges of the two parallel extrusions
height – height (cm) of the port. Defaults to 2000.0.
width – width (cm) of the port. Defaults to 2000.0.
name – Defaults to “blanket_cutter_Parallels”.
azimuth_placement_angle (float or list of floats) – Defaults to [0., 36., 72., 108., 144., 180., 216., 252., 288., 324.].
- create_solid()¶
Creates an extruded 3d solid using points connected with straight and spline edges.
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
BlanketCutterStar()¶
- class BlanketCutterStar(distance, height=2000.0, width=2000.0, azimuth_placement_angle=[0.0, 36.0, 72.0, 108.0, 144.0, 180.0, 216.0, 252.0, 288.0, 324.0], name='blanket_cutter_star', **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_straight_shape.ExtrudeStraightShape
Creates an extruded shape with a rectangular section that is used to cut other components (eg. blankets and firstwalls) in order to create banana style blanket segments. Typically used to divide a blanket into vertical sections with a fixed gap between each section.
- Parameters
distance – extruded distance (cm) of the cutter which translates to being the gap size between blankets when the cutter is used to segment blankets.
height – height (cm) of the port. Defaults to 2000.0.
width – width (cm) of the port. Defaults to 2000.0.
azimuth_placement_angle (list or float, optional) – Defaults to [0., 36., 72., 108., 144., 180., 216., 252., 288., 324.]
name – defaults to “blanket_cutter_star”.
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
PoloidalSegmenter()¶
- class PoloidalSegments(center_point, shape_to_segment=None, number_of_segments=10, max_distance_from_center=1000.0, name='poloidal_segmenter', **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a ring of wedges from a central point. When provided with a shape_to_segment the shape will be segmented by the wedges. This is useful for segmenting geometry into equal poloidal angles. Intended to segment the firstwall geometry for using in neutron wall loading simulations.
- Parameters
center_point (tuple of floats) – the center of the segmentation wedges (x,z) values (cm).
shape_to_segment (paramak.Shape, optional) – the Shape to segment, if None then the segmenting solids will be returned. Defaults to None.
number_of_segments (int, optional) – the number of equal angles segments in 360 degrees. Defaults to 10.
max_distance_from_center (float) – the maximum distance from the center point outwards (cm). Defaults to 1000.0.
name (str, optional) – defaults to “poloidal_segmenter”.
- create_solid()¶
Creates a 3d solid using points with straight edges. Individual solids in the compound can be accessed using .Solids()[i] where i is an int.
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the poloidal segmentation shape.
Center Columns¶
CenterColumnShieldCylinder()¶
- class CenterColumnShieldCylinder(height, inner_radius, outer_radius, center_height=0.0, name='CenterColumnShieldCylinder', color=(0.0, 0.333, 0.0), **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
A cylindrical center column shield volume with constant thickness.
- Parameters
height – height of the center column shield.
inner_radius – the inner radius of the center column shield.
outer_radius – the outer radius of the center column shield.
center_height – the vertical height of the center of the component.
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the center column shield shape.
CenterColumnShieldHyperbola()¶
- class CenterColumnShieldHyperbola(height, inner_radius, mid_radius, outer_radius, name='center_column', color=(0.0, 0.333, 0.0), **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
A center column shield volume with a hyperbolic outer profile and constant cylindrical inner profile.
- Parameters
height – height of the center column shield.
inner_radius – the inner radius of the center column shield.
mid_radius – the inner radius of the outer hyperbolic profile of the center column shield.
outer_radius – the outer radius of the center column shield.
name – Defaults to “center_column”.
- find_points()¶
Finds the XZ points and connection types (straight and spline) that describe the 2D profile of the center column shield shape.
CenterColumnShieldFlatTopHyperbola()¶
- class CenterColumnShieldFlatTopHyperbola(height, arc_height, inner_radius, mid_radius, outer_radius, name='center_column', color=(0.0, 0.333, 0.0), **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
A center column shield volume with a hyperbolic outer profile joined to flat profiles at the top and bottom of the shield, and a constant cylindrical inner profile.
- Parameters
height – height of the center column shield.
arc_height – height of the outer hyperbolic profile of the center column shield.
inner_radius – the inner radius of the center column shield.
mid_radius – the inner radius of the outer hyperbolic profile of the center column shield.
outer_radius – the outer_radius of the center column shield.
name – Defaults to “center_column”.
- find_points()¶
Finds the XZ points and connection types (straight and spline) that describe the 2D profile of the center column shield shape.
CenterColumnShieldFlatTopCircular()¶
- class CenterColumnShieldFlatTopCircular(height, arc_height, inner_radius, mid_radius, outer_radius, name='center_column', color=(0.0, 0.333, 0.0), **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
A center column shield volume with a circular outer profile joined to flat profiles at the top and bottom of the shield, and a constant cylindrical inner profile.
- Parameters
height – height of the center column shield.
arc_height – height of the outer circular profile of the center column shield.
inner_radius – the inner radius of the center column shield.
mid_radius – the inner radius of the outer circular profile of the center column shield.
outer_radius – the outer radius of the center column shield.
name – Defaults to “center_column”.
- find_points()¶
Finds the XZ points and connection types (straight and circle) that describe the 2D profile of the center column shield shape.
CenterColumnShieldPlasmaHyperbola()¶
- class CenterColumnShieldPlasmaHyperbola(height, inner_radius, mid_offset, edge_offset, major_radius=450.0, minor_radius=150.0, triangularity=0.55, elongation=2.0, **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
A center column shield volume with a curvature controlled by the shape of the plasma and offsets specified at the plasma center and edges. Shield thickness is controlled by the relative values of the shield offsets and inner radius.
- Parameters
height – height of the center column shield.
inner_radius – the inner radius of the center column shield.
mid_offset – the offset of the shield from the plasma at the plasma center.
edge_offset – the offset of the shield from the plasma at the plasma edge.
major_radius – the major radius of the plasma. Defaults to 450.0.
minor_radius – the minor radius of the plasma. Defaults to 150.0.
triangularity – the triangularity of the plasma. Defaults to 0.55.
elongation – the elongation of the plasma. Defaults to 2.0.
- find_points()¶
Finds the XZ points and connection types (straight and spline) that describe the 2D profile of the center column shield shape.
InboardFirstwallFCCS()¶
- class InboardFirstwallFCCS(central_column_shield, thickness, color=(0.5, 0.5, 0.5), **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
An inboard firstwall component that builds a constant thickness layer from the central column shield. The center column shields can be of type: CenterColumnShieldCylinder, CenterColumnShieldHyperbola, CenterColumnShieldFlatTopHyperbola, CenterColumnShieldCircular, CenterColumnShieldPlasmaHyperbola or CenterColumnShieldFlatTopCircular
- Parameters
central_column_shield – The central column shield object to build from
thickness – the radial thickness of the firstwall (cm)
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
Coolant Channels¶
CoolantChannelRingStraight()¶
- class CoolantChannelRingStraight(height, channel_radius, number_of_coolant_channels, ring_radius, start_angle=0.0, **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_circle_shape.ExtrudeCircleShape
A ring of equally-spaced straight circular coolant channels with constant thickness.
- Parameters
height – height of each coolant channel in ring.
channel_radius – radius of each coolant channel in ring.
number_of_coolant_channels – number of coolant channels in ring.
radius (ring) – radius of coolant channel ring.
start_angle – angle at which the first channel in the ring is placed. Defaults to 0.0.
rotation_axis (str, optional) – azimuthal axis around which the separate coolant channels are placed.
workplane (str, optional) – plane in which the cross-sections of the coolant channels lie. Defaults to “XY”.
- find_azimuth_placement_angle()¶
Calculates the azimuth placement angles based on the number of coolant channels.
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
CoolantChannelRingCurved()¶
- class CoolantChannelRingCurved(height, channel_radius, number_of_coolant_channels, ring_radius, mid_offset, start_angle=0.0, **kwargs)¶
Bases:
paramak.parametric_shapes.sweep_circle_shape.SweepCircleShape
A ring of equally-spaced curved circular coolant channels with constant thickness.
- Parameters
height – height of each coolant channel in ring.
channel_radius – radius of each coolant channel in ring.
number_of_coolant_channels – number of coolant channels in ring.
ring_radius – radius of coolant channel ring.
start_angle – angle at which the first channel in the ring is placed. Defaults to 0.0.
rotation_axis – azimuthal axis around which the separate coolant channels are placed. Default calculated by workplane and path_workplane.
workplane (str, optional) – plane in which the cross-sections of the coolant channels lie. Defaults to “XY”.
path_workplane (str, optional) – plane in which the cross-sections of the coolant channels are swept. Defaults to “XZ”.
force_cross_section (bool, optional) – forces coolant channels to have a more constant cross-section along their curve. Defaults to False.
- find_azimuth_placement_angle()¶
Calculates the azimuth placement angles based on the number of coolant channels.
Cutting Tools¶
CuttingWedge()¶
- class CuttingWedge(height, radius, rotation_angle=180.0, **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a wedge from height, radius and rotation angle arguments than can be useful for cutting sector models.
- Parameters
height – the vertical (z axis) height of the coil (cm).
radius – the horizontal (x axis) width of the coil (cm).
rotation_angle – Defaults to 180.0.
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
CuttingWedgeFS()¶
- class CuttingWedgeFS(shape, **kwargs)¶
Bases:
paramak.parametric_components.cutting_wedge.CuttingWedge
Creates a wedge from a Shape that can be useful for cutting sector models.
- Parameters
shape (paramak.Shape) – a paramak.Shape object that is used to find the height and radius of the wedge
Divertors¶
ITERtypeDivertor()¶
- class ITERtypeDivertor(anchors=((450, - 300), (561, - 367)), coverages=(90, 180), radii=(50, 25), lengths=(78, 87), dome=True, dome_height=43, dome_length=66, dome_thickness=10, dome_pos=0.5, tilts=(- 27, 0), **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
Creates an ITER-like divertor with inner and outer vertical targets and dome
- Parameters
anchors ((float, float), (float, float), optional) – xz coordinates of points at the top of vertical targets. Defaults to ((450, -300), (561, -367)).
coverages ((float, float), optional) – coverages (anticlockwise) in degrees of the circular parts of vertical targets. Defaults to (90, 180).
radii ((float, float), optional) – radii (cm) of circular parts of the vertical targets. Defaults to (50, 25).
lengths ((float, float), optional) – leg length (cm) of the vertical targets. Defaults to (78, 87).
dome (bool, optional) – if set to False, the dome will not be created. Defaults to True.
dome_height (float, optional) – distance (cm) between the dome base and lower points. Defaults to 43.
dome_length (float, optional) – length of the dome. Defaults to 66.
dome_thickness (float, optional) – thickness of the dome. Defaults to 10.
dome_pos (float, optional) – relative location of the dome between vertical targets (0 inner, 1 outer). Ex: 0.5 will place the dome in between the targets. Defaults to 0.5.
tilts ((float, float), optional) – tilt angles (anticlockwise) in degrees for the vertical targets. Defaults to (-27, 0).
- find_points()¶
Finds the XZ points and connection types (straight and circle) that describe the 2D profile of the ITER-like divertor
ITERtypeDivertorNoDome()¶
- class ITERtypeDivertorNoDome(**kwargs)¶
Bases:
paramak.parametric_components.divertor_ITER.ITERtypeDivertor
Creates an ITER-like divertor with inner and outer vertical targets
Inner Toroidal Field Coils¶
InnerTfCoilsCircular()¶
- class InnerTfCoilsCircular(height, inner_radius, outer_radius, number_of_coils, gap_size, azimuth_start_angle=0.0, workplane='XY', rotation_axis='Z', **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_mixed_shape.ExtrudeMixedShape
A tf coil volume with cylindrical inner and outer profiles and constant gaps between each coil.
- Parameters
height – height of tf coils.
inner_radius – inner radius of tf coils.
outer_radius – outer radius of tf coils.
number_of_coils – number of tf coils.
gap_size – gap between adjacent tf coils.
azimuth_start_angle – Defaults to 0.0.
workplane – Defaults to “XY”.
rotation_axis – Defaults to “Z”.
- find_azimuth_placement_angle()¶
Calculates the azimuth placement angles based on the number of tf coils
- find_points()¶
Finds the points that describe the 2D profile of the tf coil shape
InnerTfCoilsFlat()¶
- class InnerTfCoilsFlat(height, inner_radius, outer_radius, number_of_coils, gap_size, radius_type='corner', azimuth_start_angle=0.0, workplane='XY', rotation_axis='Z', **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_straight_shape.ExtrudeStraightShape
A tf coil volume with straight inner and outer profiles and constant gaps between each coil. Note: the inner / outer surface is not equal distance to the center point everywhere as the corners are further than the straight sections.
- Parameters
height – height of tf coils.
inner_radius – Distance between center point and the inner surface of the tf coils.
outer_radius – Distance between center point and the outer surface of the tf coils.
number_of_coils – number of tf coils.
gap_size – gap between adjacent tf coils.
radius_type – Controls the part of the inner surface used when defining the inner_radius and outer_radius. Can be set to either ‘corner’ or ‘straight’.
azimuth_start_angle – defaults to 0.0.
workplane – defaults to “XY”.
rotation_axis – Defaults to “Z”.
- find_azimuth_placement_angle()¶
Calculates the azimuth placement angles based on the number of tf coils
- find_points()¶
Finds the points that describe the 2D profile of the tf coil shape
Poloidal Field coils¶
PoloidalFieldCoil()¶
- class PoloidalFieldCoil(height, width, center_point, name='pf_coil', **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a rectangular poloidal field coil.
- Parameters
height – the vertical (z axis) height of the coil (cm).
width – the horizontal (x axis) width of the coil (cm).
center_point – the center of the coil (x,z) values (cm).
name – defaults to “pf_coil”.
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the poloidal field coil shape.
PoloidalFieldCoilFP()¶
- class PoloidalFieldCoilFP(corner_points, **kwargs)¶
Bases:
paramak.parametric_components.poloidal_field_coil.PoloidalFieldCoil
Creates a rectangular poloidal field coil.
- Parameters
corner_points (list of float tuples) – the coordinates of the opposite corners of the rectangular shaped coil e.g [(x1, y1), (x2, y2)]
PoloidalFieldCoilSet()¶
- class PoloidalFieldCoilSet(heights, widths, center_points, name='pf_coil', **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a series of rectangular poloidal field coils.
- Parameters
heights (list of floats) – the vertical (z axis) heights of the coils (cm).
widths (list of floats) – the horizontal (x axis) widths of the coils (cm).
center_points (list of tuple of floats) – the center of the coil (x,z) values e.g. [(100,100), (100,200)] (cm).
name (str, optional) – defaults to “pf_coil”.
- create_solid()¶
Creates a 3d solid using points with straight connections edges, azimuth_placement_angle and rotation angle. individual solids in the compound can be accessed using .Solids()[i] where i is an int
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the poloidal field coil shape.
PoloidalFieldCoilCase()¶
- class PoloidalFieldCoilCase(casing_thickness, coil_height, coil_width, center_point, name='poloidal_field_coil', color=(1.0, 1.0, 0.498), rotation_axis=None, rotation_angle=360.0, azimuth_placement_angle=0.0, workplane='XZ', cut=None, intersect=None, union=None, **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a casing for a rectangular coil from inputs that describe the existing coil and the thickness of the casing required.
- Parameters
coil_height – the vertical (z axis) height of the coil (cm).
coil_width – the horizontal (x axis) width of the coil (cm).
center_point – the center of the coil (x,z) values (cm).
casing_thickness – the thickness of the coil casing (cm).
- create_solid()¶
Creates a rotated 3d solid using points with straight and spline edges.
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the poloidal field coil case shape.
PoloidalFieldCoilCaseFC()¶
- class PoloidalFieldCoilCaseFC(pf_coil, casing_thickness, color=(1.0, 1.0, 0.498), **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a casing for a rectangular poloidal field coil by building around an existing coil (which is passed as an argument on construction).
- Parameters
pf_coil (paramak.PoloidalFieldCoil) – a pf coil object with a set width, height and center point.
casing_thickness (float) – the thickness of the coil casing (cm).
- create_solid()¶
Creates a rotated 3d solid using points with straight and spline edges.
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the poloidal field coil case shape.
PoloidalFieldCoilCaseSet()¶
- class PoloidalFieldCoilCaseSet(heights, widths, casing_thicknesses, center_points, name='pf_coil_case_set', color=(1.0, 1.0, 0.498), **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a series of rectangular poloidal field coils.
- Parameters
heights (list of floats) – the vertical (z axis) heights of the coil (cm).
widths (list of floats) – the horizontal (x axis) widths of the coil (cm).
casing_thicknesses (float or list of floats) – the thicknesses of the coil casing (cm). If float then the same thickness is applied to all coils. If list of floats then each entry is applied to a separate pf_coil, one entry for each pf_coil.
center_points (tuple of floats) – the center of the coil (x,z) values (cm).
name (str, optional) – defaults to “pf_coil_case_set”.
- create_solid()¶
Creates a 3d solid using points with straight edges.
- Returns
A 3D solid volume
- Return type
A CadQuery solid
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the poloidal field coil shape.
PoloidalFieldCoilCaseSetFC()¶
- class PoloidalFieldCoilCaseSetFC(pf_coils, casing_thicknesses, name='pf_coil_case_set_fc', color=(1.0, 1.0, 0.498), **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a series of rectangular poloidal field coils.
- Parameters
pf_coils (paramak.PoloidalFieldCoil) – a list of pf coil objects or a CadQuery compound object
casing_thicknesses (float or list of floats) – the thicknesses of the coil casing (cm). If float then the same thickness is applied to all coils. If list of floats then each entry is applied to a seperate pf_coil, one entry for each pf_coil.
name (str, optional) – defaults to “pf_coil_case_set_fc”.
- create_solid()¶
Creates a 3d solid using points with straight edges. Individual solids in the compound can be accessed using .Solids()[i] where i is an int
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the poloidal field coil shape.
Port Cutters¶
PortCutterRotated()¶
- class PortCutterRotated(center_point, polar_coverage_angle=10.0, polar_placement_angle=0.0, max_distance_from_center=3000.0, fillet_radius=0.0, rotation_angle=10.0, name='port_cutter', **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates wedges from a central point with angular extent in polar direction. To control the width the rotation_angle argument can be used. This is useful as a cutting volume for the creation of ports in blankets.
- Parameters
center_point (tuple of floats) – the center point where the ports are aimed towards, typically the center of the plasma.
polar_coverage_angle (float) – the angular extent of port in the polar direction (degrees). Defaults to 10.0.
polar_placement_angle (float) – The angle used when rotating the shape on the polar axis. 0 degrees is the outboard equatorial point. Defaults to 0.0.
max_distance_from_center (float) – the maximum distance from the center point outwards (cm). Default 3000.0.
fillet_radius (float, optional) – If not None, radius (cm) of fillets added to all edges. Defaults to 0.0.
rotation_angle (float, optional) – defaults to 10.0.
name (str, optional) – defaults to “port_cutter”.
- add_fillet()¶
adds fillets to all edges
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the port cutter.
PortCutterRectangular()¶
- class PortCutterRectangular(height, width, distance, center_point=(0, 0), workplane='ZY', rotation_axis='Z', extrusion_start_offset=1.0, fillet_radius=None, name='rectangular_port_cutter', **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_straight_shape.ExtrudeStraightShape
Creates an extruded shape with a rectangular section that is used to cut other components (eg. blanket, vessel,..) in order to create ports.
- Parameters
height – height (cm) of the port cutter.
width – width (cm) of the port cutter.
distance – extruded distance (cm) of the port cutter.
center_point – Center point of the port cutter. Defaults to (0, 0).
workplane – workplane in which the port cutters are created. Defaults to “ZY”.
rotation_axis – axis around which the port cutters are rotated and placed. Defaults to “Z”.
extrusion_start_offset (float, optional) – the distance between 0 and the start of the extrusion. Defaults to 1..
fillet_radius (float, optional) – If not None, radius (cm) of fillets added to edges orthogonal to the Z direction. Defaults to None.
name (str, optional) – defaults to “rectangular_port_cutter”.
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
PortCutterCircular()¶
- class PortCutterCircular(radius, distance, center_point=(0, 0), workplane='ZY', rotation_axis='Z', extrusion_start_offset=1.0, name='circular_port_cutter', **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_circle_shape.ExtrudeCircleShape
Creates an extruded shape with a circular section that is used to cut other components (eg. blanket, vessel,..) in order to create ports.
- Parameters
radius – radius (cm) of port cutter.
distance – extruded distance (cm) of the port cutter.
center_point – center point of the port cutter. Defaults to (0, 0).
workplane – workplane in which the port cutters are created. Defaults to “ZY”.
rotation_axis – axis around which the port cutters are rotated and placed. Defaults to “Z”.
extrusion_start_offset – the distance between 0 and the start of the extrusion. Defaults to 1..
name – defaults to “circular_port_cutter”.
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
Plasmas¶
Plasma()¶
- class Plasma(elongation=2.0, major_radius=450.0, minor_radius=150.0, triangularity=0.55, vertical_displacement=0.0, num_points=50, configuration='non-null', x_point_shift=0.1, name='plasma', **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_spline_shape.RotateSplineShape
Creates a double null tokamak plasma shape that is controlled by 4 shaping parameters.
- Parameters
elongation (float, optional) – the elongation of the plasma. Defaults to 2.0.
major_radius (float, optional) – the major radius of the plasma (cm). Defaults to 450.0.
minor_radius (int, optional) – the minor radius of the plasma (cm). Defaults to 150.0.
triangularity (float, optional) – the triangularity of the plasma. Defaults to 0.55.
vertical_displacement (float, optional) – the vertical_displacement of the plasma (cm). Defaults to 0.0.
num_points (int, optional) – number of points to describe the shape. Defaults to 50.
configuration (str, optional) – plasma configuration (“non-null”, “single-null”, “double-null”). Defaults to “non-null”.
x_point_shift (float, optional) – shift parameters for locating the X points in [0, 1]. Defaults to 0.1.
name (str, optional) – Defaults to “plasma”.
- compute_x_points()¶
Computes the location of X points based on plasma parameters and configuration
- Returns
lower and upper x points coordinates. None if no x points
- Return type
((float, float), (float, float))
- find_points()¶
Finds the XZ points that describe the 2D profile of the plasma.
PlasmaFromPoints()¶
- class PlasmaFromPoints(outer_equatorial_x_point, inner_equatorial_x_point, high_point, **kwargs)¶
Bases:
paramak.parametric_components.tokamak_plasma.Plasma
Creates a double null tokamak plasma shape that is controlled by 3 coordinates.
- Parameters
outer_equatorial_x_point (float) – the x value of the outer equatorial of the plasma (cm).
inner_equatorial_x_point (float) – the x value of the inner equatorial of the plasma (cm).
high_point (tuple of 2 floats) – the (x,z) coordinate values of the top of the plasma (cm).
PlasmaBoundaries()¶
- class PlasmaBoundaries(A=0.05, elongation=2.0, major_radius=450.0, minor_radius=150.0, triangularity=0.55, vertical_displacement=0.0, configuration='non-null', x_point_shift=0.1, **kwargs)¶
Bases:
paramak.parametric_components.tokamak_plasma.Plasma
Creates a double null tokamak plasma shape that is controlled by 5 shaping parameters using the plasmaboundaries package to calculate points. For more details see: http://github.com/fusion-energy/plasmaboundaries
- Parameters
A (float, optional) – plasma parameter see plasmaboundaries doc. Defaults to 0.05.
elongation (float, optional) – the elongation of the plasma. Defaults to 2.0.
major_radius (float, optional) – the major radius of the plasma (cm). Defaults to 450.0.
minor_radius (float, optional) – the minor radius of the plasma (cm). Defaults to 150.0.
triangularity (float, optional) – the triangularity of the plasma. Defaults to 0.55.
vertical_displacement (float, optional) – the vertical_displacement of the plasma (cm). Defaults to 0.0.
configuration (str, optional) – plasma configuration (“non-null”, “single-null”, “double-null”). Defaults to “non-null”.
x_point_shift (float, optional) – Shift parameters for locating the X points in [0, 1]. Defaults to 0.1.
- find_points()¶
Finds the XZ points that describe the 2D profile of the plasma.
Toroidal Field Coils¶
TFCoilCasing()¶
- class TFCoilCasing(magnet, inner_offset, outer_offset, vertical_section_offset, **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_mixed_shape.ExtrudeMixedShape
Casing component for TF coils
- Parameters
magnet – TF coil shape
inner_offset – radial distance between inner coil surface and inner casing surface (cm)
outer_offset – radial distance between outer coil surface and outer casing surface (cm)
vertical_section_offset – radial distance between outer coil surface and outer vertical section surface (cm)
distance – extrusion distance (cm)
- create_solid()¶
Creates an extruded 3d solid using points connected with straight and spline edges.
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Calculates the shape points. Empty method which some components overright when inheritting.
ToroidalFieldCoilRectangle()¶
- class ToroidalFieldCoilRectangle(name='toroidal_field_coil', horizontal_start_point=(20, 200), vertical_mid_point=(350, 0), thickness=30, distance=20, number_of_coils=12, with_inner_leg=True, azimuth_start_angle=0, vertical_displacement=0.0, rotation_angle=360.0, color=(0.0, 0.0, 1.0), **kwargs)¶
Bases:
paramak.parametric_components.toroidal_field_coil.ToroidalFieldCoil
Creates a rectangular shaped toroidal field coil.
- Parameters
horizontal_start_point – the (x,z) coordinates of the inner upper point (cm).
vertical_mid_point – the (x,z) coordinates of the mid point of the vertical section (cm).
thickness – the thickness of the toroidal field coil.
distance – the extrusion distance.
number_of_coils – the number of tf coils. This changes by the azimuth_placement_angle dividing up 360 degrees by the number of coils.
with_inner_leg – include the inner tf leg. Defaults to True.
azimuth_start_angle – The azimuth angle to for the first TF coil which offsets the placement of coils around the azimuthal angle
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the poloidal field coil shape.
ToroidalFieldCoilCoatHanger()¶
- class ToroidalFieldCoilCoatHanger(name='toroidal_field_coil', horizontal_start_point=(40, 200), horizontal_length=200, vertical_mid_point=(400, 0), vertical_length=250, thickness=30, distance=20, number_of_coils=12, with_inner_leg=True, azimuth_start_angle=0, vertical_displacement=0.0, rotation_angle=360.0, color=(0.0, 0.0, 1.0), **kwargs)¶
Bases:
paramak.parametric_components.toroidal_field_coil.ToroidalFieldCoil
Creates a coat hanger shaped toroidal field coil.
- Parameters
horizontal_start_point – the (x,z) coordinates of the inner upper point (cm).
horizontal_length – the radial length of the horizontal section of the TF coil (cm).
vertical_mid_point – the (x,z) coordinates of the mid point of the outboard vertical section (cm).
vertical_length – the radial length of the outboard vertical section of the TF coil (cm).
thickness – the thickness of the toroidal field coil.
distance – the extrusion distance.
number_of_coils – the number of TF coils. This changes with azimuth_placement_angle dividing up 360 degrees by the number of coils.
with_inner_leg – Include the inner TF leg. Defaults to True.
azimuth_start_angle – The azimuth angle to for the first TF coil which offsets the placement of coils around the azimuthal angle
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the poloidal field coil shape.
ToroidalFieldCoilPrincetonD()¶
- class ToroidalFieldCoilPrincetonD(name='toroidal_field_coil', R1=100, R2=300, thickness=30, distance=20, number_of_coils=12, vertical_displacement=0.0, with_inner_leg=True, azimuth_start_angle=0, rotation_angle=360.0, color=(0.0, 0.0, 1.0), **kwargs)¶
Bases:
paramak.parametric_components.toroidal_field_coil.ToroidalFieldCoil
Toroidal field coil based on Princeton-D curve
- Parameters
R1 – smallest radius (cm)
R2 – largest radius (cm)
thickness – magnet thickness (cm)
distance – extrusion distance (cm)
number_of_coils – the number of tf coils. This changes by the azimuth_placement_angle dividing up 360 degrees by the number of coils.
vertical_displacement – vertical displacement (cm). Defaults to 0.0.
with_inner_leg – Include the inner tf leg. Defaults to True.
azimuth_start_angle – The azimuth angle to for the first TF coil which offsets the placement of coils around the azimuthal angle
rotation_angle – rotation angle of solid created. A cut is performed from rotation_angle to 360 degrees. Defaults to 360.0.
- find_points()¶
Finds the XZ points joined by connections that describe the 2D profile of the toroidal field coil shape.
ToroidalFieldCoilTripleArc()¶
- class ToroidalFieldCoilTripleArc(name='toroidal_field_coil', R1=80, h=200, radii=(70, 100), coverages=(60, 60), thickness=30, distance=20, number_of_coils=12, vertical_displacement=0.0, with_inner_leg=True, azimuth_start_angle=0, rotation_angle=360.0, color=(0.0, 0.0, 1.0), **kwargs)¶
Bases:
paramak.parametric_components.toroidal_field_coil.ToroidalFieldCoil
Toroidal field coil made of three arcs
- Parameters
R1 – smallest radius (cm).
h – height of the straight section (cm).
radii – radii of the small and medium arcs (cm).
coverages – coverages of the small and medium arcs (deg).
thickness – magnet thickness (cm).
distance – extrusion distance (cm).
number_of_coils – the number of TF coils. This changes by the azimuth_placement_angle dividing up 360 degrees by the number of coils.
vertical_displacement – vertical displacement (cm). Defaults to 0.0.
with_inner_leg – Include the inner tf leg. Defaults to True.
azimuth_start_angle – The azimuth angle to for the first TF coil which offsets the placement of coils around the azimuthal angle
- find_points()¶
Finds the XZ points joined by connections that describe the 2D profile of the toroidal field coil shape.
ToroidalFieldCoilRectangleRoundCorners()¶
- class ToroidalFieldCoilRectangleRoundCorners(name='toroidal_field_coil', lower_inner_coordinates=(100, 250), mid_point_coordinates=(500, 0), thickness=30, distance=20, number_of_coils=12, with_inner_leg=True, azimuth_start_angle=0, color=(0.0, 0.0, 1.0), **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_mixed_shape.ExtrudeMixedShape
Creates geometry for TF coil with rounded corners. Finds the coordinates for vertices of a TF coil, in a 2D profile on the XZ plane using the main function find_points() which takes 3 positional arguments for the TF coil parameters, and takes three additional boolean arguments.
- Parameters
lower_inner_coordinates (Tuple) – the (X,Z) coordinate of the inner corner of the lower end of the coil (cm)
mid_point_coordinates (Tuple) – the (X,Z) coordinate of the mid point of the vertical section (cm)
thickness – The thickness in the (X,Z) plane of the toroidal
coils (field) –
extrusiondistance – The total extruded thickness of the coils when in the y-direction (centered extrusion)
coil_count – The number of coils placed in the model (changing azimuth_placement_angle by dividing 360 by the amount given). Defaults to 1
with_inner_leg – Boolean to include the inside of the Coils defaults to False
azimuth_start_angle – The azimuth angle to for the first TF coil which offsets the placement of coils around the azimuthal angle
- create_solid()¶
Creates a Cadquery 3D geometry
- Returns
A 3D solid Volume
- Return type
CadQuery solid
- find_azimuth_placement_angle()¶
Finds the placement angles from the number of coils given in a 360 degree
- find_points()¶
lower_inner_coordinates must be a 2 element tuple mid_point_coordinates must be a 2 elemenet tuple thickness must be a float or an int
Vacuum Vessels¶
VacuumVessel()¶
- class VacuumVessel(height, inner_radius, thickness, **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
A cylindrical vessel volume with constant thickness.
- Parameters
height (float) – height of the vessel.
inner_radius (float) – the inner radius of the vessel.
thickness (float) – thickness of the vessel
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the vessel shape.
VacuumVesselInnerLeg()¶
- class VacuumVesselInnerLeg(inner_height, inner_radius, inner_leg_radius, thickness, **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
A cylindrical vessel volume with constant thickness.
- Parameters
inner_height – height of the vessel.
inner_radius – the inner radius of the vessel.
inner_leg_radius – the inner radius of the inner leg.
thickness – thickness of the vessel
- create_solid()¶
Creates a 3d solid using points with straight edges. Individual solids in the compound can be accessed using .Solids()[i] where i is an int
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the vessel shape.
CapsuleVacuumVessel()¶
- class CapsuleVacuumVessel(radius, outer_start_point, thickness, **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_mixed_shape.RotateMixedShape
A cylindrical vessel volume with constant thickness that has addition spherical edges.
- Parameters
outer_start_point – the x,z coordinates of the outer bottom of the vacuum vessel
radius – the radius from which the centres of the vessel meets the outer circumference.
thickness – the radial thickness of the vessel in cm.
- find_points()¶
Finds the XZ points joined by straight and circle connections that describe the 2D profile of the vessel shape.
Other components¶
ExtrudeRectangle()¶
- class ExtrudeRectangle(height, width, center_point, name='extrude_rectangle', **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_straight_shape.ExtrudeStraightShape
Creates a rectangular extrusion.
- Parameters
height – the vertical (z axis) height of the rectangle (cm).
width – the horizontal (x axis) width of the rectangle (cm).
center_point – the center of the rectangle (x,z) values (cm).
name – defaults to “extrude_rectangle”.
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the shape.
ExtrudeHollowRectangle()¶
- class ExtrudeHollowRectangle(height, width, distance, casing_thickness, name='extrude_hollow_rectangle', center_point=(0, 0), extrude_both=True, color=(0.5, 0.5, 0.5), azimuth_placement_angle=0.0, workplane='XZ', cut=None, intersect=None, union=None, **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_straight_shape.ExtrudeStraightShape
Creates a rectangular with a hollow section extrusion.
- Parameters
height – the vertical (z axis) height of the rectangle (cm).
width – the horizontal (x axis) width of the rectangle (cm).
casing_thickness – the thickness of the casing (cm).
center_point – the center of the rectangle (x,z) values (cm).
name – defaults to “extrude_rectangle”.
- create_solid()¶
Creates an extruded 3d solid using points connected with straight and spline edges.
- Returns:
A CadQuery solid: A 3D solid volume
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the shape.
HexagonPin()¶
- class HexagonPin(length_of_side, distance, center_point=(0, 0), name='hexagon_pin', **kwargs)¶
Bases:
paramak.parametric_shapes.extruded_straight_shape.ExtrudeStraightShape
Creates an extruded hexagon by a provided distance about a center point.
- Parameters
length_of_side – the length of one side of the hexagon (mm).
distance – extruded distance along the y-direction (mm).
center_point – the center of the hexagon on the x-z plane (mm).
name – defaults to “hexagon_pin”.
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the hexagon faced shape.
RotatedTrapezoid()¶
- class RotatedTrapezoid(length_1, length_2, length_3, pivot_point, pivot_angle=0.0, name='rotated_trapezoid', **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a rotated trapezoid (truncated triangle) shape.
- Parameters
length_1 (float) – the length of the top parrallel edge of the trapezoid (cm).
length_2 (float) – the length of the base parrallel edge of the trapezoid (cm).
length_3 (float) – the height of the trapezoid, the distances from top to base (cm).
pivot_point ((float, float)) – the coordinates of the center of rotation (x,z). The piviot point is located in the center of the length_1 edge (cm).
pivot_angle (float, optional) – the angle (in degrees) to pivot (rotate) the shape by around the pivot point. Defaults to 0.
name (str, optional) – defaults to “rotated_trapezoid”.
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the trapezoid shape.
RotatedIsoscelesTriangle¶
- class RotatedIsoscelesTriangle(base_length, height, pivot_point, pivot_angle=0.0, name='rotated_triangle', **kwargs)¶
Bases:
paramak.parametric_shapes.rotate_straight_shape.RotateStraightShape
Creates a rotated triangle (truncated triangle) shape.
- Parameters
base_length (float) – the length of the base of the triangle (cm).
height (float) – the height of the triangle (cm).
pivot_point ((float, float)) – the coordinates of the tip of the triangle at the opposite side to the base of the triangle.
pivot_angle (float, optional) – the angle (in degrees) to pivot (rotate) the shape by around the pivot point. Defaults to 0.
name (str, optional) – defaults to “rotated_triangle”.
- find_points()¶
Finds the XZ points joined by straight connections that describe the 2D profile of the triangle shape.