setInitialConditions

Дайте начальные условия или начальное решение

Описание

пример

setInitialConditions(model,u0) устанавливает начальные условия в model. Используйте этот синтаксис для стационарных нелинейных проблем или зависящих от времени проблем, где производная времени является первым порядком.

Примечание

Включайте геометрию в model перед использованием setInitialConditions.

пример

setInitialConditions(model,u0,ut0) используйте этот синтаксис для зависящих от времени проблем, где производная времени является вторым порядком, таким как гиперболическая проблема.

пример

setInitialConditions(___,RegionType,RegionID) устанавливает начальные условия на области геометрии с помощью любого из аргументов в предыдущих синтаксисах.

пример

setInitialConditions(model,results) устанавливает исходное предположение для стационарных нелинейных проблем с помощью решения results от предыдущего анализа той же геометрии и mesh. Начальная производная для стационарных проблем 0.

пример

setInitialConditions(model,results,iT) устанавливает начальные условия для зависящих от времени проблем с помощью решения results соответствие времени решения индексирует iT. Если вы не указываете, что время индексирует iT, setInitialConditions использует прошлый раз решения в results.

ic = setInitialConditions(___) возвращает указатель на объект начальных условий.

Примеры

свернуть все

Создайте модель PDE, импортируйте геометрию и установите начальное условие к 50 на целой геометрии.

model = createpde();
importGeometry(model,'BracketWithHole.stl');
setInitialConditions(model,50);

Установите различные начальные условия для каждого компонента системы УЧП.

Создайте модель PDE для системы с пятью компонентами. Импортируйте Block.stl геометрия.

model = createpde(5);
importGeometry(model,'Block.stl');

Установите начальные условия для каждого компонента к дважды номеру компонента.

u0 = [2:2:10]';
setInitialConditions(model,u0)
ans = 
  GeometricInitialConditions with properties:

           RegionType: 'cell'
             RegionID: 1
         InitialValue: [5x1 double]
    InitialDerivative: []

Установите различные начальные условия на каждом фрагменте L-образной мембранной геометрии.

Создайте модель, установите функцию геометрии и просмотрите метки субдомена.

model = createpde();
geometryFromEdges(model,@lshapeg);
pdegplot(model,'FaceLabels','on')
axis equal
ylim([-1.1,1.1])

Figure contains an axes object. The axes object contains 4 objects of type line, text.

Установите субдомен 1 на начальное значение-1, субдомен 2 к начальному значению 1 и субдомен 3 к начальному значению 5.

setInitialConditions(model,-1);
setInitialConditions(model,1,'Face',2);
setInitialConditions(model,5,'Face',3);

Начальная установка применяется к целой геометрии. Последующие настройки заменяют начальные установки для областей 2 и 3.

Установите начальные условия для L-образной мембранной геометрии, чтобы быть x2+y2, кроме нижнего левого квадрата, где это x2-y4.

model = createpde();
geometryFromEdges(model,@lshapeg);
pdegplot(model,'FaceLabels','on')
axis equal
ylim([-1.1,1.1])

Figure contains an axes object. The axes object contains 4 objects of type line, text.

Установите начальные условия к x2+y2.

initfun = @(location)location.x.^2 + location.y.^2;
setInitialConditions(model,initfun);

Установите начальные условия на области 2 к x2-y4. Эта установка заменяет первую установку, потому что вы применяете его после первой установки.

initfun2 = @(location)location.x.^2 - location.y.^4;
setInitialConditions(model,initfun2,'Face',2);

Гиперболические уравнения имеют ненулевой m коэффициент, таким образом, необходимо установить обоих u0 и ut0 аргументы.

Импортируйте Block.stl к модели PDE с N = 3 компонента.

model = createpde(3);
importGeometry(model,'Block.stl');

Установите начальное значение условия, чтобы быть 0 для всех компонентов. Установите начальную производную.

ut0=[4+xx2+y2+z25-tanh(z)10yx2+y2+z2]

Чтобы создать этот начальный градиент, запишите файл функции и гарантируйте, что функция находится на вашем пути MATLAB.

function ut0 = ut0fun(location)

M = length(location.x);

ut0 = zeros(3,M);

denom = location.x.^2+location.y.^2+location.z.^2;

ut0(1,:) = 4 + location.x./denom;

ut0(2,:) = 5 - tanh(location.z);

ut0(3,:) = 10*location.y./denom;

end

Установите начальные условия.

setInitialConditions(model,0,@ut0fun)
ans = 
  GeometricInitialConditions with properties:

           RegionType: 'cell'
             RegionID: 1
         InitialValue: 0
    InitialDerivative: @ut0fun

Установите начальные условия с помощью решения от предыдущего анализа той же геометрии и mesh.

Создайте и просмотрите геометрию: квадрат с круговым субдоменом.

% Square centered at (1,1), circle centered at (1.5,0.5).
rect1 = [3;4;0;2;2;0;0;0;2;2];
circ1 = [1;1.5;.75;0.25];
% Append extra zeros to the circle;
circ1 = [circ1;zeros(length(rect1)-length(circ1),1)];
gd = [rect1,circ1];
ns = char('rect1','circ1');
ns = ns';
sf = 'rect1+circ1';
[dl,bt] = decsg(gd,sf,ns);
pdegplot(dl,'EdgeLabels','on','FaceLabels','on')
axis equal
ylim([-0.1,2.1])

Figure contains an axes object. The axes object contains 11 objects of type line, text.

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

model = createpde();
geometryFromEdges(model,dl);

% Set boundary conditions that the upper
% and left edges are at temperature 10.
applyBoundaryCondition(model,'dirichlet', ...
                             'Edge',[2,3],'u',10);

% Set initial conditions that the square region
% is at temperature 0,
% and the circle is at temperature 100.
setInitialConditions(model,0);
setInitialConditions(model,100,'Face',2);

specifyCoefficients(model,'m',0,...
                          'd',1,...
                          'c',1,...
                          'a',0,...
                          'f',0);

Решите задачу в течение многих времен 0 через 1/2 с шагом 0,01.

generateMesh(model,'Hmax',0.05);
tlist = 0:0.01:0.5;
results = solvepde(model,tlist);

Постройте решение в течение многих времен 0.02, 0.04, 0.1, и 0.5.

sol = results.NodalSolution;

subplot(2,2,1)
pdeplot(model,'XYData',sol(:,3))
title('Time 0.02')
subplot(2,2,2)
pdeplot(model,'XYData',sol(:,5))
title('Time 0.04')
subplot(2,2,3)
pdeplot(model,'XYData',sol(:,11))
title('Time 0.1')
subplot(2,2,4)
pdeplot(model,'XYData',sol(:,51))
title('Time 0.5')

Figure contains 4 axes objects. Axes object 1 with title Time 0.02 contains an object of type patch. Axes object 2 with title Time 0.04 contains an object of type patch. Axes object 3 with title Time 0.1 contains an object of type patch. Axes object 4 with title Time 0.5 contains an object of type patch.

Теперь возобновите анализ и решите задачу в течение многих времен от 1/2 до 1. Используйте ранее полученное решение в течение времени 1/2 как начальное условие. Поскольку 1/2 является последним элементом в tlist, вы не должны задавать индекс времени решения. По умолчанию, setInitialConditions использует последний индекс решения.

setInitialConditions(model,results)
ans = 
  NodalInitialConditions with properties:

         InitialValue: [7289x1 double]
    InitialDerivative: []

Решите задачу в течение многих времен 1/2 до 1 с шагом 0,01.

tlist1 = 0.5:0.01:1.0;
results1 = solvepde(model,tlist1);

Постройте решение в течение многих времен 0.5, 0.7, 0.9, и 1.

sol1 = results1.NodalSolution;

figure

subplot(2,2,1)
pdeplot(model,'XYData',sol1(:,1))
title('Time 0.5')
subplot(2,2,2)
pdeplot(model,'XYData',sol1(:,21))
title('Time 0.7')
subplot(2,2,3)
pdeplot(model,'XYData',sol1(:,41))
title('Time 0.9')
subplot(2,2,4)
pdeplot(model,'XYData',sol1(:,51))
title('Time 1.0')

Figure contains 4 axes objects. Axes object 1 with title Time 0.5 contains an object of type patch. Axes object 2 with title Time 0.7 contains an object of type patch. Axes object 3 with title Time 0.9 contains an object of type patch. Axes object 4 with title Time 1.0 contains an object of type patch.

Чтобы использовать ранее полученное решение в течение конкретного времени решения вместо последнего, задайте индекс времени решения как третий параметр setInitialConditions. Например, используйте решение во время 0.2, который является 21-м элементом в tlist.

setInitialConditions(model,results,21)
ans = 
  NodalInitialConditions with properties:

         InitialValue: [7289x1 double]
    InitialDerivative: []

Решите задачу в течение многих времен 0.2 до 1 с шагом 0,01.

tlist2 = 0.2:0.01:1.0;
results2 = solvepde(model,tlist2);

Входные параметры

свернуть все

Модель PDE в виде PDEModel объект.

Пример: model = createpde

Начальные условия в виде скаляра, вектор-столбца длины N или указатель на функцию. N является размером системы УЧП. Смотрите уравнения, которые Можно Решить Используя Тулбокс УЧП.

  • Скаляр — Использование это, чтобы представлять постоянное начальное значение для всех компонентов решения в области.

  • Вектор-столбец — Использование это, чтобы представлять постоянное начальное значение для каждого из компонентов решения N в области.

  • Указатель на функцию — Использование это, чтобы представлять начальные условия в зависимости от положения. Функция должна иметь форму

    u0 = initfun(location)

    Решатели передают location как структура с полями location.x, location.y, и, для 3-D проблем, location.z. initfun должен возвратить матричный u0 из размера N-by-M, где M = length(location.x).

Пример: setInitialConditions(model,10)

Типы данных: double | function_handle
Поддержка комплексного числа: Да

Начальное условие для производной времени в виде скаляра, вектор-столбца длины N или указатель на функцию. N является размером системы УЧП. Смотрите уравнения, которые Можно Решить Используя Тулбокс УЧП. Необходимо задать ut0 когда существует ненулевой производный временем коэффициент второго порядка m.

  • Скаляр — Использование это, чтобы представлять постоянное начальное значение для всех компонентов решения в области.

  • Вектор-столбец — Использование это, чтобы представлять постоянное начальное значение для каждого из компонентов решения N в области.

  • Указатель на функцию — Использование это, чтобы представлять начальные условия в зависимости от положения. Функция должна иметь форму

    u0 = initfun(location)

    Решатели передают location как структура с полями location.x, location.y, и, для 3-D проблем, location.z. initfun должен возвратить матричный u0 из размера N-by-M, где M = length(location.x).

Пример: setInitialConditions(model,10,@initfun)

Типы данных: double | function_handle
Поддержка комплексного числа: Да

Геометрический тип области в виде 'Face', 'Edge', 'Vertex', или 'Cell'.

Когда существует несколько начальных присвоений условия, решатели используют следующие правила приоритета для определения начального условия.

  • Если существует несколько присвоений на ту же геометрическую область, решатели используют последнюю прикладную установку.

  • Если существуют отдельные присвоения на геометрическую область и контуры той области, решатели используют заданное присвоение на области и выбирают присвоение на контуре можно следующим образом. Решатели дают 'Edge' приоритет присвоения по 'Face' присвоение, даже если вы задаете 'Face' присвоение после 'Edge' “()” Присвоение. Уровнями приоритета является 'Vertex (наивысший приоритет), 'Edge', 'Face'ячейка (самый низкий приоритет).

  • Если существует присвоение, сделанное с results объект, решатели используют то присвоение вместо всех предыдущих присвоений.

Пример: setInitialConditions(model,10,'Face',1:4)

Типы данных: char | string

Геометрический ID области в виде вектора из положительных целых чисел. Найдите идентификаторы области при помощи pdegplot.

Пример: setInitialConditions(model,10,'Face',1:4)

Типы данных: double

Решение для УЧП в виде StationaryResults возразите или TimeDependentResults объект. Создайте results использование solvepde или createPDEResults.

Пример: results = solvepde(model)

Индекс времени в виде положительного целого числа.

Пример: setInitialConditions(model,results,21)

Типы данных: double

Выходные аргументы

свернуть все

Обработайте к начальному условию, возвращенному как объект. ic сопоставляет начальное условие с геометрической областью в случае геометрического присвоения или узлами в случае основанного на результатах присвоения.

Советы

  • Гарантировать, что модель имеет правильный TimeDependent установка свойства, если это возможно, задайте коэффициенты прежде, чем установить начальные условия.

  • Чтобы постараться не присваивать начальные условия неправильной области, гарантируйте, что вы используете правильные геометрические идентификаторы области путем графического вывода и визуально осмотра геометрии.

Введенный в R2016a