WIP simulator refactor
Created by: maedoc
This PR refactors the simulator, in order to reduce complexity of adding new features (fields, cosim, TF support) and debugging the current bugs such as surface region mapping conventions. It also introduces the notion of pluggable numerical backends, following roughly the DAO pattern in the framework, which will have our existing NumPy code as a reference backend, a second one using Numba for accelerations and later others. Refactoring the simulator dovetails with the backend intro, so it's been started together.
-
move monitor, model, integrator et al specific logic out of Simulator
methods into their own classes -
move NumPy/Numba array code into backend (primarily code which is called during simulation, not datatype prep) -
unify region mapping manipulations into RegionMapping
methods