F1Детективы ЛИРА 10 · Производственные детективы

«1616: Ошибки при задании длин форкопов» — как один лишний шарнир остановил нелинейный расчёт

Эта статья — производственный детектив. Нелинейная модель усиления существующего монолитного каркаса раз за разом останавливалась на стадии натяжения шпилек с одним и тем же сообщением решателя: «1616_ Ошибки при задании длин форкопов». Форкопы при этом были заданы корректно. Настоящая причина обнаружилась совсем в другом месте — в одном-единственном лишнем шарнире на одном из ста пятидесяти элементов стальных балок, который незаметно превращал пролёт в механизм.

F
Опыт применения ПК ЛИРА 10 при решении сложных задач1 из 6 · опубликовано 3

Ниже — весь ход расследования в той последовательности, в которой оно происходило: какие версии выдвигались, чем каждая проверялась и почему закрывалась. Тупиковые ветки я сознательно не вырезаю: в них — половина пользы. Попутно собран набор пояснений по строительной механике и по работе нелинейного решателя, которые накопились за время поиска. Если вы когда-нибудь смотрели на остановившийся нелинейный расчёт, не зная, с какой стороны к нему подступиться, — этот текст для вас.

Пара слов об инструментарии. Диагностика велась по протоколам решателя, текстовым экспортам моделей и выгрузкам перемещений и усилий в CSV. Обработку этих массивов — построчное сравнение шестнадцатимегабайтных текстовых файлов двух моделей, сортировку перемещений по двадцати трём тысячам узлов, сверку жёсткостей — я выполнял в связке с ИИ-ассистентом: файлы выгружались ему целиком, гипотезы формулировались и закрывались по очереди. Это заметно ускорило перебор версий, но не отменило главного: каждую находку я проверял в самой модели. Доверяй, но проверяй — этот принцип в равной мере относится и к расчётной программе, и к искусственному интеллекту.

Задача: разгрузить главные балки, не повредив их натяжением

Объект — существующий монолитный железобетонный каркас в стадии реконструкции. Из-за роста нагрузок наружные главные балки, идущие вдоль фасада, перестают проходить по прочности: на них опираются второстепенные балки перекрытий, и сечения перегружены совокупностью поперечной силы, изгибающего и крутящего моментов.

Принятое решение усиления таково. Над каждой монолитной балкой устанавливается стальная разгрузочная балка из двутавра 40Б1, закреплённая по концам к колоннам через сварные обоймы на химических анкерах. Усиливаемая железобетонная балка притягивается к стальной спаренными резьбовыми шпильками (М20, класс прочности 8.8), расположенными точно в узлах опирания второстепенных балок. Чтобы металл включился в работу вовремя — до достижения монолитной балкой предельного состояния, — шпильки преднапрягаются на контролируемую величину.

Вопрос, ради которого затевался весь расчёт: на какую именно величину. Недотянешь — сталь будет стоять балластом, пока железобетон исчерпывает себя. Перетянешь — балка получит обратный выгиб и растяжение там, где его отродясь не было, то есть усиление само станет источником повреждений. Для подбора была развёрнута серия идентичных нелинейных моделей с натяжением 0, 1, 1,5, 2, 3, 4 и 5 тс на шпильку — чтобы сравнить огибающие внутренних усилий и найти рабочий диапазон. Проверки самих конструкций дальше идут своим чередом — по СП 63.13330 для железобетона и СП 16.13330 для стали, с оглядкой на СП 349.1325800 по усилению, — но эта статья не о них, а о том, почему серия поначалу отказалась считаться.

Пояснение № 1. Почему эффект преднапряжения нельзя искать в автоматических РСУ

Преднапряжение — загружение, знакопеременное по эффекту: пролётный момент оно разгружает, а приопорные зоны и верхнюю грань в пролёте — догружает. Если задать его как временное или включить в РСУ с вариативным коэффициентом, программа при формировании максимумов честно выбросит его там, где оно помогает, и оставит там, где вредит. Никакого «эффекта снижения усилий» в таблицах РСУ вы не увидите принципиально — хоть при пяти тоннах, хоть при пятидесяти. Преднапряжение обязано быть постоянным загружением с коэффициентом 1,0 (при необходимости — парой 0,9/1,0 для учёта потерь), участвующим во всех сочетаниях. И отдельно нужно проверить состояние «минимум внешней нагрузки + полное натяжение»: именно оно ловит перетяжку балки вверх.

