The system-free (SF) method (see this article) demonstrated its efficiency
and high-order accuracy by combining it with the Picard integration formulation (PIF) method.
By using the SF approach, the analytical derivations of flux Jacobians and Hessians
can be approximated numerically
without affecting the accuracy and stability of the PIF method.
However, extending the third-order PIF method to a higher-order accuracy involves
calculating higher degrees of Jacobian-like tensor-vector contractions (e.g., ∂U3∂3F),
significantly adding to the complexity of such schemes.
The original system-free approach
Following the same algorithmic strategy,
the fourth-order extension of the PIF method requires
the third-order derivatives of the flux function.
Theoretically speaking, the original SF method can approximate this term as,
∂U3∂3F⋅V⋅V⋅V=2ε31[−F(U−2εV)+2F(U−εV)−2F(U+εV)+F(U+2εV)]+O(ε2),for the tensor contractions between the same vector, V.
In order to approximate the case of different vectors, (V, W, and X for example),
the above equation should be computed multiple times:
∂U3∂3F⋅V⋅W⋅X=61[∂U3∂3F⋅(V+W+X)⋅(V+W+X)⋅(V+W+X)−∂U3∂3F⋅(V+W)⋅(V+W)⋅(V+W)−∂U3∂3F⋅(V+X)⋅(V+X)⋅(V+X)−∂U3∂3F⋅(W+X)⋅(W+X)⋅(W+X)+∂U3∂3F⋅V⋅V⋅V+∂U3∂3F⋅W⋅W⋅W+∂U3∂3F⋅X⋅X⋅X].As shown above, the original SF method requires
to repeat the ∂U3∂3F⋅V⋅V⋅V approximation seven times
just for getting a single term, ∂U3∂3F⋅V⋅W⋅X.
Although it is possible to use for the fourth-order PIF method,
it is not very practical because of the code complexity and slow performance.
The recursive approach
The newly improved version of SF method is taking a "recursive" strategy
for approximating high degree of Jacobian-like tensor terms.
In order to take a recursive strategy, let's define a functional Du as,
∂U∂F⋅V≈Du(F;V):=2εv1[F(U+εvV)−F(U−εvV)],which is the Jacobian-free approximation from the original SF method.
For higher-order derivatives, we take the functional Du
in a successive fashion. For example, the Hessian-vector contraction would be,
∂U2∂2F⋅V⋅W=4εvεw1[−≈Du(Du(F;V);W)F(U+εvV+εwW)−F(U−εvV+εwW)F(U+εvV−εwW)+F(U−εvV−εwW)].Note that the above improved version of Hessian-free method
is applicable regardless the tensor contraction with two identical vectors
or with two distinct vectors, hence it does not require separate formulations
needed in the original SF approach.
The simplicity gain from the improved version of the SF method
is further rewarded when considering the higher-order derivatives of F.
Following the equivalent strategy,
the tensor contraction of the third-order derivative of the flux function,
∂U3∂3F with three distinct vectors, V,W and X
can be expressed in a compact form as,
∂U3∂3F⋅V⋅W⋅X=8εvεwεx1[−−+≈Du(Du(Du(F;V);W);X)F(U+εvV+εwW+εxX)−F(U−εvV+εwW+εxX)F(U+εvV−εwW+εxX)+F(U−εvV−εwW+εxX)F(U+εvV+εwW−εxX)+F(U−εvV+εwW−εxX)F(U+εvV−εwW−εxX)−F(U−εvV−εwW−εxX)].Here, the performance between the recursive SF method and the original SF method
can be compared by counting the number of flux function (F(⋅)) calls.
For instance, the original SF method requires 28 times flux function calls
for approximating ∂U3∂3F⋅V⋅W⋅X term.
On the other hand, the recursive system free method needs only eight evaluations.
This is a huge improvement in both performance and compactness.
The recursive SF method successfully extended the PIF method to the fourth-order accuracy ,
and you can find the implementations in the SlugCode.
The detailed numerical test results are presented in the published article.