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.05,  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.07,  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.15,  New conv eig=  5
              Basis= 38,  Time=   0.17,  New conv eig=  7
              Basis= 42,  Time=   0.23,  New conv eig=  8
              Basis= 46,  Time=   0.28,  New conv eig= 11
              Basis= 50,  Time=   0.37,  New conv eig= 12
              Basis= 54,  Time=   0.41,  New conv eig= 14
              Basis= 58,  Time=   0.47,  New conv eig= 14
              Basis= 62,  Time=   0.53,  New conv eig= 16
              Basis= 66,  Time=   0.58,  New conv eig= 18
End of sweep: Basis= 66,  Time=   0.58,  New conv eig= 17
              Basis= 27,  Time=   0.63,  New conv eig=  0
              Basis= 31,  Time=   0.66,  New conv eig=  0
              Basis= 35,  Time=   0.69,  New conv eig=  0
End of sweep: Basis= 35,  Time=   0.70,  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