32 n = std::max(
static_cast<Index>(shell.getL()), n);
40 n = std::max(shell.getSize(), n);
46 std::vector<Index> result;
52 n += shell.getNumFunc();
64 std::vector<const AOShell*> result;
66 if (aoshell.getAtomIndex() == AtomId) {
67 result.push_back(&aoshell);
76 shell.atomindex_ += atomindex_offset;
89 for (
const QMAtom& atom : atoms) {
90 const std::string& name = atom.getElement();
92 for (
const Shell& shell : element) {
109 Index currentIndex = -1;
111 if (shell.getAtomIndex() == currentIndex) {
112 FuncperAtom_[shell.getAtomIndex()] += shell.getNumFunc();
114 currentIndex = shell.getAtomIndex();
120 std::vector<libint2::Shell> libintshells;
123 libintshells.push_back(shell.LibintShell());
130 shell.pos_ = mol[shell.getAtomIndex()].
getPos();
144 Index numofprimitives = 0;
146 numofprimitives += shell.getSize();
152 std::vector<AOGaussianPrimitive::data> dataVec(numofprimitives);
155 for (
const auto& gaussian : shell) {
156 gaussian.WriteData(dataVec[i], shell);
160 table.
write(dataVec);
170 std::vector<AOGaussianPrimitive::data> dataVec(table.
numRows());
172 Index laststartindex = -1;
173 for (std::size_t i = 0; i < table.
numRows(); ++i) {
174 if (dataVec[i].startindex != laststartindex) {
176 laststartindex = dataVec[i].startindex;
185 shell.CalcMinDecay();
190 out <<
"Name:" << aobasis.
Name() <<
"\n";
193 for (
const auto& shell : aobasis) {
Container to hold Basisfunctions for all atoms.
void UpdateShellPositions(const QMMolecule &mol)
const std::vector< const AOShell * > getShellsofAtom(Index AtomId) const
Index AOBasisSize() const
void Fill(const BasisSet &bs, const QMMolecule &atoms)
void add(const AOBasis &other)
std::vector< Index > getMapToBasisFunctions() const
const std::string & Name() const
Index getNumofShells() const
Index getMaxNprim() const
void WriteToCpt(CheckpointWriter &w) const
void ReadFromCpt(CheckpointReader &r)
AOShell & addShell(const Shell &shell, const QMAtom &atom, Index startIndex)
std::vector< Index > FuncperAtom_
std::vector< AOShell > aoshells_
std::vector< libint2::Shell > GenerateLibintBasis() const
void normalizeContraction()
void addGaussian(const GaussianPrimitive &gaussian)
const Eigen::Vector3d & getPos() const
const Element & getElement(std::string element_type) const
const std::string & Name() const
CptTable openTable(const std::string &name)
CptTable openTable(const std::string &name, std::size_t nRows, bool compact=false)
void write(void *buffer, const std::size_t &startIdx, const std::size_t &endIdx)
void read(void *buffer, const std::size_t &startIdx, const std::size_t &endIdx)
base class for all analysis tools