mechss

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

    Описание

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

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

    q¨(t)+q˙(t)+q(t) = B u(t)y(t) = F q(t)+q˙(t)+u(t)

    Здесь, полный вектор состояния задается как [q,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)+q˙(t)+q(t) = B u(t)y(t) = F q(t)+q˙(t)+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]+q[k+1]+q[k] = B u[k]y[k] = F q[k]+q[k+1]+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-by- Nq разреженная матрица, где Nq является число узлов. Этот вход устанавливает значение свойства M.

    Матрица демпфирования, заданная как Nq-by- Nq разреженная матрица, где Nq является число узлов. Можно также задать C=[] чтобы задать нулевое демпфирование. Этот вход устанавливает значение свойства C.

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

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

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

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

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

    Шаг расчета, заданный как скаляр. Для получения дополнительной информации см. свойство Ts.

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

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

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

    расширить все

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

    Свойства

    расширить все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      • '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 не может измениться, потому что это структурное свойство модели.

    Входная задержка для каждого входного канала, заданная как одно из следующего:

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

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

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

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

    Выходная задержка для каждого выходного канала, заданная как одно из следующего:

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

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

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

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

    Шаг расчета, заданная как:

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

    • A положительной скалярной величины, представляющее период дискретной дискретной системы времени. Задайте 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Реакция начального условия модели пространства состояний
    lsimПостройте моделируемую временную характеристику динамической системы на произвольные входы; симулированные отклики
    bodeДиаграмма Боде частотной характеристики, или данные величины и фазы
    nyquistГодограф Найквиста частотной характеристики
    nicholsГрафик Николса частотной характеристики
    sigmaГрафик сингулярных значений динамической системы
    passiveplotВычислите или постройте график индекса пассивности как функции частоты
    dcgainНизкочастотный коэффициент усиления системы LTI
    evalfrОцените частотную характеристику на заданной частоте
    freqrespЧастотная характеристика по сетке
    interfaceЗадайте физические соединения между компонентами mechss модель
    xsortСортировка состояний на основе разбиения состояний
    feedbackCоединение обратной связи многих моделей
    parallelПараллельное соединение двух моделей
    appendГруппируйте модели путем добавления их входов и выходов
    connectБлок взаимосвязей динамических систем
    lftОбобщенная взаимосвязь с обратной связью двух моделей (Звездообразного произведения Редхеффера)
    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');

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

    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 команда, когда у вас есть модели с одинаковыми размерами ввода-вывода.

    Копирайт 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');

    Создайте объект ПИД-регулятора для объекта.

    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] H. Hilber, T. Hughes & R. Taylor. Улучшенное численное рассеивание для алгоритмов интегрирования во времени в структурной динамике. Инженерно-структурная динамика землетрясений, том 5, № 3, стр. 283-292, 1977.

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

    Введенный в R2020b