bluemira
bluemira copied to clipboard
Neutronics branch: CSG improvement
Description of issue / requirement to address
While fixing #1710 , the following issue is identified: User story:
- As a Reactor Designer using the neutronics module, I want bluemira to make the CSG model automatically, so that I can run without manual modification of the CSG CAD model.
Current Issue:
The current neutronics method (in the feature/neutronics branch) of splitting up the tokamak has not been generalized to be applicable to other potential tokamak designs.
Solution
What we want the program to do:
- At the last stage of the bluemira run, the divertor wire and blanket wire are parsed onto the neutronics module.
- The neutronics module generates the appropriate cells, and assign appropriate tally names onto each part.
- The neutronics module then parse the generated geometry to openmc, who runs the simulation. The result is then read back from the .h5 file.
- The neutronics module then reads back the results from the .h5 files and outputs the desired parameters (e.g. TBR) through bluemira.
Tests that should be written:
- [ ] Program should receive exactly 2 BluemiraWire, and errors when the wires has nonsensical shape.
- [ ] Program should receive a list of fractions corresponding to First Wall, Manifold, (optionally Breeding Zone), and Vacuum Vessel thicknesses. All (except BZ) must be >0, and sums to 1.
- [ ] (developer note only:) Use bluemira.geometry.show_cad/plot_2D to quickly visualize. Keep everything as bluemir.geometry.Coordinates/Wires/Polygons.
Blanket
-
[ ] The entire blanket should be split into pre-cells = "panels + exterior curve" correctly. (all pre-cells added together should recover the original blanket BluemiraWire)
-
[ ] (optional) large pre-cells (defined by angle change of exterior curve > a certain threshold) should be broken down into two/multiple pre-cells.
-
[ ] Split-line™ between pre-cells should be given by bisecting the normal angles of the nearby panels.
-
[ ] Convert pre-cells into cells, by:
- [ ] Splitting into 4 layers (3 layers if breeding zone is omitted) according to thickness fractions, and name them accordingly.
- [ ] Conserve volume (!! not area!) during this approximation, by extending the split-line™ outwards.
- [ ] Make sure this artificial extension doesn't violate any geometry requirements, if there are any.
-
[ ] (Developer note only:) pre-cell into cell by use of a cell
-
[ ] Conversion from pre-cell into cell
Divertor
- [ ] Split into Inner target, Dome, and Outer target cells.
- [ ] Draw split lines: may need to be cleverer than bisection?
- [ ] Make sure each cell is a convex polygon: How many edges are needed?
void
- [ ] Split into convex cells
General
- [ ] Check the tallies are all sensible.
Additional quantities required
- [ ] energy multiplication factor (in the breeding blanket)
- [x] TBR
- [x] power output (heating)
- [x] neutron damage (neutron wall loading
Additional context
For the next iteration (non-axisymmetric version), port plugs etc. would have to be added, breaking the axial symmetry. More thought has to be put into this, as not all surfaces would be approximate-able as "cylinders + cones + z-planes".
For the current iteration (axis-symmetric version), no gaps between panels / divertors would be modelled, as we are just trying to get to a minimal viable product, so we don't need to think about modelling anything other than the best-case scenarios.