示例#1
0
    def setUp(self):
        # makes the 3d geometry
        self.my_reactor = paramak.BallReactor(
            inner_bore_radial_thickness=1,
            inboard_tf_leg_radial_thickness=30,
            center_column_shield_radial_thickness=60,
            divertor_radial_thickness=50,
            inner_plasma_gap_radial_thickness=30,
            plasma_radial_thickness=300,
            outer_plasma_gap_radial_thickness=30,
            firstwall_radial_thickness=3,
            blanket_radial_thickness=100,
            blanket_rear_wall_radial_thickness=3,
            elongation=2.75,
            triangularity=0.5,
            rotation_angle=360,
        )

        # makes a homogenised material for the blanket from lithium lead and
        # eurofer
        self.blanket_material = nmm.MultiMaterial(
            fracs=[0.8, 0.2],
            materials=[
                nmm.Material('SiC'),
                nmm.Material('eurofer')
            ])

        self.source = openmc.Source()
        # sets the location of the source to x=0 y=0 z=0
        self.source.space = openmc.stats.Point((0, 0, 0))
        # sets the direction to isotropic
        self.source.angle = openmc.stats.Isotropic()
        # sets the energy distribution to 100% 14MeV neutrons
        self.source.energy = openmc.stats.Discrete([14e6], [1])
示例#2
0
def make_cad_model_with_paramak():
    """
    Makes a reactor object from using theparametric
    BallReactor. Exports the neutronics description
    and stp files for the reactor
    """
    my_reactor = paramak.BallReactor(inner_bore_radial_thickness=50,
                                     inboard_tf_leg_radial_thickness=200,
                                     center_column_shield_radial_thickness=50,
                                     divertor_radial_thickness=50,
                                     inner_plasma_gap_radial_thickness=50,
                                     plasma_radial_thickness=100,
                                     outer_plasma_gap_radial_thickness=50,
                                     firstwall_radial_thickness=5,
                                     blanket_radial_thickness=100,
                                     blanket_rear_wall_radial_thickness=10,
                                     elongation=2,
                                     triangularity=0.55,
                                     number_of_tf_coils=16,
                                     rotation_angle=360)

    my_reactor.export_stp()

    my_reactor.export_neutronics_description()

    return my_reactor
def main():

    my_reactor = paramak.BallReactor(
        inner_bore_radial_thickness=10,
        inboard_tf_leg_radial_thickness=30,
        center_column_shield_radial_thickness=60,
        divertor_radial_thickness=150,
        inner_plasma_gap_radial_thickness=30,
        plasma_radial_thickness=300,
        outer_plasma_gap_radial_thickness=30,
        firstwall_radial_thickness=30,
        blanket_radial_thickness=50,
        blanket_rear_wall_radial_thickness=30,
        elongation=2,
        triangularity=0.55,
        number_of_tf_coils=16,
        rotation_angle=180,
        pf_coil_radial_thicknesses=[50, 50, 50, 50],
        pf_coil_vertical_thicknesses=[50, 50, 50, 50],
        pf_coil_to_rear_blanket_radial_gap=50,
        pf_coil_to_tf_coil_radial_gap=50,
        outboard_tf_coil_radial_thickness=100,
        outboard_tf_coil_poloidal_thickness=50)

    my_reactor.export_stp()

    my_reactor.export_neutronics_description()
