34#include <core/DataTypes.h>
35#include <core/cell/Cell.h>
36#include <core/cell/CellInterval.h>
37#include <core/math/Matrix3.h>
38#include <core/math/Vector3.h>
40#include <gpu/GPUField.h>
42#include <thrust/device_vector.h>
54std::array<double, 19u>
get(gpu::GPUField<double>
const *pdf_field,
57void set(gpu::GPUField<double> *pdf_field, std::array<double, 19u>
const &pop,
60void set(gpu::GPUField<double> *pdf_field,
61 gpu::GPUField<double> *velocity_field,
62 gpu::GPUField<double>
const *force_field,
63 std::array<double, 19u>
const &pop,
Cell const &cell);
65void initialize(gpu::GPUField<double> *pdf_field,
66 std::array<double, 19u>
const &pop);
68std::vector<double>
get(gpu::GPUField<double>
const *pdf_field,
69 CellInterval
const &ci);
71void set(gpu::GPUField<double> *pdf_field, std::vector<double>
const &values,
72 CellInterval
const &ci);
74void set(gpu::GPUField<double> *pdf_field,
75 gpu::GPUField<double> *velocity_field,
76 gpu::GPUField<double>
const *force_field,
77 std::vector<double>
const &values, CellInterval
const &ci);
82Vector3<double>
get(gpu::GPUField<double>
const *field,
Cell const &cell);
84void set(gpu::GPUField<double> *field, Vector3<double>
const &vec,
87void add(gpu::GPUField<double> *field, Vector3<double>
const &vec,
90void initialize(gpu::GPUField<double> *field, Vector3<double>
const &vec);
92void add_to_all(gpu::GPUField<double> *field, Vector3<double>
const &vec);
94std::vector<double>
get(gpu::GPUField<double>
const *vec_field,
95 CellInterval
const &ci);
97void set(gpu::GPUField<double> *vec_field, std::vector<double>
const &values,
98 CellInterval
const &ci);
100 thrust::device_vector<int>
const &indices,
101 thrust::device_vector<double>
const &values, uint gl);
104namespace Interpolation {
105std::vector<double>
get_rho(gpu::GPUField<double>
const *field,
106 std::vector<double>
const &pos,
double density,
108std::vector<double>
get_vel(gpu::GPUField<double>
const *field,
109 std::vector<double>
const &pos, uint gl);
110void add_force(gpu::GPUField<double>
const *field,
111 std::vector<double>
const &pos,
112 std::vector<double>
const &forces, uint gl);
116double get(gpu::GPUField<double>
const *pdf_field,
double density,
118void set(gpu::GPUField<double> *pdf_field,
double rho,
double density,
120std::vector<double>
get(gpu::GPUField<double>
const *pdf_field,
double density,
121 CellInterval
const &ci);
122void set(gpu::GPUField<double> *pdf_field, std::vector<double>
const &values,
123 double density, CellInterval
const &ci);
127Vector3<double>
get(gpu::GPUField<double>
const *pdf_field,
128 gpu::GPUField<double>
const *force_field,
Cell const &cell);
129std::vector<double>
get(gpu::GPUField<double>
const *pdf_field,
130 gpu::GPUField<double>
const *force_field,
131 CellInterval
const &ci);
132void set(gpu::GPUField<double> *pdf_field,
133 gpu::GPUField<double> *velocity_field,
134 gpu::GPUField<double>
const *force_field, Vector3<double>
const &u,
136void set(gpu::GPUField<double> *pdf_field,
137 gpu::GPUField<double> *velocity_field,
138 gpu::GPUField<double>
const *force_field,
139 std::vector<double>
const &values, CellInterval
const &ci);
143void set(gpu::GPUField<double>
const *pdf_field,
144 gpu::GPUField<double> *velocity_field,
145 gpu::GPUField<double> *force_field, Vector3<double>
const &u,
147void set(gpu::GPUField<double>
const *pdf_field,
148 gpu::GPUField<double> *velocity_field,
149 gpu::GPUField<double> *force_field, std::vector<double>
const &values,
150 double density, CellInterval
const &ci);
153namespace DensityAndVelocity {
154std::tuple<double, Vector3<double>>
155get(gpu::GPUField<double>
const *pdf_field,
156 gpu::GPUField<double>
const *force_field,
Cell const &cell);
157void set(gpu::GPUField<double> *pdf_field, gpu::GPUField<double> *force_field,
158 Vector3<double>
const &u,
double rho,
Cell const &cell);
161namespace DensityAndMomentumDensity {
162std::tuple<double, Vector3<double>>
163get(gpu::GPUField<double>
const *pdf_field,
164 gpu::GPUField<double>
const *force_field,
Cell const &cell);
167namespace MomentumDensity {
168Vector3<double>
reduce(gpu::GPUField<double>
const *pdf_field,
169 gpu::GPUField<double>
const *force_field,
173namespace PressureTensor {
174Matrix3<double>
get(gpu::GPUField<double>
const *pdf_field,
double density,
176std::vector<double>
get(gpu::GPUField<double>
const *pdf_field,
double density,
177 CellInterval
const &ci);
178Matrix3<double>
reduce(gpu::GPUField<double>
const *pdf_field,
double density);
std::tuple< double, Vector3< double > > get(gpu::GPUField< double > const *pdf_field, gpu::GPUField< double > const *force_field, Cell const &cell)
std::tuple< double, Vector3< double > > get(gpu::GPUField< double > const *pdf_field, gpu::GPUField< double > const *force_field, Cell const &cell)
void set(gpu::GPUField< double > *pdf_field, gpu::GPUField< double > *force_field, Vector3< double > const &u, double rho, Cell const &cell)
void set(GhostLayerField< double, uint_t{19u}> *pdf_field, double const rho_in, double const density, Cell const &cell)
double get(GhostLayerField< double, uint_t{19u}> const *pdf_field, double const density, Cell const &cell)
void set(GhostLayerField< double, uint_t{19u}> const *pdf_field, GhostLayerField< double, uint_t{3u}> *velocity_field, GhostLayerField< double, uint_t{3u}> *force_field, Vector3< double > const &force, double const density, Cell const &cell)
void add_force(gpu::GPUField< double > const *field, std::vector< double > const &pos, std::vector< double > const &forces, uint gl)
std::vector< double > get_rho(gpu::GPUField< double > const *field, std::vector< double > const &pos, double const density, uint gl)
std::vector< double > get_vel(gpu::GPUField< double > const *field, std::vector< double > const &pos, uint gl)
auto reduce(GhostLayerField< double, uint_t{19u}> const *pdf_field, GhostLayerField< double, uint_t{3u}> const *force_field, double const density)
void set(GhostLayerField< double, uint_t{19u}> *pdf_field, std::array< double, 19u > const &pop, Cell const &cell)
auto get(GhostLayerField< double, uint_t{19u}> const *pdf_field, Cell const &cell)
void initialize(GhostLayerField< double, uint_t{19u}> *pdf_field, std::array< double, 19u > const &pop)
auto get(GhostLayerField< double, uint_t{19u}> const *pdf_field, double const density, Cell const &cell)
auto reduce(GhostLayerField< double, uint_t{19u}> const *pdf_field, double const density)
void initialize(GhostLayerField< double, uint_t{3u}> *vec_field, Vector3< double > const &vec)
void set_from_list(gpu::GPUField< double > const *field, thrust::device_vector< int > const &indices, thrust::device_vector< double > const &values, uint gl)
void add(GhostLayerField< double, uint_t{3u}> *vec_field, Vector3< double > const &vec, Cell const &cell)
void set(GhostLayerField< double, uint_t{3u}> *vec_field, Vector3< double > const &vec, Cell const &cell)
auto get(GhostLayerField< double, uint_t{3u}> const *vec_field, Cell const &cell)
void add_to_all(GhostLayerField< double, uint_t{3u}> *vec_field, Vector3< double > const &vec)
void set(GhostLayerField< double, uint_t{19u}> *pdf_field, GhostLayerField< double, uint_t{3u}> *velocity_field, GhostLayerField< double, uint_t{3u}> const *force_field, Vector3< double > const &u, Cell const &cell)
auto get(GhostLayerField< double, uint_t{19u}> const *pdf_field, GhostLayerField< double, uint_t{3u}> const *force_field, Cell const &cell)
\file PackInfoPdfDoublePrecision.cpp \author pystencils