AutoPas  3.0.0
Loading...
Searching...
No Matches
DataLayoutConverter.h
Go to the documentation of this file.
1
7#pragma once
8
10
11namespace autopas::utils {
12
18template <class FunctorSoaWrapper>
20 public:
27 explicit DataLayoutConverter(FunctorSoaWrapper *functor, DataLayoutOption dataLayout)
28 : _functor(functor), _dataLayout(dataLayout) {}
29
35 template <class ParticleCell>
37 // (Explicit) static cast required for Apple Clang (last tested version: 15.0.0)
38 switch (static_cast<DataLayoutOption::Value>(_dataLayout)) {
39 case DataLayoutOption::aos: {
40 return;
41 }
42 case DataLayoutOption::soa: {
43 _functor->SoALoader(cell, cell._particleSoABuffer, 0, /*skipSoAResize*/ false);
44 return;
45 }
46 }
47 }
48
54 template <class ParticleCell>
56 // (Explicit) static cast required for Apple Clang (last tested version: 15.0.0)
57 switch (static_cast<DataLayoutOption::Value>(_dataLayout)) {
58 case DataLayoutOption::aos: {
59 return;
60 }
61 case DataLayoutOption::soa: {
62 _functor->SoAExtractor(cell, cell._particleSoABuffer, 0);
63 return;
64 }
65 }
66 }
67
68 private:
72 FunctorSoaWrapper *_functor;
73
74 DataLayoutOption _dataLayout;
75};
76
77} // namespace autopas::utils
Class for Cells of Particles.
Definition: ParticleCell.h:51
This converts cells to the target data Layout using the given functor.
Definition: DataLayoutConverter.h:19
void loadDataLayout(ParticleCell &cell)
loads the target dataLayout in a cell
Definition: DataLayoutConverter.h:36
DataLayoutConverter(FunctorSoaWrapper *functor, DataLayoutOption dataLayout)
Constructor.
Definition: DataLayoutConverter.h:27
void storeDataLayout(ParticleCell &cell)
converts the dataLayout to aos
Definition: DataLayoutConverter.h:55
In this namespace some helper classes and functions can be found used inside of AutoPas.
Definition: namespaces.h:44