Пояснение № 2. Суперпозиция, РСУ и нелинейность

В нелинейной постановке принцип суперпозиции не работает, а таблицы РСУ строятся именно суперпозицией усилий от отдельных загружений. Поэтому «РСУ из нелинейного расчёта» — конструкция внутренне противоречивая: либо она собрана по линейной части и весь эффект нелинейности в неё не попал, либо она некорректна. Правильный инструмент — нелинейные РСН: каждое расчётное сочетание нагрузок считается как отдельная история нагружения со своими коэффициентами. Хорошая новость: для подбора преднапряжения достаточно двух крайних историй — «полная нагрузка плюс натяжение» (проверка эффективности разгрузки) и «0,9 постоянных плюс полное натяжение» (проверка перетяжки), плюс одна-две промежуточные на кручение от несимметричного загружения. В моей задаче использовалась единая стадийная история нагружения на модель — о ней ниже.

Расчётная модель

Считался каркас целиком: 22 972 узла, 27 703 конечных элемента, 118 210 уравнений. Стальные разгрузочные балки — 150 стержневых КЭ двутавра 40Б1; освобождения связей (шарниры My и Mz) назначены на опорных концах пролётов, у колонн: стальная балка опирается, а не защемляется. Запомним эту деталь — она главный герой статьи.

Каждая шпилька представлена в модели цепочкой из двух элементов. Сама шпилька — геометрически нелинейный стержень (КЭ 310) в виде эквивалентного круга D = 7,2 мм. Последовательно с ней — форкоп (КЭ 308): специальный элемент-регулятор, которому нагрузкой задаётся требуемое усилие натяжения N+, а решатель подбирает соответствующую регулировку длины. Жёсткость форкопа принята EF = 20 000 тс при длине 250 мм — на два-три порядка жёстче шпильки, чтобы податливость цепочки определялась шпилькой, а не регулятором.

Про «эквивалентный круг» стоит сказать отдельно, потому что это ружьё ещё выстрелит. Реальная деформируемая база шпильки — порядка 0,25 м, а модельная цепочка по геометрии узла — 1,5 м. Чтобы сохранить продольную жёсткость EA/L, площадь сечения уменьшена в шесть раз: A ≈ 40,8 мм² вместо площади нетто М20. По жёсткости всё честно. Но если бы материалу шпильки был задан нелинейный закон деформирования, та же операция срезала бы в шесть раз и предельное усилие по диаграмме — со всеми вытекающими.

История нагружения — шесть последовательных стадий: 1) собственный вес железобетона и смонтированного металла усиления; 2) натяжение шпилек; 3) вес отделочных слоёв, фасадов и перегородок; 4) полезная нагрузка; 5) снег; 6) ветер. Стадия 1 прикладывалась равномерно, двадцатью шагами; стадия 2 — с автоматическим выбором шага, поскольку это единственная стадия с реальной нелинейностью (включение цепочек, перераспределение); остальные — равномерно, по пять шагов.

Пояснение № 3. Порядок стадий — это ППР, а не удобство расчётчика

Последовательность стадий в нелинейной истории — не формальность. Если полы, фасады и перегородки существуют на момент усиления и остаются, балка к моменту натяжения уже деформирована под ними — и в модели их место до натяжения. Если реконструкция идёт со вскрытием и отделка монтируется после усиления — после. Порядок напрямую определяет, какая доля последующих нагрузок уйдёт в стальную балку, то есть влияет на само искомое усилие натяжения. Модельная история обязана повторять проект производства работ.

Пролог: тысячи микроступеней

Прежде чем добраться до главной аварии, серия успела преподнести разминочную задачу. Первый запуск с «автоматическим выбором шага» разбил процесс нагружения на тысячи чрезвычайно мелких ступеней и считался сутками. Первое желание — «увеличить шаг вручную» — здесь было бы ошибкой, и вот почему.

Пояснение № 4. Тысячи ступеней — не потребность в точности, а симптом

