Стержневая аналогия полосы плиты
Полоса плиты — это участок плиты между двумя опорами, который заменяется эквивалентным стержнем. Такая замена нужна там, где плитная модель избыточна: для проверки полосы по стержневым задачам, для передачи жёсткости в стержневую МКЭ-модель и для получения распределённой нагрузки, эквивалентной уже известной эпюре усилий.
Это метод моделирования, а не проверка по нормам
Стержневая аналогия не соответствует отдельному пункту СП: она переводит плитный отклик в стержневой, а нормативная проверка выполняется уже над полученным сечением обычными задачами. Ограничения, перечисленные ниже, — не редакционные оговорки, а свойства текущей реализации.
Геометрия полосы
Полоса строится в локальной плоскости (u, v) региона-источника и определяется тремя вещами: контуром плиты, двумя опорами и явной шириной b.
| Элемент | Что это |
|---|---|
CenterLine |
ось полосы, соединяющая опоры; прямая из двух точек |
LeftBoundary, RightBoundary |
продольные рёбра на расстоянии b/2 от оси, не обрезанные контуром |
Polygon |
расчётный многоугольник полосы, уже обрезанный контуром плиты |
LengthM |
длина пролёта полосы L |
Рёбра сохраняются полными, а обрезается только многоугольник — это позволяет видеть номинальную ширину полосы отдельно от того, сколько от неё фактически попало внутрь плиты.
Положение вдоль полосы задаётся безразмерной станцией s ∈ [0, 1], физическая координата равна x = L·s. Поперечная координата v отсчитывается от оси: v > 0 — сторона LeftBoundary.
Опоры задаются явно
В текущей реализации обе опоры — обязательный вход. Автоматический вывод опор из связей региона не выполняется; это же относится и к ширине полосы, которая задаётся числом, а не подбирается по геометрии.
Конвейер расчёта
Работа делится на два независимых этапа. Редукция превращает плитный отклик в матрицу жёсткости стержня и сохраняется в проекте. Восстановление нагрузки использует сохранённое сечение, чтобы по целевой эпюре усилий получить распределённую нагрузку.
Кинематическое вложение
Стержень имеет три обобщённые деформации: осевую ε₀ и две кривизны κy, κz. Плитное сечение — шесть. Связь между ними задаётся вложением, зависящим от поперечной координаты v:
Первое равенство описывает изгиб полосы в её плоскости: волокно, отстоящее от оси на v, получает добавку осевой деформации, пропорциональную кривизне κz. Второе переносит изгиб полосы из плоскости в кривизну плиты.
В матричной форме это прямоугольная матрица B(v) размера 6×3, у которой ненулевых элементов всего три.
Четыре компоненты обнуляются
Поперечная деформация ε₀y, сдвиг γ₀xy, поперечная кривизна плиты и кручение κxy принимаются равными нулю. Это означает, что полоса считается работающей независимо от соседних участков плиты: обойма окружающего материала не создаёт ни поперечного распора, ни крутящего взаимодействия. Для узкой полосы в середине большого пролёта это приемлемо; вблизи углов, свободных краёв и зон с существенным Mxy — нет.
То же ограничение выводится на страницу сечения в интерфейсе.
Политики редукции
Прямая одноосная редукция
Простой диагностический вариант: берутся только продольные блоки плитной касательной, остальные связи отбрасываются.
Первые две формулы — просто умножение погонной жёсткости на ширину. Третья — момент инерции полосы относительно вертикальной оси, вычисленный как для однородной полосы шириной b.
Если в плитном отклике есть ненулевые связи, которые эта политика отбрасывает (например, мембранно-изгибная связь B или поперечные члены), расчёт выдаёт предупреждающую диагностику. Игнорировать её не следует: она означает, что упрощение потеряло физически существующее взаимодействие.
Конститутивное интегрирование
Основной вариант: жёсткость стержня собирается интегрированием плитного отклика по ширине полосы с учётом вложения.
Интеграл берётся квадратурой Гаусса–Лежандра, масштабированной на физическую ширину: точки лежат в v ∈ [−b/2, +b/2], а сумма весов равна b. Число точек задаётся пользователем в диапазоне от 2 до 32.
Важное следствие такой схемы: отклик запрашивается в каждой точке интегрирования отдельно, поэтому армирование и толщина могут меняться по ширине полосы. Число источников отклика обязано совпадать с числом точек интегрирования — несовпадение отклоняется с диагностикой, а не подгоняется молча.
Источники плитного отклика
| Источник | Что это | Где применяется |
|---|---|---|
| Постоянный линейный | заданные блоки A, B, D |
программные фикстуры и тесты |
| Снимок касательной | касательная PlateSection, замороженная в нулевом состоянии |
основной источник линейной редукции |
| Живой отклик сечения | тот же PlateSection, но вызываемый на текущем состоянии, без заморозки |
нелинейный путь |
| RVE через shell-МКЭ | гомогенизация патча сетки реальным решателем (OpenSees или CSfea) | только контрольная проверка по ширине |
Снимок касательной берётся в нулевом состоянии деформаций, и ненулевые усилия в этой точке не превращаются в постоянное смещение усилий. Результат — линейное сечение.
Именно сохраняемое сечение остаётся линейным всегда: в проект пишется одна матрица 3×3. Физическая нелинейность плиты доступна отдельно — через живой источник и нелинейную задачу полосы, описанные ниже; в проекте этот путь не сохраняется.
Результат редукции
Эквивалентное сечение сохраняется в проекте и содержит матрицу касательной 3×3, извлечённые из неё EA, EIy, EIz, применённую политику, вид источника, число точек интегрирования и отпечатки входов.
Отпечатки решают задачу устаревания: сечение помнит состояние геометрии-источника на момент последнего успешного расчёта. Если исходная плита изменилась, сечение получает статус «Устарело» и требует пересчёта. Возможные статусы — «Действительно», «Устарело», «Ошибка».
Кручение не редуцируется
В текущей реализации GJ = 0. Если стержень, получивший это сечение, работает на кручение, крутильная жёсткость должна задаваться иначе — из редукции она не появится.
Единицы на границе с МКЭ
Внутри сечения жёсткости хранятся в кН и кН·м², а при передаче в МКЭ масштабируются в Н и Н·м². Об этом сообщает подсказка на странице сечения; при ручном сравнении чисел из интерфейса с числами из модели множитель нужно учитывать.
Нелинейный путь
Редукция, описанная выше, даёт линейное сечение: касательная снимается один раз и дальше не меняется. Нелинейный путь снимает это ограничение — плитный отклик запрашивается на каждом текущем состоянии, а равновесие полосы решается методом Ньютона–Рафсона с пошаговым нагружением.
Оба пути используют одно и то же тело интегрирования по ширине. Состояние стало его параметром: линейная сборка вызывает то же тело с нулевым состоянием, поэтому её результат не изменился.
Живой источник отклика
Живой источник — прямой, не замороженный вызов плитного сечения. За один вызов возвращаются и касательные блоки A, B, D, и усилия Nx…Mxy, поэтому внутри цикла Ньютона второй проход по сечению не нужен.
Плитное сечение не хранит истории
Это модель полной деформации: отклик зависит только от текущего состояния. История трещин и пластичности не запоминается, разгрузка идёт по кривой нагружения. Отсюда три следствия, которые нельзя обойти настройками решателя:
- отклик материала однозначен, но единственность решения
f_int(u) = f_extиз этого не следует: при немонотонном отклике корней несколько, и разные схемы нагружения приводят к разным ветвям; - касательная плитного сечения строится конечными разностями, поэтому квадратичной сходимости Ньютона на этом источнике не будет;
- на нисходящей ветви диаграммы расходимость Ньютона — штатный исход, а не дефект решателя.
Пошаговое нагружение здесь — способ довести Ньютона до сходимости, а не носитель истории. При монотонно упрочняющемся отклике результат от числа шагов не зависит; при немонотонном — может зависеть.
Решётка источников
Источники раскладываются по элементам производной балки и точкам квадратуры по ширине. Измерение — элементы, а не станции: сечение считается постоянным на элементе, поэтому строк ровно число станций − 1. Точка, в которой резолвится раскладка армирования для элемента, — середина его пролёта.
Постоянство сечения на элементе — осознанное упрощение первой нелинейной версии. Если начальные касательные соседних элементов заметно расходятся, выдаётся предупреждение о градиенте сечения вдоль пролёта. Ошибки формы решётки — рваные строки, несовпадение числа элементов со станциями — блокирующие: посчитать полосу по неполной решётке нельзя.
Ньютон с пошаговым нагружением
Решается равновесие производной балки, где внутренние силы собираются из отклика сечения в точках квадратуры:
Опорная схема, маски степеней свободы, вектор внешней нагрузки и знаковая конвенция берутся у линейной задачи без изменений — конвенция остаётся описанной в одном месте.
| Настройка | Смысл |
|---|---|
| Число шагов нагружения | на сколько долей делится полная нагрузка |
| Максимум итераций | предел итераций Ньютона на одном шаге |
| Допуск по невязке | относительный, по масштабированной невязке |
| Допуск по приращению | относительный, по масштабированному приращению перемещений |
| Число делений шага | сколько раз шаг разрешено уполовинить при несходимости |
| Модифицированный Ньютон | собирать касательную один раз на шаг, а не на каждой итерации |
Почему невязка нормируется
Вектор невязки содержит и силы, и моменты. Без приведения моментные компоненты при L ≫ 1 м доминируют в норме и маскируют несходимость осевой задачи. Поэтому моментные компоненты делятся на длину полосы, а сам масштаб берётся по величинам задачи, а не абсолютной константой. Норма перемещений приводится к безразмерному виду тем же способом: линейные компоненты делятся на длину, ротации уже безразмерны.
Если шаг не сошёлся, он делится пополам до исчерпания лимита делений. Прогон, не дошедший до полной нагрузки, возвращается с признаком «не рассчитано», достигнутой долей нагрузки и частичной эпюрой — молчаливой подмены полного результата не происходит.
Диагностики прогона: выход состояния за границы источника, вырожденная касательная, рост невязки две итерации подряд (эвристический признак расходимости), недостижение полной нагрузки. Первые две не фатальны — меньший шаг остаётся законной попыткой; вырождение касательной чаще всего означает, что пробный шаг увёл сечение в полную пластификацию.
Правило снятия эпюры
Внутренние усилия на станциях берутся из концевых усилий элемента g = f_int − f, где f — согласованная узловая нагрузка. Это нелинейное обобщение линейного правила K·u − f, с которым оно тождественно совпадает на линейном отклике.
Снимать эпюру с точек квадратуры, то есть как D·B·u, нельзя: у эрмитова элемента при равномерной нагрузке кривизна постоянна, и такая «эпюра» даёт на шарнирной опоре момент защемления qL²/12 вместо нуля.
Нулевое состояние с ненулевыми усилиями
Если источник даёт ненулевые усилия в нулевом состоянии, оно всё равно остаётся состоянием отсчёта: вычитание исказило бы физику. Факт объявляется отдельной диагностикой. Сравнивать такой прогон с линейным путём некорректно по построению — контрольные постановки берут фикстуру без начальных усилий.
Частичная замена региона
Полоса может участвовать в расчёте по одной из трёх политик.
| Политика | Что происходит с плитным регионом |
|---|---|
| Только диагностика | полоса строится для сравнения; регион остаётся единственным расчётным владельцем жёсткости и нагрузок |
| Замена региона | весь коридор полосы не участвует в сборке жёсткости и нагрузок повторно |
| Частичная замена с явным разбиением | заменяется только явно заданная часть коридора, остальное продолжает считаться оболочкой |
Частичная замена задаётся многоугольником разбиения. Проверяются согласованность декларации, вложенность разбиения в коридор полосы и — главное — покрытие его границы: каждый участок границы разбиения, не совпадающий с границей коридора, обязан быть покрыт объявленным граничным интерфейсом. Иначе действия сохраняемой части плиты передавались бы на полосу молча.
Граничные интерфейсы
Интерфейс описывает границу между заменяемой и сохраняемой частями. Режимы шести степеней свободы — силовой, кинематический и сохранение опоры — берутся готовыми из планарных фрагментов, чтобы семантика у полосы и у фрагментов не разошлась. Нормаль от заменяемой части к сохраняемой лежит в плоскости региона.
Силовое действие обязательно, когда хотя бы один режим силовой: только оно несёт переменную интенсивность вдоль границы, тогда как обычная планарная нагрузка описывается одним постоянным вектором.
Граница, пересекающая ось полосы поперёк, переносится точечной нагрузкой; граница, идущая вдоль полосы, — распределённой. Единицы при переносе конвертируются явно: краевое действие задано в СИ, нагрузка полосы — в кН.
Проверка «сохранение опоры только при реальной опоре» не выполняется
На текущей доменной модели она нереализуема: опорные локусы полосы всегда инициализированы и никогда не пусты, а режим «опора» — значение по умолчанию, поэтому условие «опора есть» истинно всегда. Кроме того, такая проверка ввела бы автовывод опорной схемы из опорного локуса, который явно оставлен за границей объёма.
Полнота переноса нагрузки
Равнодействующая перенесённого набора нагрузок и её момент относительно начала полосы сверяются с ожидаемой равнодействующей, которую знает вызывающая сторона — например, q·b·L поверхностной нагрузки плюс объявленные краевые действия. Распределённые нагрузки интегрируются по своим участкам аналитически.
Почему сверка идёт не с реакциями опор
Сверять сумму действий с реакциями опорной схемы бессодержательно: в конечно-элементной постановке реакции получаются как K·u − f и удовлетворяют равновесию тождественно, какой бы неполной ни была перенесённая нагрузка — такая проверка не может упасть. Содержательна именно сверка с ожидаемой равнодействующей: она и ловит потерю или задвоение нагрузки при переносе.
Сквозная сверка с плитной моделью
Стержневая аналогия проверяется тем, что ту же задачу считают дважды: нелинейным оболочечным прогоном по сетке региона и нелинейной задачей полосы. Сравниваются эпюры по станциям и максимальные прогибы.
Поворот усилий оболочки в оси полосы
Nx, Ny, Nxy и Mx, My, Mxy — компоненты тензора второго ранга, поэтому переводятся в другие оси в плоскости оболочки преобразованием Мора
а не покомпонентным копированием базиса, как вектор. Поперечные силы Qx, Qy — наоборот, вектор, и поворачиваются как вектор.
Единицы конвертируются отдельным шагом: решатель выдаёт СИ, домен полосы работает в кН. Конверсия сознательно отделена от поворота, чтобы её нельзя было пропустить незаметно.
Эпюра из реальных усилий прогона
Плитные усилия связываются с балочными тем же оператором вложения, что и в редукции:
Отбор элементов и веса — одна операция: линия сечения станции пересекается с многоугольником каждого элемента, а вес равен длине отрезка внутри него. Поэтому сумма весов равна ширине полосы по построению. Отбор «по центроидам, попавшим в полосу шириной в один элемент» не применяется: он не даёт сумму весов, равную ширине, и требует размера элемента, которого в снимке сетки нет.
«Прогон завершён» не значит «полная нагрузка»
Успешное завершение решателя проверяется отдельно от достигнутой нагрузки: контролируются и индекс последней стадии, и достигнутый коэффициент нагрузки. Диагностики доводятся до результата на каждом раннем возврате — иначе «не сошлось» возвращалось бы без единого объяснения.
Результат сверки содержит обе эпюры, оба максимальных прогиба, наибольшее относительное расхождение по My, относительное расхождение прогиба, признаки сходимости обеих моделей и три группы диагностик — сетки, границ и доменной части.
Контрольная постановка с числами — на странице «Полоса плиты: сверка с плитной моделью».
Восстановление нагрузки
Обратная задача: известна целевая эпюра внутренних усилий полосы, требуется найти внешнюю распределённую нагрузку, которая эту эпюру создаёт.
Прямое дифференцирование эпюры для этого не годится: эпюра получена из результатов МКЭ, а численное дифференцирование зашумлённых данных усиливает шум, особенно во второй производной. Поэтому задача решается слабой формой равновесия — как задача наименьших квадратов с ограничениями.
Постановка
| Обозначение | Смысл |
|---|---|
c |
искомые коэффициенты разложения нагрузки по базису |
A |
оператор отклика: какую эпюру даёт единичная базисная нагрузка |
S₀ |
базовый отклик от известных концевых усилий |
S_цель |
целевая эпюра N, My, Mz на станциях |
W |
веса станций |
L |
оператор регуляризации: первая разность или кривизна нагрузки |
G c = g |
сохранение равнодействующей силы и момента |
Задача с ограничениями сводится к системе Каруша–Куна–Таккера. Эта система симметрична, но знаконеопределённа, поэтому разложение Холецкого неприменимо; используется плотный метод Гаусса с частичным выбором ведущего элемента. Размер задачи — десятки станций на три компоненты, для плотного решателя это немного.
Ведущий элемент сравнивается не с абсолютным нулём, а с максимумом модуля по всей матрице. Иначе плохо обусловленная система вернула бы огромные коэффициенты вместо честного признака вырожденности.
Режимы
| Режим | Базис по умолчанию | Регуляризация α |
Назначение |
|---|---|---|---|
| Слабая форма равновесия | кусочно-линейный | 1e-3 |
основной режим |
| Гладкое приближение | кусочно-линейный | 1e-2 |
сглаживание по кривизне нагрузки |
| Кусочно-постоянная нагрузка | кусочно-постоянный | 0 |
нагрузка участками, без сглаживания |
| Диагностическое дифференцирование | — | — | не расчётная нагрузка |
Кусочно-постоянный базис даёт n − 1 функцию — по одной на интервал между станциями; кусочно-линейный даёт n шапочных функций, у крайних станций — половинных. Коэффициенты идут блоками: сначала все qx, затем все qy, затем все qz.
Что задаётся отдельно от эпюры
Целевая эпюра содержит только N, My и Mz — поперечных сил в ней нет, поскольку они не выводятся из напряжений тем же путём. Отсюда два входа, которые нельзя получить из эпюры и нужно задавать явно:
- равнодействующая внешней нагрузки — иначе ограничение равновесия не с чем сравнивать; она строится из уже перенесённой на полосу нагрузки;
- известные концевые усилия — значения эпюры на первой и последней станции. Это вход, а не неизвестное: постоянный момент создаётся парой концевых моментов, и без них целый класс эпюр недостижим никакой распределённой нагрузкой — при нулевых коэффициентах отклик тождественно нулевой.
К целевой эпюре предъявляются формальные требования: не менее трёх станций, строго возрастающих, начиная с 0.0 и заканчивая 1.0, все значения конечны.
Опорная схема
Концы полосы описываются условием закрепления — шарнир или заделка — и отдельно продольным закреплением: только в начале либо на обоих концах. Разделение обязательно: если бы шарнир закреплял ещё и продольное перемещение, режим закрепления только в начале был бы недостижим.
Раздельные маски не означают, что задача распадается: при недиагональной матрице сечения осевая и изгибные компоненты связаны материально.
Диагностическое дифференцирование
Параллельно с основным расчётом всегда вычисляется прямое дифференцирование эпюры конечными разностями:
Множители 1/L и 1/L² появляются потому, что станции безразмерны, а нагрузка — размерная величина.
Этот результат заполняется во всех режимах и при любой блокирующей ошибке — расчётная нагрузка не принимается молча. Но использовать его как нагрузку нельзя: он служит только для сравнения с восстановленной. Расхождение указывает на шум в исходной эпюре или на неверную опорную схему.
Контроль результата
Реализация содержит несколько независимых самопроверок:
- точность приближения — относительная и абсолютная ошибка плюс поэлементная невязка по станциям; относительная ошибка защищена от деления на ноль при тождественно нулевой эпюре;
- невязка равновесия — насколько выполнено ограничение по равнодействующей;
- контрольная проверка сечения — прямая интеграция плитных усилий по ширине сравнивается с прогнозом сохранённой касательной; расхождение означает, что редукция не самосогласована;
- проверка двойного счёта — контроль того, что заменённый полосой участок плиты не учитывается одновременно и как оболочка, и как стержень;
- полнота переноса нагрузки — равнодействующая перенесённого набора против ожидаемой;
- покрытие границы разбиения — при частичной замене каждый участок границы вне коридора обязан иметь граничный интерфейс;
- отпечатки входов — детерминированные хеши, покрывающие всё, что влияет на результат, включая допуски и веса станций.
Ограничения текущей реализации
| Ограничение | Следствие |
|---|---|
ε₀y, γ₀xy, поперечная кривизна и κxy равны нулю |
полоса не взаимодействует с соседними участками плиты |
GJ = 0 |
крутильная жёсткость из редукции не получается |
| Сохраняемое сечение линейно | в проект пишется одна касательная; нелинейный отклик живёт только внутри расчёта |
| Плитное сечение не хранит истории | разгрузка идёт по кривой нагружения, накопленные трещины и пластичность не запоминаются |
| Сечение постоянно на элементе балки | градиент вдоль пролёта разрешается только между элементами и сопровождается предупреждением |
| Опоры и ширина задаются явно | автоматический вывод из связей региона не выполняется |
| Восстановление нагрузки и нелинейный прогон без интерфейса | доступны как расчётный слой, своей команды меню и своего вида задачи не имеют |
Где это в интерфейсе
Сохранённые сечения собраны в узле дерева Эквивалентные сечения. Контекстное меню элемента даёт Пересчитать и Удалить; страница сечения показывает источник, геометрию полосы, политику редукции, матрицу касательной, жёсткости EA, EIy, EIz, GJ, число точек интегрирования, станцию раскладки армирования и диагностики.
Ни восстановления нагрузки, ни нелинейного прогона полосы, ни частичной замены региона в интерфейсе нет: все три доступны только как расчётный слой — см. таблицу ограничений выше.
Где это в коде
| Что | Где |
|---|---|
| Геометрия полосы | CScore/PlateStrip/PlateStripGeometryBuilder.cs |
| Кинематическое вложение | CScore/PlateStrip/StripKinematicEmbedding.cs |
| Редукция в сечение | CScore/PlateStrip/EquivalentSectionCalculator.cs |
| Восстановление нагрузки | CScore/PlateStrip/EquivalentBeamLoadRecovery.cs |
| Режимы и допуски | CScore/PlateStrip/LoadRecoveryOptions.cs |
| Решатель системы | CScore/PlateStrip/DensePivotSolver.cs |
| Целевая эпюра | CScore/PlateStrip/TargetBeamResultants.cs |
| Нагрузка полосы | CScore/PlateStrip/StripLoad.cs, StripLoadMapper.cs |
| Живой источник отклика | CScore/PlateStrip/PlateSectionLiveResponse.cs |
| Отклик в заданном состоянии | CScore/PlateStrip/NonlinearStripSection.cs |
| Решётка источников | CScore/PlateStrip/StripSectionSourceGrid.cs |
| Нелинейная задача полосы | CScore/PlateStrip/StripBeamNonlinearModel.cs, StripNewtonOptions.cs |
| Границы заменяемой области | CScore/PlateStrip/StripBoundaryInterface.cs |
| Полнота переноса нагрузки | CScore/PlateStrip/StripLoadEquilibriumCheck.cs |
| Политики и двойной счёт | CScore/PlateStrip/ShellReplacementPolicy.cs, ShellReplacementDoubleCountingCheck.cs |
| Поворот усилий оболочки | OpenCS.OpenSees.CScore/ShellResultantRotation.cs |
| Эпюра из усилий прогона | OpenCS.OpenSees.CScore/ShellStripResultantSampler.cs |
| Оркестратор сквозной сверки | OpenCS.OpenSees.CScore/Fragments/PlateStripAnalogyRunner.cs |
| Тесты | CScore.Tests/PlateStrip/, OpenCS.OpenSees.Tests/PlateStripAnalogy*Tests.cs |