def setUp(self):
     self.test_shape = paramak.ToroidalFieldCoilPrincetonD(
         R1=100,
         R2=300,
         thickness=50,
         distance=30,
         number_of_coils=1,
         with_inner_leg=True)
Ejemplo n.º 2
0
def main():

    number_of_toroidal_field_coils = 8
    angle_offset = (360 / number_of_toroidal_field_coils) / 2.
    tf_coil_thickness = 50
    tf_coil_distance = 130

    tf_coil_casing_distance = tf_coil_distance + 40
    tf_coil_casing_thickness = 20

    inner_tf_case = paramak.InnerTfCoilsFlat(
        height=1800,
        inner_radius=330,
        outer_radius=430,
        number_of_coils=number_of_toroidal_field_coils,
        gap_size=5,
        rotation_angle=180,
        azimuth_start_angle=angle_offset)

    tf_coils = paramak.ToroidalFieldCoilPrincetonD(
        R1=400,
        R2=1500,  # height
        thickness=tf_coil_thickness,
        distance=tf_coil_distance,
        number_of_coils=number_of_toroidal_field_coils,
        rotation_angle=180,
    )

    tf_coil_casing = paramak.TFCoilCasing(
        magnet=tf_coils,
        distance=tf_coil_casing_distance,
        inner_offset=tf_coil_casing_thickness,
        outer_offset=tf_coil_casing_thickness,
        vertical_section_offset=tf_coil_casing_thickness,
        # rotation_angle=180,  # producing occational errors with this arg
    )

    pf_coils = paramak.PoloidalFieldCoilSet(
        heights=[100, 120, 80, 80, 120, 180],
        widths=[100, 120, 80, 80, 120, 180],
        center_points=[(530, 1030), (1370, 790), (1740, 250), (1750, -250),
                       (1360, -780), (680, -1050)],
        rotation_angle=180)

    pf_coils_casing = paramak.PoloidalFieldCoilCaseSetFC(
        pf_coils=pf_coils, casing_thicknesses=[10] * 6, rotation_angle=180)

    pf_coils.export_stp('pf_coils.stp')
    pf_coils_casing.export_stp('pf_coils_case.stp')

    tf_coils.export_stp('tf_coil.stp')
    tf_coil_casing.export_stp('tf_coil_casing.stp')
    inner_tf_case.export_stp('inner_tf_case.stp')
Ejemplo n.º 3
0
    def test_ToroidalFieldCoilPrincetonD_creation(self):
        """creates a ToroidalFieldCoilPrincetonD object and checks a solid is created"""

        test_shape = paramak.ToroidalFieldCoilPrincetonD(
            R1=100,
            R2=300,
            thickness=50,
            distance=50,
            number_of_coils=2,
        )

        assert test_shape.solid is not None
        assert test_shape.volume > 1000
Ejemplo n.º 4
0
    def test_ToroidalFieldCoilPrincetonD_with_leg(self):
        """creates a ToroidalFieldCoilPrincetonD object and checks a leg can
        be created"""

        my_magnet = paramak.ToroidalFieldCoilPrincetonD(R1=0.29,
                                                        R2=0.91,
                                                        thickness=0.05,
                                                        distance=0.05,
                                                        number_of_coils=1)
        my_magnet.export_stp('princeton.stp')

        my_leg = paramak.ExtrudeStraightShape(
            points=my_magnet.inner_leg_connection_points, distance=0.05)

        assert my_leg.solid is not None
Ejemplo n.º 5
0
    def test_ToroidalFieldCoilPrincetonD_rotation_angle(self):
        """creates a tf coil with a rotation_angle < 360 and checks that the correct
        cut is performed and the volume is correct"""

        test_shape = paramak.ToroidalFieldCoilPrincetonD(
            R1=50,
            R2=150,
            thickness=30,
            distance=30,
            number_of_coils=8,
        )
        test_volume = test_shape.volume

        test_shape.rotation_angle = 180

        assert test_shape.volume == pytest.approx(test_volume * 0.5, rel=0.01)
