Paramak

The Paramak python package allows rapid production of 3D CAD models of fusion reactors. The purpose of the Paramak is to provide geometry for parametric studies in a variety of geometry formats including STL, STP, Brep, HTML and DAGMC h5m files.

CadQuery functions provide the majority of the features, and incorporating additional capabilities is straightforward for developers with Python knowledge.

Contributions are welcome.

History

The package was originally conceived by Jonathan Shimwell and based on the FreeCAD Python API When CadQuery 2 was released the project started to migrate the code base. Shortly after this migration the project became open-source and has flourished ever since.

The project has grown largely due to two contributors in particular (John Billingsley and Remi Delaporte-Mathurin) and others have also helped, you can see all those who have helped the development in the GitHub contributions.

The code has been professionally reviewed by PullRequest.com who produced a report and inline suggestions.

The Paramak source code is distributed with a permissive open-source license (MIT) and is available from the GitHub repository https://github.com/fusion-energy/paramak

Publications and Presentations

Features

In general the Paramak takes input arguments and creates 3D objects. This can be accomplished via the use of parametric Shapes, parametric Components and parametric Reactors with each level building upon the level below.

Parametric Shapes are the simplest and accept points and connection information in 2D space (defaults to x,z plane) and performs operations on them to create 3D volumes. The points and connections are provided by the user when making parametric Shapes. Supported CAD operations include (rotate, extrude, sweep) and Boolean operations such as cut, union and intersect. Additionally the CadQuery objects created can be combined and modified using CadQuery’s powerful filtering capabilities to further customise the shapes by performing operations like edge filleting.

Parametric Components build on top of this foundation and will calculate the points and connections for you when provided with input arguments. The inputs differ between components as a center column requires different inputs to a breeder blanket or a magnet.

Parametric Reactors build upon these two lower level objects to create an entire reactor model from input parameters. Linkage between the components is encoded in each parametric Rector design.

Some of the different parametric reactor families are shown below.

https://user-images.githubusercontent.com/8583900/118414245-58be8880-b69b-11eb-981e-c5806f721e0f.png

A sub section of the available parametric Components are shown below.

https://user-images.githubusercontent.com/8583900/98823600-387eea00-242a-11eb-9fe3-df65aaa3dd21.png

The different families of parametric Shapes that can be made with the Paramak are shown int he table below.

Rotate

Extrude

Sweep

Points connected with straight lines

rotatestraight

RotateStraightShape()

extrudestraight

ExtrudeStraightShape()

sweepstraight

SweepStraightShape()

Points connected with spline curves

rotatespline

RotateSplineShape()

extrudespline

ExtrudeSplineShape()

sweepspline

SweepSplineShape()

Points connected with a circle

rotatecircle

RotateCircleShape()

extrudecircle

ExtrudeCircleShape()

sweepcircle

SweepCircleShape()

Points connected with a mixture

(splines, straights and circles)

rotatemixed

RotateMixedShape()

extrudemixed

ExtrudeMixedShape()

sweepmixed

SweepMixedShape()

Table Of Contents