Термин initial condition имеет два значения:
Для зависящих от времени проблем начальным условием является решение u в начальное время, и также начальную производную времени если m коэффициент является ненулевым. Установите начальное условие в использовании модели setInitialConditions.
Для нелинейных стационарных проблем начальным условием является предположение или приближение решения u в начальной итерации нелинейного решателя. Установите начальное условие в использовании модели setInitialConditions.
Если вы не задаете начальное условие для стационарной проблемы, solvepde использует нулевую функцию для начальной итерации.
Для системы уравнений N можно дать постоянные начальные условия или как скаляр или как вектор с компонентами N. Например, если начальным условием является u = 15 для всех компонентов, используйте следующую команду.
setInitialConditions(model,15);
Если N = 3, и начальное условие 15 для первого уравнения, 0 для второго уравнения, и –3 для третьего уравнения, используйте следующие команды.
u0 = [15,0,-3]; setInitialConditions(model,u0);
Если m коэффициент является ненулевым, дайте начальное условие для производной времени также. Установите эту начальную производную в той же форме как первое начальное условие. Например, если начальной производной решения является [4,3,0], используйте следующие команды.
u0 = [15,0,-3]; ut0 = [4,3,0]; setInitialConditions(model,u0,ut0);
Если ваши начальные условия не являются постоянными, установите их путем записи функции формы.
function u0 = initfun(location)solvepde вычисляет и заполняет данные в location массив структур и передачи эти данные к вашей функции. Можно задать функцию так, чтобы ее выход зависел от этих данных. Можно использовать любое имя вместо location. Чтобы использовать дополнительные аргументы в вашей функции, перенесите свою функцию (который берет дополнительные аргументы) с анонимной функцией, которая берет только location аргумент. Например:
u0 = @(location) initfunWithAdditionalArgs(location,arg1,arg2...) setInitialConditions(model,u0)
location массив структур с полями location.x, location.y, и, для 3-D проблем, location.z. Ваша функция должна возвратить матричный u0 из размера N-by-M, где N является количеством уравнений в вашем УЧП и M = length(location.x). Поля в location векторы-строки.
Например, предположите, что у вас есть 2D проблема с N = 2 уравнения:
Эта проблема имеет m = 1, c = 1, и f = . Поскольку m является ненулевым, дайте и начальное значение u и начальное значение производной u.
Запишите следующие файлы функции. Сохраните их в местоположение на вашем MATLAB® path.
function uinit = u0fun(location)
M = length(location.x);
uinit = zeros(2,M);
uinit(1,:) = 4 + location.x.^2 + location.y.^2;function utinit = ut0fun(location)
M = length(location.x);
utinit = zeros(2,M);
utinit(2,:) = sin(location.x.*location.y);Передайте начальные условия своей модели PDE:
u0 = @u0fun; ut0 = @ut0fun; setInitialConditions(model,u0,ut0);
Можно использовать результаты предыдущего анализа как узловые начальные условия для текущей модели. Геометрия и сетка модели, вы раньше получали результаты и текущую модель, должны быть тем же самым. Например, решите зависящую от времени задачу УЧП в течение многих времен от t0 к t1 с временным шагом tstep.
results = solvepde(model,t0:tstep:t1);
Если позже необходимо решить эту задачу УЧП в течение многих времен от t1 к t2, можно использовать results устанавливать начальные условия. Если вы явным образом не задаете временной шаг, setInitialConditions использование results соответствуя в прошлый раз решения, t1.
setInitialConditions(model,results)
Использовать results в течение конкретного времени решения вместо последнего задайте индекс времени решения как третий параметр setInitialConditions. Например, чтобы использовать решение во время t0 + 10*tstep, задайте 11 как третий параметр.
setInitialConditions(model,results,11)