exponenta event banner

Графики решения и градиента с pdeplot и pdeplot3D

2-D Графики решения и градиента

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

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

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 аргумент. Затем решите проблему PDE с помощью этой новой сетки и постройте график решения снова.

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);

Создайте сетку для решения.

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)])