Графики решений и градиентов с pdeplot и pdeplot3D

2-D графики решений и градиентов

Чтобы визуализировать 2-D скалярное решение УЧП, можно использовать pdeplot функция. Эта функция позволяет вам построить график решения без явной интерполяции решения. Для примера решите скаляр эллиптическую задачу -u=1 на L-образной мембране с нулевыми граничными условиями Дирихле и постройте график решения.

Создайте модель PDE, 2-D геометрию и mesh. Задайте граничные условия и коэффициенты. Решите УЧП задачу.

model = createpde;
geometryFromEdges(model,@lshapeg);
applyBoundaryCondition(model,'dirichlet','Edge',1:model.Geometry.NumEdges,'u',0);
c = 1;
a = 0;
f = 1;
specifyCoefficients(model,'m',0,'d',0,'c',c,'a',a,'f',f);
generateMesh(model);

results = solvepde(model);

Использование pdeplot для построения графика решения.

u = results.NodalSolution;
pdeplot(model,'XYData',u,'ZData',u,'Mesh','on')
xlabel('x')
ylabel('y')

Figure contains an axes. The axes contains an object of type patch.

Чтобы получить более гладкую поверхность решения, задайте максимальный размер треугольников сетки при помощи Hmax аргумент. Затем решите задачу УЧП, используя этот новый mesh снова постройте график решения.

generateMesh(model,'Hmax',0.05);
results = solvepde(model);
u = results.NodalSolution;

pdeplot(model,'XYData',u,'ZData',u,'Mesh','on')
xlabel('x')
ylabel('y')

Figure contains an axes. The axes contains an object of type patch.

Доступ к градиенту решения в узловых местоположениях.

ux = results.XGradients;
uy = results.YGradients;

Постройте график градиента как график полей градиента.

pdeplot(model,'FlowData',[ux,uy])

Figure contains an axes. The axes contains an object of type quiver.

3-D поверхностные и градиентные графики

Получите объемную поверхностную диаграмму решения с 3-D геометрией и N > 1.

Во-первых, импортируйте четырехгранную геометрию в модель с N = 2 уравнениями и просмотрите ее грани.

model = createpde(2);
importGeometry(model,'Tetrahedron.stl');
pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)
view(-40,24)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Создайте задачу с нулевыми граничными условиями Дирихле на грани 4.

applyBoundaryCondition(model,'dirichlet','Face',4,'u',[0,0]);

Создайте коэффициенты для задачи, где f = [1;10] и c - симметричная матрица в 6N виде.

f = [1;10];
a = 0;
c = [2;0;4;1;3;8;1;0;2;1;2;4];
specifyCoefficients(model,'m',0,'d',0,'c',c,'a',a,'f',f);

Создайте mesh для решения.

generateMesh(model,'Hmax',20);

Решите проблему.

results = solvepde(model);
u = results.NodalSolution;

Постройте график двух компонентов решения.

pdeplot3D(model,'ColorMapData',u(:,1))
view(-175,4)
title('u(1)')

figure
pdeplot3D(model,'ColorMapData',u(:,2))
view(-175,4)
title('u(2)')

Вычислите поток решения и постройте график результатов для обоих компонентов.

[cgradx,cgrady,cgradz] = evaluateCGradient(results);
figure
pdeplot3D(model,'FlowData',[cgradx(:,1) cgrady(:,1) cgradz(:,1)])

figure
pdeplot3D(model,'FlowData',[cgradx(:,2) cgrady(:,2) cgradz(:,2)])

Для просмотра документации необходимо авторизоваться на сайте