Автоматический выбор шага работает по схеме «не сошлось — дели шаг пополам». Если алгоритм ушёл в тысячи ступеней, значит, на каком-то участке решение не сходится, и он лечит это дроблением до тех пор, пока приращение не станет настолько малым, что невязка формально пройдёт по критерию. Ручное увеличение шага проблему не решает — только маскирует. Сначала нужно понять, где именно шаг схлопывается: постройте по протоколу или по сохранённым ступеням зависимость «параметр нагрузки — перемещение контрольного узла» и найдите точку начала дробления.

Где схлопывается шагНаиболее вероятная причина
В самом начале, при λ → 0Механизм или недостающие связи; вырожденная матрица из-за элемента с нулевой или почти нулевой жёсткостью
Ровно на шаге приложения преднатягаУсилие подано «ударом», а не рампой
На всём протяжении, равномерно«Дребезг» одностороннего элемента: включается и выключается между итерациями, невязка не убывает
Ближе к концу историиРеальная потеря устойчивости или исчерпание — это уже физика, и вот её дробить надо

Таблица 1. Диагностика по месту дробления шага

В моём случае, впрочем, до содержательной диагностики дело сначала не дошло: причина ползучести обнаружилась прямо в окне настроек решателя (таблица 2).

ПараметрСтоялоЧто это означалоСтало
Стартовый шаг1E−05Расчёт начинается с приращения 0,001 % нагрузки; даже с последующим ростом шага «разгон» с такой базы — сотни и тысячи ступеней на стадию0,05 для стадии натяжения (даёт 20–40 ступеней)
Допускаемая погрешность в выборе шага1E−05Критерий «шаг слишком крупный, дроблю». Экстремально жёстко: шаг почти никогда не проходит проверку и не может вырасти1E−03 (при «шумных» эпюрах ужесточить до 1E−04 только на стадии натяжения)
Мин. количество итераций для физически нелинейных элементов1000Принудительный множитель стоимости шага; для геометрически нелинейной задачи поле может и не работать, но если работает — это ×1000Типовое значение (15–30)
Суммарный коэффициент1,1Нагрузка стадии доводится до 110 %. Если коэффициенты надёжности уже сидят в загружениях — дублирование и искажение сравнения1,0 (либо осознанно одинаковое значение во всех моделях серии)

Таблица 2. Диагноз по настройкам решателя и лечение

Стадии с почти линейным поведением (собственный вес, отделочные, полезная, снег, ветер) получили равномерное приложение по пять шагов — автоматика там работала вхолостую. Ориентир по точности, который стоит запомнить: для задачи сравнения внутренних усилий ужесточение погрешности с 1E−03 до 1E−05 меняет результат в третьем-четвёртом значащем знаке, а время счёта — в десятки раз.

Пояснение № 5. Дребезг односторонних элементов и контраст жёсткостей

Шпилька работает только на растяжение, и естественное желание — обеспечить в модели односторонность. Но именно односторонний элемент, переключающийся между «включён» и «выключен» от итерации к итерации, — классическая причина бесконечного дробления шага: решение осциллирует между двумя состояниями. Прежде чем «лечить» односторонностью, проверьте по результатам, выключается ли элемент хоть в одном состоянии вообще; если во всех загружениях он растянут, односторонность не нужна — обычный двусторонний элемент ускорит расчёт на порядки. И второе: не задавайте вспомогательным элементам жёсткость «с запасом» вида 1E10 — достаточно двух-трёх порядков контраста, как у форкопа против шпильки. Лишние порядки — это плохо обусловленная матрица и та же несходимость, только с другого входа.

Пояснение № 6. Стоит ли «отрезать» свайное основание ради скорости

Соблазн упростить схему был и у меня. Здесь важно понимать, что именно ест время: каждая ступень нагружения — это полное решение системы, поэтому время растёт с числом ступеней, а размерность заметно увеличивают разве что пластинчатые ростверки с мелкой сеткой. Для сравнительной серии замена свайного основания жёсткой заделкой допустима: систематическая погрешность одинакова во всех вариантах и на разности сокращается; корректнее — одноузловые связи эквивалентной жёсткости свайного куста. Но если усиливаемые конструкции расположены на нижних этажах, податливость основания напрямую влияет на их моменты — тогда пружины обязательны.

