Перейти к содержанию

НДС железобетонного сечения

Задача НДС ищет такую плоскость деформаций, при которой интегральные усилия сечения совпадают с заданными N, Mx, My.

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

Идентификаторы задач: strain_state для одного набора усилий и strain_state_batch для всего набора.

Входные данные

  • CrossSection с активными материальными областями;
  • диаграмма материала для выбранного CalcType;
  • геометрия контуров и отверстий;
  • точечная арматура и её HostArea;
  • заданные усилия;
  • флаги работы бетона в растяжении и сжатии;
  • настройки фибровой сетки или контурного пути.

Постановка задачи

Неизвестных три — параметры плоскости деформаций:

\[ \varepsilon(x,y)=e_0+\kappa_y y+\kappa_z x. \]

Уравнений тоже три — условия равновесия сечения:

\[ N(\mathbf{k}) = N_{\text{зад}}, \qquad M_x(\mathbf{k}) = M_{x,\text{зад}}, \qquad M_y(\mathbf{k}) = M_{y,\text{зад}}, \]

где k = (e0, ky, kz), а левые части — результат интегрирования по сечению. Система нелинейна: связь между деформацией и напряжением задаёт диаграмма материала, и она нелинейна почти всегда.

Мерой отклонения служит евклидова норма невязки:

\[ \|r\| = \sqrt{(N - N_{\text{зад}})^2 + (M_x - M_{x,\text{зад}})^2 + (M_y - M_{y,\text{зад}})^2}. \]
flowchart LR
    Load[Заданные N Mx My] --> Solver[Решатель плоскости деформаций]
    Solver --> K[e0 ky kz]
    K --> Integral[CrossSection.Integral]
    Integral --> Response[Фактические N Mx My]
    Response --> Residual[Невязка]
    Residual --> Solver

Как решается: метод Ньютона–Рафсона

Начальное приближение

Стартовая плоскость берётся из упругого решения по геометрическим жёсткостям сечения:

\[ e_0 = \frac{N}{EA}, \qquad \kappa_y = \frac{M_x}{EI_x}, \qquad \kappa_z = \frac{M_y}{EI_y}. \]

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

Итерация

На каждой итерации вычисляется невязка, затем численный якобиан 3×3 — матрица чувствительности усилий к параметрам плоскости:

\[ J_{ij} = \frac{\partial (N, M_x, M_y)_i}{\partial (e_0, \kappa_y, \kappa_z)_j}. \]

Строки идут в порядке N, Mx, My, столбцы — e0, ky, kz. Производные берутся конечными разностями с шагом h: односторонними (forward) либо центральными (central). Односторонняя схема требует трёх дополнительных интегрирований сечения на итерацию, центральная — шести, зато она точнее.

Затем решается система J·Δk = r методом Гаусса с выбором ведущего элемента, и плоскость смещается на −λ·Δk.

Демпфирование шага

Полный ньютоновский шаг на сильно нелинейной диаграмме легко перелетает решение: линейный прогноз по касательной оказывается верен только вблизи текущей точки. Поэтому шаг не применяется вслепую.

Демпфирование шага Ньютона половинным делением

Решатель пробует полный шаг, затем половину, четверть и так далее, принимая первую долю, которая уменьшает норму невязки. Делений не больше 30, что доводит λ примерно до 1e-9.

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

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

Критерий остановки

Итерации прекращаются, когда ‖r‖ < NewtonTolerance.

Допуск абсолютный, а не относительный

Для стержневых сечений допуск задан в килоньютонах — это норма невязки, а не её отношение к заданным усилиям. Умолчание 0,1 означает разные вещи для разных задач: при усилиях порядка 10 000 кН это относительная точность 1e-5, а при усилиях порядка 1 кН — 10 %.

Если сечение слабо нагружено, допуск имеет смысл ужесточить; если усилия очень велики, а расчёт упирается в предел итераций — ослабить. Относительный критерий применяется только для пластинчатых сечений, у него отдельная настройка.

Параметры решателя

Параметр Умолчание Смысл
newtonTol 0,1 кН допуск сходимости по норме невязки
newtonMaxIter 25 предел числа итераций
newtonH 1e-7 шаг численного дифференцирования якобиана
newtonJacobian forward схема разностей: односторонняя или центральная

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

Учёт гибкости элемента

Задача решает сечение, а не стержень: она ничего не знает о длине элемента и его прогибе. Между тем у гибкого внецентренно сжатого элемента прогиб увеличивает эксцентриситет, а значит и момент в расчётном сечении.

Учёт влияния прогиба на момент во внецентренно сжатом элементе

