QMCPACK
HybridRepCenterOrbitals< ST > Class Template Reference
+ Inheritance diagram for HybridRepCenterOrbitals< ST >:
+ Collaboration diagram for HybridRepCenterOrbitals< ST >:

Classes

struct  LocationSmoothingInfo
 

Public Types

enum  Region { INSIDE, BUFFER, INTER }
 
using PointType = typename AtomicOrbitals< ST >::PointType
 
using RealType = typename DistanceTable::RealType
 
using PosType = typename DistanceTable::PosType
 

Public Member Functions

 HybridRepCenterOrbitals ()
 
void storeParamsBeforeRotation ()
 
template<typename VM >
void applyRotation (const VM &rot_mat, bool use_stored_copy)
 
void set_info (const ParticleSet &ions, ParticleSet &els, const std::vector< int > &mapping)
 
void resizeStorage (size_t Nb)
 
void bcast_tables (Communicate *comm)
 
void gather_atomic_tables (Communicate *comm, std::vector< int > &offset)
 
void flush_zero ()
 
bool read_splines (hdf_archive &h5f)
 
bool write_splines (hdf_archive &h5f)
 
template<typename Cell >
int get_bc_sign (const PointType &r, const PointType &r_image, const Cell &PrimLattice, TinyVector< int, D > &HalfG) const
 
template<typename VV >
void evaluate_v (const ParticleSet &P, const int iat, VV &myV, LocationSmoothingInfo &info)
 
bool is_VP_batching_safe (const VirtualParticleSet &VP) const
 
template<typename VM >
void evaluateValuesC2X (const VirtualParticleSet &VP, VM &multi_myV, LocationSmoothingInfo &info)
 
template<typename VM , typename Cell , typename SV >
void evaluateValuesR2R (const VirtualParticleSet &VP, const Cell &PrimLattice, TinyVector< int, D > &HalfG, VM &multi_myV, SV &bc_signs, LocationSmoothingInfo &info)
 
template<typename VV , typename GV >
void evaluate_vgl (const ParticleSet &P, const int iat, VV &myV, GV &myG, VV &myL, LocationSmoothingInfo &info)
 
template<typename VV , typename GV , typename HT >
void evaluate_vgh (const ParticleSet &P, const int iat, VV &myV, GV &myG, HT &myH, LocationSmoothingInfo &info)
 
template<typename VV >
void interpolate_buffer_v (VV &psi, const VV &psi_AO, const RealType f) const
 
template<typename VV , typename GV >
void interpolate_buffer_vgl (VV &psi, GV &dpsi, VV &d2psi, const VV &psi_AO, const GV &dpsi_AO, const VV &d2psi_AO, const LocationSmoothingInfo &info) const
 

Static Public Attributes

static const int D = 3
 

Private Types

enum  smoothing_schemes { CONSISTENT = 0, SMOOTHALL, SMOOTHPARTIAL }
 smoothing schemes More...
 

Private Member Functions

void selectRegionAndComputeSmoothing (const ST &cutoff_buffer, const ST &cutoff, LocationSmoothingInfo &info) const
 select a region (within the buffer shell, in the buffer, interstitial region) and compute the smoothing function if in the buffer. More...
 

Private Attributes

std::vector< AtomicOrbitals< ST > > AtomicCenters
 atomic centers More...
 
int myTableID
 table index More...
 
std::vector< int > Super2Prim
 mapping supercell to primitive cell More...
 
enum qmcplusplus::HybridRepCenterOrbitals::smoothing_schemes smooth_scheme
 
smoothing_functions smooth_func_id
 smoothing function More...
 

Friends

template<class BSPLINESPO >
class qmcplusplus::HybridRepSetReader
 

Detailed Description

template<typename ST>
class qmcplusplus::HybridRepCenterOrbitals< ST >

Definition at line 471 of file HybridRepCenterOrbitals.h.


Class Documentation

◆ qmcplusplus::HybridRepCenterOrbitals::LocationSmoothingInfo

struct qmcplusplus::HybridRepCenterOrbitals::LocationSmoothingInfo

template<typename ST>
struct qmcplusplus::HybridRepCenterOrbitals< ST >::LocationSmoothingInfo

Definition at line 486 of file HybridRepCenterOrbitals.h.