示例#4
0
def make_neutronics_geometry(
        inner_bore_radial_thickness, inboard_tf_leg_radial_thickness,
        center_column_shield_radial_thickness, divertor_radial_thickness,
        inner_plasma_gap_radial_thickness, plasma_radial_thickness,
        outer_plasma_gap_radial_thickness, firstwall_radial_thickness,
        blanket_radial_thickness, blanket_rear_wall_radial_thickness,
        elongation, triangularity, number_of_tf_coils, rotation_angle):
    """
    Makes a reactor object from using theparametric
    BallReactor. Exports the neutronics description
    and stp files for the reactor
    """

    input_parameters = locals()

    my_reactor = paramak.BallReactor(
        inner_bore_radial_thickness=inner_bore_radial_thickness,
        inboard_tf_leg_radial_thickness=inboard_tf_leg_radial_thickness,
        center_column_shield_radial_thickness=
        center_column_shield_radial_thickness,
        divertor_radial_thickness=divertor_radial_thickness,
        inner_plasma_gap_radial_thickness=inner_plasma_gap_radial_thickness,
        plasma_radial_thickness=plasma_radial_thickness,
        outer_plasma_gap_radial_thickness=outer_plasma_gap_radial_thickness,
        firstwall_radial_thickness=firstwall_radial_thickness,
        blanket_radial_thickness=blanket_radial_thickness,
        blanket_rear_wall_radial_thickness=blanket_rear_wall_radial_thickness,
        elongation=elongation,
        triangularity=triangularity,
        number_of_tf_coils=number_of_tf_coils,
        rotation_angle=rotation_angle)

    my_reactor.export_stp()
    my_reactor.export_html('reactor.html')

    my_reactor.export_neutronics_description()
    """
    Uses Trelis together with a python script to
    reading the stp files assign material tags to
    the volumes and create a watertight h5m DAGMC
    file which can be used as neutronics geometry.
    """

    os.system('trelis -batch -nographics make_faceteted_neutronics_model.py')
    #     os.system('trelis make_faceteted_neutronics_model.py')

    os.system('make_watertight dagmc_notwatertight.h5m -o dagmc.h5m')

    # returns all the inputs and some extra reactor attributes, merged into a single dictionary
    return {
        **input_parameters,
        **{
            'major_radius': my_reactor.major_radius,
            'minor_radius': my_reactor.minor_radius
        }
    }
示例#5
0
 def setUp(self):
     self.test_reactor = paramak.BallReactor(
         inner_bore_radial_thickness=50,
         inboard_tf_leg_radial_thickness=200,
         center_column_shield_radial_thickness=50,
         divertor_radial_thickness=100,
         inner_plasma_gap_radial_thickness=150,
         plasma_radial_thickness=100,
         outer_plasma_gap_radial_thickness=50,
         firstwall_radial_thickness=50,
         blanket_radial_thickness=100,
         blanket_rear_wall_radial_thickness=10,
         elongation=2,
         triangularity=0.55,
         number_of_tf_coils=16,
         rotation_angle=180,
     )
示例#6
0
def make_random_reactors(number_of_images=11):
    """Makes a series of random sized reactors and exports an svg image for
    each one. Combines the svg images into a gif animation."""

    # makes a series of reactor models
    for i in range(number_of_images):

        my_reactor = paramak.BallReactor(
            inner_bore_radial_thickness=50,
            inboard_tf_leg_radial_thickness=np.random.uniform(20, 50),
            center_column_shield_radial_thickness=np.random.uniform(20, 60),
            divertor_radial_thickness=50,
            inner_plasma_gap_radial_thickness=50,
            plasma_radial_thickness=np.random.uniform(20, 200),
            outer_plasma_gap_radial_thickness=50,
            firstwall_radial_thickness=5,
            blanket_radial_thickness=np.random.uniform(10, 200),
            blanket_rear_wall_radial_thickness=10,
            elongation=np.random.uniform(1.3, 1.7),
            triangularity=np.random.uniform(0.3, 0.55),
            number_of_tf_coils=16,
            rotation_angle=180,
            pf_coil_radial_thicknesses=[50, 50, 50, 50],
            pf_coil_vertical_thicknesses=[30, 30, 30, 30],
            pf_coil_to_rear_blanket_radial_gap=20,
            pf_coil_to_tf_coil_radial_gap=50,
            outboard_tf_coil_radial_thickness=100,
            outboard_tf_coil_poloidal_thickness=50,
        )

        my_reactor.export_svg(
            filename="random_" + str(i).zfill(4) + ".svg",
            showHidden=False
        )

        print("made", str(i + 1), "models out of", str(number_of_images))

    subprocess.check_call(
        ["convert", "-delay", "40", "random_*.svg", "randoms.gif"])

    print("animation file made as saved as randoms.gif")
