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

Поля из таблиц точек

Поле из таблицы точек назначает величину элементам и узлам МКЭ-схемы по таблице X, Y, [Z], значения…. Типичный случай — коэффициенты постели C1 и жёсткости свай, рассчитанные геотехнической программой в своей системе координат и со своим шагом точек: таблица совмещается со схемой, значения переносятся на КЭ плиты или на узлы свай, и расчёт CSfea, проверки и мозаики используют уже их.

Инструмент не привязан к горизонтальной плите. Цели делятся на плоские участки, поэтому таблица с координатой Z переносится и на фундаментную плиту со ступенями и приямками, и на стены подвала, и на наклонные участки — значения одного участка не смешиваются со значениями соседнего.

В текущей версии назначаются две величины:

Величина Цели Компоненты Единицы ввода Хранится в OpenCS
Коэффициент постели C1 пластин пластинчатые КЭ C1 по нормали к пластине тс/м³, кН/м³, МН/м³, Н/м³ Н/м³
Жёсткость пружин узлов узлы сетки Kx, Ky, Kz — по столбцу на каждую; Kux, Kuy, Kuz тс/м, тс/см, кН/м, МН/м, Н/м; поворотные — тс·м/рад, кН·м/рад, МН·м/рад, Н·м/рад Н/м, Н·м/рад

Тонна-сила пересчитывается тем же коэффициентом, что и при импорте ЛИРЫ и SCAD (по умолчанию 1 тс = 9,80665 кН). Отрицательные значения у обеих величин не учитываются, о них сообщает диагностика.

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

Как устроен перенос

flowchart LR
    T[Таблица<br/>CSV или буфер] --> A[Совмещение<br/>масштаб, зеркало,<br/>поворот, сдвиг]
    A --> D[Слияние<br/>точек-дублей]
    D --> S{Величина}
    S -->|C1| P[Плоские участки<br/>целей] --> I[Интерполяция,<br/>ближайшая или IDW]
    S -->|пружины| M[Один к одному<br/>точка ↔ узел]
    I --> C[Значения целей<br/>кэш поля]
    M --> C
    C --> O[Наложение:<br/>импорт → поля → ручные]
    O --> R[CSfea, проверки,<br/>мозаики, дерево ГУ]

Таблица

Таблица открывается из файла (Открыть CSV…, файлы .csv и .txt) или вставляется из буфера обмена (Вставить из буфера, например диапазон ячеек Excel).

  • Разделитель определяется по первой строке: ;, табуляция или , — в этом порядке. При ; и табуляции допускается десятичная запятая.
  • Заголовок — первая строка, если в ней есть нечисловая ячейка. Без заголовка столбцы получают номера 1, 2, 3…
  • Кодировка — по BOM; без BOM — UTF-8, а если байты не являются корректным UTF-8 — Windows-1251 (CSV, сохранённый Excel в русской Windows).
  • Столбцы X, Y, Z выбираются в окне; Z необязателен. Столбцы значений — все остальные столбцы с числами. Компонента и единица столбца подбираются по заголовку: Rz, Kz → Kz, Rx/Kx, Ry/Ky → Kx, Ky; C1 → C1; единица — по тексту заголовка (Rz [тс/см], C1, кН/м3, Kux кН*м/рад). Столбец, компонента которого уже занята (номер сваи, примечание), получает «—» — не используется.
  • Единицы длины (м, см, мм) берутся из заголовка координаты: X [см], X (мм); без единиц — метры. Выбор правится в окне.
  • Строка, где хотя бы одна выбранная ячейка не число, пропускается; число пропущенных строк показывается в сводке.
  • Совпадающие точки (ближе 1 мм после совмещения) сливаются в одну, значения усредняются. Так бывает на стыках участков, которые геотехническая программа выгружает отдельно. Если значения в слитых точках различались, сводка называет наибольшее расхождение — это скачок величины на стыке, который усреднение сглаживает.

Цели

Команда Назначить из таблицы точек… открывает окно нового поля; цели берутся из того места, откуда она вызвана.

