Interpolation (by cell)
Эта статья посвящена классу интерполяции 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)