- 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.
logger.exception should only be used inside a try except statement where
there is some error/stacktrace that needs outputting as well as the
error message. Instead, should use logger.error then raise an error,
and/or pass the message to the error being raised (which the calling
function should handle and/or log the exception).
This occurred when the cone was aligned with an axis as the maths to
calculate if the cone was at a point in the grid used x, y, z
coordinates bound to the limits of the grid.
This is needed as the MPI grid needs to convert the location of the
source/receiver to its local coordinates. Doing this in the grid means
the multi use commands don't need to know about the MPI implementation