ЭТОТ ПЭЙДЖ ОПИСЫВАЕТ УСТАРЕВШИЙ РАБОЧИЙ ПРОЦЕСС. Новые возможности не могут быть совместимы с устаревшим рабочим процессом. Для соответствующего шага в рекомендуемом рабочем процессе смотрите рекомендуемые примеры на странице 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 - значения центроида треугольного 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;
Функция pdeintrp линейно интерполирует значения u в центроидах t, на основе значений в точках p.
uintrp = pdeintrp(p,t,u); % Interpolated values at centroidsВывод uintrp является вектором - строкой с одинаковым числом столбцов как t. Используйте uintrp в качестве значения решения в ваших содействующих вычислениях.
Функция pdegrad аппроксимирует градиент u.
[ux,uy] = pdegrad(p,t,u); % Approximate derivativesВыходные параметры ux и uy являются векторами - строками с одинаковым числом столбцов как t.
Если ваши коэффициенты зависят от метки субдомена, проверяйте номер субдомена на каждый треугольник. Субдомены являются последней (четвертой) строкой треугольной матрицы. Таким образом, вектор - строка из чисел субдомена:
subd = t(4,:);
Вы видите метки субдомена при помощи функции pdegplot с набором пары "имя-значение" SubdomainLabels к 'on':
pdegplot(g,'SubdomainLabels','on')