gridap/Gridap.jl

Runge Kutta methods for linear operators only

santiagobadia opened this issue · 4 comments

Hi @oriolcg

We were looking at the RK implementation in Gridap.
There is something that we don't understand.

You seem always to assume that the f operator is linear.
For instance, instead of storing the stages and then computing f(sum_j a[i,j]*u[j]), you are computing sum_j a[i,j]*f[j] and storing the f's.

This only works for f linear wrt u, but the implementation seems to be thought for nonlinear operators (we are using a nonlinear operator/solver for RK).

Do you agree that the current implementation only works for the linear case?

If we agree, we have to discuss what we need to do to generalise it.

True, current implementation assumes linear operators. We should think on how to make it general for the nonlinear case.

I would say that should be doable by storing u_i instead of f_i and doing the sum inside rhs!. I'll take a closer look later.

Hi @santiagobadia, I pushed a new branch (https://github.com/gridap/Gridap.jl/tree/nonlinear_RK) with a first attempt to make it general for nonlinear cases, for both RK and IMEX-RK. I haven't implemented the ability to handle explicit RK. The tests for the RK are passing, but for the IMEX version the TransientFEOperatorsTests are failing.

You can take a look and check if this is a good way to proceed. I'll also check what's the cause of the error in the IMEX in the coming days.

Solved issue, closed now