Interpolation (by cell)

Материал из ru.wiki.laduga.ru
Перейти к: навигация, поиск


Эта статья посвящена классу интерполяции libfiniteVolume в OpenFOAM. Также смотрите Interpolation (disambiguation) Эта статья описывает класс семейства интерполяции (по ячейкам), которое включает в себя:

  • interpolation (абстрактный базовый класс);
  • interpolationCell;
  • interpolationCellPoint;
  • interpolationCellPointFace.

Все эти классы выполняют линейную интерполяцию по полю объёма, заданному ячейкой и произвольному местоположению внутри этой ячейки. Используется meshToMeshInterpolation. Как правило, на постобработке работают утилиты такие, как sample.

interpolation (базовый класс)

Этот класс содержит ссылку на поле объёма, и явно содержит ссылки на некоторые его компоненты. Это абстрактный базовый класс, который обеспечивает интерфейс для других классов этого семейства.

interpolationCell

Этот класс является реализацией интерполяции по ближайшей ячейке, и не смотря на то, что он кажется тривиальным (то-есть интерполяция до ближайшей ячейки в классе, которая требует индекс ячейки в качестве параметра!), когда загружается утилитой постпроцессинга runTime selection, этот класс в основном отключает интерполяцию. Явного описания этого класса в OpenFOAM нет и он загружается исключительно runTime selection.

interpolationCellPoint

Интерполирует в произвольное место внутри ячейки. Этот класс работает следующим образом:

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

interpolationCellPointFace

Для произвольной точки внутри ячейки найти ближайшую точку на одной из её граней. Класс работает следующим образом:

  • находит грани кандидата путём проецирования линии из центра ячейки через произвольную точку;
  • разбивает грани ячейки на треугольники, которые включают центральную точку на грани и две вершины;
  • определяет тетраэдр с помощью этих треугольников и точки в центре ячейки;
  • ищет тетраэдр, заключающий точку;
  • если неудача, то операция повторяется для всех граней;
  • если грань не является пустым fvpatch, она возвращает нормальную проекцию точки на выбранную грань;
  • если грань является пустым fvpatch, то вместо неё возвращается центр ячейки.

Ссылка на оригинал - http://openfoamwiki.net/index.php/OpenFOAM_guide/Interpolation_(by_cell)