Откуда вызвана Цели
ветка Поля из таблиц дерева схемы вся схема: все пластины (C1) или все узлы сетки с пружинами (пружины)
группа КЭ или группа КонЭ в дереве КЭ группы, см. Группы КЭ и группы КонЭ
КонЭ в дереве КЭ, на которые разбит КонЭ
выделение в 3D-виде (контекстное меню) выделенные КонЭ, КЭ сетки и узлы сетки

Цели хранятся как выбор (группа, КонЭ, номера), а не как замороженный список значений, поэтому поле переживает повторный импорт граничных условий и перестроение сетки.

Для пружин из узлов КЭ-целей берутся только узлы, у которых уже есть пружина, — например, сваи КЭ 56, пришедшие при импорте из ЛИРЫ. Узлы, выделенные в 3D явно, становятся целями независимо от этого: такой узел без пружины получает новую пружину с жёсткостями только по столбцам поля.

Совмещение

Координаты таблицы переводятся в систему схемы:

\[ \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} m_x\, s\, X \\ m_y\, s\, Y \end{bmatrix} + \begin{bmatrix} dX \\ dY \end{bmatrix}, \qquad z = s\,Z + dZ, \]

где \(s\) — масштаб единиц длины (1, 0,01 или 0,001), \(m_x, m_y = \pm 1\) — зеркало по X и по Y, \(\theta\) — угол поворота вокруг вертикали против часовой стрелки. Вертикаль таблицы и схемы считается общей: пространственного поворота нет.

Сдвиг подбирается автоматически; масштаб, зеркало и угол задаёт пользователь.

  • Подобрать по габаритам — совмещает центры охватывающих параллелепипедов точек таблицы и целей (узлов пластин-целей или узлов-целей). Подходит, когда таблица покрывает тот же контур, что и цели, — как сетка коэффициентов постели по контуру плиты.
  • Подобрать по точкам — от подбора по габаритам выполняет до 20 итераций «каждой точке — ближайшая цель, сдвиг на среднее смещение». Подходит для точечных целей: оголовки свай ↔ узлы сетки.

После подбора окно показывает невязку — расстояния от точек таблицы до ближайшей цели: медиану, 95 % и максимум. Для точечных целей это мера совпадения. Для пластин невязка отражает и разницу шагов таблицы и сетки: точки таблицы с шагом 2,5 м над сеткой 1 м лежат до ближайшего узла на 0,5–0,7 м и при точном совмещении.

Способы переноса

Плоские участки

Пластины-цели делятся на плоские участки: связные (по общим рёбрам) КЭ, нормали которых отличаются не более чем на 5°, а узлы лежат не дальше допуска до плоскости участка. Каждый участок переносится отдельно: точки проецируются на его плоскость, в осях участка (u, v) строится триангуляция Делоне.

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

  • Таблица с Z. Точка достаётся участку с ближайшей плоскостью и только если она не дальше допуска до плоскости. Поэтому значения не протекают ни через угол «плита — стена», ни через ступень приямка.
  • Таблица без Z. Точки считаются заданными в плане и проецируются на участки по вертикали. Участки с почти вертикальной нормалью (стены, крутые скаты) значений не получают — об этом сообщает диагностика field_no_z_vertical.

Значение пластины определяется в её центре.

Интерполяция

Способ по умолчанию для пластин. Центр КЭ \((u, v)\) находится в треугольнике триангуляции с вершинами \(A, B, C\) и барицентрическими координатами \(w_A + w_B + w_C = 1\):

\[ C_1 = w_A\, C_{1,A} + w_B\, C_{1,B} + w_C\, C_{1,C}. \]

Если центр КЭ вне облака точек участка (за его выпуклой оболочкой), КЭ получает значение ближайшей точки, но только если она не дальше предельного расстояния; иначе значения нет.

Ближайшая точка

КЭ получает значение ближайшей точки участка не дальше предельного расстояния. Мозаика получается ступенчатой с шагом таблицы — так геотехнические программы часто и передают коэффициенты постели по КЭ.

