В этом примере показано, как решить уравнение Пуассона с точечным источником дельта-функции на единичном диске с помощью adaptmesh функция.
В частности, решить уравнение Пуассона
, y)
на единичном диске с нулевыми граничными условиями Дирихле. Точное решение, выраженное в полярных координатах
r) 2δ,
который является единственным в начале.
Используя адаптивное уточнение сетки, частичное уравнение Toolbox™ может точно найти решение в любом месте от начала координат.
Проблему определяют следующие переменные:
c, aКоэффициенты PDE.
fФункция, фиксирующая источник точек в начале координат. Возвращает 1/область для треугольника, содержащего начало координат, и 0 для других треугольников.
c = 1; a = 0; f = @circlef;
Создайте модель PDE с одной зависимой переменной.
numberOfPDE = 1; model = createpde(numberOfPDE);
Создайте геометрию и включите ее в модель.
g = @circleg; geometryFromEdges(model,g);
Постройте график геометрии и отобразите метки кромок.
figure; pdegplot(model,'EdgeLabels','on'); axis equal title 'Geometry With Edge Labels Displayed';

Задайте нулевое решение для всех четырех внешних кромок окружности.
applyBoundaryCondition(model,'dirichlet','Edge',(1:4),'u',0);
adaptmesh решает эллиптические PDE с помощью адаптивной генерации сетки. tripick параметр позволяет указать функцию, возвращающую треугольники, которые будут уточнены в следующей итерации. circlepick возвращает треугольники с вычисленными оценками ошибок, превышающими заданный допуск. Допуск предоставляется circlepick с использованием параметра «par».
[u,p,e,t] = adaptmesh(g,model,c,a,f,'tripick','circlepick','maxt',2000,'par',1e-3);
Number of triangles: 258 Number of triangles: 515 Number of triangles: 747 Number of triangles: 1003 Number of triangles: 1243 Number of triangles: 1481 Number of triangles: 1705 Number of triangles: 1943 Number of triangles: 2155 Maximum number of triangles obtained.
Постройте график лучшей сетки.
figure;
pdemesh(p,e,t);
axis equal
Постройте график значений ошибок.
x = p(1,:)'; y = p(2,:)'; r = sqrt(x.^2+y.^2); uu = -log(r)/2/pi; figure; pdeplot(p,e,t,'XYData',u-uu,'ZData',u-uu,'Mesh','off');

Постройте график решения КЭМ на самой тонкой сетке.
figure; pdeplot(p,e,t,'XYData',u,'ZData',u,'Mesh','off');
