122 std::vector<Point2D>
E;
175 int Delta(
int i,
int j)
const;
185 std::pair<unsigned int, int>
Prefix(
int cell)
const;
194 static unsigned int ExpandBits(
unsigned int v);
234 void getStatistics(
int& numParticles,
int& treshold, std::pair<int, int>& partLevel, std::pair<int, int>& leafsLevel,
int& lowLevelCells)
const;
244 MortonTree(
const params& prm_,
int maxTreeLevel_, std::vector<PointsCopy>& points);
Структура, соответствующая мортоновскому дереву
void BuildMortonParticlesTree()
Построение верхушек дерева — отдельных частиц
void MinMaxCellsSearch(int numCell)
std::vector< treeCellT > mortonTree
Мортоновское дерево Размер дерева равен сумме числа внутренних вершин (число частиц без единицы) и чи...
void BuildInternalTreeCell(int i)
Функция построения i-й внутренней ячейки дерева
int Delta(int i, int j) const
std::vector< PointsCopy > & pointsCopy
Ссылка на список обобщенных вихрей, по которым строится дерево
void CalcLocalCoeffToLowLevel(int lowCell, std::unique_ptr< MortonTree > &treeInf, int fromWho, bool calcCloseTrees)
void MinMaxCellsCalc(BH::treeCellT &cell)
void RSort_step3(TParticleCode *source, TParticleCode *dest, unsigned int n, unsigned int *offset, unsigned char sortable_bit)
Вспомогательная функция к RSort_Node3.
void RSort_Node3(TParticleCode *m, TParticleCode *m_temp, unsigned int n)
Поразрядная сортировка мортоновских кодов
void FillMortonLowCells(int cell=0)
Функция заполнения списка нижних ячеек дерева (до которых производится обход)
void CalcVeloTaylorExpansion(int lowCell)
void ShareGabs(int numCell)
void BuildMortonInternalTree()
Построение внутренних ячеек дерева
std::pair< unsigned int, int > Prefix(int cell) const
static std::pair< Point2D, Point2D > FindEnclosingRectangleOld(const std::vector< PointsCopy > &points)
Поиск габаритного прямоугольника системы точек (для OpenMP 2.0)
void MakeRootMortonTree()
Построение корня дерева и задание его общих параметров
static unsigned int Morton2D(const Point2D &r)
std::vector< int > mortonLowCells
Вектор индесков ячеек нижнего уровня в дереве
static unsigned int ExpandBits(unsigned int v)
"Разрежение" двоичного представления беззнакового целого, вставляя по одному нулику между всеми битам...
void FillMortonLowCellsA()
Point2D lowLeft
Положение нижнего левого угла дерева
void RSort_Parallel(TParticleCode *m, TParticleCode *m_temp, unsigned int n, unsigned int *s)
Параллельная версия поразрядной сортировки мортоновских кодов
void getStatistics(int &numParticles, int &treshold, std::pair< int, int > &partLevel, std::pair< int, int > &leafsLevel, int &lowLevelCells) const
const params & prm
Ссылка на параметры, загружаемые из файла
std::vector< TParticleCode > mortonCodes
Список мортоновских кодов, вычисляемых по положениям частиц
double & getBinom(int n, int k)
int PrefixLength(int cell) const
void AddVelo(int lowCell)
void GabsPyr(int numCell)
void CalcVeloBiotSavart(int lowCell, std::unique_ptr< MortonTree > &treeInf)
std::vector< double > binomCft
const int maxTreeLevel
Максимальная глубина дерева при его обходе
std::vector< double > iFact
Спикок обратных факториалов целых чисел
void CalculateMortonTreeParams(int cell, int omplevel)
Вычисление параметров дерева (циркуляций и высших моментов)
void SetCellGeometry(int cell)
Функция вычисления геометрических параметров внутренней ячейки дерева
Класс, содержащий параметры метода Баонса - Хата для CPU.
int order
Точность расчета скоростей:
Шаблонный класс, определяющий вектор фиксированной длины Фактически представляет собой массив,...
Вспомогательные функции для метода Барнса - Хата для CPU.
long long op
Глобальная переменная - счетчик количества операций
Структура, соответствующая частице и ее мортоновскому коду
double g
Циркуляция частицы (заносится в эту структуру для облегчения доступа)
Point2D r
Положение частицы (заносится в эту структуру для облегчения доступа)
unsigned int key
Мортоновский код частицы
int originNumber
Индекс частицы в глобальном массиве частиц
Структура, соответствующая ячейке мортоновского дерева
bool leaf
Признак того, что при обходе дерева на более глубокие уровни спускаться не нужно
numvector< int, 2 > range
Диапазон индексов частиц в ячейке: 0 - первая; 1 - последняя
int level
Уровень ячейки в дереве (не заполняется для частиц)
Point2D center
Положение центра ячейки
Point2D size
Размер ячейки по x и по y (для листа (0;0)
std::vector< Point2D > E
Коэффициенты локального разложения в ячейке для вычисления скоростей
std::vector< Point2D > mom
Мультипольные моменты ячейки
std::vector< int > closeCells
numvector< int, 2 > child
Индексы потомков (если это не particle): 0 - левый, 1 - правый
int parent
Индекс родительской ячейки (0 — для корня дерева)