-
Notifications
You must be signed in to change notification settings - Fork 13
Description
I would like to be able to control the finite difference scheme used, i.e. forward, backward or central. Depending upon the PDE, we normally use a custom scheme, e.g. advection --> backwards, diffusion ---> central.
Working Demo
I have a working colab notebook to get a feeling for what I mean. See it here.
Proposed Solution
I don't have a solution but somewhere in the param PyTree I think it is important to specify this (just like the accuracy, order, stepsize, etc).
u = DiscretizationScheme(u_init, domain)
class Params:
method: str = static_field()
stagger: iterable(int) = static_field()
accuracy: int = static_field()
params = Params(method="central", stagger=[0], accuracy=2)
u_grad = gradient(u=u, params=params)Another possible solution: one could use the FiniteDiffX package backend for generating the coefficients and kernel if one doesn't specify it. There I recently contributed to be able to specify the FD scheme.
Last solution: Just create a custom operator that does exactly all that I've said before. There is an example in the "custom equation of motion" section which does exactly what I want.