pdeplot
и pdeplot3D
Чтобы визуализировать 2D скалярное решение для УЧП, можно использовать pdeplot
функция. Эта функция позволяет вам построить решение, явным образом не интерполируя решение. Например, решите скалярную эллиптическую задачу на L-образной мембране с нулем граничные условия Дирихле и график решение.
Создайте модель PDE, 2D геометрию и 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')
Чтобы получить более сглаженную поверхность решения, задайте максимальный размер треугольников mesh при помощи 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
симметрическая матрица в форме на 6 Н.
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)])