Processing math: 100%

Linearization at the differential equation level

The attention is now turned to nonlinear partial differential equations (PDEs) and application of the techniques explained for ODEs. The model problem is a nonlinear diffusion equation

(1)ut=(α(u)u)+f(u),xΩ, t(0,T],
(2)α(u)un=g,xΩN, t(0,T],
(3)u=u0,xΩD, t(0,T].

Our aim is to discretize the problem in time and then present techniques for linearizing the time-discrete PDE problem “at the PDE level” such that we transform the nonlinear stationary PDE problems at each time level into a sequence of linear PDE problems, which can be solved using any method for linear PDEs. This strategy avoids the solution systems of nonlinear algebraic equations. In the section Discretization of nonlinear differential equations we shall take the opposite (and more common) approach: discretize the nonlinear problem in time and space first, and then solve the resulting nonlinear algebraic equations at each time level by the methods of the section Systems of nonlinear algebraic equations.

Explicit time integration

The nonlinearities in the PDE are trivial to deal with if we choose an explicit time integration method for (1), such as the Forward Euler method:

D+tu=(α(u)u)+f(u)]n,

which leads to a linear equation in the unknown un+1:

un+1unΔt=(α(un)un)+f(un).

Picard iteration (3)

A Backward Euler scheme for (1) reads

Dtu=(α(u)u)+f(u)]n.

Written out,

(4)unun1Δt=(α(un)un)+f(un)

This is a nonlinear, stationary PDE for the unknown function un(x). We introduce a Picard iteration with k as iteration counter. A typical linearization of the α(un)un term in iteration k+1 is to use the previously computed un,k approximation in the diffusion coefficient: α(un,k). The nonlinear source term is treated similarly: f(un,k). The unknown function un,k+1 then fulfills the linear PDE

(5)un,k+1un1Δt=(α(un,k)un,k+1)+f(un,k).

The initial guess for the Picard iteration at this time level can be taken as the solution at the previous time level: un,0=un1.

We can alternatively apply the notation where u corresponds to the unknown we want to solve for, i.e., un,k+1 above, let u be the most recently computed value, un,k above, and let u1 denote the unknown function at the previous time level, un1 above. The PDE to be solved in a Picard iteration then looks like

(6)uu1Δt=(α(u)u)+f(u).

At the beginning of the iteration we start with the value from the previous time level: u=u1.

Newton’s method (4)

At time level n we have to solve the stationary PDE (4), this time with Newton’s method. Normally, Newton’s method is defined for systems of algebraic equations, but the idea of the method can be applied at the PDE level too.

Let un,k be an approximation to un. We seek a better approximation on the form

(7)un=un,k+δu.

The idea is to insert (7) in (4), Taylor expand the nonlinearities and only keep the terms that are linear in δu. Then we can solve a linear PDE for the correction δu and use (7) to find a new approximation un,k+1=un,k+δu to un.

Inserting (7) in (4) gives

(8)un,k+δuun1Δt=(α(un,k+δu)(un,k+δu))+f(un,k+δu)

We can Taylor expand α(un,k+δu) and f(un,k+δu):

α(un,k+δu)=α(un,k)+dαdu(un,k)δu+O(δu2)α(un,k)+α(un,k)δu,f(un,k+δu)=f(un,k)+dfdu(un,k)δu+O(δu2)f(un,k)+f(un,k)δu.

Inserting the linear approximations of α and f in (8) results in

un,k+δuun1Δt=(α(un,k)un,k)+f(um,k)+
(α(un,k)δu)+(α(un,k)δuun,k)+
(9)(α(un,k)δuδu)+f(un,k)δu

The term α(un,k)δuδu is O(δu2) and therefore omitted. Reorganizing the equation gives a PDE for δu that we can write in short form as

δF(δu;un,k)=F(un,k),

where

(10)F(un,k)=un,kun1Δt(α(un,k)un,k)+f(un,k),
δF(δu;un,k)=1Δtδu+(α(un,k)δu)+
(α(un,k)δuun,k)+f(un,k)δu.

Note that δF is a linear function of δu, and F contains only terms that are known, such that the PDE for δu is indeed linear.

The form δF=F resembles the Newton system Jδu=F for systems of algebraic equations, with δF as Jδu. The unknown vector in a linear system of algebraic equations enters the system as a matrix-vector product (Jδu), while at the PDE level we have a linear differential operator instead (δF).

We can rewrite the PDE for δu in a slightly different way too if we define un,k+δu as un,k+1.

un,k+1un1Δt=(α(un,k)un,k+1)+f(un,k)+
(α(un,k)δuun,k)+f(un,k)δu.

Note that the first line is the same PDE as arise in the Picard iteration, while the remaining terms arise from the differentiations that are an inherent ingredient in Newton’s method.

For coding we want to introduce u for un,k and u1 for un1. The formulas for F and δF are then

(11)F(u)=uu1Δt(α(u)u)+f(u),
δF(δu;u)=1Δtδu+(α(u)δu)+
(α(u)δuu)+f(u)δu.

The form that orders the PDE as the Picard iteration terms plus the Newton method’s derivative terms becomes

uu1Δt=(α(u)u)+f(u)+
(α(u)δuu)+f(u)δu.