+ Collaboration diagram for HybridRepCenterOrbitals< ST >::LocationSmoothingInfo:
Class Members
RealType d2f_dr2 smooth function second derivative
RealType df_dr smooth function first derivative
PosType dist_dr dr from distance table
RealType dist_r r from distance table
RealType f smooth function value
PointType r_image for APBC
Region region region of the location

Member Typedef Documentation

◆ PointType

using PointType = typename AtomicOrbitals<ST>::PointType

Definition at line 475 of file HybridRepCenterOrbitals.h.

◆ PosType

using PosType = typename DistanceTable::PosType

Definition at line 477 of file HybridRepCenterOrbitals.h.

◆ RealType

Definition at line 476 of file HybridRepCenterOrbitals.h.

Member Enumeration Documentation

◆ Region

enum Region
strong
Enumerator
INSIDE 
BUFFER 
INTER 

Definition at line 479 of file HybridRepCenterOrbitals.h.

480  {
481  INSIDE, // within the buffer shell
482  BUFFER, // in the buffer region
483  INTER // interstitial area
484  };

◆ smoothing_schemes

enum smoothing_schemes
strongprivate

smoothing schemes

Enumerator
CONSISTENT 
SMOOTHALL 
SMOOTHPARTIAL 

Definition at line 512 of file HybridRepCenterOrbitals.h.

513  {
514  CONSISTENT = 0,
515  SMOOTHALL,
516  SMOOTHPARTIAL
517  } smooth_scheme;
enum qmcplusplus::HybridRepCenterOrbitals::smoothing_schemes smooth_scheme

Constructor & Destructor Documentation

◆ HybridRepCenterOrbitals()

Definition at line 544 of file HybridRepCenterOrbitals.h.

544 {}

Member Function Documentation

◆ applyRotation()

void applyRotation ( const VM &  rot_mat,
bool  use_stored_copy 
)
inline

Definition at line 553 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::applyRotation(), and HybridRepReal< SPLINEBASE >::applyRotation().

