![]() |
VM2D 1.14
Vortex methods for 2D flows simulation
|
Namespaces | |
| namespace | detail |
| namespace | detail_interp |
Classes | |
| class | BinomNewton |
| class | FastMultipole |
| class | FastMultipole3d |
| class | MortonTree |
| struct | particle |
| struct | small_particle |
| struct | TreeCell |
| struct | treevector |
| class | Vector3 |
Typedefs | |
| using | Vector3d = Vector3< double > |
| using | Matrix3d = std::array< Vector3d, 3 > |
| using | Vector3cd = Vector3< std::complex< double > > |
| using | point2d = std::complex< double > |
| using | point3d = Vector3d |
| using | particle2d = particle< point2d, double > |
| using | particle3d = particle< point3d, double > |
| using | particle3d3 = particle< point3d, point3d > |
| using | TreeCell2d = TreeCell< point2d, double > |
| using | TreeCell3d = TreeCell< point3d, double > |
| using | TreeCell3d3 = TreeCell< point3d, point3d > |
| using | MortonTree2d = MortonTree< 2, point2d, double > |
| using | MortonTree3d = MortonTree< 3, point3d, double > |
| using | MortonTree3d3 = MortonTree< 3, point3d, point3d > |
Enumerations | |
| enum class | InteractionType { Potential2d , Force2d , Potential3d , Force3d , VelDipole3d , MomDipole3d } |
Functions | |
| template<typename vec_type > | |
| vec_type | avx_zero_vec () |
| template<typename vec_type > | |
| void | avx_store (double *data, vec_type &v) |
| template<typename vec_type > | |
| vec_type | avx_add (const vec_type &v1, const vec_type &v2) |
| template<typename vec_type > | |
| vec_type | avx_sub (const vec_type &v1, const vec_type &v2) |
| template<typename vec_type > | |
| vec_type | avx_mul (const vec_type &v1, const vec_type &v2) |
| double | avx_hsum (__m128d v) |
| double | avx_hsum (__m256d v) |
| double | avx_hsum (__m512d v) |
| template<typename vec_type > | |
| void | avx_set_range (vec_type &vec, double *val) |
| template<typename vec_type > | |
| void | avx_set_constant (vec_type &vec, double val) |
| void | avx_inv_dr (const __m512d &oneVec, const __m512d &epsVec, const __m512d &x_target, const __m512d &y_target, const __m512d &z_target, __m512d &temp1, __m512d &temp2, __m512d &temp3, __m512d &dx, __m512d &dy, __m512d &dz, __m512d &invdr, __m512d &invdr2) |
| void | avx_inv_dr (const __m256d &oneVec, const __m256d &epsVec, const __m256d &x_target, const __m256d &y_target, const __m256d &z_target, __m256d &temp1, __m256d &temp2, __m256d &temp3, __m256d &dx, __m256d &dy, __m256d &dz, __m256d &invdr, __m256d &invdr2) |
| void | avx_inv_dr (const __m128d &oneVec, const __m128d &epsVec, const __m128d &x_target, const __m128d &y_target, const __m128d &z_target, __m128d &temp1, __m128d &temp2, __m128d &temp3, __m128d &dx, __m128d &dy, __m128d &dz, __m128d &invdr, __m128d &invdr2) |
| bool | IAmRoot () |
| template<typename T > | |
| constexpr T | MyPow (T base, unsigned int exp) |
| constexpr double | ni (int n) |
| Vector3d | DecToSph (const Vector3d &vec) |
| double | Potential2d (const particle2d &p1, const particle2d &p2) |
| std::complex< double > | Force2d (const particle2d &p1, const particle2d &p2) |
| double | Potential3d (const particle3d &p1, const particle3d &p2) |
| Vector3d | Force3d (const particle3d &p1, const particle3d &p2) |
| Vector3d | Force3d (const particle3d3 &p1, const particle3d3 &p2) |
| template<typename T > | |
| std::pair< T, T > | lambdaEta (T xi) |
| template<> | |
| std::pair< double, double > | lambdaEta< double > (double xi) |
| template<typename T > | |
| std::pair< T, T > | lambdaEtaA (T xi) |
| template<> | |
| std::pair< double, double > | lambdaEtaA< double > (double xi) |
| Vector3d | velDipole3d (const particle3d3 &p1, const particle3d3 &p2) |
| Vector3d | momDipole3d (const particle3d3 &p1, const particle3d3 &p2) |
| void | Potential3dMutual (const particle3d &p1, const particle3d &p2, double &potential1, double &potential2) |
| void | Force3dMutual (const particle3d &p1, const particle3d &p2, Vector3d &force1, Vector3d &force2) |
| void | Force3dMutual (const particle3d3 &p1, const particle3d3 &p2, Vector3d &force1, Vector3d &force2) |
| void | Potential2dMutual (const particle2d &p1, const particle2d &p2, double &potential1, double &potential2) |
| void | Force2dMutual (const particle2d &p1, const particle2d &p2, std::complex< double > &force1, std::complex< double > &force2) |
| template<typename point_type , typename interaction_type , typename value_type > | |
| void | ComputeExact (const std::vector< particle< point_type, value_type > > &source_particles, const std::vector< particle< point_type, value_type > > &target_particles, std::function< interaction_type(const particle< point_type, value_type > &, const particle< point_type, value_type > &)> func, std::string filename) |
| template<InteractionType it, typename point_type , typename value_type > | |
| void | ComputeExact (const std::vector< particle< point_type, value_type > > &source_particles, const std::vector< particle< point_type, value_type > > &target_particles) |
| template<InteractionType it, typename point_type , typename value_type > | |
| void | ComputeExact (const std::vector< particle< point_type, value_type > > &particles) |
| template<InteractionType it, typename T > | |
| void | ReadError (const std::vector< T > &res) |
| void | ReadErrorHyb (const std::vector< std::array< double, 2 > > &res) |
| treevector< double > | ComputeKnm (int N) |
| treevector< double > | ComputeAnm (int N) |
| std::vector< double > | compute_wignerd_coef (int N) |
| std::vector< double > | ComputeWignerD (int N, double theta) |
| std::vector< std::complex< double > > | ComputeExp (int N, double phi) |
| void | ComputePnm (int N, double theta, double *Pnm) |
| template<typename T > | |
| constexpr Vector3< T > | operator* (const double x, const Vector3< T > &rhs) |
| constexpr Vector3cd | operator* (const std::complex< double > &x, const Vector3d &rhs) |
| constexpr Vector3cd | operator* (const Vector3d &rhs, const std::complex< double > &x) |
| constexpr Vector3cd | operator* (const std::complex< double > &x, const Vector3cd &rhs) |
| constexpr Vector3cd | operator* (const Vector3cd &rhs, const std::complex< double > &x) |
| void | operator*= (Vector3cd &lhs, const std::complex< double > &x) |
| void | operator+= (Vector3cd &lhs, const Vector3d &rhs) |
| template<typename complex > | |
| constexpr Vector3d | real (const Vector3cd &rhs) |
| template<typename complex > | |
| constexpr Vector3d | imag (const Vector3cd &rhs) |
| template<typename T > | |
| constexpr Vector3< T > | cross (const Vector3< T > &lhs, const Vector3< T > &rhs) |
| constexpr double | dot (const Vector3d &lhs, const Vector3d &rhs) |
| template<typename T > | |
| std::ostream & | operator<< (std::ostream &os, const Vector3< T > &rhs) |
| template<typename T > | |
| std::istream & | operator>> (std::istream &is, Vector3< T > &rhs) |
| template<typename T > | |
| double | norm (const Vector3< T > &vec) |
| template<typename T > | |
| double | abs (const Vector3< T > &vec) |
| int | doublehash (double val) |
| int | doublehash (double val1, double val2) |
| template<typename point , typename value > | |
| std::pair< point, double > | box_extent (const std::vector< particle< point, value > > &particles) |
| template<int dim> | |
| size_t | ExpandBits (double x, int tree_depth) |
| template<int dim, typename point > | |
| size_t | MortonCode (point val, int tree_depth, point shift, double scale) |
| template<typename point > | |
| point | PointFromMortonCode (size_t val, int depth, point shift, double scale) |
| template<> | |
| size_t | ExpandBits< 2 > (double x, int tree_depth) |
| template<> | |
| size_t | ExpandBits< 3 > (double x, int tree_depth) |
| template<> | |
| size_t | MortonCode< 2, point2d > (point2d val, int tree_depth, point2d shift, double scale) |
| template<> | |
| size_t | MortonCode< 3, point3d > (point3d val, int tree_depth, point3d shift, double scale) |
| template<> | |
| point2d | PointFromMortonCode (size_t val, int depth, point2d shift, double scale) |
| template<> | |
| point3d | PointFromMortonCode (size_t val, int depth, point3d shift, double scale) |
| template<typename value > | |
| std::pair< point2d, double > | box_extent (const std::vector< particle< point2d, value > > &particles) |
| template<typename value > | |
| std::pair< point3d, double > | box_extent (const std::vector< particle< point3d, value > > &particles) |
| std::complex< double > | divComp (const std::complex< double > &a, const std::complex< double > &b) |
| void | mv (const Matrix3d &A, const Vector3d &x, Vector3d &y) |
| void | mm (const Matrix3d &A, const Matrix3d &B, Matrix3d &C) |
| void | mmt (const Matrix3d &A, const Matrix3d &B, Matrix3d &C) |
| void | vt (const Vector3d &x, const Matrix3d *T, Matrix3d &M) |
Variables | |
| const int | FMM_AUTO = std::numeric_limits<int>::max() |
| constexpr double | FORCE_EPS = 0.01 |
| constexpr double | FORCE_EPS2 = FORCE_EPS * FORCE_EPS |
| constexpr double | FORCE_EPS3 = FORCE_EPS2 * FORCE_EPS |
| constexpr double | FORCE_EPS4 = FORCE_EPS2 * FORCE_EPS2 |
| constexpr double | FORCE_EPS5 = FORCE_EPS3 * FORCE_EPS2 |
| constexpr double | FORCE_EPS6 = FORCE_EPS3 * FORCE_EPS3 |
| const auto | wignerd_auxillary_coef = compute_wignerd_coef(100) |
| using fmm::Matrix3d = typedef std::array<Vector3d, 3> |
| using fmm::MortonTree2d = typedef MortonTree<2, point2d, double> |
Definition at line 50 of file morton_tree.h.
| using fmm::MortonTree3d = typedef MortonTree<3, point3d, double> |
Definition at line 51 of file morton_tree.h.
| using fmm::MortonTree3d3 = typedef MortonTree<3, point3d, point3d> |
Definition at line 52 of file morton_tree.h.
| using fmm::particle2d = typedef particle<point2d, double> |
| using fmm::particle3d = typedef particle<point3d, double> |
| using fmm::point2d = typedef std::complex<double> |
| using fmm::point3d = typedef Vector3d |
| using fmm::TreeCell2d = typedef TreeCell<point2d, double> |
Definition at line 47 of file morton_tree.h.
| using fmm::TreeCell3d = typedef TreeCell<point3d, double> |
Definition at line 48 of file morton_tree.h.
| using fmm::TreeCell3d3 = typedef TreeCell<point3d, point3d> |
Definition at line 49 of file morton_tree.h.
| using fmm::Vector3cd = typedef Vector3<std::complex<double> > |
| using fmm::Vector3d = typedef Vector3<double> |
|
strong |
| Enumerator | |
|---|---|
| Potential2d | |
| Force2d | |
| Potential3d | |
| Force3d | |
| VelDipole3d | |
| MomDipole3d | |
Definition at line 20 of file utils.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 149 of file avx.h.
|
inline |
Definition at line 129 of file avx.h.
|
inline |
Definition at line 111 of file avx.h.
|
inline |
|
inline |
Definition at line 101 of file avx.h.

