Автоматизация расчетов в SOFiSTiK с использованием шаблонов
• Особенности программы
• Использование языка CADiNP
• Примеры автоматизации
• Создание шаблонов
В этой статье я хочу рассказать об успешном опыте проектного бюро АПЕКС в автоматизации конструктивных расчётов зданий с использованием SOFiSTiK и написанных на языке CADiNP шаблонов.
SOFiSTiK - ЭТО ЧТО ЗА ПОКЕМОН?
SOFiSTiK – МКЭ программный комплекс немецкого происхождения. В первую очередь его отличает широкий круг решаемых инженерных задач. Помимо того функционала, который встречается почти во всех аналогичных программах, в SOFiSTiK возможно решение сложных геотехнических задач, решение задач гидрогазоаэродинамики (CFD-анализ), расчет мембранных, вантовых, постнапряженных конструкций. SOFiSTiK распространен главным образом в странах Европы, в России число пользователей пока достаточно мало. Это связано с неполной поддержкой наших норм в плане расчетов и недостатком информации на русском.
ЗАЧЕМ В SOFiSTiK ИСПОЛЬЗОВАТЬ ТЕКСТОВЫЙ ИНТЕРФЕЙС?
Одной из отличительных особенностей программы SOFiSTiK является то, что в ней есть как традиционный графический интерфейс, так и текстовый. Например, мы можем выполнить модальный анализ схемы, вызвав одноименную задачу из списка доступных (в английской версии – Eigenvalues) и заполнив все настройки в появившемся окне. Тот-же самый расчет можно вызвать, написав код на языке CADiNP во встроенном текстовом редакторе TEDDY. Используя синтаксис CADiNP, мы на нем опишем все та-же параметры и настройки, которые есть в окне графического интерфейса. В написании кода очень помогает динамическая справка, которая вызывается нажатием на F1.

Сейчас графический интерфейс используется во всех САПР, BIM, МКЭ программах и кажется данностью. Его основной плюс в том, что он интуитивно понятен. А вот идея с текстовым вводом, на первый взгляд, кажется устаревшей и неудобной. Однако, в SOFiSTiK есть как минимум 2 веские причины его использовать.

  1. Графический интерфейс дает доступ не ко всему функционалу, заложенному в программу. Определенные задачи можно решать только на CADiNP.
  2. Текстовый ввод дает возможность автоматизировать ряд рутинных операций
И как раз второму пункту – автоматизации, я и хотел бы посветить эту статью.


КАК УСКОРИТЬ РАСЧЕТ СХЕМЫ, ОТКАЗАВШИСЬ ОТ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА?
Автоматизация складывается из 2-х факторов, каждый из которых вносит большой вклад:

  1. Написанный на CADiNP задачи не требуют повторной настройки при пересчете схемы
  2. CADiNP позволяет использовать крутые фишки, доступные языкам программирования
Давайте сначала представим ситуацию, когда у нас уже есть рассчитанная схема, но архитекторы как всегда что-то подвинули и уже просят у вас проверить их решение расчетом.

Повторный расчет схемы в случае графического интерфейса делается с повторным заполнением разных данных в разных вкладках, что занимает много времени. При использовании блоков кода, их последовательность можно заново запустить 1 щелчком мыши. Через пару минут небольшая схема будет полностью пересчитана, и мы сразу можем переходить к анализу результатов. Мы не тратим время на повторное заполнение всех диалоговых окон на разных вкладках и это позволяет экономить тонны времени. Ведь конструктив меняется на протяжении всей длительности проекта и перерасчеты нужно делать постоянно. Согласитесь, уже интересно? Но это еще не главное.
Истинным двигателем автоматизации являются возможности, которые свойственный языкам программирования. Сразу скажу, что CADiNP – язык не полноценный. Например, в нем нет возможности фильтровать или сортировать списки, что уже лишает нас многих возможностей при работе с данными. Однако, несколько важнейших функций в нем доступны, это:

  1. Использование переменных
  2. Циклы
  3. Условные выражения
  4. Возможность обращаться к базе данных проекта, считывать, обрабатывать и записывать туда данные
Давайте рассмотрим несколько примеров, как все это вместе позволяет автоматизировать некоторые типовые операции.
УСТАНОВКА ГРАНИЧНЫХ УСЛОВИЙ НА ФУНДАМЕНТНУЮ ПЛИТУ
Задача простая – закрепить от перемещений узлы фундаментной плиты для дальнейшего расчета «на жестком основании». Наш алгоритм поступает следующим образом:

  1. Запускается цикл по всем узлам расчетной схемы и из базы данных во временные переменные выписываются их координаты Z
  2. С помощью условных выражений по окончанию цикла мы получаем минимальную координату расчетной схемы (отметку самого нижнего узла)
  3. Всем узлам, лежащим на найденной отметке, назначаются граничные условия
Все эти действия выполняются за 1 секунду. Тут мы конечно не экономим много времени, т.к. задача довольно простая и для графического интерфейса, но принцип это иллюстрирует хорошо. Давайте теперь посмотрим на более сложную операцию, которая может занимать много времени при работе без шаблонов или в других программах.
РАСЧЕТ НА ДЕЙСТВИЕ ПУЛЬСАЦИИ ВЕТРА
СП20.13330.2016 выделяет 3 возможных случая, по одному из которых нужно вести расчет. Выбор случая определяется соотношением первых 2-х частот собственных колебаний (f1 и f2) и некоторой «предельной» частоты (flim), вычисляемой по формулам СП.

