- Fractal boxes will build without error using the parallel build
process, however they are not correct. Each rank builds its own part
of the fractal box however there is no continuity across MPI
boundaries
- Writing metadata requires collective communication. This should be
completed first to avoid ranks having to wait for all other ranks to
complete the longer I/O operation of writing out the material data.
- It is possible for an MPI rank to have no geometry to output while
others do. However it is still worth logging a warning as the work
is not being well distributed across the ranks.
- For non-MPI runs, a warning still notifies them of a problem.
- Voxel geometry views do not use compound/averaged materials. Therefore
materials are guaranteed to be correctly ordered in both the serial
and MPI implementations as the materials used have all be added from
the Scene/input file.
- Geometry views no longer use variable length strings.
- Fine geometry views (GeometryViewLines) now correctly order materials
(alphabetically by ID).
- Sources and receivers now set their ID using a static point so the
value is the same when using the MPI implementation.
- The model has new functions to create geometry objects and geometry
views.
- Grid views create their own MPI communicator. This means when creating
a grid view, or an object containing a grid view, it is the creators
responsibility to call `comm.Split(MPI.UNDEFINED)` for ranks not
creating the grid view.
- There is a new MPIMetadata class for managing geometry view metadata.
- Ranks can create field data datasets in VTKHDF files without writing
any data.
- The VtkHdfFile class now correctly handles string datatypes.
Objects with a thickness (triangles and circular sectors) can no longer
extend beyond the grid in the dimension they are aligned to.
Building these objects where the lower extent is aligned with a positive
halo, no longer corrupts memory due to out of bounds memory access
Edges and plates are no longer built in the positive halo as they are
not needed. Previously this caused a memory corruption as the cython
functions were performing out of bounds memory access in the rigidE
and rigidH arrays.