示例#7
0
    def test_BallReactor_svg_creation(self):
        os.system("rm test_ballreactor_image.svg")

        my_reactor = paramak.BallReactor(
            inner_bore_radial_thickness=50,
            inboard_tf_leg_radial_thickness=200,
            center_column_shield_radial_thickness=50,
            divertor_radial_thickness=172.5,
            inner_plasma_gap_radial_thickness=150,
            plasma_radial_thickness=100,
            outer_plasma_gap_radial_thickness=50,
            firstwall_radial_thickness=50,
            blanket_radial_thickness=100,
            blanket_rear_wall_radial_thickness=10,
            elongation=2,
            triangularity=0.55,
            number_of_tf_coils=16,
        )
        my_reactor.export_svg('test_ballreactor_image.svg')

        assert Path("test_ballreactor_image.svg").exists() is True
        os.system("rm test_ballreactor_image.svg")
示例#8
0
    def test_BallReactor_creation_without_extra_blanket_needed(self):
        """creates blanket from parametric shape and checks a solid is created"""

        test_reactor = paramak.BallReactor(
            inner_bore_radial_thickness=50,
            inboard_tf_leg_radial_thickness=200,
            center_column_shield_radial_thickness=50,
            divertor_radial_thickness=172.5,
            inner_plasma_gap_radial_thickness=150,
            plasma_radial_thickness=100,
            outer_plasma_gap_radial_thickness=50,
            firstwall_radial_thickness=50,
            blanket_radial_thickness=100,
            blanket_rear_wall_radial_thickness=10,
            elongation=2,
            triangularity=0.55,
            number_of_tf_coils=16,
        )

        test_reactor.export_stp()

        assert len(test_reactor.shapes_and_components) == 8
示例#9
0
 def test_BallReactor_with_pf_coils(self):
     test_reactor = paramak.BallReactor(
         inner_bore_radial_thickness=50,
         inboard_tf_leg_radial_thickness=50,
         center_column_shield_radial_thickness=50,
         divertor_radial_thickness=100,
         inner_plasma_gap_radial_thickness=50,
         plasma_radial_thickness=200,
         outer_plasma_gap_radial_thickness=50,
         firstwall_radial_thickness=50,
         blanket_radial_thickness=100,
         blanket_rear_wall_radial_thickness=50,
         elongation=2,
         triangularity=0.55,
         number_of_tf_coils=16,
         rotation_angle=180,
         pf_coil_radial_thicknesses=[50, 50, 50, 50],
         pf_coil_vertical_thicknesses=[50, 50, 50, 50],
         pf_coil_to_rear_blanket_radial_gap=50,
         pf_coil_to_tf_coil_radial_gap=50,
     )
     test_reactor.export_stp()
     assert len(test_reactor.shapes_and_components) == 12
