Архитектура решения
Решение OpenCS построено по принципам модульности, разделения ответственности (Separation of Concerns) и чистоты вычислительных ядер от платформенно-зависимого UI.
Диаграмма зависимостей проектов
graph TD
subgraph UI ["Пользовательский интерфейс (WPF / Windows)"]
OpenCS["OpenCS (WPF App)"]
end
subgraph Bridges ["Адаптеры и мосты"]
CSfea_CScore["CSfea.CScore (Мост моделей)"]
end
subgraph FEA ["МКЭ и Теплофизика (CSfea)"]
CSfea_Core["CSfea.Core (МКЭ-ядро)"]
CSfea_Thermal["CSfea.Thermal (Теплопередача)"]
CSfea_Torsion["CSfea.Torsion (Кручение Сен-Венан)"]
CSfea_Sparse["CSfea.Sparse (Разреженные матрицы)"]
CSparse["CSfea.Sparse.CSparse (Interop)"]
end
subgraph CoreDomain ["Расчётное ядро и Нормы (CScore)"]
CScore["CScore (Фибровый метод, СП 16, СП 20)"]
CScore_Fire["CScore.Fire (Огнестойкость СП 468)"]
end
subgraph Base ["Базовые математические библиотеки"]
CSmath["CSmath (Векторы, матрицы, сплайны)"]
CSTriangulation["CSTriangulation (CDT Ruppert, Front)"]
end
OpenCS --> CScore
OpenCS --> CSfea_Core
OpenCS --> CSfea_CScore
CSfea_CScore --> CScore
CSfea_CScore --> CSfea_Core
CScore_Fire --> CScore
CScore --> CSmath
CScore --> CSTriangulation
CSfea_Core --> CSfea_Sparse
CSfea_Thermal --> CSfea_Core
CSfea_Torsion --> CSfea_Core
CSfea_Sparse --> CSmath
CSparse --> CSfea_Sparse
CSTriangulation --> CSmath
Поток пользовательского расчёта
sequenceDiagram
participant User as Инженер
participant UI as WPF UI
participant DB as DatabaseService / SQLite
participant Task as TaskRunner
participant Core as CScore / CSfea
participant Report as Reporting
User->>UI: Создаёт геометрию и задачу
UI->>DB: Сохраняет модель и JSON-параметры
UI->>Task: Запускает CalcTask
Task->>Core: Вызывает обработчик и интегратор
Core-->>Task: CalcResult
Task-->>UI: Таблица/график/журнал
UI->>Report: Экспорт результата
Описание подсистем
1. Базовые библиотеки
CSmath: фундамент проекта. Реализует векторную и матричную алгебру, сплайны Безье и B-сплайны, геометрические примитивы, пересечения и алгоритмы 2D/3D геометрии без внешних зависимостей.CSTriangulation: библиотека построения триангуляционных сеток. Включает методы Advancing Front и конформную триангуляцию Делоне (CDT Рупперта) с контролем минимального угла и адаптивным измельчением.
2. Доменная модель сечений (CScore)
- Фибровый метод (Fibre / Layered method): сечение дискретизируется на элементарные волокна (fibres), что позволяет точно вычислять физически нелинейные диаграммы деформирования, трещинообразование и пластичность.
- СП 16.13330.2017: нормативные проверки прочности и устойчивости стальных элементов.
- СП 20.13330: генератор сочетаний нагрузок и расчёт огибающих.
CScore.Fire: теплофизические модели СП 468.1325800.2019, температурная деградация модулей упругости \(E(T)\) и расчётных сопротивлений \(R(T)\).
3. МКЭ-комплекс (CSfea)
CSfea.Core: ядро статического анализа. Стержневые элементы Эйлера — Бернулли (пространственные 3D балки с 6 степенями свободы на узел), плоские и пространственные оболочки (MITC3/MITC4).CSfea.Sparse: оптимизированные структуры хранения разреженных СЛАУ (CSR, CSC, Skyline) и прямые/итерационные решатели.CSfea.Torsion: специализированный модуль кручения тонкостенных и сплошных стержней.
Интеграция OpenSees и отчётов
OpenCS.OpenSees содержит модели, генератор Tcl, запуск внешнего OpenSees.exe и чтение артефактов. OpenCS.Reporting регистрирует провайдеры вывода результата и используется командой экспорта отчёта.