exponenta event banner

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)
specifyCoefficients(model,Name,Value,RegionType,RegionID)
CA = specifyCoefficients(___)

Описание

пример

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)

Задайте коэффициенты для уравнения Пуассона в 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])

Установите коэффициент 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)

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

свернуть все

Модель 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

Геометрический ID области, заданный как вектор положительных целых чисел. Найдите, что идентификаторы области с помощью pdegplot, как показано в Создают Геометрию и Удаляют Контуры Поверхности или Импорт Файла STL.

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

Введенный в R2016a