После приведения настроек в порядок тестовая модель — вариант с тремя узлами натяжения — прошла всю историю нагружения за разумное время. Полная модель, со всеми узлами натяжения по двум фасадам, дошла до стадии натяжения… и здесь начинается собственно детектив.

Авария: код 1616 на стадии натяжения

Картина отказа была стабильной и воспроизводимой. Стадия 1 (собственный вес) проходила полностью. В стадии 2 решатель делал несколько шагов — 0,04 → 0,09 → 0,10 → 0,15 — и останавливался с сообщением:

1616_ Ошибки при задании длин форкопов

При этом тестовая модель с теми же настройками проходила натяжение за 21 шаг до коэффициента 1,0. Сравнение первых шагов двух моделей позже покажет: они совпадают до знака — модели стартуют одинаково, а дальше одна живёт, другая умирает. Обратите внимание на паттерн «0,10 → 0,15»: второй шаг вдвое меньше первого. Это почерк автоматического дробления — решатель не достиг сходимости и начал делить шаг, пока не упёрся в предел.

Пояснение № 7. Что на самом деле сообщает ошибка про «длину форкопа»

Форкоп — элемент-регулятор: чтобы в цепочке появилось заданное усилие N+, решатель итерационно подбирает его укорочение — «регулировку длины»; в физической аналогии — сколько оборотов дать талрепу. Код 1616 означает: требуемая регулировка вышла за допустимые пределы. В переводе с машинного: «я тяну и тяну, а усилие не набирается». Кто именно не даёт усилию набраться — сообщение не говорит. Форкоп здесь почти всегда свидетель, первым почувствовавший проблему, а не её причина. Это важно понять сразу — иначе можно бесконечно крутить настройки самого форкопа.

Итак, исходные данные следствия: две «идентичные» модели, одна считается, другая нет; разница, по первому впечатлению, — только в количестве и расположении узлов натяжения. Дальше — версии, в том порядке, в котором они выдвигались и закрывались.

Следствие: версии и их закрытие

Версия 1. «Дело в способе приложения нагрузки на первой стадии»

Первое подозрение пало на равномерное двадцатишаговое приложение собственного веса: вдруг системе «не хватает» автоматики уже там, и стадия натяжения получает в наследство неуравновешенное состояние? Версия закрылась чтением протокола: все 20 шагов по 0,055 до суммарного коэффициента 1,10 пройдены штатно и в аварийной, и в успешной модели. Более того, первые четыре шага стадии натяжения в обеих моделях идентичны. Урок номер один банален, но вечен: сигнатуру останова устанавливаем по протоколу, а не по ощущениям. Стадия, коэффициент, паттерн дробления — это факты; всё остальное — гипотезы.

Версия 2. «Выродилась нить» (КЭ 304 → КЭ 310)

В ранних вариантах модели тяги были заданы нитями — КЭ 304. Нить без натяжения не имеет поперечной жёсткости, и на старте стадии натяжения, пока усилие ещё не набрано, такой элемент — законный кандидат на вырождение матрицы. Тяги были переназначены на универсальные геометрически нелинейные стержни КЭ 310, у которых изгибная жёсткость присутствует всегда. Расчёт снова остановился — с тем же кодом.

Прежде чем хоронить версию, пришлось проверить две её подверсии. Первая: замена типа могла пройти не по всем выделенным элементам — по таблице элементов проверялся счётчик оставшихся КЭ 304 (ноль). Вторая: при смене типа могла слететь привязка сечения, и стержни получили бы мусорную жёсткость — сечения всех 310-х сверены по текстовому экспорту (везде параметрический круг D = 7,2 мм). Чисто. Урок: фактическое состояние модели проверяется по таблицам и экспорту, а не по памяти о сделанной правке. Память врёт чаще, чем Лира.

Версия 3. «Резиновый форкоп», или Ловушка единиц измерения