示例#10
0
def make_model_and_simulate():
    """Makes a neutronics Reactor model and simulates the TBR with specified materials"""

    # based on
    # http://www.euro-fusionscipub.org/wp-content/uploads/WPBBCP16_15535_submitted.pdf
    firstwall_radial_thickness = 3.0
    firstwall_armour_material = "tungsten"
    firstwall_coolant_material = "He"
    firstwall_structural_material = "eurofer"
    firstwall_armour_fraction = 0.106305
    firstwall_coolant_fraction = 0.333507
    firstwall_coolant_temperature_C = 400
    firstwall_coolant_pressure_Pa = 8e6
    firstwall_structural_fraction = 0.560188

    firstwall_material = nmm.MultiMaterial(
        material_tag="firstwall_mat",
        materials=[
            nmm.Material(
                material_name=firstwall_coolant_material,
                temperature_in_C=firstwall_coolant_temperature_C,
                pressure_in_Pa=firstwall_coolant_pressure_Pa,
            ),
            nmm.Material(material_name=firstwall_structural_material),
            nmm.Material(material_name=firstwall_armour_material),
        ],
        fracs=[
            firstwall_coolant_fraction,
            firstwall_structural_fraction,
            firstwall_armour_fraction,
        ],
        percent_type="vo")

    # based on
    # https://www.sciencedirect.com/science/article/pii/S2352179118300437
    blanket_rear_wall_coolant_material = "H2O"
    blanket_rear_wall_structural_material = "eurofer"
    blanket_rear_wall_coolant_fraction = 0.3
    blanket_rear_wall_structural_fraction = 0.7
    blanket_rear_wall_coolant_temperature_C = 200
    blanket_rear_wall_coolant_pressure_Pa = 1e6

    blanket_rear_wall_material = nmm.MultiMaterial(
        material_tag="blanket_rear_wall_mat",
        materials=[
            nmm.Material(
                material_name=blanket_rear_wall_coolant_material,
                temperature_in_C=blanket_rear_wall_coolant_temperature_C,
                pressure_in_Pa=blanket_rear_wall_coolant_pressure_Pa,
            ),
            nmm.Material(material_name=blanket_rear_wall_structural_material),
        ],
        fracs=[
            blanket_rear_wall_coolant_fraction,
            blanket_rear_wall_structural_fraction,
        ],
        percent_type="vo")

    # based on
    # https://www.sciencedirect.com/science/article/pii/S2352179118300437
    blanket_lithium6_enrichment_percent = 60
    blanket_breeder_material = "Li4SiO4"
    blanket_coolant_material = "He"
    blanket_multiplier_material = "Be"
    blanket_structural_material = "eurofer"
    blanket_breeder_fraction = 0.15
    blanket_coolant_fraction = 0.05
    blanket_multiplier_fraction = 0.6
    blanket_structural_fraction = 0.2
    blanket_breeder_packing_fraction = 0.64
    blanket_multiplier_packing_fraction = 0.64
    blanket_coolant_temperature_C = 500
    blanket_coolant_pressure_Pa = 1e6
    blanket_breeder_temperature_C = 600
    blanket_breeder_pressure_Pa = 8e6

    blanket_material = nmm.MultiMaterial(
        material_tag="blanket_mat",
        materials=[
            nmm.Material(
                material_name=blanket_coolant_material,
                temperature_in_C=blanket_coolant_temperature_C,
                pressure_in_Pa=blanket_coolant_pressure_Pa,
            ),
            nmm.Material(material_name=blanket_structural_material),
            nmm.Material(
                material_name=blanket_multiplier_material,
                packing_fraction=blanket_multiplier_packing_fraction,
            ),
            nmm.Material(
                material_name=blanket_breeder_material,
                enrichment=blanket_lithium6_enrichment_percent,
                packing_fraction=blanket_breeder_packing_fraction,
                temperature_in_C=blanket_breeder_temperature_C,
                pressure_in_Pa=blanket_breeder_pressure_Pa,
            ),
        ],
        fracs=[
            blanket_coolant_fraction,
            blanket_structural_fraction,
            blanket_multiplier_fraction,
            blanket_breeder_fraction,
        ],
        percent_type="vo")

    # based on
    # https://www.sciencedirect.com/science/article/pii/S2352179118300437
    divertor_coolant_fraction = 0.57195798876
    divertor_structural_fraction = 0.42804201123
    divertor_coolant_material = "H2O"
    divertor_structural_material = "tungsten"
    divertor_coolant_temperature_C = 150
    divertor_coolant_pressure_Pa = 5e6

    divertor_material = nmm.MultiMaterial(
        material_tag="divertor_mat",
        materials=[
            nmm.Material(
                material_name=divertor_coolant_material,
                temperature_in_C=divertor_coolant_temperature_C,
                pressure_in_Pa=divertor_coolant_pressure_Pa,
            ),
            nmm.Material(material_name=divertor_structural_material),
        ],
        fracs=[divertor_coolant_fraction, divertor_structural_fraction],
        percent_type="vo")

    # based on
    # https://pdfs.semanticscholar.org/95fa/4dae7d82af89adf711b97e75a241051c7129.pdf
    center_column_shield_coolant_fraction = 0.13
    center_column_shield_structural_fraction = 0.57
    center_column_shield_coolant_material = "H2O"
    center_column_shield_structural_material = "tungsten"
    center_column_shield_coolant_temperature_C = 150
    center_column_shield_coolant_pressure_Pa = 5e6

    center_column_shield_material = nmm.MultiMaterial(
        material_tag="center_column_shield_mat",
        materials=[
            nmm.Material(
                material_name=center_column_shield_coolant_material,
                temperature_in_C=center_column_shield_coolant_temperature_C,
                pressure_in_Pa=center_column_shield_coolant_pressure_Pa,
            ),
            nmm.Material(
                material_name=center_column_shield_structural_material),
        ],
        fracs=[
            center_column_shield_coolant_fraction,
            center_column_shield_structural_fraction,
        ],
        percent_type="vo")

    # based on
    # https://pdfs.semanticscholar.org/95fa/4dae7d82af89adf711b97e75a241051c7129.pdf
    inboard_tf_coils_conductor_fraction = 0.57
    inboard_tf_coils_coolant_fraction = 0.05
    inboard_tf_coils_structure_fraction = 0.38
    inboard_tf_coils_conductor_material = "copper"
    inboard_tf_coils_coolant_material = "He"
    inboard_tf_coils_structure_material = "SS_316L_N_IG"
    inboard_tf_coils_coolant_temperature_C = 30
    inboard_tf_coils_coolant_pressure_Pa = 8e6

    inboard_tf_coils_material = nmm.MultiMaterial(
        material_tag="inboard_tf_coils_mat",
        materials=[
            nmm.Material(
                material_name=inboard_tf_coils_coolant_material,
                temperature_in_C=inboard_tf_coils_coolant_temperature_C,
                pressure_in_Pa=inboard_tf_coils_coolant_pressure_Pa,
            ),
            nmm.Material(material_name=inboard_tf_coils_conductor_material),
            nmm.Material(material_name=inboard_tf_coils_structure_material),
        ],
        fracs=[
            inboard_tf_coils_coolant_fraction,
            inboard_tf_coils_conductor_fraction,
            inboard_tf_coils_structure_fraction,
        ],
        percent_type="vo")

    # makes the 3d geometry
    my_reactor = paramak.BallReactor(
        inner_bore_radial_thickness=1,
        inboard_tf_leg_radial_thickness=30,
        center_column_shield_radial_thickness=60,
        divertor_radial_thickness=50,
        inner_plasma_gap_radial_thickness=30,
        plasma_radial_thickness=300,
        outer_plasma_gap_radial_thickness=30,
        firstwall_radial_thickness=firstwall_radial_thickness,
        # http://www.euro-fusionscipub.org/wp-content/uploads/WPBBCP16_15535_submitted.pdf
        blanket_radial_thickness=100,
        blanket_rear_wall_radial_thickness=3,
        elongation=2.75,
        triangularity=0.5,
        number_of_tf_coils=16,
        rotation_angle=360,
    )

    source = openmc.Source()
    # sets the location of the source to x=0 y=0 z=0
    source.space = openmc.stats.Point((my_reactor.major_radius, 0, 0))
    # sets the direction to isotropic
    source.angle = openmc.stats.Isotropic()
    # sets the energy distribution to 100% 14MeV neutrons
    source.energy = openmc.stats.Discrete([14e6], [1])

    # makes the neutronics material
    neutronics_model = paramak.NeutronicsModel(
        geometry=my_reactor,
        source=source,
        materials={
            'inboard_tf_coils_mat': inboard_tf_coils_material,
            'center_column_shield_mat': center_column_shield_material,
            'divertor_mat': divertor_material,
            'firstwall_mat': firstwall_material,
            'blanket_mat': blanket_material,
            'blanket_rear_wall_mat': blanket_rear_wall_material
        },
        cell_tallies=['TBR'],
        simulation_batches=5,
        simulation_particles_per_batch=1e4,
    )

    # starts the neutronics simulation
    neutronics_model.simulate(method='trelis')

    # prints the simulation results to screen
    print('TBR', neutronics_model.results['TBR'])