Обратные расстояния (IDW)

Берутся до 8 ближайших точек участка не дальше предельного расстояния:

\[ C_1 = \frac{\sum_i C_{1,i}/d_i^2}{\sum_i 1/d_i^2}. \]

Если центр КЭ совпадает с точкой таблицы, берётся её значение. Способ не требует триангуляции и пригоден для криволинейных поверхностей, которые делятся на много мелких участков.

Один к одному

Способ для узлов (пружины). Каждая точка таблицы ищет ближайший узел-цель в пределах допуска поиска узла; без Z поиск ведётся в плане. Если к одному узлу притянулось несколько точек, берётся ближайшая, а узел попадает в диагностику field_node_conflict. Точки без узла и узлы без точки тоже перечисляются в диагностике.

Допуски

Допуск По умолчанию Где действует
Предельное расстояние \(2h\), где \(h\) — медиана \(\sqrt{A}\) пластин-целей интерполяция вне облака, ближайшая точка, IDW
Допуск до плоскости \(h\) точка таблицы ↔ плоскость участка; узлы КЭ ↔ плоскость при делении на участки
Допуск поиска узла 0,5 м один к одному

Все допуски правятся в окне поля.

Окно поля

Окно Поле из таблицы точек: слева настройки, справа предпросмотр.

  1. Таблица — Открыть CSV… или Вставить из буфера, имя поля, столбцы X, Y, Z, единицы длины, для каждого столбца значений — компонента и единица.
  2. Величина — Коэффициент постели C1 пластин или Жёсткость пружин узлов. Для узловых целей способ — Один к одному, для пластин — Интерполяция с допусками по размеру КЭ.
  3. Способ — Интерполяция, Ближайшая точка, Обратные расстояния (IDW) и допуски.
  4. Совмещение — dX, dY, dZ, угол, Зеркало X, Зеркало Y, кнопки Подобрать по габаритам и Подобрать по точкам со строкой невязки.
  5. Предпросмотр — вид на плоскость участка (у плиты — план): контуры целей, точки таблицы цветом по значению и итоговая мозаика по КЭ или подписи у узлов. При нескольких участках участок выбирается списком. Под видом — сводка: сколько целей получило значение интерполяцией, ближайшей точкой, IDW, сопоставлением, сколько осталось без значения и сколько точек таблицы не попало на цели.

Окно «Поле из таблицы точек» для C1: таблица с координатой Z, значения в тс/м³, способ «Интерполяция», сдвиг подобран по габаритам; справа — предпросмотр плиты с точками таблицы, внизу — сводка слияния дублей и способов получения значений

C1 фундаментной плиты (24 951 КЭ) из таблицы геотехнического расчёта: интерполяция, сдвиг подобран по габаритам. Все КЭ получили значение интерполяцией; совпадающие точки на стыках участков таблицы слиты.

Окно «Поле из таблицы точек» для свай: координаты в сантиметрах, столбец Rz в тс/см → компонента Kz, способ «Один к одному», сдвиг подобран по точкам; справа — оголовки свай на плане

Жёсткости 248 свай: координаты в сантиметрах, Rz в тс/см, сдвиг подобран по точкам — медиана 0,117 м, максимум 0,278 м; сопоставлены все 248 узлов.

По ОК поле сохраняется, значения вычисляются, результаты постановок схемы сбрасываются, а в 3D открывается мозаика C1 или пружин узлов. Замечания переноса записываются в журнал.

Поля в дереве схемы

Ветка Поля из таблиц (N) расположена в дереве схемы после Жёстких тел и объединений. Строка поля — имя, число целей со значением и число точек: «C1 плиты — 600 КЭ, 117 точек». Выключенное поле показано серым.

