Эта модель была вдохновлена классической бумагой "Галактические Мосты и Хвосты" (Toomre & Toomre 1972). Исходная бумага объяснила, как галактики, имеющие форму диска могли разработать спиральные руки. Две галактики формы диска первоначально далеко друг от друга. Они затем летят друг другом и почти сталкиваются. Если галактики являются спиральными руками причины достаточно близких, взаимных гравитационных сил, чтобы сформироваться.
За исключением использования блока визуализации "PlotAll" графического изображения стандартных программ, всех функциональных блоков MATLAB® в этой образцовой генерации кода поддержки с Simulink® Coder™ и Embedded Coder™.
Требования: Для этого примера Simulink® генерирует код для моделирования в каталоге проекта Simulink, созданном в текущей рабочей директории (pwd). Если вы не хотите влиять на текущий каталог (или если вы не можете сгенерировать файлы в этой директории), необходимо изменить рабочую директорию.
Откройте модель и запустите моделирование путем выполнения кода ниже. При использовании MATLAB® Help, выберите код, вы хотите выполнить и нажать F9 (или избранный код, щелкните правой кнопкой мыши по выбору и выберите "Evaluate Selection"). Модель Simulink загрузит, скомпилировать, и выполнение.
model = 'sldemo_eml_galaxy';
open_system(model);
sim(model);
В этом разделе описываются модель подробно и объясняет роль каждого блока в модели. Зеленые блоки инициализируют моделирование, оранжевые блоки являются ядром моделирования, и желтый блок делает представление анимации галактики.
Начальные условия
Модель требует начальных условий для каждой галактики. Начальные условия: радиус галактики в парсеках (армированный пластик), масса галактики в солнечных массовых модулях (cm), положении галактики в парсеках (на месте продажи) и скорости галактики в m/s (vel).
В модели постоянные блоки задают начальные условия. Начальные условия были выбраны таким образом, что галактики почти столкнутся в какой-то момент вовремя.
Блоки "ConstructGalaxy"
Начальные условия передаются Галактике Построения блоков MATLAB function 1 и Галактике Построения 2. Эти блоки MATLAB function содержат код MATLAB, который создает модели галактики.
В типичной галактике большая часть массы сконцентрирована в ее центре как суперкрупная черная дыра и/или звездообразное скопление. Мы моделируем галактику как диск с радиусом r с большей частью его массы, сконцентрированной во внутреннем кругу радиуса r/3. В дополнение к этому суперкрупному ядру блок MATLAB function "ConstructGalaxy" создает 349 случайных звезд с массами в пределах от 4 - 24 солнечных масс. Эти звезды случайным образом расположены на расстоянии r/3 и r от центра галактики. Звезды первоначально перемещаются в круговые орбиты вокруг ядра галактики. Каждый объект (звезда или ядро галактики) имеет массу, положение (x, y, z), и скорость (Vx, Vy, Vz).
Блок "Конкатенации матриц"
Этот блок соединяет информацию об обеих галактиках. В этой точке модель имеет 700 объектов: 1 ядро для каждой галактики и 349 звезд вокруг каждого ядра. Эти 700 объектов взаимодействуют согласно ньютоновой механике.
Блок "Раздела"
Этот блок MATLAB function разделяет все 700 объектов на две группы: тяжелые тела и легкие тела. Тяжелые тела являются ядрами галактики. Легкие тела являются звездами. Поскольку ядра галактики намного более тяжелы, чем отдельные звезды, модель рассмотрит только тяжело-тяжелые и тяжело-легкие взаимодействия. Мы можем проигнорировать легко-легкие взаимодействия тела. Это сэкономит много времени, поскольку 698 из 700 тел в модели легки.
Блок "ApplyGravity"
Этот блок MATLAB function использует ньютонову механику, чтобы вычислить скорости и положения тел на каждом шаге. Блоком "объединения" является также блок MATLAB function. Это объединяет данные о тяжелых и световых объектах вместе.
Блок "PlotAll"
Этот блок MATLAB function строит график тел в фигуре и обновляет положение каждой звезды на каждом шаге в моделировании.
Закройте модель, не сохраняя изменений. Очистите данные, сгенерированные моделированием/примером.
close_system(model,0); clear model sldemo_eml_galaxy_output;
Примечание:
В этой модели журналирование сигнала включено (заметьте, что сигнал 'GalaxyBodies' имеет немного синей антенны журналирования сигнала на нем). Модель сохраняет выходные данные в объекте Dataset
. Любые другие данные сохранены/изменены в рабочем пространстве модели, чтобы не создавать помехи MATLAB workspace.
Чтобы изменить настройки журналирования сигнала, щелкните правой кнопкой по сигнальной линии и выберите "Signal Properties". В этом примере именем сигнала является 'GalaxyBodies', и флажок "Log signal data" проверяется.
Записанные данные сохранены в MATLAB workspace как объект Dataset
с именем 'sldemo_eml_galaxy_output'. Информация о сигнале 'GalaxyBodies' может быть получена из этого объекта путем ввода sldemo_eml_galaxy_output.get('GalaxyBodies')
, который возвращает объект Simulink.SimulationData.Signal
. Смотрите больше о работе с этими объектами в "Simulink. SimulationData." Документация сигнала.
Несмотря на ее простоту, эта модель обеспечивает понимание как наша собственная развитая галактика. Этот пример позволяет пользователю максимально упрощать модель и запускать быстрое моделирование. Пользователь может легко изменить этот пример путем добавления большего количества галактик.
Toomre, Крыловидный; Toomre, Juri; "Галактические Мосты и Хвосты"; Астрофизический Журнал, Издание 178, стр 623-666 (1972); 12/1972;