示例#11
0
parser.add_argument("-n", "--number_of_models", type=int, default=10)
args = parser.parse_args()

for i in tqdm(range(args.number_of_models)):

    my_reactor = paramak.BallReactor(
        inner_bore_radial_thickness=50,
        inboard_tf_leg_radial_thickness=np.random.uniform(20, 50),
        center_column_shield_radial_thickness=np.random.uniform(20, 60),
        divertor_radial_thickness=50,
        inner_plasma_gap_radial_thickness=50,
        plasma_radial_thickness=np.random.uniform(20, 200),
        outer_plasma_gap_radial_thickness=50,
        firstwall_radial_thickness=5,
        blanket_radial_thickness=np.random.uniform(10, 200),
        blanket_rear_wall_radial_thickness=10,
        elongation=np.random.uniform(1.2, 1.7),
        triangularity=np.random.uniform(0.3, 0.55),
        number_of_tf_coils=16,
        rotation_angle=180,
        pf_coil_radial_thicknesses=[50, 50, 50, 50],
        pf_coil_vertical_thicknesses=[50, 50, 50, 50],
        pf_coil_to_rear_blanket_radial_gap=50,
        pf_coil_to_tf_coil_radial_gap=50,
        outboard_tf_coil_radial_thickness=100,
        outboard_tf_coil_poloidal_thickness=50,
    )

    my_reactor.export_2d_image(filename="output_for_animation_2d/" +
                               str(uuid.uuid4()) + ".png")
    my_reactor.export_svg(filename="output_for_animation_svg/" +
                          str(uuid.uuid4()) + ".svg")