Команда Где Что делает
Назначить из таблицы точек… ветка Поля из таблиц, группа КЭ или КонЭ, КонЭ в дереве, выделение в 3D новое поле на цели из места вызова
Изменить… поле то же окно с сохранёнными настройками
Повторить с новой таблицей… поле те же цели, совмещение и способ, новые точки: окно открывается сразу с выбором файла. Для случая, когда геотехнический расчёт пересчитан
Показать на схеме поле мозаика C1 или пружин узлов в 3D
Включить / Выключить поле выключенное поле не действует, но хранится
Выше (раньше в наложении), Ниже (позже в наложении) поле порядок наложения полей
Удалить поле после подтверждения; результаты постановок схемы сбрасываются

Дерево схемы: ветка «Поля из таблиц (2)» с полями Cz и Rz, контекстное меню поля; в 3D — мозаика «Упругое основание», C1, кН/м³, с легендой по диапазонам

Ветка «Поля из таблиц» и меню поля; Показать на схеме открывает мозаику C1.

Мозаика «Пружины узлов», Kz, кН/м: сваи с жёсткостями из поля Rz, контекстное меню поля Rz в дереве

Для поля пружин Показать на схеме открывает мозаику «Пружины узлов».

Действующие значения видны и в остальных ветках: Граничные условия → Упругое основание считает КЭ с действующим C1, а у пружин узлов сетки источник жёсткостей подписан — «поле «Rz свай»», «вручную».

Наложение слоёв

Сырые значения импорта в базе не меняются. Действующие C1 и пружины получаются наложением слоёв:

импорт ЛИРЫ или SCAD → поля в порядке ветки (последнее выигрывает) → ручные правки.

  • Пружины — по степеням свободы. Если у узла-сваи из импорта есть Kx, Ky и Kz, поле со столбцом Rz меняет только Kz; Kx и Ky импорта сохраняются. Узел без пружины, выделенный целью явно, получает новую пружину только с Kz.
  • Ручные пружины важнее полей. На узлы, пружины которых заданы вручную (диалогом Граничные условия узла), поля не действуют; такие узлы перечисляет диагностика field_manual_spring.
  • Наложение используют расчёт CSfea (в том числе проверка, что у схемы есть граничные условия), огибающие результатов, проверки по КЭ, мозаики C1 и пружин, глифы и дерево граничных условий.

Пересчёт при смене сетки

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

Диагностика

Код Когда
field_no_value КЭ без значения: дальше предельного расстояния от точек таблицы
field_nearest_outside КЭ вне облака точек получили значение ближайшей точки; указано наибольшее расстояние
field_points_off_plane точки таблицы, не попавшие ни на один участок
field_no_z_vertical таблица без Z, стены и крутые скаты без значений
field_node_conflict к узлу притянулось несколько точек — взята ближайшая
field_point_unmatched точка таблицы без узла в пределах допуска; указаны номер строки и координаты
field_node_unmatched узел-цель без точки таблицы
field_nodes_stacked таблица без Z, а узлы-цели совпадают в плане — значение получит один из них
field_target_missing цели поля, которых нет в сетке
field_duplicates точки-дубли слиты; указано наибольшее расхождение значений
field_negative отрицательные значения не учитываются
field_manual_spring поле не действует на узлы с ручными пружинами

Пример: плита на сваях

Демонстрационный пример — фундаментная плита 30 × 20 м на свайном основании. Данные условные: поле C1 и жёсткости свай заданы так, чтобы показать все шаги переноса.

Схема OpenCS. Плита в плоскости z = 0, начало координат — в углу плиты; сетка пластин 1 × 1 м, 600 КЭ. Под плитой 15 свай в узлах сетки с шагом 6 м: x = 3, 9, 15, 21, 27 м; y = 4, 10, 16 м. Сваи — узлы сетки с пружинами (так, например, приходят КЭ 56 при импорте из ЛИРЫ).