Ejemplo n.º 6
0
def make_center_column_study_reactor(
        outputs=['stp', 'neutronics', 'svg', 'stl', 'html']):

    my_reactor = paramak.CenterColumnStudyReactor(
        inner_bore_radial_thickness=20,
        inboard_tf_leg_radial_thickness=50,
        center_column_shield_radial_thickness_mid=50,
        center_column_shield_radial_thickness_upper=100,
        inboard_firstwall_radial_thickness=20,
        divertor_radial_thickness=100,
        inner_plasma_gap_radial_thickness=80,
        plasma_radial_thickness=200,
        outer_plasma_gap_radial_thickness=90,
        elongation=2.3,
        triangularity=0.45,
        plasma_gap_vertical_thickness=40,
        center_column_arc_vertical_thickness=520,
        rotation_angle=180)

    # adding in some TF coils
    tf_magnet = paramak.ToroidalFieldCoilPrincetonD(R1=20 + 50,
                                                    R2=20 + 50 + 50 + 80 +
                                                    200 + 90 + 100 + 20,
                                                    thickness=50,
                                                    distance=50,
                                                    number_of_coils=12,
                                                    rotation_angle=180)

    my_reactor.shapes_and_components.append(tf_magnet)

    if 'stp' in outputs:
        my_reactor.export_stp(output_folder='CenterColumnStudyReactor')
    if 'neutronics' in outputs:
        my_reactor.export_neutronics_description(
            'CenterColumnStudyReactor/manifest.json')
    if 'svg' in outputs:
        my_reactor.export_svg('CenterColumnStudyReactor/reactor.svg')
    if 'stl' in outputs:
        my_reactor.export_stl(output_folder='CenterColumnStudyReactor')
    if 'html' in outputs:
        my_reactor.export_html('CenterColumnStudyReactor/reactor.html')
Ejemplo n.º 7
0
    def setUp(self):
        inner_offset = 10
        outer_offset = 10
        magnet_thickness = 5
        magnet_extrude_distance = 10
        vertical_section_offset = 20
        casing_extrude_distance = magnet_extrude_distance * 2

        # create a princeton D magnet
        magnet = paramak.ToroidalFieldCoilPrincetonD(
            R1=100,
            R2=200,
            thickness=magnet_thickness,
            distance=magnet_extrude_distance,
            number_of_coils=1)

        self.test_shape = paramak.TFCoilCasing(
            magnet=magnet,
            distance=casing_extrude_distance,
            inner_offset=inner_offset,
            outer_offset=outer_offset,
            vertical_section_offset=vertical_section_offset)
