exponenta event banner

specifyCoefficients

Указание коэффициентов в модели PDE

Описание

Коэффициенты PDE

solvepde решает PDE формы

m∂2u∂t2+d∂u∂t−∇ · (c∇u) +au=f

solvepdeeig решает проблемы собственных значений PDE формы

−∇· (c∇u) +au=λduor−∇· (c∇u) + 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 адресует уравнения формы

m∂2u∂t2+d∂u∂t-∇⋅ (c∇u) + 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);

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

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, выполните сетку геометрии и решите PDE.

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

Задайте нулевые граничные условия Дирихле для всех кромок. Создайте сетку, решите PDE и постройте график результата.

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

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

свернуть все

Назначение коэффициентов, возвращаемое как объект «Свойства назначения».

Подробнее

свернуть все

d Коэффициент, когда m является ненулевым

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 или его градиент.

  • Дифференциальное уравнение в частных производных можно преобразовать в требуемую форму с помощью символьных математических Toolbox™. pdeCoefficients (Символьная математическая панель инструментов) преобразует PDE в требуемую форму и извлекает коэффициенты в структуру, которая может использоваться specifyCoefficients.

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

См. также

| | (инструментарий символьной математики) | (Панель инструментов «Символьная математика»)

Представлен в R2016a