Non-linear Dirichlet problem with FD

49 Views Asked by At

I face to the following problem:

$$(1+u_x^2)u_{yy} - 2u_xu_yu_{xy} + (1+u_y^2)u_{xx}=0.$$ It should be discretized by finite differences.

Does anybody know, how to proceed? Or does anybody know about any book/ reference in order to understand problem better ?

Every suggestion is welcomed! Thanks!

1

There are 1 best solutions below

1
On BEST ANSWER

You can first attempt to solve the problem using standard finite difference method. You can find several books on finite difference technique and online documents. For example take a look at this document) Particularly section 2 describes what you need.

The standard procedure for non-linear PDEs is to use iterative schemes, first you can discretize the equation, then proceed with a Gauss-Seidel relaxation to see if it converge. This process is the same as solving Poisson equation, but you implement an iterative algorithm that can also apply for non-linear problems.

There is a pretty good chance that Gauss-Seidel will converge and you'd get your solution. If not you can attempt a technique called continuation method where you first create a solver that can effectively solve a linear problem, in your case, lets write your equation as: $$ (1+\alpha u_x^2)u_{yy} -2 \beta u_x u_y u_{xy} + (1+\alpha u_y^2)u_{xx} = 0 $$ Where, $\alpha =1$ and $\beta = 1$ is your equation. As you can see, setting: $\alpha = 0$ and $\beta = 0$ the equation reduces to a linear Poisson equation. Therefore your iterative solver can first solve the linear solution (which shouldn't be a problem) then have that solution of the linear problem as a good initial guess for a new problem where you can choose a small (non-zero now) value for $\alpha$ and $\beta$, let's say $\alpha = 0.1$ and $\beta = 0.1$ therefore, now you have a PDE that is slightly different than linear problem, and the solver will have a much better chance to converge, after solving that problem, you can use that solution as an initial guess for a new problem where now $\alpha$ and $\beta$ are even higher, say $\alpha=0.2$ and $\beta = 0.2$, so as you can see by "continuation" you approach to your desired problem and your solver should be able to converge during this continuous process.

There is also a finite difference toolkit available (written in Maple programming language) that you can use. See the user manual and tutorials section. It provides all the tools you need to implement a Newton-Gauss-Seidel relaxation routine, assuming that you are familiar with programming in C and Fortran, and also somewhat familiar with Maple software.

In some cases that the non-linear problem is very hard to deal with (which I doubt your equation would be such case) then you need to implement more advanced algorithm such as Pseudo-Spectral method