Skip to content

Commit 780eb3f

Browse files
authored
Merge pull request QMCPACK#6062 from ye-luo/clean-up
Remove unused template specialization
2 parents 289626d + e50bcdd commit 780eb3f

3 files changed

Lines changed: 0 additions & 477 deletions

File tree

src/Particle/Lattice/ParticleBConds3D.h

Lines changed: 0 additions & 267 deletions
Original file line numberDiff line numberDiff line change
@@ -477,273 +477,6 @@ struct DTD_BConds<T, 3, SUPERCELL_WIRE>
477477
}
478478
};
479479

480-
/** specialization for a periodic 3D general cell
481-
*
482-
* Slow method and not used unless one needs to check if faster methods fail
483-
*/
484-
template<class T>
485-
struct DTD_BConds<T, 3, PPPX>
486-
{
487-
T r00, r10, r20, r01, r11, r21, r02, r12, r22;
488-
T g00, g10, g20, g01, g11, g21, g02, g12, g22;
489-
T r2max;
490-
std::vector<TinyVector<T, 3>> nextcells;
491-
492-
DTD_BConds(const CrystalLattice<T, 3>& lat)
493-
: r00(lat.R(0)),
494-
r10(lat.R(3)),
495-
r20(lat.R(6)),
496-
r01(lat.R(1)),
497-
r11(lat.R(4)),
498-
r21(lat.R(7)),
499-
r02(lat.R(2)),
500-
r12(lat.R(5)),
501-
r22(lat.R(8)),
502-
g00(lat.G(0)),
503-
g10(lat.G(3)),
504-
g20(lat.G(6)),
505-
g01(lat.G(1)),
506-
g11(lat.G(4)),
507-
g21(lat.G(7)),
508-
g02(lat.G(2)),
509-
g12(lat.G(5)),
510-
g22(lat.G(8)),
511-
r2max(lat.CellRadiusSq)
512-
{
513-
nextcells.resize(26);
514-
int ic = 0;
515-
for (int i = -1; i <= 1; ++i)
516-
for (int j = -1; j <= 1; ++j)
517-
for (int k = -1; k <= 1; ++k)
518-
{
519-
if (!(i || j || k))
520-
continue; //exclude zero
521-
nextcells[ic][0] = i * r00 + j * r10 + k * r20;
522-
nextcells[ic][1] = i * r01 + j * r11 + k * r21;
523-
nextcells[ic][2] = i * r02 + j * r12 + k * r22;
524-
++ic;
525-
}
526-
}
527-
528-
/** evaluate the minimum distance
529-
* @param lat lattice
530-
* @param a displacement vector [-0.5,0.5)x[-0.5,0.5)x[-0.5,0.5)
531-
* @param r2max square of the maximum cutoff
532-
* @return square of the minimum-image distance
533-
*
534-
* Search the ghost cells to match Wigner-Seitz cell
535-
*/
536-
inline T get_min_distance(TinyVector<T, 3>& a) const
537-
{
538-
T d2 = a[0] * a[0] + a[1] * a[1] + a[2] * a[2];
539-
if (d2 < r2max)
540-
return d2;
541-
else
542-
{
543-
T d2min = d2;
544-
int ic = -1;
545-
for (int i = 0; i < nextcells.size(); ++i)
546-
{
547-
TinyVector<T, 3> c(a + nextcells[i]);
548-
d2 = c[0] * c[0] + c[1] * c[1] + c[2] * c[2];
549-
if (d2 < d2min)
550-
{
551-
d2min = d2;
552-
ic = i;
553-
}
554-
}
555-
if (ic >= 0)
556-
a += nextcells[ic];
557-
return d2min;
558-
}
559-
}
560-
561-
/** apply BC to a displacement vector a and return the minimum-image distance
562-
* @param lat lattice
563-
* @param a displacement vector
564-
* @return the minimum-image distance
565-
*/
566-
inline T apply_bc(TinyVector<T, 3>& displ) const
567-
{
568-
//cart2unit
569-
TinyVector<T, 3> ar(displ[0] * g00 + displ[1] * g10 + displ[2] * g20,
570-
displ[0] * g01 + displ[1] * g11 + displ[2] * g21,
571-
displ[0] * g02 + displ[1] * g12 + displ[2] * g22);
572-
//put them in the box
573-
ar[0] -= round(ar[0]);
574-
ar[1] -= round(ar[1]);
575-
ar[2] -= round(ar[2]);
576-
//unit2cart
577-
displ[0] = ar[0] * r00 + ar[1] * r10 + ar[2] * r20;
578-
displ[1] = ar[0] * r01 + ar[1] * r11 + ar[2] * r21;
579-
displ[2] = ar[0] * r02 + ar[1] * r12 + ar[2] * r22;
580-
//return |displ|^2 after checking the ghost cells
581-
return get_min_distance(displ);
582-
}
583-
584-
/** out = prod (in ,lattice)
585-
* @param lattice 3x3 tensor to for conversion, either CrystalLattice::R or CrystalLattice::G
586-
* @param in start address of input vectors, in[n][3]
587-
* @param out start address of output vectors, out[n][3]
588-
* @param n number of 3d vectors
589-
*/
590-
inline void convert2Cart(const T* restrict in, T* restrict out, int n) const
591-
{
592-
for (int i = 0, i3 = 0; i < n; ++i, i3 += 3)
593-
{
594-
out[i3] = in[i3] * r00 + in[i3 + 1] * r10 + in[i3 + 2] * r20;
595-
out[i3 + 1] = in[i3] * r01 + in[i3 + 1] * r11 + in[i3 + 2] * r21;
596-
out[i3 + 2] = in[i3] * r02 + in[i3 + 1] * r12 + in[i3 + 2] * r22;
597-
}
598-
}
599-
600-
inline void convert2Unit(const T* restrict in, T* restrict out, int n) const
601-
{
602-
for (int i = 0, i3 = 0; i < n; ++i, i3 += 3)
603-
{
604-
out[i3] = in[i3] * g00 + in[i3 + 1] * g10 + in[i3 + 2] * g20;
605-
out[i3 + 1] = in[i3] * g01 + in[i3 + 1] * g11 + in[i3 + 2] * g21;
606-
out[i3 + 2] = in[i3] * g02 + in[i3 + 1] * g12 + in[i3 + 2] * g22;
607-
}
608-
}
609-
610-
inline void apply_bc(std::vector<TinyVector<T, 3>>& dr, std::vector<T>& r, std::vector<T>& rinv) const
611-
{
612-
const int n = dr.size();
613-
for (int i = 0; i < n; ++i)
614-
rinv[i] = apply_bc(dr[i]);
615-
//using inline function but is not better
616-
//T drnew[n*3];
617-
//convert2Unit(&dr[0][0],drnew,n);
618-
//for(int i=0; i<n*3;++i) drnew[i]-= round(drnew[i]);
619-
//convert2Cart(drnew,&dr[0][0],n);
620-
//for(int i=0; i<n; ++i) rinv[i]=get_min_distance(dr[i]);
621-
simd::sqrt(&rinv[0], &r[0], n);
622-
simd::inv(&r[0], &rinv[0], n);
623-
}
624-
625-
inline void apply_bc(std::vector<TinyVector<T, 3>>& dr, std::vector<T>& r) const
626-
{
627-
for (int i = 0; i < dr.size(); ++i)
628-
r[i] = apply_bc(dr[i]);
629-
}
630-
631-
inline void evaluate_rsquared(TinyVector<T, 3>* restrict dr, T* restrict rr, int n)
632-
{
633-
for (int i = 0; i < n; ++i)
634-
rr[i] = apply_bc(dr[i]);
635-
}
636-
};
637-
638-
/** specialization for a slab, general cell
639-
*/
640-
template<class T>
641-
struct DTD_BConds<T, 3, PPNX>
642-
{
643-
T r00, r10, r01, r11;
644-
T g00, g10, g01, g11;
645-
T r2max;
646-
std::vector<TinyVector<T, 3>> nextcells;
647-
648-
DTD_BConds(const CrystalLattice<T, 3>& lat)
649-
: r00(lat.R(0)),
650-
r10(lat.R(3)),
651-
r01(lat.R(1)),
652-
r11(lat.R(4)),
653-
g00(lat.G(0)),
654-
g10(lat.G(3)),
655-
g01(lat.G(1)),
656-
g11(lat.G(4)),
657-
r2max(lat.CellRadiusSq)
658-
{
659-
nextcells.resize(8);
660-
int ic = 0;
661-
for (int i = -1; i <= 1; ++i)
662-
for (int j = -1; j <= 1; ++j)
663-
{
664-
if (!(i || j))
665-
continue; //exclude zero
666-
nextcells[ic][0] = i * r00 + j * r10;
667-
nextcells[ic][1] = i * r01 + j * r11;
668-
nextcells[ic][2] = 0;
669-
++ic;
670-
}
671-
}
672-
673-
/** evaluate the minimum distance
674-
* @param lat lattice
675-
* @param a displacement vector \f$[-0.5,0.5)\times [-0.5,0.5)\times [-\infty,\infty)\f$
676-
* @param r2max square of the maximum cutoff
677-
* @return square of the minimum-image distance
678-
*
679-
* Search the ghost cells to match Wigner-Seitz cell
680-
*/
681-
inline T get_min_distance(TinyVector<T, 3>& a) const
682-
{
683-
T d2 = a[0] * a[0] + a[1] * a[1] + a[2] * a[2];
684-
if (d2 < r2max)
685-
return d2;
686-
else
687-
{
688-
T d2min = d2;
689-
int ic = -1;
690-
for (int i = 0; i < 8; ++i)
691-
{
692-
TinyVector<T, 3> c(a + nextcells[i]);
693-
d2 = c[0] * c[0] + c[1] * c[1] + c[2] * c[2];
694-
if (d2 < d2min)
695-
{
696-
d2min = d2;
697-
ic = i;
698-
}
699-
}
700-
if (ic >= 0)
701-
a += nextcells[ic];
702-
return d2min;
703-
}
704-
}
705-
706-
/** apply BC to a displacement vector a and return the minimum-image distance
707-
* @param lat lattice
708-
* @param a displacement vector
709-
* @return the minimum-image distance
710-
*/
711-
inline T apply_bc(TinyVector<T, 3>& displ) const
712-
{
713-
//cart2unit
714-
TinyVector<T, 2> ar(displ[0] * g00 + displ[1] * g10, displ[0] * g01 + displ[1] * g11);
715-
//put them in the box
716-
ar[0] -= round(ar[0]);
717-
ar[1] -= round(ar[1]);
718-
//unit2cart
719-
displ[0] = ar[0] * r00 + ar[1] * r10;
720-
displ[1] = ar[0] * r01 + ar[1] * r11;
721-
//return |displ|^2 after checking the ghost cells
722-
return get_min_distance(displ);
723-
}
724-
725-
inline void apply_bc(std::vector<TinyVector<T, 3>>& dr, std::vector<T>& r, std::vector<T>& rinv) const
726-
{
727-
const int n = dr.size();
728-
for (int i = 0; i < n; ++i)
729-
rinv[i] = apply_bc(dr[i]);
730-
simd::sqrt(&rinv[0], &r[0], n);
731-
simd::inv(&r[0], &rinv[0], n);
732-
}
733-
734-
inline void apply_bc(std::vector<TinyVector<T, 3>>& dr, std::vector<T>& r) const
735-
{
736-
for (int i = 0; i < dr.size(); ++i)
737-
r[i] = apply_bc(dr[i]);
738-
}
739-
740-
inline void evaluate_rsquared(TinyVector<T, 3>* restrict dr, T* restrict rr, int n)
741-
{
742-
for (int i = 0; i < n; ++i)
743-
rr[i] = apply_bc(dr[i]);
744-
}
745-
};
746-
747480

748481
} // namespace qmcplusplus
749482

0 commit comments

Comments
 (0)