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

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

Чтобы визуализировать 2D скалярное решение для УЧП, можно использовать pdeplot функция. Эта функция позволяет вам построить решение, явным образом не интерполируя решение. Например, решите скалярную эллиптическую задачу -u=1 на 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 графики поверхности и градиента

Получите объемную поверхностную диаграмму решения с 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)])