gdmcbain / fenics-tuto-in-skfem

reproducing the examples from the FEniCS tutorial in scikit-fem
14 stars 1 forks source link

Liu, Wu, & Fang 2015 #28

Open gdmcbain opened 3 years ago

gdmcbain commented 3 years ago

This paper isn't related to the FEniCS tutorial as such and indeed mostly uses a marker-and-cell approach. In §2.1 ‘Creating matrices for the Navier–Stokes equations’ we read:

We also can use Dolfin to generate the matrices for the Navier–Stokes equations using the finite element method.

The method is very simply presented and might be a good basis for an alternative to the ‘incremental pressure correction scheme’ used in the FEniCS tutorials 07 #4 and 08 #5, so let's develop it here.

gdmcbain commented 3 years ago

Where Liu, Wu, & Fang (2015, §2.1) write:

Here α is O (δt), where δt is the time step

of course they mean 1/δt; however, I don't see whether they anywhere actually specify the value of α = 1/δt in any of the examples.

gdmcbain commented 3 years ago

The rough outline of the algorithm is:

for t in 0, ...:
    uvp_old = uvp.copy()
    u0 = ... # solve (generalized) Stokes problem as predictor
    for k = 1, 2, ...:
        uk = ... # solve Oseen equation as corrector
gdmcbain commented 3 years ago

At 7d4e733, skipping the Oseen part to begin with, here's the unsteady Stokes solution for ν = .05 after 5 dt of 0.1.

lwf

gdmcbain commented 3 years ago

lwf

Figure:— Increased Re to 100 and computed stream-function

Increasing Re or refining the mesh increases the number of GMRES iterations but not the number of Picard iterations.

gdmcbain commented 3 years ago

Whereas Jia Liu, Wu, & Fang (2015, §2.1) suggest for the Picard iteration that

The initial guess u 0 can be the solution from the Stokes equations

This is a terrible idea; much better to use the velocity from the previous time-step.