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
pdegplot(model,'FaceLabels','on')
view(-134,-32)
title('Bracket with Face Labels, Rear View')

Условия границы множества: столкнитесь 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)

Установите температуру на поверхности 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
324 function evaluations
1 partial derivatives
28 LU decompositions
323 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.02,  New conv eig=  0
              Basis= 14,  Time=   0.04,  New conv eig=  0
              Basis= 18,  Time=   0.04,  New conv eig=  1
              Basis= 22,  Time=   0.06,  New conv eig=  2
              Basis= 26,  Time=   0.08,  New conv eig=  3
              Basis= 30,  Time=   0.09,  New conv eig=  5
              Basis= 34,  Time=   0.12,  New conv eig=  5
              Basis= 38,  Time=   0.15,  New conv eig=  7
              Basis= 42,  Time=   0.18,  New conv eig=  8
              Basis= 46,  Time=   0.22,  New conv eig= 11
              Basis= 50,  Time=   0.25,  New conv eig= 12
              Basis= 54,  Time=   0.33,  New conv eig= 14
              Basis= 58,  Time=   0.36,  New conv eig= 14
              Basis= 62,  Time=   0.41,  New conv eig= 16
              Basis= 66,  Time=   0.46,  New conv eig= 18
End of sweep: Basis= 66,  Time=   0.46,  New conv eig= 17
              Basis= 27,  Time=   0.51,  New conv eig=  0
              Basis= 31,  Time=   0.53,  New conv eig=  0
              Basis= 35,  Time=   0.55,  New conv eig=  0
End of sweep: Basis= 35,  Time=   0.57,  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))

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

свернуть все

Модель PDE в виде PDEModel объект.

Пример: model = createpde

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

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

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

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

Решение для собственного вектора в виде матрицы. Предположим

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

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

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

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

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

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

свернуть все

Решение для УЧП в виде StationaryResults объект, TimeDependentResults объект или EigenResults объект. Создайте results использование solvepde, solvepdeeig, или createPDEResults.

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

Советы

Алгоритмы

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

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

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

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

Введенный в R2015b