20 #ifndef ERKALE_BASISLIB
21 #define ERKALE_BASISLIB
30 arma::mat overlap(
const arma::vec & z,
const arma::vec & zp,
int am);
36 std::string find_basis(
const std::string & filename,
bool verbose=
true);
39 #ifndef ERKALE_SYSTEM_LIBRARY
40 #define ERKALE_SYSTEM_LIBRARY "/usr/share/erkale/basis"
59 std::vector<contr_t>
C;
109 std::vector<FunctionShell>
bf;
137 std::vector<FunctionShell>
get_shells()
const;
139 std::vector<FunctionShell>
get_shells(
int am)
const;
142 void get_primitives(arma::vec & exps, arma::mat & coeffs,
int am)
const;
144 void get_primitives(arma::vec & zfree, arma::vec & zgen, arma::mat & cgen,
int am)
const;
162 void prune(
double cutoff=0.9,
bool coulomb=
false);
165 void merge(
double cutoff=0.9,
bool verbose=
true,
bool coulomb=
false);
170 int get_am(
size_t ind)
const;
207 double P_innerprod_inout(
const arma::vec & ai,
const arma::mat & S,
const arma::vec & aj,
size_t P);
209 double P_innerprod_outin(
const arma::vec & ai,
const arma::mat & S,
const arma::vec & aj,
size_t P);
212 size_t count_shared(
const arma::vec & ai,
const arma::vec & aj);
214 bool treated_inout(
const arma::mat & c,
size_t i,
size_t j);
216 bool treated_outin(
const arma::mat & c,
size_t i,
size_t j);
245 void load_basis(
const std::string & filename,
bool verbose=
true);
250 void save_gaussian94(
const std::string & filename,
bool append=
false)
const;
253 void save_cfour(
const std::string & filename,
const std::string & basisname,
bool newformat=
true,
bool append=
false)
const;
255 void save_dalton(
const std::string & filename,
bool append=
false)
const;
257 void save_molpro(
const std::string & filename,
bool append=
false)
const;
304 void merge(
double cutoff=0.9,
bool verbose=
true);
void save_gaussian94(const std::string &filename, bool append=false) const
Save basis set to file in Gaussian'94 format.
Definition: basislibrary.cpp:1623
std::string get_symbol() const
Get the symbol of the element.
Definition: basislibrary.cpp:342
void save_cfour(const std::string &filename, const std::string &basisname, bool newformat=true, bool append=false) const
Save basis set to file in CFOUR format.
Definition: basislibrary.cpp:1657
void get_primitives(arma::vec &exps, arma::mat &coeffs, int am) const
Get exponents and contraction coefficients of angular momentum shell am.
Definition: basislibrary.cpp:378
size_t get_number() const
Get the number.
Definition: basislibrary.cpp:346
void augment(int naug)
Augment the basis.
Definition: basislibrary.cpp:1146
void normalize()
Normalize coefficients.
Definition: basislibrary.cpp:329
void prune(double cutoff=0.9, bool coulomb=false)
Prune primitives with large overlap, replacing them with the geometric average.
Definition: basislibrary.cpp:1174
BasisSetLibrary density_fitting(int lvalinc, double fsam) const
Generate density fitting set.
Definition: basislibrary.cpp:2167
void normalize()
Normalize coefficients.
Definition: basislibrary.cpp:2096
std::vector< contr_t > C
Exponential contraction.
Definition: basislibrary.h:59
void merge(double cutoff=0.9, bool verbose=true, bool coulomb=false)
Merge primitives with large overlap (also decontracts basis). This routine is intended to merging cor...
Definition: basislibrary.cpp:1219
std::string symbol
Symbol of element.
Definition: basislibrary.h:105
ElementBasisSet get_element(std::string el, size_t number=0) const
Get basis set for wanted element.
Definition: basislibrary.cpp:2127
void normalize()
Normalize coefficients.
Definition: basislibrary.cpp:247
int am
Angular momentum.
Definition: basislibrary.h:57
void P_orthogonalize(double cutoff=1e-8, double Cortho=1e-4)
Definition: basislibrary.cpp:918
void add_function(FunctionShell f)
Add a shell of functions to the basis.
Definition: basislibrary.cpp:317
BasisSetLibrary product_set(int lvalinc, double fsam) const
Generate product set.
Definition: basislibrary.cpp:2175
void save_dalton(const std::string &filename, bool append=false) const
Save basis set to file in Dalton format.
Definition: basislibrary.cpp:1950
size_t number
Atom id for which the basis is for (0 for all atoms)
Definition: basislibrary.h:107
BasisSetLibrary()
Constructor.
Definition: basislibrary.cpp:1354
void load_gaussian94(const std::string &filename, bool verbose=true)
Load basis set from file in Gaussian'94 format.
Definition: basislibrary.cpp:1444
Basis set library class.
Definition: basislibrary.h:231
bool operator<(const ElementBasisSet &rhs) const
Comparison operator for sorting.
Definition: basislibrary.cpp:354
System default location for basis sets.
Definition: basislibrary.h:55
int get_max_am() const
Get maximum angular momentum used in the shells.
Definition: basislibrary.cpp:455
~ElementBasisSet()
Destructor.
Definition: basislibrary.cpp:314
std::string get_symbol(size_t ind) const
Get symbol of ind'th element.
Definition: basislibrary.cpp:2106
ElementBasisSet cholesky_set(double thr, int maxam, double ovlthr) const
Form compact Cholesky set.
Definition: basislibrary.cpp:709
Basis set for an element.
Definition: basislibrary.h:102
void decontract()
Decontract set.
Definition: basislibrary.cpp:467
~BasisSetLibrary()
Destructor.
Definition: basislibrary.cpp:1357
int get_Nbf() const
Get amount of functions.
Definition: basislibrary.cpp:371
std::vector< contr_t > get_contr() const
Get contraction coefficients.
Definition: basislibrary.cpp:299
ElementBasisSet()
Dummy constructor.
Definition: basislibrary.cpp:303
void sort()
Sort library.
Definition: basislibrary.cpp:2088
void print() const
Print out basis set.
Definition: basislibrary.cpp:334
void set_number(size_t num)
Set the number.
Definition: basislibrary.cpp:350
FunctionShell(int am=-1)
Construct a shell with angular momentum am.
Definition: basislibrary.cpp:182
int get_am(size_t ind) const
Get angular momentum of i:th shell.
Definition: basislibrary.cpp:463
int get_am() const
Get angular momentum.
Definition: basislibrary.cpp:295
void add_element(const ElementBasisSet &el)
Add element to basis set.
Definition: basislibrary.cpp:2084
~FunctionShell()
Destructor.
Definition: basislibrary.cpp:211
int get_max_am() const
Get maximum angular momentum used in basis set.
Definition: basislibrary.cpp:2114
ElementBasisSet density_fitting(int lmaxinc, double fsam) const
Definition: basislibrary.cpp:502
void augment(int naug)
Augment the basis.
Definition: basislibrary.cpp:2201
std::vector< FunctionShell > get_shells() const
Get the shells.
Definition: basislibrary.cpp:358
std::vector< FunctionShell > bf
List of shells.
Definition: basislibrary.h:109
std::string name
Name of basis set.
Definition: basislibrary.h:234
void orthonormalize()
Orthonormalize generally contracted functions. NB! This can screw up your computational efficiency! ...
Definition: basislibrary.cpp:2191
void P_orthogonalize(double cutoff=1e-8, double Cortho=1e-4)
Definition: basislibrary.cpp:2196
size_t get_Nel() const
Get number of elements.
Definition: basislibrary.cpp:2102
void print() const
Print out info.
Definition: basislibrary.cpp:275
BasisSetLibrary cholesky_set(double thr, int maxam, double ovlthr) const
Generate compact Cholesky set.
Definition: basislibrary.cpp:2183
void sort()
Sort exponents in decreasing order.
Definition: basislibrary.cpp:241
std::vector< ElementBasisSet > get_elements() const
Get elements.
Definition: basislibrary.cpp:2110
void sort()
Sort the shells in decreasing angular momentum.
Definition: basislibrary.cpp:321
void load_basis(const std::string &filename, bool verbose=true)
Load basis set from file in Gaussian'94 format. Handles parsing for special Pople sets...
Definition: basislibrary.cpp:1401
void orthonormalize()
Orthonormalize generally contracted functions. NB! This can screw up your computational efficiency! ...
Definition: basislibrary.cpp:833
void decontract()
Decontract basis set.
Definition: basislibrary.cpp:2161
void print() const
Print out library.
Definition: basislibrary.cpp:2122
bool operator<(const FunctionShell &rhs) const
Comparison operator for ordering in decreasing angular momentum and exponent.
Definition: basislibrary.cpp:281
std::vector< ElementBasisSet > elements
List of elements included in basis set.
Definition: basislibrary.h:236
ElementBasisSet product_set(int lmaxinc, double fsam) const
Definition: basislibrary.cpp:607
void merge(double cutoff=0.9, bool verbose=true)
Merge primitives with large overlap (also decontracts basis)
Definition: basislibrary.cpp:2209
void add_exponent(double C, double z)
Add exponent into contraction.
Definition: basislibrary.cpp:214
void save_molpro(const std::string &filename, bool append=false) const
Save basis set to file in Molpro format.
Definition: basislibrary.cpp:2021