Field3DParallel + more FCI changes
Here a summary of the changes:
Field3DParallel
A Field3DParallel is essentially a Field3D, that preserves the parallel slices.
This allows to avoid unnecessary computation of of parallel fields, that are not needed.
It also ensures parallel slices are present (for FCI) when later parallel derivatives are computed.
So any function that will call DDY later on, can change the signature to Field3DParallel to declare that parallel slices need to be present for FCI.
New Y-Boundary Operators
Custom sheath boundary conditions can now be implemented using an abstraction. The documentation is on RTD That allows having one code path for FCI and FA, for upper and lower sheath BC, all in one place.
Various small fixups
loadParallelMetrics
For FCI the parallel slices of the metric components are loaded, as they are sometimes needed.
This makes FCI essentially 3D only.
There is now also the option to say a field is not allow to compute the parallel slices, to avoid overwriting them: allowCalcParallelSlices.
Tracking on failure
Only if the simulation fails to evolve (Currently euler and pvode only):
The different components of timederivate are dumped to a BOUT.debug.*.nc which can be handy for figuring out which term is causing the instability. No more having to re-run the simulation with some terms disabled to debug such issues. This causes (an unkown) memory overhead - but ONLY if the solver has failed already.
More names of parallel boundary region + cleanup of code
Support things like bndry_par_xin or bndry_par_yup.
Add monotonichermitespline for all cases
Merged into hermitespline and works also in parallel.
Support several parallel slices for FCI
MYG=2 is now supported.
Please can you split this into one PR per change? It's 100 files and 5k lines of changes, it's going to be very difficult to review. GitHub will only show a single file at once.
Sure! Is ready for re-review / merge: https://github.com/boutproject/BOUT-dev/pull/2889 I will keep working on the other bits ...