Ejemplo n.º 8
0
def main(rotation_angle=180):

    inboard_pf_coils = paramak.PoloidalFieldCoilSet(
        center_points=[
            (53.5, -169.58),
            (53.5, -118.43),
            (53.5, -46.54),
            (53.5, 46.54),
            (53.5, 118.43),
            (53.5, 169.58),
        ],
        heights=[
            41.5,
            40.5,
            82.95,
            82.95,
            40.5,
            41.5,
        ],
        widths=[27.7, 27.7, 27.7, 27.7, 27.7, 27.7],
        rotation_angle=rotation_angle,
        stp_filename='inboard_pf_coils.stp')

    outboard_pf_coils = paramak.PoloidalFieldCoilSet(
        center_points=[
            (86, 230),
            (86, -230),
            (164, 241),
            (164, -241),
            (263, 222),
            (263, -222),
            (373, 131),
            (373, -131),
        ],
        widths=[
            32,
            32,
            50,
            50,
            43,
            43,
            48,
            48,
        ],
        heights=[
            40,
            40,
            30,
            30,
            28,
            28,
            37,
            37,
        ],
        rotation_angle=rotation_angle,
        stp_filename='outboard_pf_coils.stp')

    div_coils = paramak.PoloidalFieldCoilSet(center_points=[
        (207, 144),
        (207, 125),
        (207, -144),
        (207, -125),
    ],
                                             widths=[15, 15, 15, 15],
                                             heights=[15, 15, 15, 15],
                                             rotation_angle=rotation_angle,
                                             stp_filename='div_coils.stp')

    vs_coils = paramak.PoloidalFieldCoilSet(center_points=[
        (240, 70),
        (240, -70),
    ],
                                            widths=[10, 10],
                                            heights=[10, 10],
                                            rotation_angle=rotation_angle,
                                            stp_filename='vs_coils.stp')

    EFCCu_coils_1 = paramak.RotateStraightShape(
        points=[
            (235.56581986143186, -127.64976958525347),
            (240.1847575057737, -121.19815668202767),
            (246.65127020785218, -125.80645161290323),
            (242.0323325635104, -132.25806451612902),
        ],
        rotation_angle=rotation_angle,
        stp_filename='EFCCu_coils_1.stp')
    EFCCu_coils_2 = paramak.RotateStraightShape(
        points=[
            (262.3556581986143, -90.78341013824888),
            (266.97459584295615, -84.33179723502303),
            (273.44110854503464, -88.94009216589859),
            (268.82217090069287, -94.47004608294935),
        ],
        rotation_angle=rotation_angle,
        stp_filename='EFCCu_coils_2.stp')
    EFCCu_coils_3 = paramak.RotateStraightShape(
        points=[
            (281.7551963048499, -71.42857142857144),
            (289.1454965357968, -71.42857142857144),
            (289.1454965357968, -78.80184331797238),
            (281.7551963048499, -78.80184331797238),
        ],
        rotation_angle=rotation_angle,
        stp_filename='EFCCu_coils_3.stp')

    EFCCu_coils_4 = paramak.RotateStraightShape(
        points=[
            (235.56581986143186, 127.64976958525347),
            (240.1847575057737, 121.19815668202767),
            (246.65127020785218, 125.80645161290323),
            (242.0323325635104, 132.25806451612902),
        ],
        rotation_angle=rotation_angle,
        stp_filename='EFCCu_coils_4.stp')
    EFCCu_coils_5 = paramak.RotateStraightShape(
        points=[
            (262.3556581986143, 90.78341013824888),
            (266.97459584295615, 84.33179723502303),
            (273.44110854503464, 88.94009216589859),
            (268.82217090069287, 94.47004608294935),
        ],
        rotation_angle=rotation_angle,
        stp_filename='EFCCu_coils_5.stp')
    EFCCu_coils_6 = paramak.RotateStraightShape(
        points=[
            (281.7551963048499, 71.42857142857144),
            (289.1454965357968, 71.42857142857144),
            (289.1454965357968, 78.80184331797238),
            (281.7551963048499, 78.80184331797238),
        ],
        rotation_angle=rotation_angle,
        stp_filename='EFCCu_coils_6.stp')

    plasma = paramak.Plasma(
        major_radius=185,
        minor_radius=57 - 6,  # 3 is a small ofset to avoid overlaps
        triangularity=0.31,
        elongation=1.97,
        rotation_angle=rotation_angle,
        stp_filename='plasma.stp',
    )

    antenna = paramak.RotateMixedShape(points=[
        (263.2794457274827, 46.5437788018433, 'straight'),
        (263.2794457274827, -46.54377880184336, 'straight'),
        (231.87066974595842, -46.54377880184336, 'spline'),
        (243.87990762124713, 0, 'spline'),
        (231.87066974595842, 46.5437788018433, 'straight'),
    ],
                                       rotation_angle=rotation_angle,
                                       stp_filename='antenna.stp')

    tf_coil = paramak.ToroidalFieldCoilPrincetonD(
        R1=105,
        R2=339,
        thickness=33,
        distance=33,
        number_of_coils=12,
        rotation_angle=rotation_angle,
        stp_filename='tf_coil.stp')

    vac_vessel = paramak.RotateStraightShape(points=[
        (117.32101616628177, 126.72811059907835),
        (163.51039260969978, 170.04608294930875),
        (181.98614318706697, 171.88940092165896),
        (196.76674364896073, 169.12442396313364),
        (196.76674364896073, 115.66820276497694),
        (236.4896073903002, 114.74654377880185),
        (273.44110854503464, 65.89861751152074),
        (272.51732101616625, -65.89861751152074),
        (236.4896073903002, -115.66820276497697),
        (196.76674364896073, -115.66820276497697),
        (196.76674364896073, -169.12442396313367),
        (181.98614318706697, -172.81105990783408),
        (163.51039260969978, -170.04608294930875),
        (117.32101616628177, -126.72811059907832),
        (117.32101616628177, 123.04147465437785),
        (123.78752886836028, 123.04147465437785),
        (123.78752886836028, -123.963133640553),
        (165.3579676674365, -162.67281105990781),
        (181.98614318706697, -164.5161290322581),
        (190.3002309468822, -162.67281105990781),
        (190.3002309468822, -112.90322580645159),
        (193.99538106235568, -109.21658986175117),
        (232.7944572748268, -109.21658986175117),
        (266.97459584295615, -63.13364055299536),
        (266.05080831408776, 62.21198156682027),
        (232.7944572748268, 109.21658986175115),
        (193.99538106235568, 109.21658986175115),
        (190.3002309468822, 111.98156682027647),
        (190.3002309468822, 162.67281105990784),
        (181.98614318706697, 164.51612903225805),
        (165.3579676674365, 162.67281105990784),
        (123.78752886836028, 123.04147465437785),
        (117.32101616628177, 123.04147465437785),
    ],
                                             rotation_angle=rotation_angle,
                                             stp_filename='vacvessel.stp')

    inner_vessel = paramak.RotateMixedShape(
        points=[
            (269.7459584295612, -46.54377880184336, 'straight'),
            (231.87066974595842, -46.5437788018433, 'spline'),
            (223.55658198614316, -62.21198156682027, 'spline'),
            (207.85219399538107, -80.64516129032262, 'spline'),
            (166.28175519630486, -115.66820276497697, 'spline'),
            (164.43418013856814, -119.35483870967744, 'spline'),
            (164.43418013856814, -122.11981566820276, 'straight'),
            (173.67205542725173, -140.5529953917051, 'straight'),
            (184.75750577367205, -140.5529953917051, 'straight'),
            (184.75750577367205, -158.98617511520735, 'straight'),
            (181.98614318706697, -159.9078341013825, 'straight'),
            (147.80600461893764, -118.43317972350235, 'straight'),
            (129.33025404157044, -123.04147465437785, 'straight'),
            (145.95842956120094, -111.05990783410135, 'straight'),
            (126.55889145496536, -50.23041474654377, 'straight'),
            (127.48267898383372, 50.23041474654377, 'straight'),
            (145.95842956120094, 110.13824884792626, 'straight'),
            (128.40646651270208, 123.04147465437785, 'straight'),
            (147.80600461893764, 117.51152073732717, 'straight'),
            (181.98614318706697, 159.90783410138246, 'straight'),
            (185.6812933025404, 158.98617511520735, 'straight'),
            (184.75750577367205, 140.55299539170505, 'straight'),
            (172.74826789838338, 140.55299539170505, 'spline'),
            (164.43418013856814, 121.19815668202764, 'spline'),
            (164.43418013856814, 118.43317972350229, 'spline'),
            (165.3579676674365, 115.66820276497694, 'spline'),
            (173.67205542725173, 111.05990783410135, 'spline'),
            (207.85219399538107, 80.64516129032256, 'spline'),
            (220.7852193995381, 66.82027649769586, 'spline'),
            (231.87066974595842, 46.5437788018433, 'spline'),
            (268.82217090069287, 46.5437788018433, 'straight'),
            (268.82217090069287, 63.13364055299536, 'straight'),
            (233.71824480369514, 111.98156682027647, 'straight'),
            (193.99538106235568, 112.90322580645159, 'straight'),
            (192.14780600461893, 164.51612903225805, 'straight'),
            (163.51039260969978, 166.35944700460828, 'straight'),
            (121.93995381062356, 123.96313364055297, 'straight'),
            (121.0161662817552, -125.80645161290323, 'straight'),
            (163.51039260969978, -166.35944700460834, 'straight'),
            (192.14780600461893, -166.35944700460834, 'straight'),
            (193.99538106235568, -112.90322580645159, 'straight'),
            (234.64203233256353, -111.9815668202765, 'straight'),
            (269.7459584295612, -63.13364055299536, 'straight'),
        ],
        rotation_angle=rotation_angle,
        stp_filename='inner_vessel.stp',
        cut=[vac_vessel, vs_coils, antenna])

    sparc = paramak.Reactor([
        inboard_pf_coils, outboard_pf_coils, plasma, antenna, vs_coils,
        inner_vessel, tf_coil, EFCCu_coils_1, EFCCu_coils_2, EFCCu_coils_3,
        EFCCu_coils_4, EFCCu_coils_5, EFCCu_coils_6, vac_vessel, div_coils
    ])

    sparc.export_stp()
    sparc.export_svg('htc_reactor.svg')
    sparc.export_html('htc_reactor.html')