Таблицы геотехнического расчёта (скачать):

  • demo-c1.csv — C1 по сетке 2,5 × 2,5 м, столбцы X [м];Y [м];C1 [кН/м3], десятичная запятая. Начало координат геотехнической модели смещено: угол плиты имеет координаты (100; 50) м. Расчёт выполнен по двум участкам X 0…15 и 15…30 м, поэтому точки на линии стыка X = 15 м повторяются, и их значения различаются (126 строк).
  • demo-piles.csv — оголовки свай, столбцы N;X [см];Y [см];Rz [тс/см]: координаты в сантиметрах в той же системе, с отклонением от узлов сетки до 0,3 м; Rz угловых свай ≈ 14 тс/см, крайних ≈ 11,5, средних ≈ 9.

Числа ниже получены кодом переноса OpenCS (ядро CScore.Fem.Fields) на этих файлах и сетке.

C1 плиты

  1. В дереве схемы на ветке Поля из таблиц — Назначить из таблицы точек…, Открыть CSV… → demo-c1.csv. Окно узнаёт X, Y, единицы длины «м», столбец C1 [кН/м3] — компонента C1, единица кН/м³.
  2. Величина — Коэффициент постели C1 пластин. Допуски по умолчанию: \(h\) = 1 м, предельное расстояние 2 м, допуск до плоскости 1 м.
  3. Подобрать по габаритам: dX = −100 м, dY = −50 м. Невязка — медиана 0,5 м, максимум 0,71 м: это расстояние от точек с шагом 2,5 м до ближайших узлов сетки 1 м, совмещение точное.
  4. Предпросмотр. 9 совпадающих точек на стыке слиты (117 точек), наибольшее расхождение значений в них — 3,9 %. Один участок; все 600 КЭ получили значение интерполяцией; точек, не попавших на цели, нет.
Интерполяция Ближайшая точка
Мозаика C1 по КЭ при интерполяции: плавное нарастание от середины плиты к краям C1 по КЭ способом ближайшей точки: ступенчатая мозаика с шагом таблицы

Значения C1 в отдельных КЭ (центр КЭ, кН/м³):

КЭ, центр (x; y), м Интерполяция Ближайшая точка IDW
угол плиты (0,5; 0,5) 10 000 10 000 10 000
у угла (1,5; 1,5) 9 528 7 639 8 942
край у стыка (14,5; 0,5) 9 678 10 200 10 200
за стыком (15,5; 0,5) 9 758 10 200 10 200
середина (14,5; 9,5) 4 996 4 908 4 908
середина за стыком (15,5; 10,5) 5 037 4 908 4 908
противоположный угол (29,5; 19,5) 10 400 10 400 10 400

На линии стыка таблица давала 10 000 и 10 400 кН/м³; после слияния точка стыка несёт 10 200 кН/м³, и способ ближайшей точки отдаёт это значение КЭ по обе стороны стыка. Интерполяция переходит от одной половины к другой плавно. В КЭ у угла (1,5; 1,5) способы расходятся сильнее всего: центр КЭ лежит между крайней точкой таблицы (10 000) и точкой (2,5; 2,5) со значением 7 639, и результат зависит от того, какие точки участвуют в переносе.

Жёсткости свай

  1. В 3D выделить 15 узлов свай (или вызвать команду на ветке Поля из таблиц — целями станут все узлы с пружинами) → Назначить из таблицы точек…, Открыть CSV… → demo-piles.csv. Единицы длины — «см» по заголовку, столбец Rz [тс/см] — компонента Kz, единица тс/см; столбец N получает «—».
  2. Величина — Жёсткость пружин узлов, способ — Один к одному, допуск поиска узла 0,5 м.
  3. Подобрать по точкам: dX = −99,959 м, dY = −49,949 м; невязка — медиана 0,183 м, 95 % и максимум 0,291 м (15 точек). Подбор по габаритам дал бы dX = −99,995, dY = −49,895 и максимум 0,348 м: габарит определяют крайние сваи с их случайными отклонениями.
  4. Предпросмотр: сопоставлено 15 узлов, конфликтов нет.

Сваи: 15 узлов сетки и оголовки из таблицы после совмещения, пары и расстояния в плане 0,04–0,29 м, подписи Rz

Kz получается умножением Rz на единицу ввода: 1 тс/см = 9,80665 кН / 0,01 м = 980,665 кН/м.