В первом случае (если flim<f1) не будет возникать резонанса от действия пульсации ветра, поэтому отклик схемы будет чисто статическим. К-т динамичности принимается равным 1.

Во втором случае (если f1<flim<f2) возможен резонанс на частотах пульсации, близких к первой собственной частоте. При этом к-т динамичности определяется по формуле.

Третий случай (f2<flim) является самым общим и сложным для инженера. Резонанс от действия пульсации ветра может возникать уже на 2-х или более частотах. При этом уже нельзя использовать упрощенную формулу для определения к-та динамичности. Нормы отправляют нас делать какой-то “динамический расчет”, а как его делать - ни слова. Из пособий, которые выпускались в поддержку СП можно понять, что имеется в виду расчет методом спектральной плотности мощности (PSD анализ) с использованием спектра Давенпорта.

Нужно сказать, что в SOFiSTiK нет возможности делать расчет пульсации по нашим нормам, в отличие от многих многих других программ, где эти алгоритмы зашиты (SCAD, ЛИРА). Но с использованием CADiNP в АПЕКС удалось реализовать этот расчет самостоятельно, при этом в полностью автоматическом режиме. Благо, программа умеет делать PSD анализ, в частности по спектру Давенпорта. Это, кстати, одна из функций, не доступная в графическом интерфейсе.

Ну и наконец, сам алгоритм:

  1. Автоматически вычисляется предельная частота для нашей схемы по забитым в код формулам из СП20.13330.2016.
  2. Сравниваются взятые из базы данных первые 2 собственные частоты колебаний нашей схемы с предельной частотой. Определяется номер расчетного случая (из трех возможных). Модальный анализ для получения собственных частот выполняется до расчета ветровых нагрузок, также полностью автоматически.
  3. В зависимости от номера случая происходит либо автоматическое вычисление к-та динамичности, либо расчет методом спектральной плотности мощности (PSD анализ). Условные выражения нам в этом помогают.
  4. Выполняется анализ на действие суммарной ветровой нагрузки, поиск ускорений и квазистатического отклика в виде огибающих усилий (если расчет шел по 3 случаю)
Другими словами, инженеру достаточно задать в препроцессоре «единичную» пульсацию, т.е. без к-та динамичности. А все остальное код сделает сам.
ШАБЛОНЫ
В целом уже понятно, что каждая стандартная операция может быть в большой степени автоматизирована. Последний шаг – это подготовить шаблоны. В АПЕКС мы используем 2 основных шаблона:

  1. Для расчета железобетонного здания
  2. Для расчета отдельно вырезанной плиты перекрытия
В каждом шаблоне сохранен и настроен набор задач. Эти шаблоны рассчитаны на типовые монолитные «коробки», которые характерны для жилья, которое мы в основном и проектируем. Для нетиповых и уникальных проектов шаблоны, конечно, приходится адаптировать.
При расчете общей схемы железобетонного здания на шаблоне мы выполняем анализ НДС, как на жестком, так и на грунтовом основании и последующий подбор армирования конструктивных элементов. Также есть дополнительные модули для решения нетиповых задач, например – прогрессирующее обрушение и карстовые провалы. Постепенно мы пишем новые блоки и расширяем круг решаемых задач.
В случае с отдельно вырезанной плитой мы выполняем ее расчет и подбор армирования с последующим физически нелинейным расчетом, что позволяет получить более реалистичную картину деформаций плиты а также получить больше информации о ее работе – напряжения в арматуре, деформации в сжатом бетоне, раскрытие трещин и т.д.
УПРАВЛЕНИЕ ПАРАМЕТРАМИ
Идея автоматизации процесса расчета заключается в том, что мы представляем весь путь расчета, по которому идет инженер, в виде последовательности блоков кода.

Естественно предположить, что в коде должны быть «управляющие» параметры, которые могут меняться от проекта к проекту, и за которыми нужно сделать.

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

  1. Тип установки граничных условий (снизу или сверху и снизу)
  2. Коэффициенты, описывающие работу материалов
  3. Коэффициенты понижения жесткости для линейного расчета
  4. Допустимую ширину раскрытия трещин
Для расчета общей схемы параметров больше, но смысл не меняется. Мы запоминаем значения в переменных, а эти переменные используем в коде задач. Это удобнее, чем каждый раз залезать в сам код, да и безопаснее. Своего рода «защита от дурака».
ГЛАВНЫЙ НЕДОСТАТОК АВТОМАТИЗАЦИИ
Конечно, есть у такой автоматизации и темная сторона. Шаблон может стать черным ящиком, который по щелчку мыши выдает результаты и не принуждает инженера задумываться о том, как он получен. Это опасно и я всячески против бездумного использования таких разработок без понимания их алгоритма. Как говорят знающие люди, инженер должен научиться сначала сам решать задачу без шаблона, а уже потом ее автоматизировать.