bluemira icon indicating copy to clipboard operation
bluemira copied to clipboard

Neutronics branch: CSG improvement

Open OceanNuclear opened this issue 1 year ago • 0 comments

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:

  1. At the last stage of the bluemira run, the divertor wire and blanket wire are parsed onto the neutronics module.
  2. The neutronics module generates the appropriate cells, and assign appropriate tally names onto each part.
  3. The neutronics module then parse the generated geometry to openmc, who runs the simulation. The result is then read back from the .h5 file.
  4. 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.

OceanNuclear avatar Jan 25 '24 15:01 OceanNuclear