Documentation

Minimal Surface Problem on the Unit Disk

This example shows how to solve a nonlinear elliptic problem.

A Nonlinear PDE

A nonlinear problem is one whose coefficients not only depend on spatial coordinates, but also on the solution itself. An example of this is the minimal surface equation

$$-\nabla \cdot \left( \frac{1}{\sqrt{1 + \left|\nabla u\right|^2}} \nabla u \right) = 0$$

on the unit disk, with

$u(x,y) = x^2$

on the boundary. To express this equation in toolbox form, note that the elliptic equation in toolbox syntax is

$$ -\nabla\cdot(c\nabla u) + au = f.$$

The PDE coefficient c is the multiplier of $\nabla u$, namely

$$c = \frac{1}{\sqrt{1 + \left|\nabla u\right|^2}}.$$

$c$ is a function of the solution $u$, so the problem is nonlinear. In toolbox syntax, you see that the $a$ and $f$ coefficients are 0.

Geometry

Create a PDE Model with a single dependent variable, and include the geometry of the unit disk. The circleg function represents this geometry. Plot the geometry and display the edge labels.

numberOfPDE = 1;
model = createpde(numberOfPDE);
geometryFromEdges(model,@circleg);
pdegplot(model,'EdgeLabels','on');
axis equal
title 'Geometry with Edge Labels';

Specify PDE Coefficients

a = 0;
f = 0;
cCoef = @(region,state) 1./sqrt(1+state.ux.^2 + state.uy.^2);
specifyCoefficients(model,'m',0,'d',0,'c',cCoef,'a',a,'f',f);

Boundary Conditions

Create a function that represents the boundary condition $u(x,y) = x^2$.

bcMatrix = @(region,~)region.x.^2;
applyBoundaryCondition(model,'Edge',1:model.Geometry.NumEdges,'u',bcMatrix);

Generate Mesh

generateMesh(model,'Hmax',0.1);
figure;
pdemesh(model);
axis equal

Solve PDE

Because the problem is nonlinear, solvepde invokes nonlinear solver. Observe the solver progress by setting the SolverOptions.ReportStatistics property of model to 'on'.

model.SolverOptions.ReportStatistics = 'on';
result = solvepde(model);
u = result.NodalSolution;
Iteration     Residual     Step size  Jacobian: Full
   0          2.7254e-02
   1          3.5437e-04   1.0000000
   2          1.1057e-06   1.0000000

Plot Solution

figure;
pdeplot(model,'xydata',u,'zdata',u);
xlabel 'x'
ylabel 'y'
zlabel 'u(x,y)'
title 'Minimal surface'

Was this topic helpful?