
pdenonlin "Stepsize too small"
Posted:
Jul 8, 2013 10:47 AM


Please download two files ellipseb2.m & ellipseg.m from
http://www.people.fas.harvard.edu/~sfinch/matlab/
and execute the following code:
g='ellipseg'; b='ellipseb2'; c='1./sqrt(1+ux.^2+uy.^2)'; a=0; f=0; rtol=1e4;
[p,e,t]=initmesh(g); [p,e,t]=refinemesh(g,p,e,t);
u=pdenonlin(b,p,e,t,c,a,f,'tol',rtol); figure; pdeplot(p,e,t,'xydata',u,'zdata',u,'mesh','on','colorbar','off'); axis equal tight;
format long
[ux,uy]=pdegrad(p,t,u); tArea = pdetrg(p,t); surfaceArea = sqrt(1 + ux.^2 + uy.^2)*tArea'; surfaceArea
[p,e,t]=refinemesh(g,p,e,t); u=pdenonlin(b,p,e,t,c,a,f,'tol',rtol); [ux,uy]=pdegrad(p,t,u); tArea = pdetrg(p,t); surfaceArea = sqrt(1 + ux.^2 + uy.^2)*tArea'; surfaceArea
Everything works fine up to this point. The graph shows the minimal surface spanning a folded circular loop (with sharp corners at two boundary points). A good numerical estimate 2.48201... is found (the true value is 2.48228...). If, however, we attempt to improve upon the estimate via
[p,e,t]=refinemesh(g,p,e,t); u=pdenonlin(b,p,e,t,c,a,f,'tol',rtol);
then the following message appears:
??? Error using ==> pdenonlin at 251 Stepsize too small.
Does anyone have suggestions for how to avoid this problem? Thank you,
Steve Finch
P.S. The two files were created using the command:
pdeellip(0,0,1,1/sqrt(2),0)
then specifying u = abs(y) using the Boundary Mode menu, and finally using the commands:
fid = wgeom(g, 'ellipseg'); fid = wbound(b, 'ellipseb2');