Следующая находка выглядела как раскрытое дело. В текстовом экспорте аварийной модели жёсткость форкопа значилась EF = 20,394 тс — против 20 000 тс в тестовой. Число 20,394 подозрительно осмысленно: это ровно 200 кН. То есть где-то на раннем этапе значение было введено в килоньютонах, а последующая правка «20 000 тс», судя по всему, попала только в тестовую модель.

Проверка версии на прочность заняла одну минуту и один листок бумаги. Упругое укорочение форкопа, необходимое для набора усилия: Δ = N·L/EF = 5,1 тс × 0,25 м / 20,39 тс ≈ 62 мм — на базе 250 мм. Двадцать пять процентов деформации на элементе-регуляторе: разумеется, никакой алгоритм регулировки длины столько не выберет — вот и код 1616. При корректной жёсткости та же величина — 0,06 мм. Тысячекратная разница, честно объясняющая всё.

Версия была красивая, самодостаточная — и оказалась ложным следом, причём по обидной причине. Экспортированный текстовый файл был не тем файлом, который реально считался: протокол расчёта ссылался на другой путь, а в «файле на память» обнаружились спящая подсистема и правленные уже после расчёта загружения. В настоящей аварийной модели жёсткость форкопа стояла правильная — 20 000 тс, и сечение шпильки везде 7,2 мм.

Из этого витка — два урока, каждый из которых достоин таблички над рабочим местом. Первый: единицы измерения — вечный генератор ошибок «ровно в тысячу раз»; любое число, подозрительно круглое в соседних единицах (20,394 тс = 200 кН), — повод остановиться. Второй: прежде чем анализировать исходник, сверьте его с путём и датой в протоколе расчёта — анализировать не тот файл можно сколь угодно глубоко и убедительно. А ручная проверка вида Δ = N·L/EF никуда не уходит из арсенала: она за минуту отделяет версии, которые могут быть правдой, от тех, которые не могут.

Версия 4. «Несшитые узлы»

Протоколы подбросили следующий факт: схемы, считавшиеся идентичными, таковыми не были. В аварийной модели 22 972 узла против 22 970 в тестовой, уравнений — 118 210 против 118 174. Два лишних узла дают +12 неизвестных, а разница — +36: значит, ещё 24 степени свободы где-то раскрепощены. Дублированные, несшитые узлы в составе сборок натяжения — ровно та конфигурация, которая даёт локальный механизм: пока дефектный узел не нагружен, задача считается; пошло натяжение — узел «улетает». Гипотеза хорошо объясняла и главную странность: почему тестовая модель с тремя узлами натяжения жива, а полная — нет.

Проверка по координатам и группам объединения перемещений показала: лишние узлы — это одна сборка узла натяжения, сознательно сдвинутая на 150 мм при уточнении геометрии. Дублей нет, «висящих» узлов нет, под собственным весом все цепочки ведут себя штатно. Версия реальна как факт (схемы действительно различались), но невиновна. Урок: не всякое расхождение схем — дефект, однако каждое расхождение обязано получить объяснение. Необъяснённых различий в «идентичных» моделях быть не должно.

Версия 5. «Материал»: эхо эквивалентного сечения

Помните уменьшенную в шесть раз площадь шпильки? Если бы материалу был задан нелинейный закон деформирования, масштабирование сохранило бы жёсткость EA/L, но срезало бы вшестеро предельное усилие по диаграмме. При целевых 5 тс на шпильку напряжения в эквивалентном стержне — порядка 1200 МПа: любой закон для стали «рвётся» примерно на 15–20 % натяжения. Подозрительно близко к точке останова 0,15, не правда ли? Версия была снята быстрее всех: закон деформирования шпилек — линейно-упругий. Но само совпадение — хорошее напоминание: любое масштабирование сечений «для жёсткости» несовместимо с нелинейными диаграммами материала без пересчёта последних.

Развязка: качалка

Пять версий закрыты, а модель по-прежнему не считается. Остался самый надёжный и самый трудоёмкий путь — перестать угадывать и заставить модель саму показать место преступления. Здесь сошлись три независимых источника: предупреждения протокола, кинематика перемещений и ревизия освобождений связей.

Первый источник всё время лежал на виду. На шагах 2–3 стадии натяжения решатель дважды выдавал предупреждение:

29_ Геометрически изменяемая система, тип связи 6 (UZ), узлы 21244, 21547–21548

