VM2D  1.12
Vortex methods for 2D flows simulation
Point2D.h
Go to the documentation of this file.
1 /*--------------------------------*- VMlib -*----------------*---------------*\
2 | ## ## ## ## ## ## ## | | Version 1.12 |
3 | ## ## ### ### ## ## | VMlib: VM2D/VM3D Library | 2024/01/14 |
4 | ## ## ## # ## ## ## #### | Open Source Code *----------------*
5 | #### ## ## ## ## ## ## | https://www.github.com/vortexmethods/VM2D |
6 | ## ## ## #### ### #### | https://www.github.com/vortexmethods/VM3D |
7 | |
8 | Copyright (C) 2017-2024 Ilia Marchevsky |
9 *-----------------------------------------------------------------------------*
10 | File name: Point2D.h |
11 | Info: Source code of VMlib |
12 | |
13 | This file is part of VMlib. |
14 | VMLib is free software: you can redistribute it and/or modify it |
15 | under the terms of the GNU General Public License as published by |
16 | the Free Software Foundation, either version 3 of the License, or |
17 | (at your option) any later version. |
18 | |
19 | VMlib is distributed in the hope that it will be useful, but WITHOUT |
20 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
21 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
22 | for more details. |
23 | |
24 | You should have received a copy of the GNU General Public License |
25 | along with VMlib. If not, see <http://www.gnu.org/licenses/>. |
26 \*---------------------------------------------------------------------------*/
27 
28 
37 #ifndef POINT2D_H_
38 #define POINT2D_H_
39 
40 #include "numvector.h"
41 
42 #if defined(__CUDACC__)
43 #define HD __host__ __device__
44 #else
45 #define HD
46 #endif
47 
48 
49 namespace VMlib
50 {
52  {
54  unsigned int key;
55 
57  //char isQuery;
58 
61  };
62 
63 
75  class Point2D
76  : public numvector<double, 2>
77  {
78  public:
79 
80 //#ifndef __CUDACC__
81 // /// MPI-описатель типа
82 // static MPI_Datatype mpiPoint2D;
83 //#endif
85  HD Point2D() { };
86 
91  data[0] = _r[0];
92  data[1] = _r[1];
93  };
94 
98  HD Point2D(const Point2D& _r) {
99  data[0] = _r[0];
100  data[1] = _r[1];
101  }
102 
103 #if !defined(__CUDACC__)
104  Point2D(const std::initializer_list<double>& z);
109 #endif
110 
112  HD ~Point2D() { };
113 
118  HD Point2D rotated(const double angle = 1.5707963267948966192313216916398) const {
119  Point2D res;
120  double cosa = cos(angle);
121  double sina = sin(angle);
122 
123  res[0] = data[0] * cosa - data[1] * sina;
124  res[1] = data[0] * sina + data[1] * cosa;
125  return res;
126  }
127 
128 //#ifndef __CUDACC__
129 // /// Cоздание MPI-описателя типа
130 // static void CreateMpiType();
131 //#endif
132 
133  //operator numvector<double, 2>&()
134  //{
135  // return *this;
136  //}
137  };
138 
139 }//namespace VMlib
140 
141 using VMlib::Point2D;
143 
144 #endif
145 
unsigned int key
Мортоновский код частицы
Definition: Point2D.h:54
Шаблонный класс, определяющий вектор фиксированной длины Фактически представляет собой массив...
Definition: numvector.h:95
Описание класса numvector.
#define HD
Definition: Point2D.h:45
Класс, опеделяющий двумерный вектор
Definition: Point2D.h:75
Point2D(const Point2D &_r)
Конструктор копирования
Definition: Point2D.h:98
~Point2D()
Деструктор
Definition: Point2D.h:112
int originNumber
Признак запроса
Definition: Point2D.h:60
Point2D()
Пустой конструктор
Definition: Point2D.h:85
Point2D rotated(const double angle=1.5707963267948966192313216916398) const
Поворот вектора на произвольный угол против часовой стрелки (по умолчанию 90 градусов) ...
Definition: Point2D.h:118
Point2D(const numvector< double, 2 > &_r)
Конструктор и приведение типа из numvector<double, 2>
Definition: Point2D.h:90