Introduction

Bluemira is a Python 3 framework for designing tokamak nuclear fusion reactors. It has been developed from the original BLUEPRINT and MIRA codes, written by M. Coleman and S. McIntosh, and F. Franza, respectively.

The overarching aim of the bluemira framework is to facilitate reactor design using different levels of fidelity at different stages in the design process. The general idea is that there is nothing particularly wrong with how tokamak fusion reactors are designed today, except that it takes months to reach an initial design point. In bluemira, typical tokamak fusion reactor design activities are parameterised, automated, combined together, and exposed to the user, enabling reactor designs to be generated in a matter of minutes.

The goal is for bluemira to one day function as a multi-fidelity systems code for tokamaks.

A wide variety of modules useful for the design of tokamaks are available, with more on the way:

  • Interface to the 0/1-D PROCESS systems code

  • Interface to the 1.5-D PLASMOD transport and fixed boundary equilibrium solver

  • 2-D fixed and free boundary equilibrium solvers

  • 3-D magnetostatics solvers

  • 3-D geometry and CAD

  • Simplified dynamic tritium fuel cycle model

Many typical tokamak fusion reactor design optimisation problems are also implemented, leveraging the functionality of the above modules.

How to use bluemira

Bluemira is designed to be used by three different types of user.

Modeller

A Modeller will execute a reactor build workflow (created by a ‘Reactor Designer’), to carry out studies on a reactor design. Modellers will need to know about the parameters of a design, and how to manipulate JSON files to modify those parameters.

Reactor Designer

A Reactor Designer will use bluemira as a framework to create a design for a reactor. To design a reactor, the design workflow strategy needs to be considered and codified. Using Designer and Builder objects, each component of the reactor can be created and collected into a full reactor design, or used individually.

Developers

A developer of bluemira will need to understand the program to a much more detailed level than a reactor designer. They will be involved with adding new features to bluemira as well as helping a Reactor Designer or a Modeller to add a new feature or customisation option.

High level Architecture

The below figure shows the high level workflow to create a component for a reactor. To read more about each individual section click on the links in the figure.

// Useful info // This graph is designed to be output as an interactive svg // fontname, fontcolor and pencolor were copied from the rtd sphinx theme // target can be modified as per w3 http specs digraph { compound=true; node [ shape = box, width = 2, fontname="Lato,proxima-nova,Helvetica Neue,Arial,sans-serif", fontsize="12px", fontcolor="#404040", color="#404040" ] graph [ splines = false, ranksep = 0.2, fontname="Lato,proxima-nova,Helvetica Neue,Arial,sans-serif", fontsize="12px", fontcolor="#404040", pencolor="#404040" ] subgraph cluster_0 { label="Designer"; tooltip="Designer"; href="base/design_build.html#designers" target="_parent" fontcolor="#2980b9" a[ group=g1, label="ParameterFrame", tooltip="ParameterFrame", href="base/parameter.html#parameterframes", target="_parent", fontcolor="#2980b9" ]; } subgraph cluster_1 { label="Builder"; tooltip="Builder"; href="base/design_build.html#builders" target="_parent" fontcolor="#2980b9" d[ group=g1, label="ParameterFrame", tooltip="ParameterFrame", href="base/parameter.html#parameterframes", target="_parent", fontcolor="#2980b9" ]; } subgraph cluster_2 { label="ComponentManager"; labelloc="b" tooltip="ComponentManager" href="base/components.html#componentmanagers" target="_parent" fontcolor="#2980b9" e[ label="Component", tooltip="Component", href="base/components.html#reactors-components-and-managers", target="_parent", fontcolor="#2980b9" ] } subgraph cluster_3 { label="ComponentManager"; labelloc="b" tooltip="ComponentManager" href="base/components.html#componentmanagers" target="_parent" fontcolor="#2980b9" f[ label="Component", tooltip="Component", href="base/components.html#reactors-components-and-managers", target="_parent", fontcolor="#2980b9" ] } a -> d [group=g1, ltail=cluster_0, lhead=cluster_1, minlen=2]; d -> f [ltail=cluster_1, minlen=2]; e -> reac [ltail=cluster_2, minlen=2]; f -> reac [ltail=cluster_3, minlen=2]; reac[ label="Reactor", tooltip="Reactor", href="base/components.html#reactor", target="_parent", fontcolor="#2980b9" ] }

Roadmap

Bluemira is still in the early phases of development, and presently contains less functionality than BLUEPRINT or MIRA did. We are very actively working to reach a point where bluemira is greater than the sum of its parts. If you are interested in using bluemira as an “early adopter”, please do get in touch with us so that we can help you.

_images/bluemira-roadmap.svg

Fig. 1 Bluemira development roadmap for 2024/25