exponenta event banner

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

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

m∂2u∂t2+d∂u∂t−∇ · (c∇u) +au=f

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

N - количество уравнений, см. раздел Уравнения, которые можно решить с помощью панели инструментов PDE. Дать 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 точек, для которых функция вычисляет значения коэффициентов. subdomain поле представляет номера поддоменов, которые в настоящее время применяются только к 2-D моделям. Поля местоположения являются векторами строк.

    • state - структура со следующими полями:

      • state.u

      • state.ux

      • state.uy

      • state.uz

      • state.time

      state.u поле представляет текущее значение решения u. state.ux, state.uy, и state.uz поля представляют собой оценки частных производных решения (∂u/∂x, ∂u/∂y и ∂u/∂z) в соответствующих точках структуры местоположения. Оценки решения и градиента представляют собой матрицы N-по-Nr. 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 = [x y + u (1) 1 + tanh (∂u (1 )/ ∂x) + tanh (∂u (3 )/ ∂y) (5 + u (3)) x2 + y2]

Связанные темы