Why a matrix formulation in the first place

We want to solve the instationary Stokes equations, but a PDE that carries a time derivative cannot be handed to a stationary linear solver directly. The standard trick is a θ -scheme: discretize in time first, turning the single time-dependent problem into a sequence of stationary problems, one per time step n=1,,N . Starting from the known initial data (v0,p0) — here v0=0 , or in general whatever our measurements give us — each step advances the solution by one k .

It is tempting to hope for a clean propagation rule of the form

(vnpn)=A(vn1pn1),n=1,,N,

but this is not quite what comes out, and the reason is worth keeping in mind. The pressure has no time derivative — it is a Lagrange multiplier enforcing incompressibility — so pn1 never enters the right-hand side; only the velocity is propagated. And rather than a single matrix–vector product, each step requires solving a linear system. What we actually obtain is

(VP)=A1(F(V)O),

i.e. a fixed operator A1 applied at every step — “something alike”, just with an inverse and with velocity as the only memory between steps. Deriving A and F(V) explicitly is the goal below.

Strong form

After the θ -scheme has been applied and every n -term collected on the left, every (n1) -term on the right, the stationary problem solved at each step reads:

1kvnνθΔvn+pn=f(tn)+1kvn1+ν(1θ)Δvn1,vn=0.

The right-hand side is entirely known data: the load f(tn) plus contributions from the already-computed previous velocity vn1 .

Weak form

Testing the momentum equation against uV0 (vanishing on Ω ) and the continuity equation against qQ , then integrating the Laplacian and pressure-gradient terms by parts — the boundary terms drop out since u|Ω=0 — we obtain:

1kΩvnudx+νθΩvn:udxΩpn(u)dx=Ωf(tn)udx+1kΩvn1udxν(1θ)Ωvn1:udxknown right-hand side,Ωq(vn)dx=0.

Discretization with shape functions

As before, let Jv denote the index set of the local degrees of freedom of the velocity space and Jp that of the pressure space. Choose shape functions {φj}jJvJp , where {φj}jJvVh forms a basis of Vh and {φj}jJpQh forms a basis of Qh . Let the discrete solution take the form

vn=jJvVjφj,pn=jJpPjφj.

The minus sign in the pressure ansatz is a deliberate convention: it will flip the pn(u) term to a plus, so that the momentum row couples to +BT and matches the +B of the continuity row — producing a symmetric block structure instead of an antisymmetric one.

Inserting the ansatz and testing against u=φi (for iJv ) and q=φi (for iJp ) gives:

jJvVj(1kΩφjφidx+νθΩφj:φidx)Aij+jJpPjΩφj(φi)dxBji=(BT)ij=Ωf(tn)φidx+1kΩvn1φidxν(1θ)Ωvn1:φidxF(V)i,jJvVjΩφi(φj)dxBij=0.

Here F(V)i is the load vector depending on the previously computed velocity V=Vn1 . Note that the same mass and stiffness integrals that build A also build F(V) , so in practice the right-hand side is just (1kMν(1θ)Astiff)Vn1+Fext applied to the previous solution vector.

Matrix formulation

Collecting the blocks, we arrive at the Stokes saddle-point system solved at each time step:

(ABTBO)(VP)=(F(V)O).

A couple of remarks to close the loop:

  • The block A here is the full velocity–velocity block A=1kM+νθAstiff , not the bare stiffness matrix. In the stationary case the mass term 1kM is absent and A reduces to pure stiffness; in the instationary case it “fattens up”, but the shape, symmetry, and zero block stay exactly the same.
  • The zero block in the bottom-right reflects that pressure has no self-coupling — it only acts as the constraint multiplier — which is precisely why pn1 never propagates and why each step is a solve of this indefinite system rather than a simple matrix product.