f Коэффициент для specifyCoefficients

В этом разделе описывается, как записать коэффициент f в уравнении

m2ut2+dut·(cu)+au=f

или в аналогичных уравнениях. Вопрос в том, как записать коэффициент f для включения в модель PDE через specifyCoefficients.

N количество уравнений, см. Уравнения, которые вы можете решить используя PDE Toolbox. Дайте f как одно из следующих:

  • Если f является постоянным, дайте вектор-столбец с N компонентами. Для примера, если N = 3, f может быть:

    f = [3;4;10];
  • Если f не является постоянным, задайте указатель на функцию. Функция должна иметь вид

    fcoeffunction(location,state)

    solvepde проходит location и state структуры, для fcoeffunction. Функция должна вернуть матрицу размера N -by - Nr, где Nr - число точек в расположении, котороеsolvepde проходит. Nr равно длине location.x или любой другой location поле. Функция должна оценивать f в этих точках.

    Передайте коэффициент в specifyCoefficients как указатель на функцию, такой как

    specifyCoefficients(model,'f',@fcoeffunction,...)
    • location - структура с этими полями:

      • location.x

      • location.y

      • location.z

      • location.subdomain

      Поля x, y, и z представлять x -, y - и z - координаты точек, для которых ваша функция вычисляет значения коэффициентов. The subdomain поле представляет числа поддоменов, которые в настоящее время применяются только к 2-D моделям. Поля местоположения являются векторами-строками.

    • state - структура с этими полями:

      • state.u

      • state.ux

      • state.uy

      • state.uz

      • state.time

      The state.u поле представляет текущее значение u решения. The state.ux, state.uy, и state.uz области - оценки частных производных решения ( <reservedrangesplaceholder8> /  <reservedrangesplaceholder7>,  <reservedrangesplaceholder6> /  <reservedrangesplaceholder5> и  <reservedrangesplaceholder4> /  <reservedrangesplaceholder3>) в соответствующих точках структуры местоположения. Решения и оценки градиента являются N -by Nr матрицами. The state.time поле является скаляром, представляющим время для зависящих от времени моделей.

Для примера, если N  = 3, f может быть:

function f = fcoeffunction(location,state)

N = 3; % Number of equations
nr = length(location.x); % Number of columns
f = zeros(N,nr); % Allocate f

% Now the particular functional form of f
f(1,:) = location.x - location.y + state.u(1,:);
f(2,:) = 1 + tanh(state.ux(1,:)) + tanh(state.uy(3,:));
f(3,:) = (5 + state.u(3,:)).*sqrt(location.x.^2 + location.y.^2);

Это представляет функцию коэффициента

f=[xy+u(1)1+tanh(u(1)/x)+tanh(u(3)/y)(5+u(3))x2+y2]

Похожие темы