示例#12
0
def make_model_and_simulate():
    """Makes a neutronics Reactor model and simulates the TBR"""

    # makes the 3d geometry
    my_reactor = paramak.BallReactor(
        inner_bore_radial_thickness=1,
        inboard_tf_leg_radial_thickness=30,
        center_column_shield_radial_thickness=60,
        divertor_radial_thickness=50,
        inner_plasma_gap_radial_thickness=30,
        plasma_radial_thickness=300,
        outer_plasma_gap_radial_thickness=30,
        firstwall_radial_thickness=3,
        blanket_radial_thickness=100,
        blanket_rear_wall_radial_thickness=3,
        elongation=2.75,
        triangularity=0.5,
        number_of_tf_coils=16,
        rotation_angle=360,
    )

    # makes a homogenised material for the blanket from lithium lead and
    # eurofer
    blanket_material = nmm.MultiMaterial(fracs=[0.8, 0.2],
                                         materials=[
                                             nmm.Material(
                                                 'Pb842Li158',
                                                 enrichment=90,
                                                 temperature_in_K=500),
                                             nmm.Material('eurofer')
                                         ])

    source = openmc.Source()
    # sets the location of the source to x=0 y=0 z=0
    source.space = openmc.stats.Point((my_reactor.major_radius, 0, 0))
    # sets the direction to isotropic
    source.angle = openmc.stats.Isotropic()
    # sets the energy distribution to 100% 14MeV neutrons
    source.energy = openmc.stats.Discrete([14e6], [1])

    # makes the neutronics material
    neutronics_model = paramak.NeutronicsModel(
        geometry=my_reactor,
        source=source,
        materials={
            'inboard_tf_coils_mat': 'copper',
            'center_column_shield_mat': 'WC',
            'divertor_mat': 'eurofer',
            'firstwall_mat': 'eurofer',
            'blanket_mat': blanket_material,  # use of homogenised material
            'blanket_rear_wall_mat': 'eurofer'
        },
        cell_tallies=['TBR'],
        simulation_batches=5,
        simulation_particles_per_batch=1e4,
    )

    # starts the neutronics simulation
    neutronics_model.simulate(method='trelis')

    # prints the results to screen
    print('TBR', neutronics_model.results['TBR'])
