34 const int sc =
s.getLattice().SuperCellEnum;
35 std::unique_ptr<DistanceTable> dt;
37 o <<
" Distance table for similar particles (A-A):" << std::endl;
38 o <<
" source/target: " <<
s.getName() << std::endl;
39 o <<
" Using structure-of-arrays (SoA) data layout and OpenMP offload" << std::endl;
43 if (
s.getLattice().DiagonalOnly)
45 o <<
" Distance computations use orthorhombic periodic cell in 3D." << std::endl;
46 dt = std::make_unique<SoaDistanceTableAAOMPTarget<RealType, DIM, PPPO + SOA_OFFSET>>(
s);
50 if (
s.getLattice().WignerSeitzRadius >
s.getLattice().SimulationCellRadius)
52 o <<
" Distance computations use general periodic cell in 3D with corner image checks." << std::endl;
53 dt = std::make_unique<SoaDistanceTableAAOMPTarget<RealType, DIM, PPPG + SOA_OFFSET>>(
s);
57 o <<
" Distance computations use general periodic cell in 3D without corner image checks." << std::endl;
58 dt = std::make_unique<SoaDistanceTableAAOMPTarget<RealType, DIM, PPPS + SOA_OFFSET>>(
s);
64 if (
s.getLattice().DiagonalOnly)
66 o <<
" Distance computations use orthorhombic code for periodic cell in 2D." << std::endl;
67 dt = std::make_unique<SoaDistanceTableAAOMPTarget<RealType, DIM, PPNO + SOA_OFFSET>>(
s);
71 if (
s.getLattice().WignerSeitzRadius >
s.getLattice().SimulationCellRadius)
73 o <<
" Distance computations use general periodic cell in 2D with corner image checks." << std::endl;
74 dt = std::make_unique<SoaDistanceTableAAOMPTarget<RealType, DIM, PPNG + SOA_OFFSET>>(
s);
78 o <<
" Distance computations use general periodic cell in 2D without corner image checks." << std::endl;
79 dt = std::make_unique<SoaDistanceTableAAOMPTarget<RealType, DIM, PPNS + SOA_OFFSET>>(
s);
85 o <<
" Distance computations use periodic cell in one dimension." << std::endl;
86 dt = std::make_unique<SoaDistanceTableAAOMPTarget<RealType, DIM, SUPERCELL_WIRE + SOA_OFFSET>>(
s);
90 o <<
" Distance computations use open boundary conditions in 3D." << std::endl;
91 dt = std::make_unique<SoaDistanceTableAAOMPTarget<RealType, DIM, SUPERCELL_OPEN + SOA_OFFSET>>(
s);
94 description << o.str() << std::endl;
helper functions for EinsplineSetBuilder
Specialized paritlce class for atomistic simulations.
std::unique_ptr< DistanceTable > createDistanceTableAAOMPTarget(ParticleSet &s, std::ostream &description)
Adding SymmetricDTD to the list, e.g., el-el distance table.