exponenta event banner

mechss

Разреженная модель пространства состояния второго порядка

    Описание

    Использовать mechss для представления разреженных моделей второго порядка с использованием матриц, полученных из пакета анализа конечных элементов (FEA). Такие разреженные модели возникают из анализа конечных элементов (FEA) и полезны в таких областях, как структурный анализ, поток жидкости, теплопередача и электромагниты. Результирующие матрицы из этого типа моделирования довольно велики с разреженным шаблоном. Следовательно, использование mechss является эффективным способом представления таких больших моделей разреженного состояния-пространства в MATLAB ® для выполнения линейного анализа. Также можно использоватьmechss преобразование первого порядка sparss объект модели или другие динамические системные модели в mechss объект.

    Вы можете использовать mechss объекты модели для представления моделей состояния пространства SISO или MIMO в непрерывном или дискретном времени. В непрерывном режиме модель разреженная масса-пружина-демпфер второго порядка представлена в виде:

    q (t)  + C  (t) + K q (t) = B  u (t ) y (t= F q ( t) + G q˙ (t) + D u (t)

    Здесь вектор полного состояния задается как [q,q˙], где q и являются векторами смещения и скорости. u и y представляют входы и выходы соответственно. M, C и K представляют матрицы массы, демпфирования и жесткости соответственно. B является входной матрицей, пока F и G являются выходными матрицами для смещения и скорости соответственно. D - матрица «вход-выход».

    Вы можете использовать mechss объект для:

    • Выполнение анализа отклика во временной и частотной областях.

    • Укажите сигнальные соединения с другими моделями LTI.

    • Укажите физические интерфейсы между компонентами с помощью interface команда.

    Дополнительные сведения см. в разделе Основы разреженной модели.

    Создание

    Описание

    пример

    sys = mechss(M,C,K,B,F,G,D) создает mechss объект, представляющий эту непрерывную модель массы-пружины-демпфера второго порядка:

    q (t)  + C  (t) + K q (t) = B  u (t ) y (t= F q ( t) + G q˙ (t) + D u (t)

    Здесь, M, C, и K представляют матрицы массы, демпфирования и жесткости соответственно. B является матрицей «вход в состояние», пока F и G - матрицы «смещение к выходу» и «скорость к выходу», являющиеся результатом двух компонентов состояния; x. D - матрица «вход-выход». Можно задать M кому [] когда массовая матрица является единичной матрицей. Набор G и D кому [] или опустить их, когда они пусты.

    пример

    sys = mechss(M,C,K,B,F,G,D,ts) использует время выборки ts для создания mechss объект, представляющий эту дискретно-временную модель масса-пружина-демпфер второго порядка:

    q [k + 2 ] + C q [ k + 1 ] + K q [k] = B u [k] y  [k] = F [k] + G q [k + 1] + D u [k]

    Чтобы оставить время выборки неопределенным, установите ts кому -1.

    пример

    sys = mechss(M,C,K) создает mechss объект модели со следующими допущениями:

    • Матрицы идентификаторов для B и F с тем же размером, что и массовая матрица M

    • Матрицы нулей для G и D

    пример

    sys = mechss(D) создает mechss объект модели, представляющий статическое усиление D. Выходная модель разреженного состояния-пространства эквивалентна mechss([],[],[],[],[],[],D).

    пример

    sys = mechss(___,Name,Value) задает свойства модели разреженного состояния-пространства второго порядка, используя один или несколько аргументов пары имя-значение. Этот синтаксис используется с любой из предыдущих комбинаций входных аргументов.

    пример

    sys = mechss(ltiSys) преобразует динамическую модель системы ltiSys в модель разреженного состояния-пространства второго порядка.

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

    развернуть все

    Массовая матрица, заданная как Nqоколо-Nq разреженная матрица, где Nq - количество узлов. Этот вход устанавливает значение свойства M.

    Демпфирующая матрица, указанная как Nqоколо-Nq разреженная матрица, где Nq - количество узлов. Также можно задать C=[] для задания нулевого демпфирования. Этот ввод задает значение свойства C.

    Матрица жесткости, заданная как Nqоколо-Nq разреженная матрица, где Nq - количество узлов. Этот вход устанавливает значение свойства K.

    Матрица «вход в состояние», заданная как Nqоколо-Nu разреженная матрица, где Nq - количество узлов и Nu - количество входов. Этот ввод задает значение свойства B.

    Матрица «смещение-выход», заданная как Nyоколо-Nq разреженная матрица, где Nq - количество узлов и Ny - количество выходов. Этот вход устанавливает значение свойства F.

    Матрица «скорость-выход», заданная как Nyоколо-Nq разреженная матрица, где Nq - количество узлов и Ny - количество выходов. Этот ввод задает значение свойства G.

    Матрица «вход-выход», заданная как Nyоколо-Nu разреженная матрица, где Ny - количество выходов и Nu - количество входов. Этот ввод задает значение свойства D.

    Время выборки, указанное как скаляр. Дополнительные сведения см. в свойстве Ts.

    Динамическая система для преобразования в форму разреженного состояния-пространства второго порядка, заданную как динамическая системная модель SISO или MIMO или массив динамических системных моделей. Динамические системы, которые можно преобразовать, включают в себя:

    • Непрерывные или дискретные числовые модели LTI, такие как sparss, tf, zpk, ss, или pid модели.

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

    развернуть все

    Выходная модель системы, возвращенная как mechss объект модели.

    Свойства

    развернуть все

    Массовая матрица, заданная как Nqоколо-Nq разреженная матрица, где, Nq - количество узлов.

    Демпфирующая матрица, указанная как Nqоколо-Nq разреженная матрица, где, Nq - количество узлов.

    Демпфирующая матрица, указанная как Nqоколо-Nq разреженная матрица, где, Nq - количество узлов.

    Матрица «вход в состояние», заданная как Nqоколо-Nu разреженная матрица, где, Nq - количество узлов и Nu - количество входов.

    Матрица «смещение-выход», заданная как Nyоколо-Nq разреженная матрица, где, Nq - количество узлов и Ny - количество выходов.

    Матрица «скорость-выход», заданная как Nyоколо-Nq разреженная матрица, где, Nq - количество узлов и Ny - количество выходов.

    Матрица «вход-выход», заданная как Nyоколо-Nu разреженная матрица, где, Ny - количество выходов и Nu - количество входов. D также называется статической матрицей усиления и представляет отношение выходного сигнала к входному сигналу в установившемся состоянии.

    Информация о разбиении состояния, содержащая компоненты вектора состояния, интерфейсы между компонентами и компоненты, соединяющие внутренний сигнал, заданная как структурный массив со следующими полями:

    • Type - Тип включает компонент, сигнал или физический интерфейс

    • Name - имя компонента, сигнала или физического интерфейса;

    • Size - Количество состояний или узлов в разделе

    Просмотреть информацию о секциях модели разреженного состояния-пространства можно с помощью showStateInfo. Можно также сортировать и упорядочивать секции разреженной модели с помощью xsort.

    Опции для анализа модели, заданные как структура со следующими полями:

    • UseParallel - Установите для этой опции значение true для обеспечения возможности параллельных вычислений и false чтобы отключить его. Параллельные вычисления по умолчанию отключены. UseParallel требуется лицензия Parallel Computing Toolbox™.

    • DAESolver - используйте эту опцию для выбора типа решения дифференциального алгебраического уравнения (DAE). Доступны следующие решатели дисковых полок:

      • 'trbdf2' - Решатель с фиксированным шагом с точностью o(h^2), где h - размер шага. [2] Это решатель по умолчанию для mechss объект модели.

      • 'trbdf3' - Решатель с фиксированным шагом с точностью o(h^3), где h - размер шага.

      • 'hht' - Решатель с фиксированным шагом с точностью o(h^2), где h - размер шага. [1]

      Уменьшение размера шага повышает точность и расширяет диапазон частот, где численное демпфирование ничтожно мало. 'hht' является самым быстрым, но может столкнуться с трудностями с высоким начальным ускорением (например, импульсной характеристикой с начальным рывком). 'trbdf2' требует примерно вдвое больше вычислений, чем 'hht' и 'trbdf3' требует еще на 50% больше вычислений, чем 'trbdf2'.

      Пример см. в разделе Временной и частотный отклик разреженной модели второго порядка.

    Внутренние задержки в модели, указанные как вектор. Внутренние задержки возникают, например, при замыкании петель обратной связи на системах с задержками или при соединении систем с задержками последовательно или параллельно. Дополнительные сведения о внутренних задержках см. в разделе Закрытие циклов обратной связи с временными задержками.

    Для моделей непрерывного времени внутренние задержки выражаются в единицах времени, указанных TimeUnit свойство модели. Для моделей дискретного времени внутренние задержки выражаются как целые кратные времени выборки Ts. Например, InternalDelay = 3 означает задержку в три периода выборки.

    Можно изменить значения внутренних задержек с помощью свойства InternalDelay. Однако количество записей в sys.InternalDelay не может изменяться, поскольку является структурным свойством модели.

    Задержка на входе для каждого входного канала, определяемая как одно из следующих значений:

    • Скаляр (Scalar) - задает задержку ввода для системы SISO или такую же задержку для всех входов системы с несколькими входами.

    • Nu-by-1 vector - Определение отдельных входных задержек для ввода системы с несколькими входами, где Nu - количество входов.

    Для систем непрерывного времени укажите задержки на входе в единицу времени, указанную TimeUnit собственность. Для дискретно-временных систем укажите входные задержки в целых кратных времени выборки, Ts.

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

    Задержка на выходе для каждого выходного канала, определяемая как одно из следующих значений:

    • Скаляр (Scalar) - указывает задержку вывода для системы SISO или такую же задержку для всех выходов системы с несколькими выходами.

    • Ny-by-1 vector - Определение отдельных выходных задержек для вывода системы с несколькими выходами, где Ny - количество выходов.

    Для систем непрерывного времени укажите задержки на выходе в единицах времени, указанных TimeUnit собственность. Для дискретно-временных систем укажите задержки на выходе в целых числах, кратных времени выборки. Ts.

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

    Время выборки, указанное как:

    • 0 для систем непрерывного времени.

    • Положительный скаляр, представляющий период выборки дискретно-временной системы. Определить Ts в единице времени, указанной TimeUnit собственность.

    • -1 для дискретно-временной системы с неопределенным временем выборки.

    Примечание

    Изменение Ts не дискретизирует и не выполняет повторную выборку модели. Для преобразования между представлениями непрерывного и дискретного времени используйте c2d и d2c. Для изменения времени выборки системы дискретного времени используйте d2d.

    Единицы переменной времени, указанные как одно из следующих значений:

    • 'nanoseconds'

    • 'microseconds'

    • 'milliseconds'

    • 'seconds'

    • 'minutes'

    • 'hours'

    • 'days'

    • 'weeks'

    • 'months'

    • 'years'

    Изменение TimeUnit не влияет на другие свойства, но изменяет общее поведение системы. Использовать chgTimeUnit преобразование между единицами времени без изменения поведения системы.

    Имена входных каналов, указанные как одно из следующих:

    • Символьный вектор для моделей с одним входом.

    • Массив ячеек символьных векторов для моделей с несколькими входами.

    • '', не указаны имена для каких-либо входных каналов.

    Кроме того, можно назначить входные имена для моделей с несколькими входами с помощью автоматического векторного расширения. Например, если sys является моделью с двумя входами, введите:

    sys.InputName = 'controls';

    Имена вводимых данных автоматически расширяются до {'controls(1)';'controls(2)'}.

    Можно использовать сокращенную нотацию u см. InputName собственность. Например, sys.u эквивалентно sys.InputName.

    Использовать InputName кому:

    • Определение каналов на дисплее модели и графиках.

    • Извлечение подсистем систем MIMO.

    • Укажите точки соединения при соединении моделей.

    Блоки входных каналов, указанные как одно из следующих:

    • Символьный вектор для моделей с одним входом.

    • Массив ячеек символьных векторов для моделей с несколькими входами.

    • '', не указаны единицы измерения для каких-либо входных каналов.

    Использовать InputUnit для задания единиц входного сигнала. InputUnit не влияет на поведение системы.

    Входные группы каналов, заданные как структура. Использовать InputGroup назначение входных каналов систем MIMO группам и ссылка на каждую группу по имени. Имена полей InputGroup - имена групп, а значения полей - входные каналы каждой группы. Например:

    sys.InputGroup.controls = [1 2];
    sys.InputGroup.noise = [3 5];

    создает входные группы с именем controls и noise которые включают входные каналы 1 и 2, и 3 и 5соответственно. Затем можно извлечь подсистему из controls входы на все выходы с использованием:

    sys(:,'controls')

    По умолчанию InputGroup - структура без полей.

    Имена выходных каналов, указанные как одно из следующих:

    • Символьный вектор для моделей с одним выходом.

    • Массив ячеек символьных векторов для моделей с несколькими выходами.

    • '', не указаны имена для каких-либо выходных каналов.

    Кроме того, можно назначить имена выходных данных для моделей с несколькими выходами с помощью автоматического векторного расширения. Например, если sys является моделью с двумя выходами, введите:

    sys.OutputName = 'measurements';

    Имена вывода автоматически расширяются до {'measurements(1)';'measurements(2)'}.

    Можно также использовать сокращенную нотацию y см. OutputName собственность. Например, sys.y эквивалентно sys.OutputName.

    Использовать OutputName кому:

    • Определение каналов на дисплее модели и графиках.

    • Извлечение подсистем систем MIMO.

    • Укажите точки соединения при соединении моделей.

    Единицы выходного канала, указанные как одно из следующих:

    • Символьный вектор для моделей с одним выходом.

    • Массив ячеек символьных векторов для моделей с несколькими выходами.

    • '', не указаны единицы измерения для каких-либо выходных каналов.

    Использовать OutputUnit для задания единиц выходного сигнала. OutputUnit не влияет на поведение системы.

    Группы выходных каналов, заданные как структура. Использовать OutputGroupназначение выходных каналов систем MIMO группам и ссылка на каждую группу по имени. Имена полей OutputGroup - имена групп, а значения полей - выходные каналы каждой группы. Например:

    sys.OutputGroup.temperature = [1];
    sys.InputGroup.measurement = [3 5];

    создает выходные группы с именем temperature и measurement которые включают выходные каналы 1, и 3 и 5соответственно. Затем можно извлечь подсистему из всех входов в measurement вывод с использованием:

    sys('measurement',:)

    По умолчанию OutputGroup - структура без полей.

    Пользовательский текст, который требуется связать с системой, указанный как символьный вектор или массив ячеек символьных векторов. Например, 'System is MIMO'.

    Пользовательские данные, которые необходимо связать с системой, указанные как любой тип данных MATLAB.

    Имя системы, указанное как символьный вектор. Например, 'system_1'.

    Сетка выборки для массивов модели, заданная как массив структуры.

    Использовать SamplingGrid для отслеживания значений переменных, связанных с каждой моделью в массиве модели.

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

    Например, можно создать массив линейных моделей 11 на 1. sysarr, делая снимки линейной изменяющейся во времени системы в моменты времени t = 0:10. В следующем коде хранятся выборки времени с линейными моделями.

     sysarr.SamplingGrid = struct('time',0:10)

    Аналогично, можно создать массив модели 6 на 9, M, путем независимой выборки двух переменных, zeta и w. Следующий код отображает (zeta,w) значения для M.

    [zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
    M.SamplingGrid = struct('zeta',zeta,'w',w)

    По умолчанию SamplingGrid - структура без полей.

    Функции объекта

    В следующих списках показаны функции, которые можно использовать с mechss объекты модели.

    развернуть все

    sparssРазреженная модель состояния-пространства первого порядка
    getx0Отображение начальных условий из mechss объект в sparss объект
    fullПреобразование разреженных моделей в плотное хранилище
    imp2expПреобразование неявного линейного отношения в явное отношение «вход-выход»
    invИнвертировать модели
    getDelayModelПредставление внутренних задержек в пространстве состояний
    sparssdataДоступ к данным модели разреженного состояния и пространства первого порядка
    mechssdataДоступ к данным модели разреженного состояния и пространства второго порядка
    showStateInfoСведения о разделе состояния
    spyВизуализация узора разреженности sparss объект модели
    stepГрафик ступенчатой реакции динамической системы; данные ответа на шаг
    impulseграфик импульсной характеристики динамической системы; данные импульсной характеристики
    initialОтклик начального состояния модели state-space
    lsimПостройте график моделируемой временной реакции динамической системы на произвольные входы; смоделированные данные ответа
    bodeГрафик Моде частотной характеристики, или данные о величине и фазе
    nyquistНайквистский график частотной характеристики
    nicholsДиаграмма частотной характеристики Николса
    sigmaГрафик сингулярных значений динамической системы
    passiveplotВычислить или построить индекс пассивности как функцию частоты
    dcgainНизкочастотный (DC) коэффициент усиления системы LTI
    evalfrОценить частотную характеристику на данной частоте
    freqrespЧастотная характеристика по сети
    interfaceУкажите физические соединения между компонентами mechss модель
    xsortСортировать состояния по разделу состояний
    feedbackОбратная связь нескольких моделей
    parallelПараллельное соединение двух моделей
    appendГруппировать модели путем добавления их входных и выходных данных
    connectБлок-схема взаимосвязей динамических систем
    lftОбобщенное взаимодействие обратной связи двух моделей (звездное изделие Redheffer)
    seriesПоследовательное соединение двух моделей

    Примеры

    свернуть все

    В этом примере рассмотрим разреженные матрицы для модели 3-D луча, подвергающиеся импульсной точечной нагрузке на его кончике в файле sparseBeam.mat.

    Извлеките разреженные матрицы из sparseBeam.mat.

    load('sparseBeam.mat','M','K','B','F','G','D');

    Создать mechss объект модели путем указания [] для матрицы C, так как демпфирования нет.

    sys = mechss(M,[],K,B,F,G,D)
    Sparse continuous-time second-order model with 3 outputs, 1 inputs, and 3408 nodes.
    
    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 является mechss объект модели, содержащий массив разреженных моделей 3 на 1 с 3408 узлами, 1 входом и 3 выходами.

    Вы можете использовать spy для визуализации разреженности mechss объект модели.

    spy(sys)

    Figure contains an axes. The axes with title nnz: M=71076, K=212802, B=1, F=3, G=973. contains 9 objects of type line. These objects represent K, B, F, D.

    Для этого примера рассмотрим разреженные матрицы дискретной системы в файле discreteSOSparse.mat.

    Загрузить разреженные матрицы из discreteSOSparse.mat.

    load('discreteSOSparse.mat','M','C','K','B','F','G','D','ts');

    Создание дискретного времени mechss объект модели путем указания времени образца ts.

    sys = mechss(M,C,K,B,F,G,D,ts)
    Sparse discrete-time second-order model with 1 outputs, 1 inputs, and 28408 nodes.
    
    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 является дискретным временем mechss объект модели с 28408 узлами, 1 входом и 1 выходом.

    Вы можете использовать spy для визуализации шаблона разреженности mechss объект модели. Можно щелкнуть правой кнопкой мыши на графике, чтобы выбрать матрицы для отображения.

    spy(sys)

    Figure contains an axes. The axes with title nnz: C=524538, K=1750850, B=28408, F=71, D=1. contains 9 objects of type line. These objects represent K, B, F, D.

    В этом примере рассмотрим sparseSOArray.mat который содержит три набора разреженных матриц, которые определяют множество разреженных моделей состояния-пространства второго порядка.

    Извлечь данные из sparseSOArray.mat.

    load('sparseSOArray.mat');

    Предварительное выделение массива 3 на 1 mechss модели.

    sys = mechss(zeros(1,1,3));

    Затем используйте индексированное назначение для заполнения массива 3 на 1 разреженными моделями второго порядка.

    sys(:,:,1) = mechss(M1,[],K1,B1,F1,G1,[]);
    sys(:,:,2) = mechss(M2,[],K2,B2,F2,G2,[]);
    sys(:,:,3) = mechss(M3,[],K3,B3,F3,G3,[]);
    size(sys)
    3x1 array of sparse second-order models.
    Each model has 1 outputs, 1 inputs, and between 385 and 738 nodes.
    

    Кроме того, можно создать массив разреженных моделей второго порядка с помощью stack при наличии моделей с одинаковыми размерами ввода-вывода.

    Copyright 2020 The MathWorks, Inc

    Создание статической MIMO-модели разреженного пространства состояния второго порядка.

    Рассмотрим следующую матрицу статического усиления с двумя входами и тремя выходами:

    D = [152359] Матрица статического усиления

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

    D = [1,5;2,3;5,9];
    sys = mechss(D);
    size(sys)
    Sparse second-order model with 3 outputs, 2 inputs, and 0 nodes.
    

    В этом примере рассмотрим sparseSOSignal.mat который содержит массу, жесткость и демпфирующие разреженные матрицы.

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

    load('sparseSOModel.mat','M','C','K');
    sys = mechss(M,C,K);

    mechss создает объект модели sys со следующими допущениями:

    • Матрицы идентификаторов для B и F с тем же размером, что и массовая матрица M.

    • Нулевые матрицы для G и D.

    В этом примере рассмотрим sparssModel.mat который содержит sparss объект модели ltiSys.

    Загрузить sparss объект модели из sparssModel.mat.

    load('sparssModel.mat','ltiSys');
    ltiSys
    Sparse continuous-time state-space model with 1 outputs, 1 inputs, and 354 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.
    

    Используйте mechss команда для преобразования в mechss представление объекта модели.

    sys = mechss(ltiSys)
    Sparse continuous-time second-order model with 1 outputs, 1 inputs, and 354 nodes.
    
    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.
    

    В этом примере рассмотрим tuningForkData.mat который содержит разреженную модель второго порядка камертона, нанесенного мягко, но быстро на один из его зубцов. Система имеет один вход, давление, приложенное к одной из ее стойок, что приводит к двум выходам - смещениям на наконечнике и основании камертона.

    Загрузить разреженные матрицы из tuningForkData.mat в рабочую область и создайте mechss объект модели.

    load('tuningForkData.mat','M','K','B','F');
    sys = mechss(M,[],K,B,F,'InputName','pressure','Outputname',{'y tip','x base'})

    Затем задайте опции решателя для модели, установив UseParallel параметр для true и DAESolver использовать trbdf3. Использовать spy для проверки структуры модели. Для включения параллельных вычислений требуется лицензия Parallel Computing Toolbox™.

    sys.SolverOptions.UseParallel = true;
    sys.SolverOptions.DAESolver = 'trbdf3';
    spy(sys)

    Также можно использовать showStateInfo для осмотра компонентов.

    showStateInfo(sys)

    Использовать step для получения графика ответа на шаг системы. Необходимо указать вектор времени или конечное время для разреженных моделей.

    t = linspace(0,0.5,1000);
    step(sys,t)

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

    w = logspace(1,5,1000);
    bode(sys,w), grid

    В этом примере рассмотрим sparseSOSignal.mat содержит разреженную модель второго порядка. Определите исполнительный механизм, датчик и контроллер и соедините их с установкой в контуре обратной связи.

    Загрузите разреженные матрицы и создайте mechss объект.

    load sparseSOSignal.mat
    plant = mechss(M,C,K,B,F,[],[],'Name','Plant');

    Затем создайте исполнительный механизм и датчик с помощью функций передачи.

    act = tf(1,[1 0.5 3],'Name','Actuator');
    sen = tf(1,[0.02 7],'Name','Sensor');

    Создайте объект контроллера PID для завода.

    con = pid(1,1,0.1,0.01,'Name','Controller');

    Используйте feedback команда на соединение установки, датчика, привода и контроллера в контуре обратной связи.

    sys = feedback(sen*plant*act*con,1)
    Sparse continuous-time second-order model with 1 outputs, 1 inputs, and 7111 nodes.
    
    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 является mechss объект с mechss объекты имеют приоритет над всеми другими типами объектов модели.

    Использовать showStateInfo для просмотра групп компонентов и сигналов.

    showStateInfo(sys)
    The state groups are:
    
        Type          Name       Size
      -------------------------------
      Component      Sensor         1
      Component      Plant       7102
      Signal                        1
      Component     Actuator        2
      Signal                        1
      Component    Controller       2
      Signal                        1
      Signal                        1
    

    Использовать xsort для сортировки компонентов и сигналов, а затем просмотра групп компонентов и сигналов.

    sysSort = xsort(sys);
    showStateInfo(sysSort)
    The state groups are:
    
        Type          Name       Size
      -------------------------------
      Component      Sensor         1
      Component      Plant       7102
      Component     Actuator        2
      Component    Controller       2
      Signal                        4
    

    Обратите внимание, что компоненты теперь упорядочены перед разделением сигнала. Сигналы теперь сортируются и группируются в одном разделе.

    Можно также визуализировать массив разреженности результирующей системы с помощью spy.

    spy(sysSort)

    Figure contains an axes. The axes with title nnz: M=170134, C=5, K=340360, B=3, F=1. contains 17 objects of type line. These objects represent K, B, F, D.

    Для этого примера рассмотрим структурную модель, которая состоит из двух квадратных пластин, соединенных со столбами в каждой вершине, как показано на рисунке ниже. Нижняя плита жестко прикреплена к земле, а стойки жестко прикреплены к каждой вершине квадратной плиты.

    Загрузить матрицы модели конечных элементов, содержащиеся в platePillarModel.mat и создать разреженную модель второго порядка, представляющую вышеуказанную систему.

    load('platePillarModel.mat')
    sys = ...
       mechss(M1,[],K1,B1,F1,'Name','Plate1') + ...
       mechss(M2,[],K2,B2,F2,'Name','Plate2') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar3') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar4') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar5') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar6');

    Использовать showStateInfo для проверки компонентов mechss объект модели.

    showStateInfo(sys)
    The state groups are:
    
        Type        Name      Size
      ----------------------------
      Component    Plate1     2646
      Component    Plate2     2646
      Component    Pillar3     132
      Component    Pillar4     132
      Component    Pillar5     132
      Component    Pillar6     132
    

    Теперь загрузите данные индекса интерфейсного узла из nodeData.mat и использовать interface для создания физических соединений между двумя пластинами и четырьмя стойками. nodes является 6x7 массив ячеек, где первые две строки содержат данные индекса узла для первой и второй пластин, в то время как остальные четыре строки содержат данные индекса для четырех столбов.

    load('nodeData.mat','nodes')
    for i=3:6
       sys = interface(sys,"Plate1",nodes{1,i},"Pillar"+i,nodes{i,1});
       sys = interface(sys,"Plate2",nodes{2,i},"Pillar"+i,nodes{i,2});
    end

    Укажите соединение между нижней пластиной и землей.

    sysCon = interface(sys,"Plate2",nodes{2,7});

    Использовать showStateInfo для подтверждения физических интерфейсов.

    showStateInfo(sysCon)
    The state groups are:
    
        Type            Name         Size
      -----------------------------------
      Component        Plate1        2646
      Component        Plate2        2646
      Component       Pillar3         132
      Component       Pillar4         132
      Component       Pillar5         132
      Component       Pillar6         132
      Interface    Plate1-Pillar3      12
      Interface    Plate2-Pillar3      12
      Interface    Plate1-Pillar4      12
      Interface    Plate2-Pillar4      12
      Interface    Plate1-Pillar5      12
      Interface    Plate2-Pillar5      12
      Interface    Plate1-Pillar6      12
      Interface    Plate2-Pillar6      12
      Interface    Plate2-Ground        6
    

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

    spy(sysCon)

    Figure contains an axes. The axes with title nnz: M=95256, K=249052, B=1, F=1. contains 37 objects of type line. These objects represent K, B, F, D.

    Набор данных для этого примера предоставил Виктор Долк из ASML.

    Ссылки

    [1] Х. Хилбер, Т. Хьюз и Р. Тейлор. «Улучшено численное рассеяние для алгоритмов интегрирования времени в структурной динамике». Сейсмостойкость и структурная динамика, том 5, № 3, стр. 283-292, 1977.

    [2] М. Осия и Л. Шампин. «Анализ и осуществление TR-BDF2.» Прикладная численная математика, том 20, № 1-2, стр. 21-37, 1996.

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