exponenta event banner

оценить

Интерполяция данных в выбранные расположения

Эта функция поддерживает существующий рабочий процесс. Использование [p,e,t] представление FEMesh данные не рекомендуется. Использовать interpolateSolution и evaluateGradient интерполяция PDE-решения и его градиента в произвольные точки без переключения на [p,e,t] представление.

Описание

пример

uOut = evaluate(F,pOut) возвращает интерполированные значения из интерполятора F в точках pOut.

Примечание

Если точка запроса находится вне сетки, evaluate прибыль NaN для этого момента.

пример

uOut = evaluate(F,x,y) возвращает интерполированные значения из интерполятора F в точках [x(k),y(k)], для k от 1 через numel(x). Этот синтаксис применяется к 2-D геометрии.

uOut = evaluate(F,x,y,z) возвращает интерполированные значения из интерполятора F в точках [x(k),y(k),z(k)], для k от 1 через numel(x). Этот синтаксис применяется к 3-D геометрии.

Примеры

свернуть все

В этом примере показано, как интерполировать решение скалярной задачи с помощью pOut матрица значений.

Решите уравнение -Δu = 1 на единичном диске с нулевыми условиями Дирихле.

g0 = [1;0;0;1]; % circle centered at (0,0) with radius 1
sf = 'C1';
g = decsg(g0,sf,sf'); % decomposed geometry matrix
problem = allzerobc(g); % zero Dirichlet conditions
[p,e,t] = initmesh(g);
c = 1;
a = 0;
f = 1;
u = assempde(problem,p,e,t,c,a,f); % solve the PDE

Создайте интерполятор для решения.

F = pdeInterpolant(p,t,u);

Создайте случайный набор координат в квадрате единицы измерения. Вычислите интерполированное решение в случайных точках.

rng default % for reproducibility
pOut = rand(2,25); % 25 numbers between 0 and 1
uOut = evaluate(F,pOut);
numNaN = sum(isnan(uOut))
numNaN = 9

uOut содержит некоторые NaN записи, потому что некоторые точки в pOut находятся вне диска блока.

В этом примере показано, как интерполировать решение скалярной задачи с помощью x, y значения.

Решите уравнение -Δu = 1 на единичном диске с нулевыми условиями Дирихле.

g0 = [1;0;0;1]; % circle centered at (0,0) with radius 1
sf = 'C1';
g = decsg(g0,sf,sf'); % decomposed geometry matrix
problem = allzerobc(g); % zero Dirichlet conditions
[p,e,t] = initmesh(g);
c = 1;
a = 0;
f = 1;
u = assempde(problem,p,e,t,c,a,f); % solve the PDE

Создайте интерполятор для решения.

F = pdeInterpolant(p,t,u); % create the interpolant

Вычислить интерполированное решение в точках сетки в квадрате единицы измерения с интервалом 0.2.

[x,y] = meshgrid(0:0.2:1);
uOut = evaluate(F,x,y);
numNaN = sum(isnan(uOut))
numNaN = 12

uOut содержит некоторые NaN , поскольку некоторые точки единичного квадрата находятся вне единичного диска.

В этом примере показано, как интерполировать решение в систему N = 3 уравнения.

Решите систему уравнений -Δu = f с граничными условиями Дирихле на единичном диске, где

f = [sin (x) + cos (y), cosh (xy), xy1 + x2 + y2] T.

g0 = [1;0;0;1]; % circle centered at (0,0) with radius 1
sf = 'C1';
g = decsg(g0,sf,sf'); % decomposed geometry matrix
problem = allzerobc(g,3); % zero Dirichlet conditions, 3 components
[p,e,t] = initmesh(g);
c = 1;
a = 0;
f = char('sin(x) + cos(y)','cosh(x.*y)','x.*y./(1+x.^2+y.^2)');
u = assempde(problem,p,e,t,c,a,f); % solve the PDE

Создайте интерполятор для решения.

F = pdeInterpolant(p,t,u); % create the interpolant

Интерполировать раствор по окружности.

s = linspace(0,2*pi);
x = 0.5 + 0.4*cos(s);
y = 0.4*sin(s);
uOut = evaluate(F,x,y);

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

npts = length(x);
plot3(x,y,uOut(1:npts),'b')
hold on
plot3(x,y,uOut(npts+1:2*npts),'k')
plot3(x,y,uOut(2*npts+1:end),'r')
hold off
view(35,35)

Figure contains an axes. The axes contains 3 objects of type line.

В этом примере показано, как интерполировать решение, зависящее от времени.

Решить уравнение

∂u∂t-Δu=1

на диске блока с нулевыми условиями Дирихле и нулевыми начальными условиями. Решите в пять раз от 0 до 1.

g0 = [1;0;0;1]; % circle centered at (0,0) with radius 1
sf = 'C1';
g = decsg(g0,sf,sf'); % decomposed geometry matrix
problem = allzerobc(g); % zero Dirichlet conditions
[p,e,t] = initmesh(g);
c = 1;
a = 0;
f = 1;
d = 1;
tlist = 0:1/4:1;
u = parabolic(0,tlist,problem,p,e,t,c,a,f,d);
52 successful steps
0 failed attempts
106 function evaluations
1 partial derivatives
13 LU decompositions
105 solutions of linear systems

Создайте интерполятор для решения.

F = pdeInterpolant(p,t,u);

Интерполировать раствор при x = 0.1, y = -0.1и все доступные времена.

x = 0.1;
y = -0.1;
uOut = evaluate(F,x,y)
uOut = 1×5

         0    0.1809    0.2278    0.2388    0.2413

Решение начинается в 0 в момент времени 0, как и должно. Растёт примерно до 1/4 в момент времени 1.

В этом примере показано, как интерполировать эллиптическое решение в сетку.

Определение и решение проблемы

Используйте встроенные функции геометрии для создания L-образной области с нулевыми граничными условиями Дирихле. Решите эллиптический PDE с коэффициентами c = 1, a = 0, f = 1, с нулевыми граничными условиями Дирихле.

[p,e,t] = initmesh('lshapeg'); % Predefined geometry
u = assempde('lshapeb',p,e,t,1,0,1); % Predefined boundary condition

Создание интерполятора

Создайте интерполятор для решения.

F = pdeInterpolant(p,t,u);

Создание сетки для решения

xgrid = -1:0.1:1;
ygrid = -1:0.2:1;
[X,Y] = meshgrid(xgrid,ygrid);

Результирующая сетка имеет некоторые точки, которые находятся вне L-образной области.

Анализ решения на сетке

uout = evaluate(F,X,Y);

Интерполированное решение uout является вектором-столбцом. Его можно изменить в соответствии с размером X или Y. Это дает матрицу, как выход tri2grid функция.

Z = reshape(uout,size(X));

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

свернуть все

Интерполянт, указанный как выход pdeInterpolant.

Пример: F = pdeInterpolant(p,t,u)

Точки запроса, заданные как матрица с двумя или тремя строками. Первая строка представляет x компонент точек запроса, вторая строка представляет y компонент, и для 3-D геометрии третья строка представляет z компонент. evaluate вычисляет интерполятор в каждом столбце pOut. Другими словами, evaluate интерполяция в точках pOut(:,k).

Пример: pOut = [-1.5,0,1;
1,1,2.2]

Типы данных: double

Запрос компонента точки, заданного как вектор или массив. evaluate интерполяция в любой точке 2-D [x(k),y(k)] или в точках 3-D [x(k),y(k),z(k)]. x и y, и z массивы должны содержать одинаковое количество записей.

evaluate преобразует компоненты точки запроса в линейное представление индекса, например, x(:).

Пример: x = -1:0.2:3

Типы данных: double

Запрос компонента точки, заданного как вектор или массив. evaluate интерполяция в любой точке 2-D [x(k),y(k)] или в точках 3-D [x(k),y(k),z(k)]. x и y, и z массивы должны содержать одинаковое количество записей.

evaluate преобразует компоненты точки запроса в линейное представление индекса, например, y(:).

Пример: y = -1:0.2:3

Типы данных: double

Запрос компонента точки, заданного как вектор или массив. evaluate интерполяция в любой точке 2-D [x(k),y(k)] или в точках 3-D [x(k),y(k),z(k)]. x и y, и z массивы должны содержать одинаковое количество записей.

evaluate преобразует компоненты точки запроса в линейное представление индекса, например, z(:).

Пример: z = -1:0.2:3

Типы данных: double

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

свернуть все

Интерполированные значения, возвращаемые в виде массива. uOut имеет то же количество столбцов, что и данные u используется при создании F. Если u зависит от времени, uOut содержит столбец для каждого временного шага. Для не зависящих от времени u, uOut имеет один столбец.

Количество строк в uOut - количество уравнений в системе PDE, N, умноженное на количество точек запроса, pOut. Первое pOut строки соответствуют уравнению 1, следующее pOut строки соответствуют уравнению 2 и т.д.

Если точка запроса находится вне сетки, evaluate прибыль NaN для этого момента.

Подробнее

свернуть все

Элемент

Элемент является базовой единицей в конечно-элементном методе.

Для 2-D задач элемент является треугольником в model.Mesh.Element собственность. Если треугольник представляет линейный элемент, он имеет узлы только в углах треугольника. Если треугольник представляет собой квадратичный элемент, то он имеет узлы в углах треугольника и центрах ребер.

Для 3-D задач элементом является тетраэдр с четырьмя или десятью точками. Четырёхточечный (линейный) тетраэдр имеет узлы только в своих углах. Десятиточечный (квадратичный) тетраэдр имеет узлы в своих углах и в центральной точке каждого ребра.

Дополнительные сведения см. в разделе Данные сетки.

Алгоритмы

Для каждой точки, где запрашивается решение (pOut), в процессе интерполяции есть два этапа. Во-первых, элемент, содержащий точку, должен быть расположен, а во-вторых, интерполяция внутри этого элемента должна выполняться с использованием функций формы элемента и значений решения в узловых точках элемента.

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