linearize

Линеаризуйте структурную или тепловую модель

Описание

пример

sys = linearize(model) извлекает разреженную линейную модель для использования с Control System Toolbox™. Для модели структурного анализа, linearize извлекает mechss Модель (Control System Toolbox). Для тепловой аналитической модели это извлекает sparss Модель (Control System Toolbox). Для переходных моделей, linearize время использования 0.

Использование linearizeInput задавать входные параметры линейной модели, которые соответствуют внешнему принуждению, такому как загрузки или внутренние источники тепла. Тулбокс обрабатывает значение каждого выбранного ограничения, загрузки или источника как константа, и значение становится входным каналом того в линеаризовавшей модели. Остающиеся граничные условия обнуляются в целях линеаризации, независимо от их значения в структурной или тепловой модели. Убедитесь, что вы помечаете все ненулевые граничные условия и передаете их как входные параметры с помощью linearizeInput.

Использование linearizeOutput задавать выходные параметры линейной модели в терминах областей геометрии, таких как ячейки (только для 3-D конфигураций), поверхности, ребра или вершины. Это включает все степени свободы (число степеней свободы) в заданную область как выходные значения. Для структурных моделей можно также задать который из x, y и степеней свободы z, чтобы включать как выходные параметры.

Используйте sys.InputName и sys.OutputGroup определять местоположение вводов и выводов sys это соответствует конкретному граничному условию или в выбранную область.

пример

mx = linearize(model,'OutputType','matrices') возвращает матрицы конечного элемента ABCDE или MKBF используемый, чтобы создать mechss и sparss модели в предыдущем синтаксисе.

Примеры

свернуть все

Линеаризуйте модель для теплового анализа и возвратите матрицы конечного элемента.

Создайте переходную тепловую модель.

thermalmodel = createpde('thermal','transient');

Добавьте геометрию блока в тепловую модель при помощи geometryFromEdges функция. Файл описания геометрии для этой проблемы называется crackg.m.

geometryFromEdges(thermalmodel,@crackg);

Постройте геометрию с метками ребра.

pdegplot(thermalmodel,'EdgeLabels','on')
ylim([-1,1])
axis equal

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

Сгенерируйте mesh.

generateMesh(thermalmodel);

Задайте теплопроводность, массовую плотность и удельную теплоемкость материала.

thermalProperties(thermalmodel,'ThermalConductivity',1, ...
                               'MassDensity',1, ...
                               'SpecificHeat',1);

Задайте температуру на левом крае как 100, и постоянный тепловой поток к внешнему виду через правый край как -10. Добавьте уникальную метку в каждое граничное условие.

thermalBC(thermalmodel,'Edge',6,'Temperature',100,'Label','TempBC');
thermalBC(thermalmodel,'Edge',1,'HeatFlux',-10,'Label','FluxBC');

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

internalHeatSource(thermalmodel,25,'Label','HeatSource');

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

thermalIC(thermalmodel,0);

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

linearizeInput(thermalmodel,'HeatSource');
linearizeInput(thermalmodel,'TempBC');
linearizeInput(thermalmodel,'FluxBC');

Задайте выходные параметры линеаризовавшей модели путем вызова linearizeOutput функционируйте, чтобы установить необходимые области для измерения температуры. Задайте одну область на вызов функции. Например, укажите, что выход является температурным значением во всех узлах в напряжении 2.

linearizeOutput(thermalmodel,'Edge',2);

Измерьте температурные в напряжении 2.

sys = linearize(thermalmodel)
Sparse continuous-time state-space model with 27 outputs, 3 inputs, and 1363 states.

Use "spy" and "showStateInfo" to inspect model structure. 
Type "properties('sparss')" for a list of model properties. 
Type "help sparssOptions" for available solver options for this model.

В линеаризовавшей модели используйте sys.InputName проверять что входные параметры к sys источник тепла, температурные в напряжении 6 и поток тепла в напряжении 1.

sys.InputName
ans = 3x1 cell
    {'HeatSource'}
    {'TempBC'    }
    {'FluxBC'    }

В линеаризовавшей модели используйте sys.OutputGroup определять местоположение разделов, сопоставленных с каждой координатой.

sys.OutputGroup
ans = struct with fields:
    Edge2: [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... ]

Если у вас нет Control System Toolbox™, можно получить доступ к матрицам конечного элемента ABC, и E можно следующим образом.

mx = linearize(thermalmodel,'OutputType','matrices')
mx = struct with fields:
    A: [1363x1363 double]
    B: [1363x3 double]
    C: [27x1363 double]
    E: [1363x1363 double]