В успешной модели — ни одного такого предупреждения, при тех же цепочках натяжения. Предупреждение о геометрической изменяемости на промежуточном шаге — это не «шум решателя», это координаты дефекта с точностью до узла. Признаюсь честно: в первые проходы по протоколу оно воспринималось как вторичный симптом при «главной» версии о форкопе. Зря.

Второй источник — выгрузка перемещений последнего записанного шага. Сортировка по модулю вертикального перемещения дала картину, которая одна стоила всех предыдущих версий: из 22 972 узлов схемы аномально смещаются ровно четырнадцать — верхние узлы двух соседних сборок натяжения одного и того же пролёта. Группа узла 21244 — минус 78 мм, группа узла 21235 — минус 175 мм, и это всего при 10 % натяжения. Показательна эволюция узла 21550 из этой цепочки: за весь собственный вес — −0,94 мм; при 10 % натяжения — −175 мм; при 15 % — −289 мм (рис. 2). Экстраполяция на полное натяжение — порядка двух метров «хода регулировки». Теперь понятно, о какой «длине форкопа» сообщал код 1616: элемент честно пытался выбрать эти метры.

{{IMG0}}

Рис. 1. Эволюция вертикального перемещения узла 21550 (верх цепочки натяжения в дефектном пролёте) по истории нагружения. Данные — из выгрузки перемещений аварийного расчёта

Третий источник поставил точку. Пролёт, в котором сидят обе падающие сборки, — стальная разгрузочная балка на отметке +0,200 по одной из фасадных осей. Ревизия освобождений связей по всем 150 элементам двутавров 40Б1 показала: ровно у одного элемента — КЭ 25873 — изгибные шарниры My/Mz стоят на обоих концах. На опорном узле 21224 — штатно, как у всех. И на внутреннем узле пролёта 21235 — лишний.

Что это означает кинематически, показано на рис. 2. Стержень с шарнирами по обоим концам — качалка: он передаёт только продольную силу. Пролёт из трёх КЭ превращается в шарнирную цепь: качалка 25873 плюс жёсткий участок 25886–25887, свободно вращающийся вокруг штатного опорного шарнира на узле 21222. У узлов 21235 и 21244 нет вертикальной жёсткости — мгновенно изменяемая система, классический учебный пример «два стержня в створе». Именно об этом сухо и дословно сообщало предупреждение 29_.

{{IMG1}}

Рис. 2. Кинематика дефекта: штатная расстановка освобождений связей (а) и фактическая конфигурация пролёта с качалкой КЭ 25873 (б). Деформации условны

Оставалось объяснить, почему дефект молчал всю первую стадию, — и здесь самое красивое место этой истории. Под собственным весом цепь «висит» на продольных усилиях качалки: в геометрически нелинейной постановке осевое усилие N создаёт поперечную геометрическую жёсткость порядка N/L — тот же механизм, которым натянутая струна держит поперечную нагрузку. Система в створе, прогибы меньше миллиметра, ни одного предупреждения. Мгновенно изменяемая система в нелинейном расчёте не роняет матрицу — она «квазиработает», пока поперечное воздействие мало, и этим коварна вдвойне.

Стадия натяжения это равновесие взорвала. В злополучном пролёте стоят две сборки узлов натяжения, и их верхние узлы через объединения перемещений сидят как раз на 21244 и 21235. Вертикальная тяга форкопов — то самое поперечное воздействие: механизм раскрывается, узлы уходят вниз, цепочки «тянут в пустоту», усилие не набирается, алгоритм регулировки длин выходит за пределы — код 1616, останов. Всё, что решатель говорил с самого начала, оказалось правдой; неправдой была только моя интерпретация.

Разрешилась и загадка тестовой модели. Шарниры в ней — точно такие же (файл в этой части идентичен), но её три узла натяжения стоят в других пролётах. Дефектный пролёт она просто не нагружала. Наблюдение «разница только в количестве натянутых узлов» было верным; неверным был вывод из него: дефект сидел не в узлах натяжения, а в стальной балке, которую они нагружают. Тестовая модель проверяет только то, что она нагружает; «у меня фрагмент считается» — не алиби для полной схемы.

