specifyCoefficients

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

Описание

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

solvepde решает УЧП формы

m2ut2+dut·(cu)+au=f

solvepdeeig решает задачи о собственных значениях УЧП формы

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

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

пример

specifyCoefficients(model,Name,Value) задает заданные коэффициенты в каждом Name каждому сопоставил Value, и включает их в model. Необходимо задать все эти имена: mDCA, и 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)

Примечание

Необходимо задать все эти имена: mDCA, и 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

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

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

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

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

свернуть все

Содействующее присвоение, возвращенное как объект CoefficientAssignment Properties.

Больше о

свернуть все

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

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

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

Введенный в R2016a