pdeplot
и pdeplot3D
Чтобы визуализировать 2-D скалярное решение УЧП, можно использовать pdeplot
функция. Эта функция позволяет вам построить график решения без явной интерполяции решения. Для примера решите скаляр эллиптическую задачу на 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')
Чтобы получить более гладкую поверхность решения, задайте максимальный размер треугольников сетки при помощи 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')
Доступ к градиенту решения в узловых местоположениях.
ux = results.XGradients; uy = results.YGradients;
Постройте график градиента как график полей градиента.
pdeplot(model,'FlowData',[ux,uy])
Получите объемную поверхностную диаграмму решения с 3-D геометрией и N > 1.
Во-первых, импортируйте четырехгранную геометрию в модель с N = 2 уравнениями и просмотрите ее грани.
model = createpde(2); importGeometry(model,'Tetrahedron.stl'); pdegplot(model,'FaceLabels','on','FaceAlpha',0.5) view(-40,24)
Создайте задачу с нулевыми граничными условиями Дирихле на грани 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)])