24 #ifndef COM_DAFER45_TBTK_GAUSSIAN_STATE
25 #define COM_DAFER45_TBTK_GAUSSIAN_STATE
27 #include "TBTK/AbstractState.h"
31 class GaussianState :
public AbstractState{
36 const Vector3d &coordinates,
37 unsigned int linearIndex,
38 unsigned int basisSize
42 virtual GaussianState* clone()
const;
45 virtual std::complex<double> getOverlap(
46 const AbstractState &ket
50 virtual std::complex<double> getMatrixElement(
51 const AbstractState &ket,
52 const AbstractOperator &o
61 const std::complex<double> &overlap,
62 unsigned int linearKetIndex
71 const std::complex<double> &kineticTerm,
72 unsigned int linearKetIndex
81 const std::complex<double> &nuclearTerm,
82 unsigned int linearKetIndex
89 unsigned int linearIndex;
93 unsigned int basisSize;
97 std::vector<std::complex<double>> overlaps;
101 std::vector<std::complex<double>> kineticTerms;
105 std::vector<std::complex<double>> nuclearTerms;
108 inline GaussianState* GaussianState::clone()
const{
109 return new GaussianState(*
this);
112 inline void GaussianState::setOverlap(
113 const std::complex<double> &overlap,
114 unsigned int linearKetIndex
116 overlaps[linearKetIndex] = overlap;
119 inline void GaussianState::setKineticTerm(
120 const std::complex<double> &kineticTerm,
121 unsigned int linearKetIndex
123 kineticTerms[linearKetIndex] = kineticTerm;
126 inline void GaussianState::setNuclearTerm(
127 const std::complex<double> &nuclearTerm,
128 unsigned int linearKetIndex
130 nuclearTerms[linearKetIndex] = nuclearTerm;