554  {
555  for (auto& atomic_center : AtomicCenters)
556  atomic_center.applyRotation(rot_mat, use_stored_copy);
557  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers

◆ bcast_tables()

void bcast_tables ( Communicate comm)
inline

Definition at line 579 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::bcast_tables(), HybridRepReal< SPLINEBASE >::bcast_tables(), and HybridRepCenterOrbitals< SPLINEBASE::DataType >::bcast_tables().

580  {
581  for (int ic = 0; ic < AtomicCenters.size(); ic++)
583  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers

◆ evaluate_v()

void evaluate_v ( const ParticleSet P,
const int  iat,
VV &  myV,
LocationSmoothingInfo info 
)
inline

Definition at line 688 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::evaluateValue(), and HybridRepReal< SPLINEBASE >::evaluateValue().

689  {
690  const auto& ei_dist = P.getDistTableAB(myTableID);
691  const int center_idx = ei_dist.get_first_neighbor(iat, info.dist_r, info.dist_dr, P.getActivePtcl() == iat);
692  auto& myCenter = AtomicCenters[Super2Prim[center_idx]];
693  selectRegionAndComputeSmoothing(myCenter.getCutoffBuffer(), myCenter.getCutoff(), info);
694  if (info.region != Region::INTER)
695  {
696  PointType dr(-info.dist_dr[0], -info.dist_dr[1], -info.dist_dr[2]);
697  info.r_image = myCenter.getCenterPos() + dr;
698  myCenter.evaluate_v(info.dist_r, dr, myV);
699  }
700  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers
typename AtomicOrbitals< ST >::PointType PointType
void selectRegionAndComputeSmoothing(const ST &cutoff_buffer, const ST &cutoff, LocationSmoothingInfo &info) const
select a region (within the buffer shell, in the buffer, interstitial region) and compute the smoothi...
std::vector< int > Super2Prim
mapping supercell to primitive cell

◆ evaluate_vgh()

void evaluate_vgh ( const ParticleSet P,
const int  iat,
VV &  myV,
GV &  myG,
HT &  myH,
LocationSmoothingInfo info 
)
inline

Definition at line 771 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::evaluateVGH(), and HybridRepReal< SPLINEBASE >::evaluateVGH().

772  {
773  const auto& ei_dist = P.getDistTableAB(myTableID);
774  const int center_idx = ei_dist.get_first_neighbor(iat, info.dist_r, info.dist_dr, P.getActivePtcl() == iat);
775  auto& myCenter = AtomicCenters[Super2Prim[center_idx]];
776  selectRegionAndComputeSmoothing(myCenter.getCutoffBuffer(), myCenter.getCutoff(), info);
777  if (info.region != Region::INTER)
778  {
779  const PointType dr(-info.dist_dr[0], -info.dist_dr[1], -info.dist_dr[2]);
780  info.r_image = myCenter.getCenterPos() + dr;
781  myCenter.evaluate_vgh(info.dist_r, dr, myV, myG, myH);
782  }
783  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers
typename AtomicOrbitals< ST >::PointType PointType
void selectRegionAndComputeSmoothing(const ST &cutoff_buffer, const ST &cutoff, LocationSmoothingInfo &info) const
select a region (within the buffer shell, in the buffer, interstitial region) and compute the smoothi...
std::vector< int > Super2Prim
mapping supercell to primitive cell

◆ evaluate_vgl()

void evaluate_vgl ( const ParticleSet P,
const int  iat,
VV &  myV,
GV &  myG,
VV &  myL,
LocationSmoothingInfo info 
)
inline

Definition at line 755 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::evaluateVGL(), and HybridRepReal< SPLINEBASE >::evaluateVGL().

756  {
757  const auto& ei_dist = P.getDistTableAB(myTableID);
758  const int center_idx = ei_dist.get_first_neighbor(iat, info.dist_r, info.dist_dr, P.getActivePtcl() == iat);
759  auto& myCenter = AtomicCenters[Super2Prim[center_idx]];
760  selectRegionAndComputeSmoothing(myCenter.getCutoffBuffer(), myCenter.getCutoff(), info);
761  if (info.region != Region::INTER)
762  {
763  const PointType dr(-info.dist_dr[0], -info.dist_dr[1], -info.dist_dr[2]);
764  info.r_image = myCenter.getCenterPos() + dr;
765  myCenter.evaluate_vgl(info.dist_r, dr, myV, myG, myL);
766  }
767  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers
typename AtomicOrbitals< ST >::PointType PointType
void selectRegionAndComputeSmoothing(const ST &cutoff_buffer, const ST &cutoff, LocationSmoothingInfo &info) const
select a region (within the buffer shell, in the buffer, interstitial region) and compute the smoothi...
std::vector< int > Super2Prim
mapping supercell to primitive cell

◆ evaluateValuesC2X()

void evaluateValuesC2X ( const VirtualParticleSet VP,
VM &  multi_myV,
LocationSmoothingInfo info 
)
inline

Definition at line 721 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::evaluateDetRatios().

722  {
723  const int center_idx = VP.refSourcePtcl;
724  info.dist_r = VP.getRefPS().getDistTableAB(myTableID).getDistRow(VP.refPtcl)[center_idx];
725  auto& myCenter = AtomicCenters[Super2Prim[center_idx]];
726  selectRegionAndComputeSmoothing(myCenter.getCutoffBuffer(), myCenter.getCutoff(), info);
727  if (info.region != Region::INTER)
728  myCenter.evaluateValues(VP.getDistTableAB(myTableID).getDisplacements(), center_idx, info.dist_r, multi_myV);
729  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers
void selectRegionAndComputeSmoothing(const ST &cutoff_buffer, const ST &cutoff, LocationSmoothingInfo &info) const
select a region (within the buffer shell, in the buffer, interstitial region) and compute the smoothi...
std::vector< int > Super2Prim
mapping supercell to primitive cell

◆ evaluateValuesR2R()

void evaluateValuesR2R ( const VirtualParticleSet VP,
const Cell &  PrimLattice,
TinyVector< int, D > &  HalfG,
VM &  multi_myV,
SV &  bc_signs,
LocationSmoothingInfo info 
)
inline

Definition at line 733 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepReal< SPLINEBASE >::evaluateDetRatios().

739  {
740  const int center_idx = VP.refSourcePtcl;
741  info.dist_r = VP.getRefPS().getDistTableAB(myTableID).getDistRow(VP.refPtcl)[center_idx];
742  auto& myCenter = AtomicCenters[Super2Prim[center_idx]];
743  selectRegionAndComputeSmoothing(myCenter.getCutoffBuffer(), myCenter.getCutoff(), info);
744  if (info.region != Region::INTER)
745  {
746  const auto& displ = VP.getDistTableAB(myTableID).getDisplacements();
747  for (int ivp = 0; ivp < VP.getTotalNum(); ivp++)
748  bc_signs[ivp] = get_bc_sign(VP.R[ivp], myCenter.getCenterPos() - displ[ivp][center_idx], PrimLattice, HalfG);
749  myCenter.evaluateValues(displ, center_idx, info.dist_r, multi_myV);
750  }
751  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers
int get_bc_sign(const PointType &r, const PointType &r_image, const Cell &PrimLattice, TinyVector< int, D > &HalfG) const
void selectRegionAndComputeSmoothing(const ST &cutoff_buffer, const ST &cutoff, LocationSmoothingInfo &info) const
select a region (within the buffer shell, in the buffer, interstitial region) and compute the smoothi...
std::vector< int > Super2Prim
mapping supercell to primitive cell

◆ flush_zero()

void flush_zero ( )
inline

Definition at line 593 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCenterOrbitals< SPLINEBASE::DataType >::flush_zero().

594  {
595  for (int ic = 0; ic < AtomicCenters.size(); ic++)
597  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers

◆ gather_atomic_tables()

void gather_atomic_tables ( Communicate comm,
std::vector< int > &  offset 
)
inline

Definition at line 585 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::gather_tables(), and HybridRepReal< SPLINEBASE >::gather_tables().

586  {
587  if (comm->size() == 1)
588  return;
589  for (int ic = 0; ic < AtomicCenters.size(); ic++)
590  AtomicCenters[ic].gather_tables(comm, offset);
591  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers
int size() const
return the number of tasks
Definition: Communicate.h:118

◆ get_bc_sign()

int get_bc_sign ( const PointType r,
const PointType r_image,
const Cell &  PrimLattice,
TinyVector< int, D > &  HalfG 
) const
inline

Definition at line 671 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepReal< SPLINEBASE >::evaluateValue(), HybridRepCenterOrbitals< SPLINEBASE::DataType >::evaluateValuesR2R(), HybridRepReal< SPLINEBASE >::evaluateVGH(), and HybridRepReal< SPLINEBASE >::evaluateVGL().

675  {
676  int bc_sign = 0;
677  PointType shift_unit = PrimLattice.toUnit(r - r_image);
678  for (int i = 0; i < D; i++)
679  {
680  ST img = round(shift_unit[i]);
681  bc_sign += HalfG[i] * (int)img;
682  }
683  return bc_sign;
684  }
typename AtomicOrbitals< ST >::PointType PointType

◆ interpolate_buffer_v()

void interpolate_buffer_v ( VV &  psi,
const VV &  psi_AO,
const RealType  f 
) const
inline

Definition at line 787 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::evaluateDetRatios(), HybridRepReal< SPLINEBASE >::evaluateDetRatios(), HybridRepCplx< SPLINEBASE >::evaluateValue(), and HybridRepReal< SPLINEBASE >::evaluateValue().

788  {
789  constexpr RealType cone(1);
790  for (size_t i = 0; i < psi.size(); i++)
791  psi[i] = psi_AO[i] * f + psi[i] * (cone - f);
792  }
constexpr std::complex< float > cone
Definition: BLAS.hpp:50
QMCTraits::RealType RealType

◆ interpolate_buffer_vgl()

void interpolate_buffer_vgl ( VV &  psi,
GV &  dpsi,
VV &  d2psi,
const VV &  psi_AO,
const GV &  dpsi_AO,
const VV &  d2psi_AO,
const LocationSmoothingInfo info 
) const
inline

Definition at line 796 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::evaluateVGL(), and HybridRepReal< SPLINEBASE >::evaluateVGL().

803  {
804  constexpr RealType cone(1), ctwo(2);
805  const RealType rinv(1.0 / info.dist_r);
806  auto& dist_dr = info.dist_dr;
807  auto& f = info.f;
808  auto& df_dr = info.df_dr;
809  auto& d2f_dr2 = info.d2f_dr2;
811  for (size_t i = 0; i < psi.size(); i++)
812  { // psi, dpsi, d2psi are all consistent
813  d2psi[i] = d2psi_AO[i] * f + d2psi[i] * (cone - f) + df_dr * rinv * ctwo * dot(dpsi[i] - dpsi_AO[i], dist_dr) +
814  (psi_AO[i] - psi[i]) * (d2f_dr2 + ctwo * rinv * df_dr);
815  dpsi[i] = dpsi_AO[i] * f + dpsi[i] * (cone - f) + df_dr * rinv * dist_dr * (psi[i] - psi_AO[i]);
816  psi[i] = psi_AO[i] * f + psi[i] * (cone - f);
817  }
819  for (size_t i = 0; i < psi.size(); i++)
820  {
821  d2psi[i] = d2psi_AO[i] * f + d2psi[i] * (cone - f);
822  dpsi[i] = dpsi_AO[i] * f + dpsi[i] * (cone - f);
823  psi[i] = psi_AO[i] * f + psi[i] * (cone - f);
824  }
826  for (size_t i = 0; i < psi.size(); i++)
827  { // dpsi, d2psi are consistent but psi is not.
828  d2psi[i] = d2psi_AO[i] * f + d2psi[i] * (cone - f) + df_dr * rinv * ctwo * dot(dpsi[i] - dpsi_AO[i], dist_dr);
829  dpsi[i] = dpsi_AO[i] * f + dpsi[i] * (cone - f);
830  psi[i] = psi_AO[i] * f + psi[i] * (cone - f);
831  }
832  else
833  throw std::runtime_error("Unknown smooth scheme!");
834  }
constexpr std::complex< float > cone
Definition: BLAS.hpp:50
enum qmcplusplus::HybridRepCenterOrbitals::smoothing_schemes smooth_scheme
QMCTraits::RealType RealType
Tensor< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, D > dot(const AntiSymTensor< T1, D > &lhs, const AntiSymTensor< T2, D > &rhs)

◆ is_VP_batching_safe()

bool is_VP_batching_safe ( const VirtualParticleSet VP) const
inline

Definition at line 711 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::evaluateDetRatios(), and HybridRepReal< SPLINEBASE >::evaluateDetRatios().

712  {
713  const int center_idx = VP.refSourcePtcl;
714  auto& myCenter = AtomicCenters[Super2Prim[center_idx]];
715  return VP.getRefPS().getDistTableAB(myTableID).getDistRow(VP.refPtcl)[center_idx] <
716  myCenter.getNonOverlappingRadius();
717  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers
std::vector< int > Super2Prim
mapping supercell to primitive cell

◆ read_splines()

bool read_splines ( hdf_archive h5f)
inline

Definition at line 599 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::read_splines(), and HybridRepReal< SPLINEBASE >::read_splines().

600  {
601  bool success = true;
602  size_t ncenter;
603 
604  try
605  {
606  h5f.push("atomic_centers", false);
607  }
608  catch (...)
609  {
610  success = false;
611  }
612  success = success && h5f.readEntry(ncenter, "number_of_centers");
613  if (!success)
614  return success;
615  if (ncenter != AtomicCenters.size())
616  success = false;
617  // read splines of each center
618  for (int ic = 0; ic < AtomicCenters.size(); ic++)
619  {
620  std::ostringstream gname;
621  gname << "center_" << ic;
622  try
623  {
624  h5f.push(gname.str().c_str(), false);
625  }
626  catch (...)
627  {
628  success = false;
629  }
630  success = success && AtomicCenters[ic].read_splines(h5f);
631  h5f.pop();
632  }
633  h5f.pop();
634  return success;
635  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers

◆ resizeStorage()

void resizeStorage ( size_t  Nb)
inline

Definition at line 565 of file HybridRepCenterOrbitals.h.

566  {
567  size_t SplineCoefsBytes = 0;
568 
569  for (int ic = 0; ic < AtomicCenters.size(); ic++)
570  {
571  AtomicCenters[ic].resizeStorage(Nb);
572  SplineCoefsBytes += AtomicCenters[ic].getSplineSizeInBytes();
573  }
574 
575  app_log() << "MEMORY " << SplineCoefsBytes / (1 << 20) << " MB allocated "
576  << "for the atomic radial splines in hybrid orbital representation" << std::endl;
577  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers
std::ostream & app_log()
Definition: OutputManager.h:65

◆ selectRegionAndComputeSmoothing()

void selectRegionAndComputeSmoothing ( const ST &  cutoff_buffer,
const ST &  cutoff,
LocationSmoothingInfo info 
) const
inlineprivate

select a region (within the buffer shell, in the buffer, interstitial region) and compute the smoothing function if in the buffer.

Definition at line 522 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCenterOrbitals< SPLINEBASE::DataType >::evaluate_v(), HybridRepCenterOrbitals< SPLINEBASE::DataType >::evaluate_vgh(), HybridRepCenterOrbitals< SPLINEBASE::DataType >::evaluate_vgl(), HybridRepCenterOrbitals< SPLINEBASE::DataType >::evaluateValuesC2X(), and HybridRepCenterOrbitals< SPLINEBASE::DataType >::evaluateValuesR2R().

525  {
526  const RealType r = info.dist_r;
527  if (r < cutoff_buffer)
528  info.region = Region::INSIDE;
529  else if (r < cutoff)
530  {
531  constexpr RealType cone(1);
532  const RealType scale = cone / (cutoff - cutoff_buffer);
533  const RealType x = (r - cutoff_buffer) * scale;
534  info.f = smoothing(smooth_func_id, x, info.df_dr, info.d2f_dr2);
535  info.df_dr *= scale;
536  info.d2f_dr2 *= scale * scale;
537  info.region = Region::BUFFER;
538  }
539  else
540  info.region = Region::INTER;
541  }
constexpr std::complex< float > cone
Definition: BLAS.hpp:50
smoothing_functions smooth_func_id
smoothing function
T smoothing(smoothing_functions func_id, T x, T &dx, T &d2x)
QMCTraits::RealType RealType

◆ set_info()

void set_info ( const ParticleSet ions,
ParticleSet els,
const std::vector< int > &  mapping 
)
inline

Definition at line 559 of file HybridRepCenterOrbitals.h.

560  {
561  myTableID = els.addTable(ions, DTModes::NEED_VP_FULL_TABLE_ON_HOST);
562  Super2Prim = mapping;
563  }
For distance tables of virtual particle (VP) sets constructed based on this table, whether full table is needed on host The corresponding DT of VP need to set MW_EVALUATE_RESULT_NO_TRANSFER_TO_HOST accordingly.
std::vector< int > Super2Prim
mapping supercell to primitive cell

◆ storeParamsBeforeRotation()

void storeParamsBeforeRotation ( )
inline

Definition at line 546 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::storeParamsBeforeRotation(), and HybridRepReal< SPLINEBASE >::storeParamsBeforeRotation().

547  {
548  for (auto& atomic_center : AtomicCenters)
549  atomic_center.storeParamsBeforeRotation();
550  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers

◆ write_splines()

bool write_splines ( hdf_archive h5f)
inline

Definition at line 637 of file HybridRepCenterOrbitals.h.

Referenced by HybridRepCplx< SPLINEBASE >::write_splines(), and HybridRepReal< SPLINEBASE >::write_splines().

638  {
639  bool success = true;
640  int ncenter = AtomicCenters.size();
641  try
642  {
643  h5f.push("atomic_centers", true);
644  }
645  catch (...)
646  {
647  success = false;
648  }
649  success = success && h5f.writeEntry(ncenter, "number_of_centers");
650  // write splines of each center
651  for (int ic = 0; ic < AtomicCenters.size(); ic++)
652  {
653  std::ostringstream gname;
654  gname << "center_" << ic;
655  try
656  {
657  h5f.push(gname.str().c_str(), true);
658  }
659  catch (...)
660  {
661  success = false;
662  }
663  success = success && AtomicCenters[ic].write_splines(h5f);
664  h5f.pop();
665  }
666  h5f.pop();
667  return success;
668  }
std::vector< AtomicOrbitals< ST > > AtomicCenters
atomic centers

Friends And Related Function Documentation

◆ qmcplusplus::HybridRepSetReader

friend class qmcplusplus::HybridRepSetReader
friend

Definition at line 837 of file HybridRepCenterOrbitals.h.

Member Data Documentation

◆ AtomicCenters

◆ D

const int D = 3
static

◆ myTableID

◆ smooth_func_id

smoothing_functions smooth_func_id
private

◆ smooth_scheme

◆ Super2Prim


The documentation for this class was generated from the following file: