specifyCoefficients

Задайте коэффициенты в модели PDE

Описание

Коэффициенты УЧП

solvepde решает PDE вида

m2ut2+dut·(cu)+au=f

solvepdeeig решает задачи собственного значения PDE вида

·(cu)+au=λduили·(cu)+au=λ2mu

specifyCoefficients задает коэффициенты m, d, c, a и f в модели PDE.

пример

specifyCoefficients(model,Name,Value) определяет заданные коэффициенты в каждом Name каждому связанному Value, и включает их в model. Необходимо указать все эти имена: m, d, c, a, и f. Этот синтаксис применяет коэффициенты ко всей геометрии.

Примечание

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

пример

specifyCoefficients(model,Name,Value,RegionType,RegionID) присваивает коэффициенты для заданной геометрической области.

пример

CA = specifyCoefficients(___) возвращает указатель на объект назначения коэффициентов в model.

Примеры

свернуть все

Задайте коэффициенты для уравнения Пуассона -u=1.

solvepde обращается к уравнениям вида

m2ut2+dut-(cu)+au=f.

Поэтому коэффициенты для уравнения Пуассона m=0, d=0, c=1, a=0, f=1. Включите эти коэффициенты в модель PDE L-образной мембраны.

model = createpde();
geometryFromEdges(model,@lshapeg);
specifyCoefficients(model,'m',0,...
                          'd',0,...
                          'c',1,...
                          'a',0,...
                          'f',1);

Задайте нулевые граничные условия Дирихле, создайте сетку модели и решите УЧП.

applyBoundaryCondition(model,'dirichlet','Edge',1:model.Geometry.NumEdges,'u',0);
generateMesh(model,'Hmax',0.25);
results = solvepde(model);

Просмотрите решение.

pdeplot(model,'XYData',results.NodalSolution)

Figure contains an axes. The axes contains an object of type patch.

Задайте коэффициенты для уравнения Пуассона в 3-D с неконстантным исходным членом и получите объект коэффициента.

Коэффициенты уравнения m=0, d=0, c=1, a=0. Для неконстантного исходного термина примите f=y2tanh(z)/1000.

f = @(location,state)location.y.^2.*tanh(location.z)/1000;

Установите коэффициенты в 3-D прямоугольной геометрии блока.

model = createpde();
importGeometry(model,'Block.stl');
CA = specifyCoefficients(model,'m',0,...
                               'd',0,...
                               'c',1,...
                               'a',0,...
                               'f',f)
CA = 
  CoefficientAssignment with properties:

    RegionType: 'cell'
      RegionID: 1
             m: 0
             d: 0
             c: 1
             a: 0
             f: @(location,state)location.y.^2.*tanh(location.z)/1000

Установите нулевые условия Дирихле на грани 1, создайте сетку геометрии и решите УЧП.

applyBoundaryCondition(model,'dirichlet','Face',1,'u',0);
generateMesh(model);
results = solvepde(model);

Просмотрите решение на поверхности.

pdeplot3D(model,'ColorMapData',results.NodalSolution)

Создайте скалярную модель PDE с L-образной мембраной в качестве геометрии. Постройте график меток геометрии и поддомена.

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

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

Установите c коэффициент к 1 во всех областях, но f коэффициент к 1 в субдомене 1, 5 в субдомене 2 и -8 в субдомене 3. Установите все другие коэффициенты равными 0.

specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',1,'Face',1);
specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',5,'Face',2);
specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',-8,'Face',3);

Установите нулевые граничные условия Дирихле для всех ребер. Создайте mesh, решите УЧП и постройте график результата.

applyBoundaryCondition(model,'dirichlet','Edge',1:model.Geometry.NumEdges,'u',0);
generateMesh(model,'Hmax',0.25);
results = solvepde(model);
pdeplot(model,'XYData',results.NodalSolution)

Figure contains an axes. The axes contains an object of type patch.

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

свернуть все

Модель PDE, заданная как PDEModel объект.

Пример: model = createpde

Аргументы в виде пар имя-значение

Пример: specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',@fcoeff)

Примечание

Необходимо указать все эти имена: m, d, c, a, и f.

Коэффициент производной по времени второго порядка, заданный как скаляр, вектор-столбец или указатель на функцию. Для получения дополнительной информации о размерах и подробных сведений о форме указателя на функцию коэффициента, см. M, d или Коэффициент для specifyCoefficients.

Задайте 0 если термин не является частью вашей проблемы.

Пример: specifyCoefficients('m',@mcoef,'d',0,'c',1,'a',0,'f',1,'Face',1:4)

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

Коэффициент производной по времени первого порядка, заданный как скаляр, вектор-столбец или указатель на функцию. Для получения дополнительной информации о размерах и подробных сведений о форме указателя на функцию коэффициента, см. M, d или Коэффициент для specifyCoefficients.

Примечание

Если на m коэффициент ненулевый, d должен быть 0 или матрица, а не указатель на функцию. См. D Коэффициент, Когда m является Ненулевым.

Задайте 0 если термин не является частью вашей проблемы.

Пример: specifyCoefficients('m',0,'d',@dcoef,'c',1,'a',0,'f',1,'Face',1:4)

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

Коэффициент производной пространства второго порядка, заданный как скаляр, вектор-столбец или указатель на функцию. Для получения дополнительной информации о размерах и подробных сведений о форме указателя на функцию коэффициента, см., Коэффициент c для specifyCoefficients.

Пример: specifyCoefficients('m',0,'d',0,'c',@ccoef,'a',0,'f',1,'Face',1:4)

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

Коэффициент умножения решения, заданный как скаляр, вектор-столбец или указатель на функцию. Для получения дополнительной информации о размерах и подробных сведений о форме указателя на функцию коэффициента, см. M, d или Коэффициент для specifyCoefficients.

Задайте 0 если термин не является частью вашей проблемы.

Пример: specifyCoefficients('m',0,'d',0,'c',1,'a',@acoef,'f',1,'Face',1:4)

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

Исходный коэффициент, заданный как скаляр, вектор-столбец или указатель на функцию. Для получения дополнительной информации о размерах и подробных сведений о форме указателя на функцию коэффициента, смотрите f Коэффициент для specifyCoefficients.

Задайте 0 если термин не является частью вашей проблемы.

Пример: specifyCoefficients('m',0,'d',0,'c',1,'a',0,'f',@fcoeff,'Face',1:4)

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

Тип геометрической области, заданный как 'Face' или 'Cell'.

Пример: specifyCoefficients('m',0,'d',0,'c',1,'a',0,'f',10,'Cell',2)

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

Идентификатор геометрической области, заданный как вектор положительных целых чисел. Поиск идентификаторов областей при помощи pdegplot.

Пример: specifyCoefficients('m',0,'d',0,'c',1,'a',0,'f',10,'Cell',1:3)

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

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

свернуть все

Назначение коэффициента, возвращаемое как объект CoefficientAssignment Properties.

Подробнее о

свернуть все

d Коэффициент при m является ненулевым

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

d представляет коэффициент демпфирования в случае ненулевого m. Чтобы задать d, выполните следующие два шага:

  1. Функции results = assembleFEMatrices(...) для задачи с вашими исходными коэффициентами и использования d = 0. Используйте 'none' по умолчанию метод для assembleFEMatrices.

  2. Возьмите d коэффициент как матрица размера results.M. Обычно d является пропорциональным results.M, или является линейной комбинацией results.M и results.K.

См. «Динамика демпфированной консольной балки».

Совет

  • Для собственных уравнений коэффициенты не могут зависеть от решения u или его градиент.

  • Можно преобразовать дифференциальное уравнение с частными производными в необходимую форму с помощью Symbolic Math Toolbox™. pdeCoefficients (Symbolic Math Toolbox) преобразует УЧП в необходимую форму и извлекает коэффициенты в структуру, которую можно использовать specifyCoefficients.

    The pdeCoefficients функция также может вернуть структуру символьных выражений, в этом случае вам нужно использовать pdeCoefficientsToDouble (Symbolic Math Toolbox), чтобы преобразовать эти выражения в двойной формат, прежде чем передавать их в specifyCoefficients.

Введенный в R2016a