|
inline |
Definition at line 90 of file avx.h.
|
inline |
|
inline |
| vec_type fmm::avx_zero_vec | ( | ) |
| std::pair< point, double > fmm::box_extent | ( | const std::vector< particle< point, value > > & | particles | ) |

| std::pair< point2d, double > fmm::box_extent | ( | const std::vector< particle< point2d, value > > & | particles | ) |
Definition at line 219 of file morton_tree.cpp.

| std::pair< point3d, double > fmm::box_extent | ( | const std::vector< particle< point3d, value > > & | particles | ) |
Definition at line 249 of file morton_tree.cpp.

| std::vector< double > fmm::compute_wignerd_coef | ( | int | N | ) |
Definition at line 194 of file special_functions.cpp.
| treevector< double > fmm::ComputeAnm | ( | int | N | ) |
Definition at line 27 of file special_functions.cpp.

| void fmm::ComputeExact | ( | const std::vector< particle< point_type, value_type > > & | particles | ) |
Definition at line 527 of file simple_math.h.
| void fmm::ComputeExact | ( | const std::vector< particle< point_type, value_type > > & | source_particles, |
| const std::vector< particle< point_type, value_type > > & | target_particles | ||
| ) |
Definition at line 494 of file simple_math.h.

| void fmm::ComputeExact | ( | const std::vector< particle< point_type, value_type > > & | source_particles, |
| const std::vector< particle< point_type, value_type > > & | target_particles, | ||
| std::function< interaction_type(const particle< point_type, value_type > &, const particle< point_type, value_type > &)> | func, | ||
| std::string | filename | ||
| ) |
Definition at line 398 of file simple_math.h.
| std::vector< std::complex< double > > fmm::ComputeExp | ( | int | N, |
| double | phi | ||
| ) |
Definition at line 353 of file special_functions.cpp.