Свая Узел (x; y), м Rz, тс/см Kz, кН/м Расстояние до узла, м
1 (угловая) (3; 4) 13,89 13 621 0,18
3 (крайняя) (15; 4) 11,23 11 013 0,18
8 (средняя) (15; 10) 8,73 8 561 0,23
15 (угловая) (27; 16) 14,18 13 906 0,16

Если бы оголовок сваи 8 был смещён в таблице ещё на 0,9 м, он оказался бы в 1,12 м от узла — дальше допуска. Тогда диагностика назвала бы строку 8 таблицы — field_point_unmatched (точка без узла в пределах 0,5 м) — и узел (15; 10) — field_node_unmatched; узел сохранил бы жёсткость импорта.

Если у узлов свай из импорта были Kx и Ky, они сохраняются: поле меняет только Kz.

Ограничения

  • Назначаются только C1 пластин и жёсткости пружин узлов сетки. C1 по направлениям (стены в грунте, подпорные стены), C2, нагрузки по полю, температура и заданные смещения пока не реализованы.
  • Значение пластины определяется в её центре; усреднения по узлам КЭ нет.
  • Сваи — только оголовки: распределения жёсткости по длине сваи нет, хотя столбец Z таблицы сохраняется.
  • Интерполяция внутри выпуклой оболочки облака не замечает областей без точек («провалов» таблицы): значения там интерполируются по соседним точкам без диагностики.
  • Пружины, которые поле создало на узлах без пружины, участвуют в расчёте и видны в дереве граничных условий, но не показываются в мозаике Пружины узлов.
  • Табличного редактора ручных правок значений по КЭ и узлам нет; ручная пружина задаётся диалогом Граничные условия узла и заменяет пружину узла целиком.
  • Совмещение не поворачивает таблицу в пространстве: вертикаль таблицы и схемы общая.

Тесты

Что проверяется Тест
Разбор таблицы: BOM, ;, ,, табуляция, десятичная запятая, единицы из заголовка, кодировка 1251, дубли CScore.Tests/Fem/Fields/PointTableTests.cs
Совмещение: поворот, зеркало, масштаб; подбор сдвига по габаритам и по точкам CScore.Tests/Fem/Fields/FieldAlignmentTests.cs
Деление на участки: плита, стена, пандус, подступенок, нижняя плита CScore.Tests/Fem/Fields/PlanarPatchSplitterTests.cs
Линейное поле восстанавливается точно на горизонтальном, вертикальном и наклонном участках; вне облака — ближайшая или нет значения; значения не протекают через угол и ступень CScore.Tests/Fem/Fields/ShellFieldInterpolatorTests.cs
Один к одному: конфликт, точка без узла, узел без точки CScore.Tests/Fem/Fields/NodeFieldMatcherTests.cs
Вычисление поля на сетке: цели из КонЭ и вся схема, пересчёт в СИ, подпись кэша CScore.Tests/Fem/Fields/FemFieldEvaluatorTests.cs
Запись и чтение поля, порядок, ручные правки, удаление; копия схемы OpenCS.Tests/FemFieldDbTests.cs
Пересчёт кэша при смене сетки и правке поля; поле переживает повторный импорт граничных условий OpenCS.Tests/FemFieldServiceTests.cs
Приоритет импорт → поля → ручные, выключенное поле, пружины по DOF, ручные пружины CScore.Tests/Fem/Fields/FemFieldOverlayTests.cs
Расчёт CSfea с C1 из поля совпадает с расчётом, где тот же C1 записан в КЭ; пружины поля по DOF во входе CSfea; проверки видят C1 поля OpenCS.Tests/FemFieldConsumersTests.cs
Окно поля: автовыбор столбцов и единиц, подбор, предпросмотр; ветка дерева OpenCS.Tests/FemFieldDialogVMTests.cs, OpenCS.Tests/FemFieldDialogWindowTests.cs, OpenCS.Tests/FemFieldTreeVMTests.cs

См. также