00001
00006 #ifndef _psi_src_lib_libbasis_basisset_h_
00007 #define _psi_src_lib_libbasis_basisset_h_
00008
00009 #include <psitypes.h>
00010 #include "shell.h"
00011
00012 namespace psi {
00013
00014 class BasisSet {
00015
00016 int num_prims_;
00017 int num_shells_;
00018 int num_ao_;
00019 int num_bf_;
00020 int max_am_;
00021 bool puream_;
00022
00023 GaussianShell** shells_;
00024
00025 int *shell_fbf_;
00026 int *shell_fao_;
00027 int *shell_center_;
00028
00029
00030 PSI_FLOAT** coords_;
00031 int ncenters_;
00032
00033 void init_shells();
00035 void check_shell_index(int si) const;
00036
00037
00038 BasisSet& operator=(const BasisSet&);
00039
00040 public:
00041 BasisSet();
00042 BasisSet(const BasisSet&);
00043 ~BasisSet();
00044
00046 void print(char* id, FILE* outfile) const;
00047
00048 int num_prims() const;
00049 int num_shells() const;
00050 int num_ao() const;
00051 int num_bf() const;
00052 int max_am() const;
00053
00055 GaussianShell& shell(int si) const;
00057 int first_bf(int si) const;
00059 int first_ao(int si) const;
00061 int center(int si) const;
00062
00064 void set_center(int ci, PSI_FLOAT[3]);
00066 PSI_FLOAT get_center(int ci, int i);
00067 };
00068
00069 }
00070
00071 #endif