Исправление заняло меньше минуты: на элементе 25873 сняты освобождения My и Mz на конце у внутреннего узла 21235; опорный шарнир на 21224 оставлен, как во всех пролётах. Контрольная проверка по всей модели подтвердила: качалка была одна. Перезапуск с теми же настройками шага — и модель прошла стадию натяжения тем же маршрутом, что и тестовая, досчитавшись до конца. Диагноз подтверждён экспериментально. Цена вопроса — одна галочка освобождения связей; стоимость поиска — несколько дней расследования.

Разбор оставил и пару попутных находок, не связанных с аварией, но важных для серии: расхождение заданной величины натяжения N+ между моделями серии (потребовало сверки соответствия «одна цепочка — одна шпилька» при четырёх шпильках на узел, чтобы пересчёт «тс на форкоп» в «тс на шпильку» был единым во всех вариантах) и тот самый сдвиг сборки на 150 мм, объяснивший разницу в два узла. Побочный продукт хорошей диагностики — вычищенная модель.

Почему сообщение об ошибке указывало «не туда»

Финальный код останова — почти всегда следствие, а не причина: сообщает тот элемент или алгоритм, который первым упёрся в свои пределы. Форкоп «кричит» про длину, потому что его работа — набрать усилие, а усилие не набирается; о том, что под ним провалился узел, он знать не обязан. Причинная информация в протоколе живёт этажом раньше — в предупреждениях промежуточных шагов, с номерами узлов и типами связей. Отсюда правило чтения протокола: хвост — для кода останова, всё тело — для предупреждений. Предупреждение «геометрически изменяемая система» с конкретными узлами в нелинейном расчёте — не шум, а карта с крестиком.

Немного теории: откуда берутся качалки и почему они живучи

Освобождение связей в стержневой модели назначается на конец конкретного элемента, а не «на узел» — и в этом источник большинства паразитных шарниров. Групповое назначение рамкой, копирование элемента вместе с его освобождениями, разбиение стержня промежуточными узлами — в любой из этих операций шарнир может тихо уехать туда, где ему не место. Визуальный контроль отображения шарниров после групповых операций обязателен — глазами, по всей длине каждой цепочки однотипных элементов. В моём случае из 150 элементов дефектным был один; такое не ловится «в целом по модели» — только адресной ревизией.

Сама по себе мгновенная изменяемость — сюжет, подробно разобранный у А. В. Перельмутера и В. И. Сливкера в «Расчётных моделях сооружений и возможности их анализа»: там и классика двух стержней в створе, и близкие к изменяемым системы с их плохо обусловленными матрицами, и коварство систем, способных нести нагрузку «особого вида». Моя качалка — иллюстрация последнего тезиса: собственный вес оказался той самой нагрузкой особого вида, которую цепь уравновешивает осевыми усилиями, а поперечная тяга натяжения — уже нет. Рекомендую эту книгу каждому, кто доверяет своим моделям: после неё доверять станет труднее, а считать — лучше.

Практический вывод, который я забираю в свой стандартный процесс: перед запуском дорогой нелинейной серии — дешёвый линейный прогон и/или модальный анализ той же схемы. Линейный расчёт на изменяемой системе, как правило, честно падает или выдаёт абсурдные перемещения сразу; модальный — показывает механизм нулевой (почти нулевой) частотой с характерной локальной формой колебаний. Пять минут машинного времени против дней расследования — арифметика, не требующая комментариев. Геометрическая жёсткость нелинейной постановки, как мы видели, умеет маскировать механизм — так пусть его ищет та постановка, которая маскировать не умеет.

Чек-лист: если нелинейный расчёт остановился

