VM2D
1.12
Vortex methods for 2D flows simulation
|
Classes | |
struct | GeomPoint |
class | LogStream |
Класс, определяющий работу с потоком логов More... | |
class | nummatrix |
Шаблонный класс, определяющий матрицу фиксированного размера Фактически представляет собой массив, для которого определено большое количество различных операций. Для доступа к элементам матрицы используется оператор [][] Оператор[] имитирует возврат ссылки/константной ссылки на numvector. More... | |
class | numvector |
Шаблонный класс, определяющий вектор фиксированной длины Фактически представляет собой массив, для которого определено большое количество различных операций. Для доступа к элементам массива используется оператор []. More... | |
class | PairInt |
Класс, опеделяющий пару целых чисел More... | |
class | Parallel |
Класс, опеделяющий параметры исполнения задачи в параллельном MPI-режиме More... | |
struct | parProp |
Стрктура, содержащая параметры исполнения задачи в параллельном MPI-режиме More... | |
class | PassportGen |
Абстрактный класс, опеделяющий паспорт задачи More... | |
class | Point2D |
Класс, опеделяющий двумерный вектор More... | |
class | Preprocessor |
Класс, позволяющий выполнять предварительную обработку файлов More... | |
class | Queue |
Класс, опеделяющий список решаемых задач и очередь их прохождения More... | |
class | StreamParser |
Класс, позволяющий выполнять разбор файлов и строк с настройками и параметрами More... | |
class | Task |
Класс, опеделяющий описание каждой задачи в смысле прохождения процесса ее решения More... | |
struct | TimeDiscretizationProperties |
Структура, задающая параметры процесса интегрирования по времени More... | |
class | TimesGen |
Класс для сбора статистики времени исполнения основных шагов алгоритма и вывода ее в файл More... | |
struct | TParticleCode |
class | v3D |
Класс, опеделяющий двумерный вектор More... | |
class | Vortex2D |
Класс, опеделяющий двумерный вихревой элемент More... | |
class | WorldGen |
Класс, опеделяющий текущую решаемую задачу More... | |
Typedefs | |
typedef Vortex2D | Source2D |
Определение типа данных - источника, имеющего ту же структуру, что и вихрь More... | |
Enumerations | |
enum | TaskState { TaskState::waiting = 0, TaskState::starting = 1, TaskState::running = 2, TaskState::finishing = 3, TaskState::done = 4 } |
Тип-перечисление, опеделяющий состояние задачи в процессе работы программы More... | |
Functions | |
std::string | CurrentDataTime () |
Формирование строки с текущем временем и датой More... | |
void | PrintLogoToStream (std::ostream &str) |
Передача в поток вывода шапки программы VM2D/VM3D. More... | |
void | PrintUniversalLogoToStream (std::ostream &str) |
Передача в поток вывода универсальной шапки программы VM2D/VM3D. More... | |
void | PrintLogoToTextFile (std::ofstream &str, const std::string &fileName, const std::string &descr) |
Формирование заголовка файла программы VM2D/VM3D. More... | |
void | PrintHeaderToTextFile (std::ofstream &str, const std::string &header) |
Формирование подзаголовка в текстовом файле вывода программы VM2D/VM3D. More... | |
template<typename T > | |
std::ostream & | operator<< (std::ostream &_stream, const std::vector< T > &_vec) |
Переопределение оператора "<<" для вывода в поток вектора std::vector. More... | |
std::ostream & | operator<< (std::ostream &_stream, const std::pair< std::pair< std::string, int >, std::string > &_pair) |
Переопределение оператора "<<" для вывода в поток пары ((строка, целое число), строка) More... | |
std::ostream & | operator<< (std::ostream &_stream, const std::pair< std::string, int > &_pair) |
Переопределение оператора "<<" для вывода в поток пары (строка, целое число) More... | |
bool | fileExistTest (std::string &fileName, LogStream &info, const std::list< std::string > &extList={}) |
Проверка существования файла More... | |
std::string | fileNameStep (const std::string &name, int length, size_t number, const std::string &ext) |
Формирование имени файла More... | |
void | copyFile (const std::string &fileNameFrom, const std::string &fileNameTo) |
Копирование файла More... | |
void | CreateDirectory (const std::string &dir, const std::string &name) |
Создание каталога More... | |
template<typename T > | |
T | sqr (T x) |
Возведение числа в квадрат More... | |
template<typename T > | |
double | macos (const T x) |
Усовершенствованный аркосинус More... | |
template<typename T > | |
int | sign (T x) |
Усовершенствованный сигнум More... | |
void | SaveToStream (const Eigen::MatrixXd &matr, std::ostream &str) |
Сохранение матрицы в поток More... | |
void | SaveToStream (const Eigen::MatrixXcd &matr, std::ostream &str) |
Сохранение комплекснозначной матрицы в поток More... | |
void | SaveToStream (const Eigen::VectorXd &vec, std::ostream &str) |
Сохранение вектора в поток More... | |
void | SaveToStream (const std::vector< Point2D > &vec, std::ostream &str) |
Сохранение списка из двумерных векторов (точек) в поток More... | |
double | M4 (double t) |
Ядро сглаживания (Монагана) More... | |
void | ModifyE2 (double *ee2, double dst2) |
Модифицирует массив квадратов расстояний до ближайших вихрей из wake. More... | |
double | Alpha (const Point2D &p, const Point2D &s) |
Вспомогательная функция вычисления угла между векторами More... | |
double | Lambda (const Point2D &p, const Point2D &s) |
Вспомогательная функция вычисления логарифма отношения норм векторов More... | |
Point2D | Omega (const Point2D &a, const Point2D &b, const Point2D &c) |
Вспомогательная функция вычисления величины \( (\vec a \cdot \vec b) \cdot \vec c + (\vec a \times \vec b) \times \vec c \). More... | |
template<typename T > | |
void | SwapEnd (T &var) |
Вспомогательная функция перестановки байт местами (нужно для сохранения бинарных VTK) More... | |
double | boundDenom (double r2, double eps2) |
Способ сглаживания скорости вихря (вихрь Рэнкина или вихрь Ламба) More... | |
template<typename T , typename P , size_t n, size_t m> | |
auto | operator& (const numvector< P, n > &x, const nummatrix< T, n, m > &A) -> numvector< typename std::remove_const< decltype(x[0]*A.data()[0])>::type, m > |
Умножение вектора на матрицу More... | |
template<typename T , typename P , size_t n, size_t m> | |
auto | operator| (const numvector< T, n > &x, const numvector< P, m > &y) -> nummatrix< typename std::remove_const< decltype(x[0]*y[0])>::type, n, m > |
Умножение вектора на вектор внешним образом More... | |
template<typename T , size_t n, size_t m> | |
std::ostream & | operator<< (std::ostream &str, const nummatrix< T, n, m > &x) |
Перегрузка оператора "<<" вывода в поток More... | |
template<typename T , size_t n> | |
numvector< T, n > | operator* (double c, const numvector< T, n > &x) |
Оператор "*" умножения вектора на число (число слева, вектор справа) More... | |
template<typename T , typename P , size_t n> | |
auto | operator* (const P c, const numvector< T, n > &x) -> numvector< typename std::remove_const< decltype(x[0]*c)>::type, n > |
Оператор "*" умножения вектора на число (число слева, вектор справа) More... | |
template<typename T , typename P , typename R > | |
void | cross (const numvector< T, 3 > &x, const numvector< P, 3 > &y, numvector< R, 3 > &z) |
Быстрое вычисление векторного произведения More... | |
template<typename T , typename P , size_t n> | |
auto | dist2 (const numvector< T, n > &x, const numvector< P, n > &y) -> typename std::remove_const< decltype(x[0]-y[0])>::type |
Вычисление квадрата расстояния между двумя точками More... | |
template<typename R = double, typename T , typename P , size_t n> | |
R | dist (const numvector< T, n > &x, const numvector< P, n > &y) |
Вычисление расстояния между двумя точками More... | |
template<typename T , size_t n> | |
std::ostream & | operator<< (std::ostream &str, const numvector< T, n > &x) |
Оператор "<<" вывода вектора в поток More... | |
template<typename T , typename P , typename R , typename S , size_t n> | |
std::pair< numvector< T, n >, numvector< P, n > > & | operator+= (std::pair< numvector< T, n >, numvector< P, n >> &a, const std::pair< numvector< R, n >, numvector< S, n >> &b) |
Оператор прибавления "+=" для пар векторов More... | |
template<typename T , typename P , typename R , typename S , size_t n> | |
auto | operator+ (const std::pair< numvector< T, n >, numvector< P, n >> &a, const std::pair< numvector< R, n >, numvector< S, n >> &b) -> std::pair< numvector< typename std::remove_const< decltype(a.first[0]+b.first[0])>::type, n >, numvector< typename std::remove_const< decltype(a.second[0]+b.second[0])>::type, n >> |
Оператор сложения "+" для пар векторов More... | |
template<typename T , typename P , typename R , size_t n> | |
std::pair< numvector< T, n >, numvector< P, n > > & | operator*= (std::pair< numvector< T, n >, numvector< P, n >> &a, R c) |
Оператор домножения "*=" пары векторов на число (пара слева, число справа) More... | |
template<typename T , typename P , typename R , size_t n> | |
auto | operator* (R c, const std::pair< numvector< T, n >, numvector< P, n >> &a) -> std::pair< numvector< typename std::remove_const< decltype(c *a.first[0])>::type, n >, numvector< typename std::remove_const< decltype(c *a.second[0])>::type, n >> |
Оператор умножения "*" числа на пару векторов (число слева, пара справа) More... | |
template<typename T , typename P , typename R , size_t n> | |
auto | operator* (const std::pair< numvector< T, n >, numvector< P, n >> &a, R c) -> std::pair< numvector< typename std::remove_const< decltype(a.first[0]*c)>::type, n >, numvector< typename std::remove_const< decltype(a.second[0]*c)>::type, n >> |
Оператор умножения "*" пары векторов на число (пара слева, число справа) More... | |
template<typename T , typename P , size_t n> | |
std::ostream & | operator<< (std::ostream &str, const std::pair< numvector< T, n >, numvector< P, n >> &x) |
Оператор "<<" вывода пары векторов в поток More... | |
template<typename T , typename P , size_t n> | |
double | cross3 (const numvector< T, n > &x, const numvector< P, n > &y) |
Вычисление третьей компоненты векторного произведения More... | |
std::pair< PairInt, PairInt > & | operator+= (std::pair< PairInt, PairInt > &a, const std::pair< PairInt, PairInt > &b) |
int | is_match (const std::string &line_, const std::string &pattern_) |
Функция сверки строки с шаблоном, который может содержать знаки * и ? More... | |
v3D | operator* (double c, const v3D &x) |
std::pair< v3D, v3D > & | operator+= (std::pair< v3D, v3D > &a, const std::pair< v3D, v3D > &b) |
std::pair< v3D, v3D > & | operator*= (std::pair< v3D, v3D > &a, double c) |
std::pair< v3D, v3D > | operator* (std::pair< v3D, v3D > &a, double c) |
typedef Vortex2D VMlib::Source2D |
Определение типа данных - источника, имеющего ту же структуру, что и вихрь
Definition at line 106 of file Vortex2D.h.
|
strong |
Тип-перечисление, опеделяющий состояние задачи в процессе работы программы
Может принимать 5 различных значений:
Enumerator | |
---|---|
waiting |
задача ожидает запуска |
starting |
задача стартует |
running |
задача решается |
finishing |
задача финиширует |
done |
задача решена |
Definition at line 59 of file Task.h.
Вспомогательная функция вычисления угла между векторами
[in] | p | константная ссылка на первый вектор |
[in] | s | константная ссылка на второй вектор |
Definition at line 259 of file defs.cpp.
|
inline |
|
inline |
|
inline |
void VMlib::cross | ( | const numvector< T, 3 > & | x, |
const numvector< P, 3 > & | y, | ||
numvector< R, 3 > & | z | ||
) |
Быстрое вычисление векторного произведения
Определено только для трехмерных векторов
Оптимизировано за счет отсутствия вызова конструктора, предполагает наличие трех уже созданных векторов
T | тип данных компонент вектора первого множителя |
P | тип данных компонент вектора второго множителя |
R | тип данных компонент вектора результата |
[in] | x | константная ссылка на первый множитель |
[in] | y | константная ссылка на второй множитель |
[out] | z | ссылка на результат векторного умножения |
Definition at line 772 of file numvector.h.
double VMlib::cross3 | ( | const numvector< T, n > & | x, |
const numvector< P, n > & | y | ||
) |
Вычисление третьей компоненты векторного произведения
Определено для векторов любой размерности, используются только первые 2 компоненты исходных векторов
T | тип данных компонент вектора - первого множителя |
P | тип данных компонент вектора - второго множителя |
n | размерность исходных векторов |
[in] | x | константная ссылка на первый множитель |
[in] | y | константная ссылка на второй множитель |
Definition at line 1064 of file numvector.h.
std::string VMlib::CurrentDataTime | ( | ) |
Формирование строки с текущем временем и датой
Definition at line 44 of file defs.cpp.
R VMlib::dist | ( | const numvector< T, n > & | x, |
const numvector< P, n > & | y | ||
) |
Вычисление расстояния между двумя точками
T | тип данных компонент радиус-вектора первой точки |
P | тип данных компонент радиус-вектора второй точки |
R | тип данных результата (по умолчанию double) |
[in] | x | константная ссылка на радиус-вектор первой точки |
[in] | y | константная ссылка на радиус-вектор второй точки |
Definition at line 804 of file numvector.h.
auto VMlib::dist2 | ( | const numvector< T, n > & | x, |
const numvector< P, n > & | y | ||
) | -> typename std::remove_const<decltype(x[0] - y[0])>::type |
Вычисление квадрата расстояния между двумя точками
T | тип данных компонент первого радиус-вектора |
P | тип данных компонент второго радиус-вектора |
n | размерность векторов |
[in] | x | константная ссылка на радиус-вектор первой точки |
[in] | y | константная ссылка на радиус-вектор второй точки |
Definition at line 788 of file numvector.h.
|
inline |
Проверка существования файла
[in,out] | fileName | ссылка на имя проверяемого файла, заменяется на имя + то из расширений, с которым файл присутствует |
[in,out] | info | ссылка на поток вывода логов/ошибок |
[in] | extList | константная ссылка на список проверяемых расширений |
Definition at line 324 of file defs.h.
|
inline |
Формирование имени файла
[in] | name | константная ссылка на префикс имени файла |
[in] | length | количество знаков под номер |
[in] | number | номер для имени файла |
[in] | ext | константная ссылка на раширение (дописывается, если непустое) |
Definition at line 357 of file defs.h.
|
inline |
Функция сверки строки с шаблоном, который может содержать знаки * и ?
[in] | line_ | константная ссылка на проверяемую строку |
[in] | pattern_ | константная ссылка на строку-шаблон, с которой производится сверка rerurn признак соответствия строки шаблону |
Definition at line 57 of file StreamParser.h.
double VMlib::M4 | ( | double | t | ) |
|
inline |
|
inline |
Вспомогательная функция вычисления величины \( (\vec a \cdot \vec b) \cdot \vec c + (\vec a \times \vec b) \times \vec c \).
Для оптимизации все векторы считаются двумерными
[in] | a | константная ссылка на первый вектор |
[in] | b | константная ссылка на второй вектор |
[in] | c | константная ссылка на третий вектор |
Definition at line 271 of file defs.cpp.
auto VMlib::operator& | ( | const numvector< P, n > & | x, |
const nummatrix< T, n, m > & | A | ||
) | -> numvector<typename std::remove_const<decltype(x[0] * A.data()[0])>::type, m> |
Умножение вектора на матрицу
T | тип данных матрицы |
P | тип данных вектора |
n | длина вектора и число строк матрицы |
m | число столбцов матрицы |
[in] | A | константная ссылка на матрицу |
[in] | x | константная ссылка на вектор |
Definition at line 528 of file nummatrix.h.
numvector<T, n> VMlib::operator* | ( | double | c, |
const numvector< T, n > & | x | ||
) |
Оператор "*" умножения вектора на число (число слева, вектор справа)
T | тип данных компонент вектора и множителя |
n | длина вектора |
[in] | c | числовой множитель |
[in] | x | константная ссылка на умножаемый вектор |
Definition at line 732 of file numvector.h.
auto VMlib::operator* | ( | const P | c, |
const numvector< T, n > & | x | ||
) | -> numvector<typename std::remove_const<decltype(x[0] * c)>::type, n> |
Оператор "*" умножения вектора на число (число слева, вектор справа)
T | тип данных компонент вектора |
P | тип данных числового множителя |
n | длина вектора |
[in] | c | числовой множитель |
[in] | x | константная ссылка на умножаемый вектор |
Definition at line 750 of file numvector.h.
|
inline |
Оператор умножения "*" числа на пару векторов (число слева, пара справа)
tparam T тип данных вектора - первого компонента в паре tparam P тип данных вектора - второго компонента в паре tparam R тип данных числового множителя tparam n длина векторов - компонентов пары param[in] c числовой множитель param[in] a константная ссылка на пару return пару, получаемую при покомпонентном умножении пары на число, приведенную к нужному типу
Definition at line 905 of file numvector.h.
|
inline |
Оператор умножения "*" пары векторов на число (пара слева, число справа)
tparam T тип данных вектора - первого компонента в паре tparam P тип данных вектора - второго компонента в паре tparam R тип данных числового множителя tparam n длина векторов - компонентов пары param[in] c числовой множитель param[in] a константная ссылка на пару return пару, получаемую при покомпонентном умножении пары на число, приведенную к нужному типу
Definition at line 925 of file numvector.h.
|
inline |
Оператор домножения "*=" пары векторов на число (пара слева, число справа)
tparam T тип данных вектора - первого компонента в паре tparam P тип данных вектора - второго компонента в паре tparam R тип данных числового множителя tparam n длина векторов - компонентов пары param[in] a ссылка на пару param[in] c числовой множитель return ссылка на пару после ее покомпонентного домножения на число
Definition at line 887 of file numvector.h.
|
inline |
Оператор сложения "+" для пар векторов
tparam T тип данных вектора - первого компонента в левой паре tparam P тип данных вектора - второго компонента в левой паре tparam R тип данных вектора - первого компонента в правой паре tparam S тип данных вектора - второго компонента в правой паре tparam n длина векторов - компонентов обеих пар param[in] a константная ссылка на левую пару param[in] b константная ссылка на правую пару return пару, получаемую при покомпонентном суммировании левой и правой пар, приведенную к нужному типу
Definition at line 867 of file numvector.h.
|
inline |
Оператор прибавления "+=" для пар векторов
tparam T тип данных вектора - первого компонента в паре tparam P тип данных вектора - второго компонента в паре tparam R тип данных вектора - первого компонента в прибавляемой паре tparam S тип данных вектора - второго компонента в прибавляемой паре tparam n длина векторов - компонентов обеих пар param[in] a ссылка на первую пару param[in] b константная ссылка на прибавляемую пару return ссылку на первую пару после прибавления к ней второй пары
Definition at line 848 of file numvector.h.
std::ostream& VMlib::operator<< | ( | std::ostream & | _stream, |
const std::vector< T > & | _vec | ||
) |
Переопределение оператора "<<" для вывода в поток вектора std::vector.
Компоненты вектора выводятся в фигурных скобках с разделителем ";"
T | тип элементов в векторе |
[in,out] | _stream | ссылка на поток для вывода |
[in] | _vec | константная ссылка на выводимый вектор |
|
inline |
Переопределение оператора "<<" для вывода в поток пары ((строка, целое число), строка)
Компоненты пары выводятся в скобках с разделителем ","
[in,out] | _stream | ссылка на поток для вывода |
[in] | _pair | константная ссылка на выводимую пару |
|
inline |
Переопределение оператора "<<" для вывода в поток пары (строка, целое число)
Компоненты пары выводятся в скобках с разделителем ","
[in,out] | _stream | ссылка на поток для вывода |
[in] | _pair | константная ссылка на выводимую пару |
std::ostream& VMlib::operator<< | ( | std::ostream & | str, |
const nummatrix< T, n, m > & | x | ||
) |
Перегрузка оператора "<<" вывода в поток
Выводит в поток вектор, элементы которого записаны в фигурных скобках и разделены запятой с пробелом
T | тип данных |
n | размерность вектора |
[in,out] | str | ссылка на поток вывода |
[in] | x | константная ссылка на вектор |
Definition at line 568 of file nummatrix.h.
std::ostream& VMlib::operator<< | ( | std::ostream & | str, |
const numvector< T, n > & | x | ||
) |
Оператор "<<" вывода вектора в поток
Выводит в поток вектор, элементы которого записываются в фигурных скобках и разделены запятой с пробелом
T | тип данных компонент вектора |
n | размерность вектора |
[in,out] | str | ссылка на поток вывода |
[in] | x | константная ссылка на вектор |
Definition at line 821 of file numvector.h.
std::ostream& VMlib::operator<< | ( | std::ostream & | str, |
const std::pair< numvector< T, n >, numvector< P, n >> & | x | ||
) |
Оператор "<<" вывода пары векторов в поток
Выводит в поток векторы из пары, разделяя их запятой с пробелом
T | тип данных вектора - первого компонента пары |
P | тип данных вектора - второго компонента пары |
n | размерность векторов |
[in,out] | str | ссылка на поток вывода |
[in] | x | константная ссылка на вектор |
Definition at line 943 of file numvector.h.
|
inline |
Умножение вектора на вектор внешним образом
Definition at line 544 of file nummatrix.h.
void VMlib::PrintHeaderToTextFile | ( | std::ofstream & | str, |
const std::string & | header | ||
) |
Формирование подзаголовка в текстовом файле вывода программы VM2D/VM3D.
Печатает в файл вывода программы VM2D/VM3D подзаголовок и подчеркивает его
[out] | str | ссылка на файл для вывода, должен быть открыт |
[in] | header | константная ссылка на строку с заголовком |
Definition at line 172 of file defs.cpp.
void VMlib::PrintLogoToStream | ( | std::ostream & | str | ) |
void VMlib::PrintLogoToTextFile | ( | std::ofstream & | str, |
const std::string & | fileName, | ||
const std::string & | descr | ||
) |
Формирование заголовка файла программы VM2D/VM3D.
Печатает в шапку файла заголовок программы VM2D/VM3D
[out] | str | ссылка на файл для вывода, должен быть открыт |
[in] | fileName | константная ссылка на строку с именем файла |
[in] | descr | константная ссылка на строку с описанием файла |
Definition at line 136 of file defs.cpp.
void VMlib::PrintUniversalLogoToStream | ( | std::ostream & | str | ) |
void VMlib::SaveToStream | ( | const Eigen::MatrixXd & | matr, |
std::ostream & | str | ||
) |
Сохранение матрицы в поток
[in] | matr | константная ссылка на сохраняемую матрицу |
[in,out] | str | ссылка на поток для сохранения |
void VMlib::SaveToStream | ( | const Eigen::MatrixXcd & | matr, |
std::ostream & | str | ||
) |
Сохранение комплекснозначной матрицы в поток
[in] | matr | константная ссылка на сохраняемую комплекснозначную матрицу |
[in,out] | str | ссылка на поток для сохранения |
void VMlib::SaveToStream | ( | const Eigen::VectorXd & | vec, |
std::ostream & | str | ||
) |
void VMlib::SaveToStream | ( | const std::vector< Point2D > & | vec, |
std::ostream & | str | ||
) |
int VMlib::sign | ( | T | x | ) |
|
inline |
void VMlib::SwapEnd | ( | T & | var | ) |