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

Фибровый метод

Сеточные и точечные фибры

Фибровый метод заменяет интегрирование по площади суммированием вкладов элементарных областей. Каждая фибра получает деформацию из общей плоскости деформаций, затем по диаграмме материала вычисляются напряжение и усилия.

Метод не делает предположений о форме эпюры напряжений и о линейности материала. Единственная гипотеза — плоские сечения остаются плоскими: всё поле деформаций сечения задано тремя числами.

Один проход по фибрам

Путь от плоскости деформаций к усилиям сечения

Расчёт состоит из трёх шагов, и ни один из них не требует итераций внутри себя.

Шаг 1. Деформация фибры. Плоскость деформаций Kurvature = (e0, ky, kz) даёт деформацию в любой точке сечения:

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

Фибра — это площадка с площадью Ai и координатами центра тяжести (xi, yi). Её деформация вычисляется в центре тяжести:

\[ \varepsilon_i = e_0 + \kappa_y y_i + \kappa_z x_i. \]

Шаг 2. Напряжение фибры. Деформация подставляется в диаграмму материала области. Диаграмма выбирается по расчётному типу CalcType (C, CL, N, NL), а флаги ten и ca определяют, работает ли материал в растяжении и в сжатии:

\[ \sigma_i = \sigma(\varepsilon_i). \]

Шаг 3. Вклад в усилия. Напряжение считается постоянным по площади фибры, поэтому её вклад — это сосредоточенная сила в центре тяжести:

\[ N_i = \sigma_i A_i, \qquad M_{x,i} = N_i y_i, \qquad M_{y,i} = N_i x_i. \]

Суммарный ответ сечения:

\[ N = \sum_i N_i, \qquad M_x = \sum_i M_{x,i}, \qquad M_y = \sum_i M_{y,i}. \]

Порядок операции в MaterialArea.SetEps такой:

  1. вычислить ε по Kurvature;
  2. выбрать диаграмму для CalcType;
  3. получить σ с учётом ten и ca;
  4. записать состояние фибры;
  5. добавить вклад фибры в интегральный результат.

Деформации и напряжения записываются не только в фибры, но и в вершины контура 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 равных полос по высоте, сумма по фибрам даёт замкнутое выражение:

\[ I_{\text{сетка}} = \sum_i A_i y_i^2 = \frac{b h^3}{12}\left(1 - \frac{1}{n^2}\right). \]

Погрешность всегда отрицательная — сетка занижает жёсткость:

Число полос 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 или пользовательская диаграмма.

Арматура, лежащая внутри бетона, использует разностную диаграмму:

\[ \sigma_\text{diff}(\varepsilon) = \sigma_\text{steel}(\varepsilon) - \sigma_\text{concrete}(\varepsilon). \]

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

Преднапряжение задаётся начальной деформацией точечных фибр:

\[ \varepsilon_p = \frac{\sigma_{sp}\,\gamma_{sp}}{E_s}. \]

Начальная деформация проставляется только точечным фибрам: преднапрягается стержень, а не сплошная область.

Когда использовать фибры

Фибровый путь удобен, если:

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

Его недостаток — зависимость геометрических интегралов от сетки, разобранная выше.

Проверка сетки

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

Где это в коде

Что Где
Деформации и напряжения фибр CScore/MaterialArea.cs, метод SetEps
Сборка усилий сечения CScore/CrossSection.cs, метод IntegralOf
Прямоугольная нарезка CScore/GridSplit.cs, метод SliceXY
Триангуляция CScore/Geo.cs, метод Triangulation
Разностная диаграмма арматуры CScore/MaterialArea.cs, метод ResolveAndBuildDiagramms
Привязка арматуры к бетону CScore/MaterialArea.cs, метод AutoResolveHostAreas