Фибровый метод
Фибровый метод заменяет интегрирование по площади суммированием вкладов элементарных областей. Каждая фибра получает деформацию из общей плоскости деформаций, затем по диаграмме материала вычисляются напряжение и усилия.
Метод не делает предположений о форме эпюры напряжений и о линейности материала. Единственная гипотеза — плоские сечения остаются плоскими: всё поле деформаций сечения задано тремя числами.
Один проход по фибрам
Расчёт состоит из трёх шагов, и ни один из них не требует итераций внутри себя.
Шаг 1. Деформация фибры. Плоскость деформаций Kurvature = (e0, ky, kz) даёт деформацию в любой точке сечения:
Фибра — это площадка с площадью Ai и координатами центра тяжести (xi, yi). Её деформация вычисляется в центре тяжести:
Шаг 2. Напряжение фибры. Деформация подставляется в диаграмму материала области. Диаграмма выбирается по расчётному типу CalcType (C, CL, N, NL), а флаги ten и ca определяют, работает ли материал в растяжении и в сжатии:
Шаг 3. Вклад в усилия. Напряжение считается постоянным по площади фибры, поэтому её вклад — это сосредоточенная сила в центре тяжести:
Суммарный ответ сечения:
Порядок операции в MaterialArea.SetEps такой:
- вычислить
εпоKurvature; - выбрать диаграмму для
CalcType; - получить
σс учётомtenиca; - записать состояние фибры;
- добавить вклад фибры в интегральный результат.
Деформации и напряжения записываются не только в фибры, но и в вершины контура Hull. Это нужно для визуализации границы области и не влияет на интегральный результат.
Что не зависит от нагрузки
Площадь Ai и координаты (xi, yi) вычисляются один раз при построении сетки. От шага к шагу решателя меняются только ε и σ. Поэтому повторный расчёт по готовой сетке дешёвый, а вот перестроение сетки — нет.
Два вида фибр
Разделение фибр на сеточные и точечные определяет весь дальнейший путь расчёта.
| Вид | TypeFiber |
Откуда берётся | Площадь | Заменяется контурным интегралом |
|---|---|---|---|---|
| Треугольная | tri |
триангуляция, обрезки нарезки | площадь ячейки | да |
| Полигональная | poly |
нарезка SliceXY |
нетто-площадь ячейки | да |
| Точечная | point |
арматурный стержень | площадь стержня | нет |
Сеточная фибра — это кусок сплошной области. Её можно заменить точным интегралом по контуру, потому что она лишь аппроксимирует непрерывное поле. Точечная фибра — это физически дискретный объект, стержень; заменять его нечем, поэтому он остаётся в сумме при любом способе интегрирования. Подробнее об их совместной работе — гибридный путь.
Генерация сетки
Прямоугольная нарезка
SliceXY делит область на NX × NY ячеек сеткой, параллельной осям. По умолчанию NX = NY = 21.
Нарезка не наивная: каждая ячейка обрезается фактическим контуром области и её отверстиями. Для полученного куска вычисляются нетто-площадь и нетто-центроид, а слишком мелкие обрезки отбрасываются. Поэтому суммарная площадь фибр совпадает с площадью области даже при криволинейной границе, а фибра, попавшая на край, не выпирает за контур.
Уже существующие точечные фибры при перестроении сетки сохраняются — нарезка заменяет только сеточную часть, арматура не теряется.
Триангуляция
Triangulate использует выбранный метод Ruppert или AdvancingFront:
| Параметр | Умолчание | Назначение |
|---|---|---|
MeshMaxArea |
0.01 |
верхняя граница площади треугольника |
MeshMinAngle |
30° |
минимальный угол, только для Ruppert |
MeshMaxEdgeLen |
0 (авто) |
целевая длина ребра для AdvancingFront |
MeshSmoothIter |
5 |
число итераций сглаживания сетки |
Триангуляция предпочтительна для сложных контуров, скруглений и областей с отверстиями: она даёт более равномерные по размеру фибры, чем прямоугольная нарезка, у которой на наклонной границе появляются мелкие обрезки.
Отверстия и сложные контуры должны передаваться как геометрия одной области, а не как перекрывающиеся независимые бетоны.
Чего сетка стоит: точность геометрии
Фибровая дискретизация точно сохраняет площадь и центр тяжести каждой ячейки, но теряет собственный момент инерции ячейки — вся её площадь считается сосредоточенной в центре тяжести. Для интегралов первого порядка (N, статический момент) это безразлично, для интегралов второго порядка — нет.
Для прямоугольника b × h, разбитого на n равных полос по высоте, сумма по фибрам даёт замкнутое выражение:
Погрешность всегда отрицательная — сетка занижает жёсткость:
Число полос n |
I сетка / I точное |
Занижение |
|---|---|---|
| 1 | 0,0000 | 100 % |
| 2 | 0,7500 | 25 % |
| 4 | 0,9375 | 6,25 % |
| 10 | 0,9900 | 1,0 % |
| 21 (умолчание) | 0,9977 | 0,23 % |
Отсюда два практических вывода. Первый: занижение убывает как 1/n², поэтому удвоение плотности сетки уменьшает погрешность вчетверо. Второй: при умолчании NY = 21 погрешность геометрии около 0,2 % — приемлемо для расчёта по деформационной модели, но заметно, если вы сверяете упругие жёсткости с аналитикой. Для таких сверок используйте контурный путь, который берёт интеграл точно.
Полосовая сетка — худший случай
Формула выведена для деления по одной оси. Если задать NY = 2, момент инерции относительно оси x будет занижен на четверть, и никакая точность решателя это не исправит.
Материальная диаграмма
Фибровый метод не предполагает линейную упругость. Для фибры может использоваться двухлинейная, трёхлинейная, криволинейная SP63 или пользовательская диаграмма.
Арматура, лежащая внутри бетона, использует разностную диаграмму:
Причина в том, что бетон интегрируется по всей площади области, включая места, занятые стержнями. Разностная диаграмма вычитает бетон, вытесненный стержнем, и он не считается дважды. Связь строится через HostArea: арматурная область привязывается к той бетонной, внутри контура которой лежат все её точечные фибры.
Преднапряжение задаётся начальной деформацией точечных фибр:
Начальная деформация проставляется только точечным фибрам: преднапрягается стержень, а не сплошная область.
Когда использовать фибры
Фибровый путь удобен, если:
- геометрия сложная или материал меняется по области;
- нужно визуализировать
σиεв каждой фибре; - в сечении много точечной арматуры;
- требуется получить детальное распределение состояния.
Его недостаток — зависимость геометрических интегралов от сетки, разобранная выше.
Проверка сетки
Перед расчётом предельного состояния сравните результат минимум на двух плотностях сетки. Для базовой упругой геометрии используйте контурный путь или аналитический контроль. Порядок действий — на странице сходимость и точность.
Где это в коде
| Что | Где |
|---|---|
| Деформации и напряжения фибр | CScore/MaterialArea.cs, метод SetEps |
| Сборка усилий сечения | CScore/CrossSection.cs, метод IntegralOf |
| Прямоугольная нарезка | CScore/GridSplit.cs, метод SliceXY |
| Триангуляция | CScore/Geo.cs, метод Triangulation |
| Разностная диаграмма арматуры | CScore/MaterialArea.cs, метод ResolveAndBuildDiagramms |
| Привязка арматуры к бетону | CScore/MaterialArea.cs, метод AutoResolveHostAreas |