def main():

    rot_angle = 180
    all_components = []

    plasma = paramak.Plasma(
        # default parameters
        rotation_angle=rot_angle,
        stp_filename="plasma_shape.stp",
    )
    all_components.append(plasma)

    component = paramak.BlanketFP(
        plasma=plasma,
        thickness=100,
        stop_angle=90,
        start_angle=-90,
        offset_from_plasma=30,
        rotation_angle=rot_angle,
        stp_filename="blanket_constant_thickness_outboard_plasma.stp",
    )
    all_components.append(component)

    component = paramak.BlanketCutterStar(height=2000,
                                          width=2000,
                                          distance=100)
    all_components.append(component)

    component = paramak.BlanketFP(
        plasma=plasma,
        thickness=100,
        stop_angle=90,
        start_angle=250,
        offset_from_plasma=30,
        rotation_angle=rot_angle,
        stp_filename="blanket_constant_thickness_inboard_plasma.stp",
    )
    all_components.append(component)

    component = paramak.BlanketFP(
        plasma=plasma,
        thickness=100,
        stop_angle=250,
        start_angle=-90,
        offset_from_plasma=30,
        rotation_angle=rot_angle,
        stp_filename="blanket_constant_thickness_plasma.stp",
    )
    all_components.append(component)

    CenterColumnShieldCylinder = paramak.CenterColumnShieldCylinder(
        inner_radius=80,
        outer_radius=100,
        height=300,
        rotation_angle=rot_angle,
        stp_filename="center_column_shield_cylinder.stp",
    )
    all_components.append(CenterColumnShieldCylinder)

    component = paramak.InboardFirstwallFCCS(
        central_column_shield=CenterColumnShieldCylinder,
        thickness=50,
        rotation_angle=rot_angle,
        stp_filename="firstwall_from_center_column_shield_cylinder.stp",
    )
    all_components.append(component)

    CenterColumnShieldHyperbola = paramak.CenterColumnShieldHyperbola(
        inner_radius=50,
        mid_radius=75,
        outer_radius=100,
        height=300,
        rotation_angle=rot_angle,
        stp_filename="center_column_shield_hyperbola.stp",
    )
    all_components.append(CenterColumnShieldHyperbola)

    component = paramak.InboardFirstwallFCCS(
        central_column_shield=CenterColumnShieldHyperbola,
        thickness=50,
        rotation_angle=rot_angle,
        stp_filename="firstwall_from_center_column_shield_hyperbola.stp",
    )
    all_components.append(component)

    CenterColumnShieldCircular = paramak.CenterColumnShieldCircular(
        inner_radius=50,
        mid_radius=75,
        outer_radius=100,
        height=300,
        rotation_angle=rot_angle,
        stp_filename="center_column_shield_circular.stp",
    )
    all_components.append(CenterColumnShieldCircular)

    component = paramak.InboardFirstwallFCCS(
        central_column_shield=CenterColumnShieldCircular,
        thickness=50,
        rotation_angle=rot_angle,
        stp_filename="firstwall_from_center_column_shield_circular.stp",
    )
    all_components.append(component)

    CenterColumnShieldFlatTopHyperbola = paramak.CenterColumnShieldFlatTopHyperbola(
        inner_radius=50,
        mid_radius=75,
        outer_radius=100,
        arc_height=220,
        height=300,
        rotation_angle=rot_angle,
        stp_filename="center_column_shield_flat_top_hyperbola.stp",
    )
    all_components.append(CenterColumnShieldFlatTopHyperbola)

    component = paramak.InboardFirstwallFCCS(
        central_column_shield=CenterColumnShieldFlatTopHyperbola,
        thickness=50,
        rotation_angle=rot_angle,
        stp_filename=
        "firstwall_from_center_column_shield_flat_top_hyperbola.stp",
    )
    all_components.append(component)

    CenterColumnShieldFlatTopCircular = paramak.CenterColumnShieldFlatTopCircular(
        inner_radius=50,
        mid_radius=75,
        outer_radius=100,
        arc_height=220,
        height=300,
        rotation_angle=rot_angle,
        stp_filename="center_column_shield_flat_top_Circular.stp",
    )
    all_components.append(CenterColumnShieldFlatTopCircular)

    component = paramak.InboardFirstwallFCCS(
        central_column_shield=CenterColumnShieldFlatTopCircular,
        thickness=50,
        rotation_angle=rot_angle,
        stp_filename=
        "firstwall_from_center_column_shield_flat_top_Circular.stp",
    )
    all_components.append(component)

    CenterColumnShieldPlasmaHyperbola = paramak.CenterColumnShieldPlasmaHyperbola(
        inner_radius=150,
        mid_offset=50,
        edge_offset=40,
        height=800,
        rotation_angle=rot_angle,
        stp_filename="center_column_shield_plasma_hyperbola.stp",
    )
    all_components.append(CenterColumnShieldPlasmaHyperbola)

    component = paramak.InboardFirstwallFCCS(
        central_column_shield=CenterColumnShieldPlasmaHyperbola,
        thickness=50,
        rotation_angle=rot_angle,
        stp_filename="firstwall_from_center_column_shield_plasma_hyperbola.stp",
    )
    all_components.append(component)

    component = paramak.InnerTfCoilsCircular(
        inner_radius=25,
        outer_radius=100,
        number_of_coils=10,
        gap_size=5,
        height=300,
        stp_filename="inner_tf_coils_circular.stp",
    )
    all_components.append(component)

    component = paramak.InnerTfCoilsFlat(
        inner_radius=25,
        outer_radius=100,
        number_of_coils=10,
        gap_size=5,
        height=300,
        stp_filename="inner_tf_coils_flat.stp",
    )
    all_components.append(component)

    # this makes 4 pf coil cases
    pf_coil_set = paramak.PoloidalFieldCoilCaseSet(
        heights=[10, 10, 20, 20],
        widths=[10, 10, 20, 40],
        casing_thicknesses=[5, 5, 10, 10],
        center_points=[(100, 100), (100, 150), (50, 200), (50, 50)],
        rotation_angle=rot_angle,
        stp_filename="pf_coil_case_set.stp")
    all_components.append(pf_coil_set)

    # this makes 4 pf coils
    pf_coil_set = paramak.PoloidalFieldCoilSet(heights=[10, 10, 20, 20],
                                               widths=[10, 10, 20, 40],
                                               center_points=[(100, 100),
                                                              (100, 150),
                                                              (50, 200),
                                                              (50, 50)],
                                               rotation_angle=rot_angle,
                                               stp_filename="pf_coil_set.stp")
    all_components.append(pf_coil_set)

    # this makes 4 pf coil cases for the 4 pf coils made above
    component = paramak.PoloidalFieldCoilCaseSetFC(
        pf_coils=pf_coil_set,
        casing_thicknesses=[5, 5, 10, 10],
        rotation_angle=rot_angle,
        stp_filename="pf_coil_cases_set.stp")
    all_components.append(component)

    # this makes 1 pf coils
    pf_coil = paramak.PoloidalFieldCoil(center_point=(100, 100),
                                        height=20,
                                        width=20,
                                        rotation_angle=rot_angle,
                                        stp_filename="poloidal_field_coil.stp")
    all_components.append(pf_coil)

    # this makes one PF coil case for the provided pf coil
    component = paramak.PoloidalFieldCoilCaseSetFC(
        pf_coils=[pf_coil],
        casing_thicknesses=[10],
        rotation_angle=rot_angle,
        stp_filename="pf_coil_cases_set_fc.stp")
    all_components.append(component)

    component = paramak.PoloidalFieldCoilCaseFC(
        pf_coil=pf_coil,
        casing_thickness=10,
        rotation_angle=rot_angle,
        stp_filename="poloidal_field_coil_case_fc.stp",
    )
    all_components.append(component)

    component = paramak.PoloidalFieldCoilCase(
        center_point=(100, 100),
        coil_height=20,
        coil_width=20,
        casing_thickness=10,
        rotation_angle=rot_angle,
        stp_filename="poloidal_field_coil_case.stp",
    )
    all_components.append(component)

    component = paramak.BlanketConstantThicknessArcV(
        inner_lower_point=(300, -200),
        inner_mid_point=(500, 0),
        inner_upper_point=(300, 200),
        thickness=100,
        rotation_angle=rot_angle,
        stp_filename="blanket_arc_v.stp",
    )
    all_components.append(component)

    component = paramak.BlanketConstantThicknessArcH(
        inner_lower_point=(300, -200),
        inner_mid_point=(400, 0),
        inner_upper_point=(300, 200),
        thickness=100,
        rotation_angle=rot_angle,
        stp_filename="blanket_arc_h.stp",
    )
    all_components.append(component)

    component = paramak.ToroidalFieldCoilRectangle(
        horizontal_start_point=(100, 700),
        vertical_mid_point=(800, 0),
        thickness=150,
        distance=60,
        stp_filename="tf_coil_rectangle.stp",
        number_of_coils=1,
    )
    all_components.append(component)

    component = paramak.ToroidalFieldCoilCoatHanger(
        horizontal_start_point=(200, 500),
        horizontal_length=400,
        vertical_mid_point=(700, 50),
        vertical_length=500,
        thickness=50,
        distance=50,
        stp_filename="toroidal_field_coil_coat_hanger.stp",
        number_of_coils=1,
    )
    all_components.append(component)

    component = paramak.ToroidalFieldCoilTripleArc(
        R1=80,
        h=200,
        radii=(70, 100),
        coverages=(60, 60),
        thickness=30,
        distance=30,
        number_of_coils=1,
        stp_filename="toroidal_field_coil_triple_arc.stp")
    all_components.append(component)

    magnet = paramak.ToroidalFieldCoilPrincetonD(
        R1=80,
        R2=300,
        thickness=30,
        distance=30,
        number_of_coils=1,
        stp_filename="toroidal_field_coil_princeton_d.stp")
    all_components.append(magnet)

    component = paramak.ITERtypeDivertor(
        # default parameters
        rotation_angle=rot_angle,
        stp_filename="ITER_type_divertor.stp",
    )
    all_components.append(component)

    component = paramak.PortCutterRotated(center_point=(450, 0),
                                          polar_coverage_angle=20,
                                          rotation_angle=10,
                                          polar_placement_angle=45,
                                          azimuth_placement_angle=0)
    all_components.append(component)

    component = paramak.PortCutterRectangular(
        distance=3,
        z_pos=0,
        height=0.2,
        width=0.4,
        fillet_radius=0.02,
        azimuth_placement_angle=[0, 45, 90, 180])
    all_components.append(component)

    component = paramak.PortCutterCircular(
        distance=3,
        z_pos=0.25,
        radius=0.1,
        # azimuth_placement_angle=[0, 45, 90, 180], # TODO: fix issue #548
        azimuth_placement_angle=[0, 45, 90],
    )
    all_components.append(component)

    component = paramak.VacuumVessel(height=2,
                                     inner_radius=1,
                                     thickness=0.2,
                                     rotation_angle=270)
    all_components.append(component)

    component = paramak.CoolantChannelRingStraight(
        height=200,
        channel_radius=10,
        ring_radius=70,
        number_of_coolant_channels=8,
        workplane="XY",
        rotation_axis="Z",
        stp_filename="coolant_channel_ring_straight.stp",
    )
    all_components.append(component)

    component = paramak.CoolantChannelRingCurved(
        height=200,
        channel_radius=10,
        ring_radius=70,
        mid_offset=-20,
        number_of_coolant_channels=8,
        workplane="XY",
        path_workplane="XZ",
        stp_filename="coolant_channel_ring_curved.stp",
        force_cross_section=True)
    all_components.append(component)

    component = paramak.RotatedIsoscelesTriangle(
        height=20,
        base_length=15,
        pivot_angle=0,
        pivot_point=(100, 50),
        rotation_angle=70,
        workplane='XY',
        stp_filename='rotated_isosceles_triangle.stp')
    all_components.append(component)

    component = paramak.RotatedTrapezoid(length_1=10,
                                         length_2=20,
                                         length_3=30,
                                         pivot_angle=0,
                                         pivot_point=(100, 50),
                                         rotation_angle=45,
                                         stp_filename='rotated_trapezoid.stp')
    all_components.append(component)

    component = paramak.PoloidalSegments(number_of_segments=5,
                                         center_point=(400, 50))
    all_components.append(component)

    component = paramak.TFCoilCasing(magnet=magnet,
                                     inner_offset=10,
                                     outer_offset=15,
                                     vertical_section_offset=20,
                                     distance=40)
    all_components.append(component)

    component = paramak.HexagonPin(length_of_side=5,
                                   distance=10,
                                   center_point=(10, 20))
    all_components.append(component)

    return all_components