def main():

    all_reactors = []

    my_reactor = paramak.BallReactor(
        inner_bore_radial_thickness=50,
        inboard_tf_leg_radial_thickness=50,
        center_column_shield_radial_thickness=50,
        divertor_radial_thickness=100,
        inner_plasma_gap_radial_thickness=50,
        plasma_radial_thickness=200,
        outer_plasma_gap_radial_thickness=50,
        firstwall_radial_thickness=50,
        blanket_radial_thickness=100,
        blanket_rear_wall_radial_thickness=50,
        elongation=2,
        triangularity=0.55,
        number_of_tf_coils=16,
        rotation_angle=180,
    )
    my_reactor.name = "BallReactor"
    all_reactors.append(my_reactor)

    my_reactor = paramak.BallReactor(
        inner_bore_radial_thickness=50,
        inboard_tf_leg_radial_thickness=50,
        center_column_shield_radial_thickness=50,
        divertor_radial_thickness=100,
        inner_plasma_gap_radial_thickness=50,
        plasma_radial_thickness=200,
        outer_plasma_gap_radial_thickness=50,
        firstwall_radial_thickness=50,
        blanket_radial_thickness=100,
        blanket_rear_wall_radial_thickness=50,
        elongation=2,
        triangularity=0.55,
        number_of_tf_coils=16,
        rotation_angle=180,
        pf_coil_radial_thicknesses=[50, 50, 50, 50],
        pf_coil_vertical_thicknesses=[50, 50, 50, 50],
        pf_coil_to_rear_blanket_radial_gap=50,
        pf_coil_to_tf_coil_radial_gap=50,
        outboard_tf_coil_radial_thickness=100,
        outboard_tf_coil_poloidal_thickness=50,
    )
    my_reactor.name = "BallReactor_with_pf_tf_coils"
    all_reactors.append(my_reactor)

    my_reactor = paramak.SingleNullBallReactor(
        inner_bore_radial_thickness=50,
        inboard_tf_leg_radial_thickness=50,
        center_column_shield_radial_thickness=50,
        divertor_radial_thickness=100,
        inner_plasma_gap_radial_thickness=50,
        plasma_radial_thickness=200,
        outer_plasma_gap_radial_thickness=50,
        firstwall_radial_thickness=50,
        blanket_radial_thickness=100,
        blanket_rear_wall_radial_thickness=50,
        elongation=2,
        triangularity=0.55,
        number_of_tf_coils=16,
        rotation_angle=180,
        pf_coil_radial_thicknesses=[50, 50, 50, 50],
        pf_coil_vertical_thicknesses=[50, 50, 50, 50],
        pf_coil_to_rear_blanket_radial_gap=50,
        pf_coil_to_tf_coil_radial_gap=50,
        outboard_tf_coil_radial_thickness=100,
        outboard_tf_coil_poloidal_thickness=50,
        divertor_position="lower")

    my_reactor.name = "SingleNullBallReactor_with_pf_tf_coils"
    all_reactors.append(my_reactor)

    my_reactor = paramak.SubmersionTokamak(
        inner_bore_radial_thickness=25,
        inboard_tf_leg_radial_thickness=50,
        center_column_shield_radial_thickness=50,
        inboard_blanket_radial_thickness=50,
        firstwall_radial_thickness=50,
        inner_plasma_gap_radial_thickness=70,
        plasma_radial_thickness=300,
        outer_plasma_gap_radial_thickness=70,
        outboard_blanket_radial_thickness=200,
        blanket_rear_wall_radial_thickness=50,
        divertor_radial_thickness=50,
        plasma_high_point=(50 + 50 + 50 + 100 + 100, 350),
        rotation_angle=180,
        support_radial_thickness=150,
        outboard_tf_coil_radial_thickness=50,
    )

    my_reactor.name = "SubmersionTokamak"
    all_reactors.append(my_reactor)

    my_reactor = paramak.SubmersionTokamak(
        inner_bore_radial_thickness=25,
        inboard_tf_leg_radial_thickness=50,
        center_column_shield_radial_thickness=50,
        inboard_blanket_radial_thickness=50,
        firstwall_radial_thickness=50,
        inner_plasma_gap_radial_thickness=70,
        plasma_radial_thickness=300,
        outer_plasma_gap_radial_thickness=70,
        outboard_blanket_radial_thickness=200,
        blanket_rear_wall_radial_thickness=50,
        divertor_radial_thickness=50,
        plasma_high_point=(50 + 50 + 50 + 100 + 100, 350),
        rotation_angle=180,
        support_radial_thickness=150,
        outboard_tf_coil_radial_thickness=50,
        tf_coil_to_rear_blanket_radial_gap=50,
        outboard_tf_coil_poloidal_thickness=70,
        pf_coil_vertical_thicknesses=[50, 50, 50, 50, 50],
        pf_coil_radial_thicknesses=[40, 40, 40, 40, 40],
        pf_coil_to_tf_coil_radial_gap=50,
        number_of_tf_coils=16,
    )

    my_reactor.name = "SubmersionTokamak_with_pf_tf_coils"
    all_reactors.append(my_reactor)

    my_reactor = paramak.SingleNullSubmersionTokamak(
        inner_bore_radial_thickness=10,
        inboard_tf_leg_radial_thickness=30,
        center_column_shield_radial_thickness=60,
        divertor_radial_thickness=50,
        inner_plasma_gap_radial_thickness=30,
        plasma_radial_thickness=300,
        outer_plasma_gap_radial_thickness=30,
        firstwall_radial_thickness=30,
        blanket_rear_wall_radial_thickness=30,
        number_of_tf_coils=16,
        rotation_angle=180,
        support_radial_thickness=20,
        inboard_blanket_radial_thickness=20,
        outboard_blanket_radial_thickness=20,
        plasma_high_point=(200, 200),
        divertor_position="upper",
        support_position="upper")

    my_reactor.name = "SingleNullSubmersionTokamak"
    all_reactors.append(my_reactor)

    my_reactor = paramak.SingleNullSubmersionTokamak(
        inner_bore_radial_thickness=10,
        inboard_tf_leg_radial_thickness=30,
        center_column_shield_radial_thickness=60,
        divertor_radial_thickness=50,
        inner_plasma_gap_radial_thickness=30,
        plasma_radial_thickness=300,
        outer_plasma_gap_radial_thickness=30,
        firstwall_radial_thickness=30,
        blanket_rear_wall_radial_thickness=30,
        number_of_tf_coils=16,
        rotation_angle=180,
        support_radial_thickness=20,
        inboard_blanket_radial_thickness=20,
        outboard_blanket_radial_thickness=20,
        plasma_high_point=(200, 200),
        pf_coil_radial_thicknesses=[50, 50, 50, 50],
        pf_coil_vertical_thicknesses=[50, 50, 50, 50],
        pf_coil_to_tf_coil_radial_gap=50,
        outboard_tf_coil_radial_thickness=100,
        outboard_tf_coil_poloidal_thickness=50,
        tf_coil_to_rear_blanket_radial_gap=20,
        divertor_position="upper",
        support_position="upper")

    my_reactor.name = "SingleNullSubmersionTokamak_with_pf_tf_coils"
    all_reactors.append(my_reactor)

    return all_reactors