===== Структура ФРУНДа ===== Рассмотрим более подробно систему ФРУНД. За счет доступности исходных кодов этой системы архитектура ее была исследована более подробно (рисунок 1). Как и почти все MBS системы ФРУНД состоит из модулей ядра и пользовательского интерфейса. Ядро пакета составляют два основных компонента: модуль синтеза программного кода для описания уравнений движения и модуль сборки расчетной программы. Каждый из этих модулей состоит из транслятора структуры модели, полученной из построенной в пользовательском интерфейсе геометрии, и части, осуществляющей синтез кода на языке ФОРТРАН для расчетной программы. Математическая часть ядра хранится в библиотеке rasv4db.lib. Библиотека содержит численные методы для расчета дифференциально-алгебраических уравнений (ДАУ) и основную исполнимую программу. Модуль символьного синтеза формирует исходный код для расчета правых частей (fprav*.for), коэффициентов матрицы связей и сил в соединительных элементах (fas*.for). Перед сборкой расчетного модуля в исходные коды можно включать пользовательские подпрограммы, в которых можно использовать функции интерфейса библиотеки rasv4db.lib. После этого коды обрабатываются препроцессорами, которые добавляют директивы компилятора для повышения точности вещественных переменных. Расчетный модуль формируется при компиляции исходных кодов в библиотеки и их сборке вместе с библиотекой ядра в исполнимый файл rashet32.exe. Это решатель, при запуске которого начинается процесс моделирования. Начальные условия и параметры интегрирования передаются в расчетный модуль в виде файлов ico и upr. В результате расчета вычисляются параметры тел: перемещения, скорости, ускорения и реакции в шарнирах в каждый момент времени. Эти результаты записываются в файл rezr, который потом обрабатывается модулями постпроцессора. Постпроцессор формирует анимацию модели и строит графики измеряемых параметров, которые описаны в файле upr. Анимация формируется в модуле пользовательского интерфейса, графики строятся программой anaz.exe, а воспроизводятся программой benafin.exe. Процесс моделирования в системе представляет собой последовательный вызов различных модулей, зависимых по входным параметрам. Управляющая часть реализована скриптами командной строки Windows, которые при необходимости тоже можно модифицировать. Таким образом, в системе ФРУНД есть целый ряд возможностей добавления пользовательских расширений даже без вмешательства в исходные коды системы. {{:arxitektura_cae_frund.png?200|архитектура CAE ФРУНД}} ---- Рисунок 1 – Архитектура пакета ФРУНД К недостаткам архитектуры системы относятся: * сильная файловая зависимость исполнимых модулей, использование модулей как отдельных программ, а не как подключаемых к системе плагинов; * сильная функциональная нагрузка на пользовательский интерфейс, который осуществляет трансляцию геометрических моделей, подготовку входных данных и часть постобработки результатов. Тем не менее, наличие среды проектирования и отделенного от интерфейса расчетного ядра делают эту систему перспективной для доработки и создания расширений. Благодаря возможности использовать отдельные модули пакета и наличию открытого интерфейса эта система подходит в качестве платформы для расширения Для разработки новой версии системы с использованием существующего ядра необходимо, в первую очередь обособить модули ядра и создать фасад для их использования оболочкой (рисунок 2, FRUND CORE). Параллельно с этим, надо избавиться от избытка файлов, которые оказывают негативное воздействие на жесткие диски при работе с системой и замедляют скорость работы с моделью. {{:frund_arch.png|}} ---- Рисунок 2 – Зависимость базовых модулей по входным и выходным данным Идея переработки архитектуры - перекомпиляция модулей на языке ФОРТРАН из FRUND CORE в DLL-библиотеки и их подключение к одному интерфейсному модулю (фасаду), написанному на С++. Этот модуль можно будет использовать как консольное приложение или как DLL-библиотеку, используемую новой версией GUI. ФРУНД работает в соответствии с диаграммами последовательности (рис. 3-5): {{:frund_seq_gen.png|}} ---- Рисунок 3 – Диаграмма последовательностей шага генерации модели {{:frund_seq_solve.png|}} ---- Рисунок 4 – Диаграмма последовательностей шага расчета модели {{:frund_seq_anaz.png|}} ---- Рисунок 5 – Диаграмма последовательностей анализа результатов расчета