exponenta event banner

Задайте 2D скалярные коэффициенты в функциональной форме

Примечание

ЭТОТ ПЭЙДЖ ОПИСЫВАЕТ УСТАРЕВШИЙ РАБОЧИЙ ПРОЦЕСС. Новые возможности не могут быть совместимы с устаревшим рабочим процессом. Для соответствующего шага в рекомендуемом рабочем процессе смотрите рекомендуемые примеры на странице PDE Coefficients.

Коэффициенты как Результат Программы

Обычно, самый простой способ дать коэффициенты как результат программы состоит в том, чтобы использовать символьное выражение, как описано в, Задают Скалярные Коэффициенты УЧП в символьной Форме. Для самого подробного управления коэффициентами, тем не менее, можно записать функциональную форму коэффициентов.

Коэффициент в функциональной форме для 2D геометрии имеет синтаксис

coeff = coeffunction(p,t,u,time)

coeff представляет любой коэффициент: c, a, f или d.

Ваша программа оценивает возврат coeff как вектор - строка из значений функции в центроидах треугольников t. Для справки, вычисляющей эти значения, смотрите, Вычисляют Коэффициенты в Функциональной Форме.

  • p и t являются точками узла и треугольниками mesh. Для описания этих структур данных смотрите Данные о Mesh. Короче говоря, каждый столбец p содержит x - и y - значения точки, и каждый столбец t содержит индексы трех точек в p и метке субдомена того треугольника.

  • u является вектором - строкой, содержащим решение в точках p. u является [], если коэффициенты не зависят от решения или его производных.

  • time является временем решения, скаляра. time является [], если коэффициенты не зависят вовремя.

Внимание

В функциональной форме t представляет треугольники, и time представляет время. В символьной форме t представляет время, и треугольники не вводят в форму.

Передайте коэффициентную функцию решателю как 'coeffunction' или как указатель на функцию @coeffunction. В приложении PDE Modeler передайте коэффициент как coeffunction без кавычек, потому что приложение PDE Modeler интерпретирует все записи как символы.

Если ваши коэффициенты зависят от u или time, то, когда u или time является NaN, гарантируйте, что соответствующий coeff состоит из вектора NaN правильного размера. Это сигнализирует к решателям, таким как parabolic, использовать зависящий от времени или зависимый решением алгоритм.

Для эллиптических проблем, если какой-либо коэффициент зависит от u или его градиента, необходимо использовать решатель pdenonlin вместо assempde. В приложении PDE Modeler выберите Solve > Parameters > Use nonlinear solver.

Вычислите коэффициенты в функциональной форме

X-и Y-значения

x - и y - значения центроида треугольного t являются средними значениями записей точек p в t. Получить векторы - строки xpts и ypts, содержащий средние значения:

% Triangle point indices
it1 = t(1,:);
it2 = t(2,:);
it3 = t(3,:);

% Find centroids of triangles
xpts = (p(1,it1) + p(1,it2) + p(1,it3))/3;
ypts = (p(2,it1) + p(2,it2) + p(2,it3))/3;

Интерполированный u

Функция pdeintrp линейно интерполирует значения u в центроидах t, на основе значений в точках p.

uintrp = pdeintrp(p,t,u); % Interpolated values at centroids

Вывод uintrp является вектором - строкой с одинаковым числом столбцов как t. Используйте uintrp в качестве значения решения в ваших содействующих вычислениях.

Градиент или Производные u

Функция pdegrad аппроксимирует градиент u.

[ux,uy] = pdegrad(p,t,u); % Approximate derivatives

Выходные параметры ux и uy являются векторами - строками с одинаковым числом столбцов как t.

Субдомены

Если ваши коэффициенты зависят от метки субдомена, проверяйте номер субдомена на каждый треугольник. Субдомены являются последней (четвертой) строкой треугольной матрицы. Таким образом, вектор - строка из чисел субдомена:

subd = t(4,:);

Вы видите метки субдомена при помощи функции pdegplot с набором пары "имя-значение" SubdomainLabels к 'on':

pdegplot(g,'SubdomainLabels','on')