56template <
typename FT =
double, Arch AT = Arch::CPU>
struct KernelTrait {
58 using CollisionModelThermalized =
59 pystencils::CollideSweepDoublePrecisionThermalizedAVX;
60 using CollisionModelLeesEdwards =
61 pystencils::CollideSweepDoublePrecisionLeesEdwardsAVX;
62 using StreamSweep = pystencils::StreamSweepDoublePrecisionAVX;
64 using CollisionModelThermalized =
65 pystencils::CollideSweepDoublePrecisionThermalized;
66 using CollisionModelLeesEdwards =
67 pystencils::CollideSweepDoublePrecisionLeesEdwards;
68 using StreamSweep = pystencils::StreamSweepDoublePrecision;
70 using InitialPDFsSetter = pystencils::InitialPDFsSetterDoublePrecision;
71 using PackInfoPdf = pystencils::PackInfoPdfDoublePrecision;
72 using PackInfoVec = pystencils::PackInfoVecDoublePrecision;
75template <>
struct KernelTrait<float,
Arch::
CPU> {
77 using CollisionModelThermalized =
78 pystencils::CollideSweepSinglePrecisionThermalizedAVX;
79 using CollisionModelLeesEdwards =
80 pystencils::CollideSweepSinglePrecisionLeesEdwardsAVX;
81 using StreamSweep = pystencils::StreamSweepSinglePrecisionAVX;
83 using CollisionModelThermalized =
84 pystencils::CollideSweepSinglePrecisionThermalized;
85 using CollisionModelLeesEdwards =
86 pystencils::CollideSweepSinglePrecisionLeesEdwards;
87 using StreamSweep = pystencils::StreamSweepSinglePrecision;
89 using InitialPDFsSetter = pystencils::InitialPDFsSetterSinglePrecision;
90 using PackInfoPdf = pystencils::PackInfoPdfSinglePrecision;
91 using PackInfoVec = pystencils::PackInfoVecSinglePrecision;
94template <
typename FT =
double, Arch AT = Arch::CPU>
95struct BoundaryHandlingTrait {
96 using Dynamic_UBB = lbm::Dynamic_UBB_double_precision;
99template <>
struct BoundaryHandlingTrait<float,
Arch::
CPU> {
100 using Dynamic_UBB = lbm::Dynamic_UBB_single_precision;
\file PackInfoPdfDoublePrecision.cpp \author pystencils
Arch
P3M kernel architecture.