createPDEResults

Создайте объект решения

Эта страница описывает устаревший рабочий процесс. Новые возможности могут быть несовместимы с устаревшим рабочим процессом. Соответствующий шаг в рекомендуемом рабочем процессе см. в solvepde и solvepdeeig.

Оригинальная (R2015b) версия createPDEResults имел только один синтаксис и создал PDEResults объект. Начиная со R2016a, вам, как правило, не нужно использовать createPDEResults, потому что solvepde и solvepdeeig функции возвращают объекты решения. Кроме того, createPDEResults возвращает объект более нового типа, чем PDEResults. Если вы открываете существующее PDEResults объект, он преобразуется в StationaryResults объект.

Если вы используете один из старых решателей, таких как adaptmesh, тогда вы можете использовать createPDEResults для получения объекта решения. Стационарные и зависящие от времени объекты решения имеют доступные градиенты, в то время как PDEResults не включал градиенты.

Описание

пример

results = createPDEResults(model,u) создает StationaryResults объект решения от model и его решение u.

Этот синтаксис эквивалентен results = createPDEResults(model,u,'stationary').

пример

results = createPDEResults(model,u,utimes,'time-dependent') создает TimeDependentResults объект решения от model, его решение uи времена utimes.

пример

results = createPDEResults(model,eigenvectors,eigenvalues,'eigen') создает EigenResults объект решения от model, его собственное векторное решение eigenvectorsи его собственные значения eigenvalues.

Примеры

свернуть все

Создайте StationaryResults объект из решения в эллиптическую систему.

Создайте модель УЧП для системы трех уравнений. Импортируйте геометрию скобки и постройте график меток граней.

model = createpde(3);
importGeometry(model,'BracketWithHole.stl');
figure
pdegplot(model,'FaceLabels','on')
view(30,30)
title('Bracket with Face Labels')

Figure contains an axes. The axes with title Bracket with Face Labels contains 3 objects of type quiver, patch, line.

figure
pdegplot(model,'FaceLabels','on')
view(-134,-32)
title('Bracket with Face Labels, Rear View')

Figure contains an axes. The axes with title Bracket with Face Labels, Rear View contains 3 objects of type quiver, patch, line.

Задайте граничные условия: грань 3 неподвижна, и есть сила в отрицательной z направление на грани 6.

applyBoundaryCondition(model,'dirichlet','face',4,'u',[0,0,0]);
applyBoundaryCondition(model,'neumann','face',8,'g',[0,0,-1e4]);

Установите коэффициенты, которые представляют уравнения линейной упругости.

E = 200e9;
nu = 0.3;
c = elasticityC3D(E,nu);
a = 0;
f = [0;0;0];

Создайте mesh и решите проблему.

generateMesh(model,'Hmax',1e-2);
u = assempde(model,c,a,f);

Создайте StationaryResults объект из решения.

results = createPDEResults(model,u)
results = 
  StationaryResults with properties:

    NodalSolution: [14002x3 double]
       XGradients: [14002x3 double]
       YGradients: [14002x3 double]
       ZGradients: [14002x3 double]
             Mesh: [1x1 FEMesh]

Постройте график решения для z-компонент, который является компонентом 3.

pdeplot3D(model,'ColorMapData',results.NodalSolution(:,3))

Получите решение из параболической задачи.

Задача моделирует тепловой поток в твердом теле.

model = createpde();
importGeometry(model,'Tetrahedron.stl');
pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)
view(45,45)

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

Установите температуру на грани 2 равной 100. Оставьте другие граничные условия равными их значениям по умолчанию (изоляция).

applyBoundaryCondition(model,'dirichlet','face',2,'u',100);

Установите коэффициенты, чтобы смоделировать параболическую задачу с 0 начальной температурой.

d = 1;
c = 1;
a = 0;
f = 0;
u0 = 0;

Создайте mesh и решите УЧП в течение времени от 0 до 200 на шагах 10.

tlist = 0:10:200;
generateMesh(model);
u = parabolic(u0,tlist,model,c,a,f,d);
168 successful steps
0 failed attempts
321 function evaluations
1 partial derivatives
28 LU decompositions
320 solutions of linear systems

Создайте TimeDependentResults объект из решения.

results = createPDEResults(model,u,tlist,'time-dependent');

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

pdeplot3D(model,'ColorMapData',results.NodalSolution(:,11))

