# Замкнутые расчётные корпуса ECONA

**10 октября 2026.** Использована текущая открытая модель, подтверждённая
пользователем. Исходная компоновка, набор, палубы и надстройка сохранены.

Скачать расчётную модель FreeCAD *(отдельный исходник не входит в этот комплект / external source not included)*

![Замкнутые объёмы; условные расчётные крышки — оранжевые](../assets/geometry/closed-hulls-axon.png)

## Что построено

| Показатель | Левый поплавок | Правый поплавок |
|---|---:|---:|
| Тип тела | Solid | Solid |
| Замкнуто / валидно | Да / да | Да / да |
| Положительный полный объём | 25,216819 м³ | 25,216819 м³ |
| Грани исходной обшивки до расчётной обработки | 19 447 | 19 447 |
| Грани обшивки в рабочем теле | 18 827 | 18 827 |
| Верхние расчётные треугольники | 261 | 261 |
| Кормовые треугольники в одной плоскости | 52 | 52 |
| Всего граней в рабочем Solid | 19 140 | 19 140 |

Днище и борта взяты из существующей обшивки. Верх замкнут
треугольными полосами между существующими открытыми кромками; кормовой срез
замкнут плоской поверхностью по существующему контуру. Модель остаётся гранёной,
как исходная обшивка. Новый гладкий теоретический корпус не придумывался.

В рабочей расчётной копии объединены почти совпадающие вершины в радиусе
0,01 мм, с усреднением их координат. Максимальное смещение — **0,004883 мм**.
Удалены 624 схлопнувшихся треугольника, включая 4 верхних. Относительное
изменение полного объёма — **7,94×10⁻¹¹**. Исходная компоновка не изменена.
Это численная регуляризация, без сглаживания и переназначения обводов.
Правый поплавок получен отражением `transformShape`, сохраняющим плоскости;
обе стороны содержат только плоские грани. `transformGeometry` для этого
отражения не используется: в этой версии он заменяет плоскости сплайнами.

Верхние и кормовые поверхности выделены оранжевым. Это **условные расчётные крышки**,
не новая конструкция палубы и не подтверждённая граница непроницаемости.
Кормовая крышка также не задаёт материал или толщину переборки.
Полные 50,433638 м³ двух тел не являются допустимым водоизмещением или грузоподъёмностью.

## Координаты и пределы гидростатики

CAD использует миллиметры. Оси: X к носу, Y к левому борту, Z вверх.
Преобразование из основной модели:

```
Xcalc = Xsource − 6800
Ycalc = Ysource
Zcalc = Zsource + 486.100006
```

Z=0 проходит через нижнюю точку обшивок; шверты и рули в объём не включены.
X=0 — середина габаритной длины 13,6 м, не назначенный мидель между
перпендикулярами. Lpp, проектная ватерлиния, масса и ЦТ пока не утверждены.

Нижняя отметка верхних условных крышек — **Zcalc=0,926000425 м**.
Вертикальные водоплоскости ниже этой отметки не пересекают верхние крышки.
При крене и дифференте это ограничение проверяется по преобразованным граням
заново. Расчёт большой GZ и предельного крена по этим крышкам без реальной
непроницаемой границы и отверстий недопустим.

## Независимая проверка геометрии

Сеточная модель проверена отдельно от OCC: каждый край принадлежит ровно
двум треугольникам, ориентация согласована, характеристика Эйлера равна 2.
Полный объём рабочего CAD и независимой интеграции отличается менее чем на
1×10⁻¹² относительно. Для точного промежуточного замыкания сохранены все
исходные грани; его BRep находится в `exact-construction/`. Рабочее тело
дополнительно прошло описанное выше объединение вершин.
Глобальный BOP-check самопересечений всех граней не выполнялся. Проверены
валидность и замкнутость BRep, сеточная топология, ориентация, полный объём,
три вертикальных среза и отдельная составная пара поплавков.

Ниже — независимые подводные интегралы по фактическим граням. Осадки
назначены **только для проверки** и не являются выбранными состояниями загрузки.

| Проверочная осадка | Подводный объём обоих тел | Масса морской воды, 1025 кг/м³ | Площадь ватерлинии |
|---|---:|---:|---:|
| 0,400 м | 4,450309 м³ | 4 561,57 кг | 17,99545 м² |
| 0,600 м | 8,459941 м³ | 8 671,44 кг | 21,51782 м² |
| 0,800 м | 12,984975 м³ | 13 309,60 кг | 23,72792 м² |

Площадь здесь получена производной объёма по осадке с шагом ±0,1 мм.
Для независимости объём и центр объёма вычислены суммой ориентированных
тетраэдров после обрезания треугольников плоскостью; CAD-boolean не используется.
Результаты сравнения с FreeCAD Ship сохраняются в `ship-verification.json`.
На трёх проверочных осадках совпали масса вытесненной воды, LCB и KB;
наибольшее относительное расхождение площади ватерлинии — 1,90×10⁻⁷.

Штатные `Shape.slice()` и отсечение `Part::MultiCommon` на этой густой
гранёной геометрии дали пустые результаты, несмотря на валидность Solid.
В установленный Ship добавлен сохраняемый патч
`software/ship-section-compatibility.patch`: сечение явной плоскостью и
непосредственное обрезание выпуклых плоских граней. Исходные обводы,
вершины и положение водоплоскости при этом не меняются. Для плоских
многогранников основная плоскость определяется настоящим минимумом вершин,
без численного припуска BoundingBox. Неподдерживаемая криволинейная или
невыпуклая геометрия сохраняет штатный путь; невалидный результат не принимается.

Проверки ниже этой записи относятся к **вертикальной гидростатике**.
GZ, повреждение отсеков, дифферент, свободные поверхности танков и большие
углы требуют следующей отдельной постановки и проверки, с реальным ЦТ
и непроницаемой границей. Патч не подтверждает правильность этих расчётов.

## Файлы и повторение

- Основная модель: `models/ECONA/ECONA_ECONA.FCStd`, SHA-256
  `7ae0c6e91c30dc92f1f46d84660eb2e1f431d6f56efa7243a7c15a9a608791ef`.
- Расчётная модель: `models/ECONA/ECONA_ECONA_CalculationHulls.FCStd`.
- Источник и снимок открытого документа: `calculations/closed-hulls/source.json`
  и `source-snapshot.FCStd`.
- Крышки: `closure-payload.json`; тела в BRep: `PortHull.brep`, `StarboardHull.brep`.
- Проверки: `mesh-verification.json`, `cad-verification.json`,
  `welding-verification.json`, `regularized-cad-verification.json`,
  `final-model-verification.json`, `independent-hydro.json`, `ship-verification.json`.
- Экспорт текущих обшивок из GUI: `tools/geometry/export_hull_source_freecad.py`.
- Повторение: `tools/geometry/prepare_closed_hulls.py`,
  `build_closed_hulls_freecad.py`, `weld_closed_hulls.py`,
  `build_regularized_hulls_freecad.py`, `finalize_calculation_hulls_freecad.py`,
  `verify_closed_hulls_numeric.py`, `verify_closed_hulls_ship.py`.
  CAD-скрипты запускаются установленным FreeCADCmd, финализация — в GUI.
  Скрипты координат настроены на текущую ECONA: при изменении осей,
  длины или нижней отметки сначала пересчитать и записать преобразование.

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