| treevector< double > fmm::ComputeKnm | ( | int | N | ) |
Definition at line 9 of file special_functions.cpp.
|
inline |
Definition at line 12 of file special_functions.h.

| std::vector< double > fmm::ComputeWignerD | ( | int | N, |
| double | theta | ||
| ) |
Definition at line 211 of file special_functions.cpp.


|
inlineconstexpr |
Definition at line 108 of file utils.h.

Definition at line 104 of file simple_math.h.


|
inline |
Definition at line 58 of file multipole.cpp.

|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 49 of file morton_tree.cpp.

|
inline |
Definition at line 67 of file morton_tree.cpp.

|
inline |
Definition at line 127 of file simple_math.h.


|
inline |
|
inline |
Definition at line 138 of file simple_math.h.

|
inline |
Definition at line 144 of file simple_math.h.

|
inline |
Definition at line 332 of file simple_math.h.

|
inline |
|
inline |
Definition at line 101 of file mpi_utils.h.

| std::pair< T, T > fmm::lambdaEta | ( | T | xi | ) |
Definition at line 211 of file simple_math.h.

|
inline |
Definition at line 211 of file simple_math.h.
| std::pair< T, T > fmm::lambdaEtaA | ( | T | xi | ) |
Definition at line 238 of file simple_math.h.