Создайте EigenResults объект из решения задачи собственного значения.

Создайте геометрию и mesh для L-образной мембраны. Применить граничные условия Дирихле ко всем ребрам.

model = createpde;
geometryFromEdges(model,@lshapeg);
generateMesh(model,'Hmax',0.05,'GeometricOrder','linear');
applyBoundaryCondition(model,'dirichlet','Edge',1:model.Geometry.NumEdges,'u',0);

Решите задачу собственного значения для коэффициентов c = 1, a = 0, и d = 1. Получите решения для собственных значений от 0 до 100.

c = 1;
a = 0;
d = 1;
r = [0,100];
[eigenvectors,eigenvalues] = pdeeig(model,c,a,d,r);
              Basis= 10,  Time=   0.03,  New conv eig=  0
              Basis= 14,  Time=   0.06,  New conv eig=  0
              Basis= 18,  Time=   0.07,  New conv eig=  1
              Basis= 22,  Time=   0.09,  New conv eig=  2
              Basis= 26,  Time=   0.10,  New conv eig=  3
              Basis= 30,  Time=   0.12,  New conv eig=  5
              Basis= 34,  Time=   0.16,  New conv eig=  5
              Basis= 38,  Time=   0.25,  New conv eig=  7
              Basis= 42,  Time=   0.35,  New conv eig=  8
              Basis= 46,  Time=   0.44,  New conv eig= 11
              Basis= 50,  Time=   0.67,  New conv eig= 12
              Basis= 54,  Time=   1.04,  New conv eig= 14
              Basis= 58,  Time=   1.48,  New conv eig= 14
              Basis= 62,  Time=   1.95,  New conv eig= 16
              Basis= 66,  Time=   2.35,  New conv eig= 18
End of sweep: Basis= 66,  Time=   2.36,  New conv eig= 17
              Basis= 27,  Time=   2.52,  New conv eig=  0
              Basis= 31,  Time=   2.57,  New conv eig=  0
              Basis= 35,  Time=   2.60,  New conv eig=  0
End of sweep: Basis= 35,  Time=   2.61,  New conv eig=  0

Создайте EigenResults объект из решения.

results = createPDEResults(model,eigenvectors,eigenvalues,'eigen')
results = 
  EigenResults with properties:

    Eigenvectors: [1440x17 double]
     Eigenvalues: [17x1 double]
            Mesh: [1x1 FEMesh]

Постройте график решения для режима 10.

pdeplot(model,'XYData',results.Eigenvectors(:,10))

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

Входные параметры

свернуть все

Модель PDE, заданная как PDEModel объект.

Пример: model = createpde

УЧП решения, заданная в виде вектора или матрицы.

Пример: u = assempde(model,c,a,f);

Время для решения УЧП, заданное как монотонный вектор. Эти времена должны быть такими же, как и tlist времени, которые вы указали для решения hyperbolic или parabolic решатели.

Пример: utimes = 0:0.2:5;

Собственный вектор, заданное как матрица. Предположим

  • Np количество узлов сетки

  • N - количество уравнений

  • ev - количество собственных значений, заданное в eigenvalues

Затем eigenvectors имеет размер Np-by- N-by- ev. Каждый столбец eigenvectors соответствует собственным векторам одного собственного значения. В каждом столбце первый Np элементы соответствуют собственному вектору уравнения 1, рассчитанному в узлах mesh, следующее Np элементы соответствуют уравнению 2 и так далее.

Решение собственного значения, заданное как вектор.

Выходные аргументы

свернуть все

PDE решение, заданное как StationaryResults объект, a TimeDependentResults объект, или EigenResults объект. Создание results использование solvepde, solvepdeeig, или createPDEResults.

Пример: results = solvepde(model)

Совет

Алгоритмы

Процедура оценки градиентов в узловых местах заключается в следующем:

  1. Вычислите градиенты в точках Гаусса, расположенных внутри каждого элемента.

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

  3. Среднее значение градиента от всех элементов, которые встречаются в узловой точке. Этот шаг необходим из-за межэлементной неоднородности градиентов. Элементы, которые соединяются в одной узловой точке, дают различные экстраполированные значения градиента для точки. createPDEResults выполняет взвешенное по площади среднее для 2-D ячеек и взвешенное по объему среднее для 3-D ячеек.

Введенный в R2015b