Поля из таблиц точек
Поле из таблицы точек назначает величину элементам и узлам МКЭ-схемы по таблице 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 явно, становятся целями независимо от этого: такой узел без пружины получает новую пружину с жёсткостями только по столбцам поля.
Совмещение
Координаты таблицы переводятся в систему схемы:
где \(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\):
Если центр КЭ вне облака точек участка (за его выпуклой оболочкой), КЭ получает значение ближайшей точки, но только если она не дальше предельного расстояния; иначе значения нет.
Ближайшая точка
КЭ получает значение ближайшей точки участка не дальше предельного расстояния. Мозаика получается ступенчатой с шагом таблицы — так геотехнические программы часто и передают коэффициенты постели по КЭ.
Обратные расстояния (IDW)
Берутся до 8 ближайших точек участка не дальше предельного расстояния:
Если центр КЭ совпадает с точкой таблицы, берётся её значение. Способ не требует триангуляции и пригоден для криволинейных поверхностей, которые делятся на много мелких участков.
Один к одному
Способ для узлов (пружины). Каждая точка таблицы ищет ближайший узел-цель в пределах допуска поиска узла; без Z поиск ведётся в плане. Если к одному узлу притянулось несколько точек, берётся ближайшая, а узел попадает в диагностику field_node_conflict. Точки без узла и узлы без точки тоже перечисляются в диагностике.
Допуски
| Допуск | По умолчанию | Где действует |
|---|---|---|
| Предельное расстояние | \(2h\), где \(h\) — медиана \(\sqrt{A}\) пластин-целей | интерполяция вне облака, ближайшая точка, IDW |
| Допуск до плоскости | \(h\) | точка таблицы ↔ плоскость участка; узлы КЭ ↔ плоскость при делении на участки |
| Допуск поиска узла | 0,5 м | один к одному |
Все допуски правятся в окне поля.
Окно поля
Окно Поле из таблицы точек: слева настройки, справа предпросмотр.
- Таблица — Открыть CSV… или Вставить из буфера, имя поля, столбцы X, Y, Z, единицы длины, для каждого столбца значений — компонента и единица.
- Величина — Коэффициент постели C1 пластин или Жёсткость пружин узлов. Для узловых целей способ — Один к одному, для пластин — Интерполяция с допусками по размеру КЭ.
- Способ — Интерполяция, Ближайшая точка, Обратные расстояния (IDW) и допуски.
- Совмещение — dX, dY, dZ, угол, Зеркало X, Зеркало Y, кнопки Подобрать по габаритам и Подобрать по точкам со строкой невязки.
- Предпросмотр — вид на плоскость участка (у плиты — план): контуры целей, точки таблицы цветом по значению и итоговая мозаика по КЭ или подписи у узлов. При нескольких участках участок выбирается списком. Под видом — сводка: сколько целей получило значение интерполяцией, ближайшей точкой, IDW, сопоставлением, сколько осталось без значения и сколько точек таблицы не попало на цели.

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

Жёсткости 248 свай: координаты в сантиметрах, Rz в тс/см, сдвиг подобран по точкам — медиана 0,117 м, максимум 0,278 м; сопоставлены все 248 узлов.
По ОК поле сохраняется, значения вычисляются, результаты постановок схемы сбрасываются, а в 3D открывается мозаика C1 или пружин узлов. Замечания переноса записываются в журнал.
Поля в дереве схемы
Ветка Поля из таблиц (N) расположена в дереве схемы после Жёстких тел и объединений. Строка поля — имя, число целей со значением и число точек: «C1 плиты — 600 КЭ, 117 точек». Выключенное поле показано серым.
| Команда | Где | Что делает |
|---|---|---|
| Назначить из таблицы точек… | ветка Поля из таблиц, группа КЭ или КонЭ, КонЭ в дереве, выделение в 3D | новое поле на цели из места вызова |
| Изменить… | поле | то же окно с сохранёнными настройками |
| Повторить с новой таблицей… | поле | те же цели, совмещение и способ, новые точки: окно открывается сразу с выбором файла. Для случая, когда геотехнический расчёт пересчитан |
| Показать на схеме | поле | мозаика C1 или пружин узлов в 3D |
| Включить / Выключить | поле | выключенное поле не действует, но хранится |
| Выше (раньше в наложении), Ниже (позже в наложении) | поле | порядок наложения полей |
| Удалить | поле | после подтверждения; результаты постановок схемы сбрасываются |

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

Для поля пружин Показать на схеме открывает мозаику «Пружины узлов».
Действующие значения видны и в остальных ветках: Граничные условия → Упругое основание считает КЭ с действующим 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 плиты
- В дереве схемы на ветке Поля из таблиц — Назначить из таблицы точек…, Открыть CSV… →
demo-c1.csv. Окно узнаёт X, Y, единицы длины «м», столбецC1 [кН/м3]— компонента C1, единица кН/м³. - Величина — Коэффициент постели C1 пластин. Допуски по умолчанию: \(h\) = 1 м, предельное расстояние 2 м, допуск до плоскости 1 м.
- Подобрать по габаритам: dX = −100 м, dY = −50 м. Невязка — медиана 0,5 м, максимум 0,71 м: это расстояние от точек с шагом 2,5 м до ближайших узлов сетки 1 м, совмещение точное.
- Предпросмотр. 9 совпадающих точек на стыке слиты (117 точек), наибольшее расхождение значений в них — 3,9 %. Один участок; все 600 КЭ получили значение интерполяцией; точек, не попавших на цели, нет.
| Интерполяция | Ближайшая точка | |
|---|---|---|
| Мозаика |
Значения 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, и результат зависит от того, какие точки участвуют в переносе.
Жёсткости свай
- В 3D выделить 15 узлов свай (или вызвать команду на ветке Поля из таблиц — целями станут все узлы с пружинами) → Назначить из таблицы точек…, Открыть CSV… →
demo-piles.csv. Единицы длины — «см» по заголовку, столбецRz [тс/см]— компонента Kz, единица тс/см; столбецNполучает «—». - Величина — Жёсткость пружин узлов, способ — Один к одному, допуск поиска узла 0,5 м.
- Подобрать по точкам: dX = −99,959 м, dY = −49,949 м; невязка — медиана 0,183 м, 95 % и максимум 0,291 м (15 точек). Подбор по габаритам дал бы dX = −99,995, dY = −49,895 и максимум 0,348 м: габарит определяют крайние сваи с их случайными отклонениями.
- Предпросмотр: сопоставлено 15 узлов, конфликтов нет.
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 |
См. также
- Граничные условия, загружения и правка схемы — узловые связи, пружины, упругое основание.
- Расчёт схемы — CSfea.
- Импорт ЛИРА-САПР, Импорт SCAD.