specifyCoefficients
В этом разделе описывается записать коэффициенту f
в уравнении
или в подобных уравнениях. Вопрос состоит в том, как записать коэффициенту f
для включения в модель PDE через specifyCoefficients
.
N является количеством уравнений, смотрите уравнения, которые Можно Решить Используя Тулбокс УЧП. Дайте 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
поле представляет числа субдомена, которые в настоящее время применяются только к 2D моделям. Поля местоположения являются векторами-строками.
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-by-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);
Это представляет коэффициентную функцию