Свожу маршрут диагностики — каким он получился бы, знай я финал заранее. Порядок пунктов — от дешёвых проверок к дорогим.

  • Прочитать протокол целиком, а не только хвост: финальный код останова плюс все предупреждения промежуточных шагов — с номерами узлов, типами связей, номерами стадий.

  • Зафиксировать сигнатуру отказа: стадия, коэффициент нагрузки, паттерн шагов. Дробление пополам вида «0,10 → 0,15» — признак несходимости, а не «медленной» модели.

  • Выгрузить перемещения последнего записанного шага и отсортировать по модулю: «улетевшие» узлы локализуют дефект точнее любых рассуждений (здесь — 14 узлов из 22 972).

  • Сверить анализируемый файл модели с путём и датой в протоколе: считался ли именно он.

  • Проверить фактические типы КЭ и привязку сечений по таблице элементов и текстовому экспорту, а не по памяти о правках.

  • Проверить жёсткости специальных элементов и единицы измерения; подозрительно «некруглые» числа пересчитать в соседние единицы (20,394 тс = 200 кН).

  • Выполнить ручную оценку в одну строку там, где она возможна (например, Δ = N·L/EF): она мгновенно отделяет версии возможные от невозможных.

  • Провести ревизию освобождений связей в зоне дефектных узлов: шарнир обоснован конструктивно или приехал с групповой операцией? Элемент с шарнирами на обоих концах — качалка, и она обязана быть осознанной.

  • Прогнать схему линейно и/или модально: изменяемость, которую геометрическая жёсткость прячет в нелинейном расчёте, здесь проявится сразу.

  • Помнить, что тестовый фрагмент проверяет только то, что нагружает: тест, не трогающий подозрительную зону, ничего не доказывает.

Итоги

ВерсияЧем проверяласьВердикт
1. Способ приложения нагрузки на стадии 1Протокол: 20 из 20 шагов пройдены; первые шаги стадии 2 идентичны в обеих моделяхЗакрыта
2. Вырождение нити КЭ 304Замена на КЭ 310; счётчик типов и сечения по таблице элементов и экспортуЗакрыта: замена корректна, эффекта нет
3. Заниженная жёсткость форкопа (200 кН вместо 20 000 тс)Оценка Δ = N·L/EF; сверка файла с протоколомЛожный след: анализировался не тот файл; в боевой модели жёсткость верна
4. Несшитые или дублированные узлы (+2 узла, +36 уравнений)Координаты, группы объединения перемещений, поведение под собственным весомФакт реален, но невиновен: сознательный сдвиг сборки на 150 мм
5. Нелинейный закон материала при масштабе площади 1/6Проверка закона деформированияСнята: закон линейно-упругий
6. Лишний шарнир → мгновенно изменяемая системаПредупреждение 29_; сортировка перемещений (14 узлов); ревизия 150 элементов; исправление и контрольный перезапускПодтверждена: причина — качалка КЭ 25873

Таблица 3. Сводка версий расследования

Главные выводы этой истории умещаются в несколько строк. Сообщение об ошибке называет пострадавшего, а не виновного; причину ищите в предупреждениях и в кинематике перемещений. Мгновенно изменяемая система в геометрически нелинейном расчёте умеет прикидываться работающей — не давайте ей такой возможности, проверяя схему линейно и модально до запуска серии. Перемещения последнего шага — самый быстрый локализатор дефекта. Единицы измерения, фактические типы элементов, соответствие файла протоколу — рутина, экономящая дни. И тестовая модель доказывает ровно то, что нагружает, — ни узлом больше.

Сама задача усиления после исправления досчиталась во всей серии натяжений. Впереди — самое интересное: обработка огибающих внутренних усилий по стадиям, критерии «эффект разгрузки — перетяжка вверх» и выбор рабочего диапазона преднапряжения. Об этом — в следующем материале цикла.

Литература и нормативные документы

Перельмутер А. В., Сливкер В. И. Расчётные модели сооружений и возможность их анализа. — М.: СКАД СОФТ, 2011.

СП 63.13330 «Бетонные и железобетонные конструкции. Основные положения»; СП 16.13330 «Стальные конструкции»; СП 349.1325800.2017 «Конструкции бетонные и железобетонные. Правила ремонта и усиления» [проверить применимость и редакцию].

Где это применялось
Аэротенки с камерой распределения ила
123 × 108,5 м · глубина 5 м · 4 зоны · 50 лет · 72 сочетания
Экспертиза пройдена
Ёмкостное сооружение · Курск · 2024

Расчёт конструкций монолитного сооружения аэротенков при реконструкции системы биологической очистки на городских очистных сооружениях Курска (д. Ворошнево …

Открыть кейс