Линеаризуйте структурную модель и возвратите матрицы конечного элемента.

Создайте структурную модель анализа переходных процессов.

structuralmodel = createpde('structural','transient-solid');

Импортируйте и постройте геометрию камертона.

importGeometry(structuralmodel,'TuningFork.stl');
pdegplot(structuralmodel)

Figure contains an axes object. The axes object contains 3 objects of type quiver, patch, line.

Сгенерируйте mesh.

generateMesh(structuralmodel,'Hmax',0.005);

Задайте модуль Молодежи, отношение Пуассона и массовую плотность, чтобы смоделировать линейное эластичное существенное поведение. Задайте все физические свойства в сопоставимых модулях.

structuralProperties(structuralmodel,'YoungsModulus',210E9, ...
                                     'PoissonsRatio',0.3, ...
                                     'MassDensity',8000);

Идентифицируйте поверхности для применения граничных ограничений и загрузок путем графического вывода геометрии с метками поверхности.

figure('units','normalized','outerposition',[0 0 1 1])
pdegplot(structuralmodel,'FaceLabels','on')
view(-50,15)
title 'Geometry with Face Labels'

Figure contains an axes object. The axes object with title Geometry with Face Labels contains 3 objects of type quiver, patch, line.

Наложите достаточные граничные ограничения, чтобы предотвратить движение твердого тела при прикладной загрузке. Как правило, вы содержите камертон вручную или монтируете его на таблице. Упрощенное приближение к этому граничному условию фиксирует область около пересечения зубцов, и указатель (стоит 21 и 22).

structuralBC(structuralmodel,'Face',[21,22],'Constraint','fixed');

Задайте загрузку давления на зубец как короткий прямоугольный импульс давления.

structuralBoundaryLoad(structuralmodel,'Face',11,'Pressure',5E6, ...
                                       'EndTime',1e-3,'Label','Pressure');

Задайте ускорение из-за силы тяжести как загрузка тела.

structuralBodyLoad(structuralmodel,'GravitationalAcceleration',[0 0 -1], ...
                                   'Label','Gravity');

Создайте входные параметры для силы тяжести и импульса давления на камертоне.

linearizeInput(structuralmodel,'Gravity');
linearizeInput(structuralmodel,'Pressure');

Измерьте y-смещение поверхности 12 и x-смещение поверхности 6.

linearizeOutput(structuralmodel,'Face',12,'Component','y');
linearizeOutput(structuralmodel,'Face',6,'Component','x');

Получите mechss модель камертона.

sys = linearize(structuralmodel)
Sparse continuous-time second-order model with 26 outputs, 4 inputs, and 3240 degrees of freedom.

Use "spy" and "showStateInfo" to inspect model structure. 
Type "properties('mechss')" for a list of model properties. 
Type "help mechssOptions" for available solver options for this model.

В линеаризовавшей модели используйте sys.InputName проверять что входные параметры к sys загрузка тела силы тяжести и импульс давления на зубце. Загрузка тела силы тяжести производит три входных параметров, потому что она имеет x-, y-, и z-компоненты.

sys.InputName
ans = 4x1 cell
    {'Gravity_x'}
    {'Gravity_y'}
    {'Gravity_z'}
    {'Pressure' }

В линеаризовавшей модели используйте sys.OutputGroup определять местоположение разделов, сопоставленных с каждой координатой.

sys.OutputGroup
ans = struct with fields:
    Face12_y: [1 2 3 4 5 6 7 8 9 10 11 12 13]
     Face6_x: [14 15 16 17 18 19 20 21 22 23 24 25 26]

Если у вас нет Control System Toolbox™, можно получить доступ к матрицам конечного элемента MKB, и F можно следующим образом.

mx = linearize(structuralmodel,'OutputType','matrices')
mx = struct with fields:
    M: [3240x3240 double]
    K: [3240x3240 double]
    B: [3240x4 double]
    F: [26x3240 double]

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

свернуть все

Структурная или тепловая модель в виде StructuralModel возразите или ThermalModel объект. linearize функция не поддерживает нелинейный тепловой анализ.

Пример: thermalmodel = createpde('thermal','steadystate')

Пример: structuralmodel = createpde('structural','static-solid')

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

свернуть все

Разреженные линейные модели для использования с Control System Toolbox, возвращенным как mechss или sparss объект модели.

Матрицы конечного элемента ABCD, и E или MKB, и F, возвращенный как массив структур.

Смотрите также

|

Введенный в R2021b