Minimal Surface Problem
This example shows how to solve the minimal surface equation
on the unit disk , with on the boundary . An elliptic equation in the toolbox form is
.
Therefore, for the minimal surface problem, the coefficients are as follows:
.
Because the coefficientcis a function of the solutionu, the minimal surface problem is a nonlinear elliptic problem.
To solve the minimal surface problem using the programmatic workflow, first create a PDE model with a single dependent variable.
model = createpde;
Create the geometry and include it in the model. Thecircleg
function represents this geometry.
geometryFromEdges(model,@circleg);
Plot the geometry with the edge labels.
pdegplot(model,'EdgeLabels','on'); axisequaltitle'Geometry with Edge Labels';
Specify the 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);
Specify the boundary conditions using the function .
bcMatrix = @(region,~)region.x.^2; applyBoundaryCondition(model,'dirichlet',...'Edge',1:model.Geometry.NumEdges,...'u',bcMatrix);
Generate and plot a mesh.
generateMesh(model,'Hmax',0.1); figure; pdemesh(model); axisequal
Solve the problem by using thesolvepde
function. Because the problem is nonlinear,solvepde
invokes a nonlinear solver. Observe the solver progress by setting theSolverOptions.ReportStatistics
property of the model to'on'
.
model.SolverOptions.ReportStatistics ='on'; result = solvepde(model);
Iteration Residual Step size Jacobian: Full 0 1.8540e-02 1 2.8715e-04 1.0000000 2 1.2144e-06 1.0000000
u = result.NodalSolution;
Plot the solution.
figure; pdeplot(model,'XYData',u,'ZData',u); xlabel'x'ylabel'y'zlabel'u(x,y)'title'Minimal Surface'