|
inline |
Definition at line 238 of file simple_math.h.
Definition at line 424 of file multipole3d.cpp.

Definition at line 439 of file multipole3d.cpp.

|
inline |
Definition at line 289 of file simple_math.h.


|
inline |
|
inline |
Definition at line 85 of file morton_tree.cpp.

|
inline |
Definition at line 93 of file morton_tree.cpp.

Definition at line 417 of file multipole3d.cpp.

|
constexpr |
Definition at line 85 of file simple_math.h.

|
inlineconstexpr |
Definition at line 99 of file simple_math.h.

|
inline |
|
inlineconstexpr |
|
inlineconstexpr |
|
inline |
|
inline |
|
inline |
| point fmm::PointFromMortonCode | ( | size_t | val, |
| int | depth, | ||
| point | shift, | ||
| double | scale | ||
| ) |

Definition at line 102 of file morton_tree.cpp.
Definition at line 123 of file morton_tree.cpp.
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 325 of file simple_math.h.

| void fmm::ReadError | ( | const std::vector< T > & | res | ) |
Definition at line 533 of file simple_math.h.

|
inline |
Definition at line 600 of file simple_math.h.

|
inline |
Definition at line 263 of file simple_math.h.


Definition at line 454 of file multipole3d.cpp.

|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
| const auto fmm::wignerd_auxillary_coef = compute_wignerd_coef(100) |
Definition at line 209 of file special_functions.cpp.