Поэтому в задаче предусмотрен необязательный учёт этого эффекта по СП 63.13330, п. 8.1.15: перед решением заданные моменты умножаются на коэффициент η, и дальше решается обычная задача НДС с усиленными моментами.

Поправка требуется при гибкости l0/h > 14 (п. 8.1.2); ниже порога η = 1 и моменты не меняются. Не применяется она и тогда, когда продольная сила не сжимающая — прогиб тогда момент не наращивает.

Величины, участвующие в расчёте. Жёсткость элемента и условная критическая сила:

\[ D = k_b E_b I + 0{,}7\,E_s I_s, \qquad N_{cr} = \frac{\pi^2 D}{l_0^2}. \]

Коэффициент при бетоне и входящие в него поправки на длительность и эксцентриситет:

\[ k_b = \frac{0{,}15}{\varphi_l\,(0{,}3+\delta_e)}, \qquad \varphi_l = 1+\psi \in [1;\,2], \qquad \delta_e = \frac{|e_0|}{h} \in [0{,}15;\,1{,}5]. \]

Итоговое усиление момента:

\[ \eta = \frac{1}{1 - |N| / N_{cr}}. \]

Коэффициент при арматуре в выражении для D фиксирован и равен 0,7. Критическая сила здесь условная: она вычисляется по нормативной жёсткости и не является эйлеровой силой реального стержня. Пределы у φl и δe — не защита от численных ошибок, а требование нормы: значения вне интервала обрезаются.

Задаются расчётные длины l0 отдельно по каждой оси и доля длительности ψ = M1l/M1.

Доступны два режима:

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

Потеря устойчивости

При |N| ≥ Ncr коэффициент η не существует: знаменатель обращается в ноль или становится отрицательным. Это не численный сбой, а физический результат — элемент теряет устойчивость раньше, чем исчерпывает прочность сечения. Увеличивать число итераций бессмысленно, нужно менять сечение, армирование или расчётную длину.

Что возвращает задача

Группа Содержание
Сходимость признак сходимости, число итераций, достигнутая невязка
Плоскость деформаций e0, ky, kz
Равновесие заданные и фактические N, Mx, My
Жёсткость секущая матрица 3×3 и её источник: contour, fiber, mixed или none
Якобиан значения матрицы, схема разностей и шаг h
Экстремумы деформаций минимум и максимум отдельно по бетону и по арматуре
Арматура по каждому стержню: группа, материал, координаты, диаметр, площадь, ε, σ, секущий модуль
Преднапряжение усилия обжатия, приведённые к сечению
Гибкость параметры и результат расчёта η, если он включён

Статус результата принимает значения ok, not_converged или error.

Две детали, важные при чтении результата. Экстремумы деформаций считаются как ε + εp, то есть включают начальную деформацию преднапряжения, и берутся не только по фибрам, но и по вершинам контура области. Хомуты в экстремумы не попадают: они исключены из продольного интеграла и проверяются отдельной задачей.

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

Расчёт по набору усилий

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

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

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

Порядок проверки перед запуском

  1. Убедиться, что единицы нагрузки согласованы с геометрией и материалами.
  2. Проверить знак момента относительно расположения арматуры.
  3. Проверить ten и ca: включена ли работа бетона в растяжении и сжатии.
  4. Проверить диаграмму CalcType и материал каждой области.
  5. Проверить, что отверстия находятся внутри Hull и не заданы отдельным бетоном.
  6. Для сеточного пути выполнить контроль сгущением.

Если расчёт не сошёлся

Начинать разбор нужно с постановки, а не с параметров итератора.

Признак Вероятная причина Что делать
Невязка велика и не убывает заданное состояние недостижимо проверить знак момента и запас несущей способности
η не вычислен, отмечена неустойчивость продольная сила достигла условной критической менять сечение, армирование или расчётную длину
Итерации упёрлись в предел, невязка мала слишком жёсткий абсолютный допуск ослабить newtonTol или поднять предел итераций
Невязка колеблется около решения погрешность односторонних разностей переключить якобиан на central
Источник жёсткости none у областей нет ни фибр, ни контура с диаграммой исправить постановку сечения

Несходимость не всегда является численной проблемой

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

Где это в коде

Что Где
Обработчик задачи OpenCS/Tasks/StrainStateHandler.cs
Пакетный вариант OpenCS/Tasks/StrainStateBatchHandler.cs
Решатель Ньютона CScore/StrainSolver.cs
Интегрирование сечения CScore/CrossSection.cs, методы IntegralOf и CalculateSecantStiffness
Упругое приближение CScore/MaterialArea.cs, метод Guess
Коэффициент η CScore/Sp63/EccentricityAmplifier.cs
Параметры решателя OpenCS/Utilites/CalcSettings.cs