Термин начальное условие имеет два значения:
Для зависящих от времени задач начальным условием является решение 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 - количество уравнений в PDE и M = length(location.x). Поля в location являются векторами строк.
Например, предположим, что имеется проблема 2-D с уравнениями N = 2:
0) = [0sin (xy)]
Эта проблема имеет m = 1, c = 1, и f = x − y]. Поскольку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);
Результаты предыдущего анализа можно использовать в качестве узловых начальных условий для текущей модели. Геометрия и сетка модели, использованной для получения результатов, и текущей модели должны быть одинаковыми. Например, решить зависящую от времени задачу PDE для времени от t0 кому t1 с временным шагом tstep.
results = solvepde(model,t0:tstep:t1);
Если позже вам нужно решить эту проблему PDE на время от t1 кому t2, вы можете использовать results для установки исходных условий. Если явно не указать временной шаг, setInitialConditions использование results соответствующее последнему времени решения, t1.
setInitialConditions(model,results)
Использовать results для определенного времени решения вместо последнего укажите индекс времени решения в качестве третьего параметра setInitialConditions. Например, чтобы использовать решение в момент времени t0 + 10*tstep, указать 11 в качестве третьего параметра.
setInitialConditions(model,results,11)