The goal is to allow the following:
The architecture would be:
Simulation does not change
SurfaceFlowModel represents the equation family
ComputeBackend performs low-level array kernels and reductions
ArrayStore owns array allocation, padding, swapping, and host/device synchronization
RasterDomain remains the domain-facing object, but becomes a thin facade over ArrayStore instead of directly owning raw NumPy arrays forever
rastermetrics.pyx is split between ArrayStore and ComputeBackend
The goal is to allow the following:
The architecture would be:
Simulationdoes not changeSurfaceFlowModelrepresents the equation familyComputeBackendperforms low-level array kernels and reductionsArrayStoreowns array allocation, padding, swapping, and host/device synchronizationRasterDomainremains the domain-facing object, but becomes a thin facade overArrayStoreinstead of directly owning raw NumPy arrays foreverrastermetrics.pyxis split betweenArrayStoreandComputeBackend