As I want to fit more problems into the architecture of xinvert, the current design of this package makes it a bit hard for some problems. Specifically, it is much better to refactor the internal design of this package, and also change the user APIs accordingly. Specifically, the problems are:
Too many keyword arguments in a single problem. It is best to separate these kwargs into two kinds: one is model parameters mParams that prescribed in the model or equation. For example, Coriolis paramter $f$ and stratification $N^2$. The other kind is invert paramters iParams that controls the iteration and has nothing to do with the model. For example, maximum loops or tolerance for stop looping.
Sometimes the required model parameters are less than the coefficients of the equation. But calculating the coefficients requires finite difference capability. This original depends on xgcm. However, xgcm is still in heavy development and is targeted at Arakawa C-grid. Since I don't want this package to be fully relied on xgcm, I need to add this finite difference capability.
Animate the iteration should be generalized to accept every invert function. So we only need a single animate_iteration function fo all the models.
Gill-Matsuno model and Stommel-Munk model are found to be fitted into the standard model. Not sure if they should be solved using the standard solver or still using the general solver.
As I want to fit more problems into the architecture of
xinvert
, the current design of this package makes it a bit hard for some problems. Specifically, it is much better to refactor the internal design of this package, and also change the user APIs accordingly. Specifically, the problems are:mParams
that prescribed in the model or equation. For example, Coriolis paramter $f$ and stratification $N^2$. The other kind is invert paramtersiParams
that controls the iteration and has nothing to do with the model. For example, maximum loops or tolerance for stop looping.xgcm
. However,xgcm
is still in heavy development and is targeted at Arakawa C-grid. Since I don't want this package to be fully relied onxgcm
, I need to add this finite difference capability.animate_iteration
function fo all the models.