33#include <core/DataTypes.h>
34#include <core/cell/Cell.h>
35#include <core/cell/CellInterval.h>
36#include <core/math/Vector3.h>
38#include <field/GhostLayerField.h>
79 CellInterval
const &
ci) {
80 std::vector<float>
out;
81 out.reserve(
ci.numCells());
82 for (
auto x =
ci.xMin(); x <=
ci.xMax(); ++x) {
83 for (
auto y =
ci.yMin(); y <=
ci.yMax(); ++y) {
84 for (
auto z =
ci.zMin(); z <=
ci.zMax(); ++z) {
93 std::vector<float>
const &
values, CellInterval
const &
ci) {
96 for (
auto x =
ci.xMin(); x <=
ci.xMax(); ++x) {
97 for (
auto y =
ci.yMin(); y <=
ci.yMax(); ++y) {
98 for (
auto z =
ci.zMin(); z <=
ci.zMax(); ++z) {
155 CellInterval
const &
ci) {
156 std::vector<float>
out;
158 for (
auto x =
ci.xMin(); x <=
ci.xMax(); ++x) {
159 for (
auto y =
ci.yMin(); y <=
ci.yMax(); ++y) {
160 for (
auto z =
ci.zMin(); z <=
ci.zMax(); ++z) {
172 std::vector<float>
const &
values, CellInterval
const &
ci) {
175 for (
auto x =
ci.xMin(); x <=
ci.xMax(); ++x) {
176 for (
auto y =
ci.yMin(); y <=
ci.yMax(); ++y) {
177 for (
auto z =
ci.zMin(); z <=
ci.zMax(); ++z) {
193 std::array<float, 13u> value;
211 std::array<float, 13>
const &
values) {
231 CellInterval
const &
ci) {
232 std::vector<float>
out;
234 for (
auto x =
ci.xMin(); x <=
ci.xMax(); ++x) {
235 for (
auto y =
ci.yMin(); y <=
ci.yMax(); ++y) {
236 for (
auto z =
ci.zMin(); z <=
ci.zMax(); ++z) {
255 cell.x(), cell.y(), cell.z(),
uint_t{1u},
256 stencil::Direction(
uint_t{1u}));
260 cell.x(), cell.y(), cell.z(),
uint_t{0u},
261 stencil::Direction(
uint_t{4u}));
263 cell.x(), cell.y(), cell.z(),
uint_t{2u},
264 stencil::Direction(
uint_t{5u}));
268 cell.x(), cell.y(), cell.z(),
uint_t{3u},
269 stencil::Direction(
uint_t{8u}));
272 cell.x(), cell.y(), cell.z(),
uint_t{4u},
273 stencil::Direction(
uint_t{10u}));
275 cell.x(), cell.y(), cell.z(),
uint_t{7u},
276 stencil::Direction(
uint_t{11u}));
280 cell.x(), cell.y(), cell.z(),
uint_t{5u},
281 stencil::Direction(
uint_t{14u}));
283 cell.x(), cell.y(), cell.z(),
uint_t{8u},
284 stencil::Direction(
uint_t{15u}));
288 cell.x(), cell.y(), cell.z(),
uint_t{6u},
289 stencil::Direction(
uint_t{18u}));
291 cell.x(), cell.y(), cell.z(),
uint_t{9u},
292 stencil::Direction(
uint_t{19u}));
295 cell.x(), cell.y(), cell.z(),
uint_t{11u},
296 stencil::Direction(
uint_t{21u}));
299 cell.x(), cell.y(), cell.z(),
uint_t{10u},
300 stencil::Direction(
uint_t{23u}));
303 cell.x(), cell.y(), cell.z(),
uint_t{12u},
304 stencil::Direction(
uint_t{25u}));
391 CellInterval
const &
ci) {
392 std::vector<float>
out;
394 for (
auto x =
ci.xMin(); x <=
ci.xMax(); ++x) {
395 for (
auto y =
ci.yMin(); y <=
ci.yMax(); ++y) {
396 for (
auto z =
ci.zMin(); z <=
ci.zMax(); ++z) {
404 stencil::Direction(
uint_t{1u}));
409 stencil::Direction(
uint_t{4u}));
412 stencil::Direction(
uint_t{5u}));
417 stencil::Direction(
uint_t{8u}));
421 stencil::Direction(
uint_t{10u}));
424 stencil::Direction(
uint_t{11u}));
429 stencil::Direction(
uint_t{14u}));
432 stencil::Direction(
uint_t{15u}));
437 stencil::Direction(
uint_t{18u}));
440 stencil::Direction(
uint_t{19u}));
444 stencil::Direction(
uint_t{21u}));
448 stencil::Direction(
uint_t{23u}));
452 stencil::Direction(
uint_t{25u}));
535 out.emplace_back(result[0
u]);
536 out.emplace_back(result[1u]);
537 out.emplace_back(result[2u]);
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
auto get_vector(GhostLayerField< double, uint_t{13u}> const *flux_field, Cell const &cell)
void initialize(GhostLayerField< double, uint_t{13u}> *flux_field, std::array< double, 13 > const &values)
auto get(GhostLayerField< double, uint_t{13u}> const *flux_field, Cell const &cell)
void add_to_all(GhostLayerField< double, 1u > *scalar_field, double const &value)
void initialize(GhostLayerField< double, 1u > *scalar_field, double const &value)
void set(GhostLayerField< double, 1u > *scalar_field, double const &value, Cell const &cell)
auto get(GhostLayerField< double, 1u > const *scalar_field, Cell const &cell)
void add(GhostLayerField< double, 1u > *scalar_field, double const &value, Cell const &cell)
void set(GhostLayerField< double, uint_t{3u}> *vec_field, Vector3< double > const &vec, Cell const &cell)
void initialize(GhostLayerField< double, uint_t{3u}> *vec_field, Vector3< double > const &vec)
void add(GhostLayerField< double, uint_t{3u}> *vec_field, Vector3< double > const &vec, Cell const &cell)
void add_to_all(GhostLayerField< double, uint_t{3u}> *vec_field, Vector3< double > const &vec)
auto get(GhostLayerField< double, uint_t{3u}> const *vec_field, Cell const &cell)
\file PackInfoPdfDoublePrecision.cpp \author pystencils