exponenta event banner

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 объект из решения в эллиптическую систему.

Создайте модель PDE для системы из трех уравнений. Импорт геометрии скобки и печать меток граней.

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

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

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;

Создайте сетку и решите PDE для времени от 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 из решения в задачу собственного значения.

Создайте геометрию и сетку для 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

PDE раствор, указанный как вектор или матрица.

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

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

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

Решение собственных векторов, указанное как матрица. Предположим

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

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

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

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

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

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

свернуть все

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

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

Совет

Алгоритмы

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

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

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

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

Представлен в R2015b