Установка начальных условий

Что такое начальные условия?

Термин 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.x, location.yи, для 3-D задач, location.z. initfun необходимо вернуть матрицу u0 размера N -by- M, где N количество уравнений в вашем УЧП и M = length(location.x). Поля в location являются векторы-строки.

Например, предположим, что у вас есть 2-D задача с N = 2 уравнениями:

2ut2·(u)=[3+x4xy]u(0)=[4+x2+y20]ut(0)=[0sin(xy)]

Эта проблема m = 1, c = 1, и f = [3+x4xy]. Потому что m является ненулевым, задайте как начальное значение u, так и начальное значение производной u.

Запишите следующие файлы функции. Сохраните их в местоположении на MATLAB® путь.

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);

Начальные условия узлов

Можно использовать результаты предыдущего анализа как узловые начальные условия для текущей модели. Геометрия и mesh модели, которую вы использовали для получения результатов, и текущей модели должны быть одинаковыми. Для примера решите зависящую от времени УЧП задачу на время от 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)

Похожие темы