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();
00039
00040 BasisSet& operator=(const BasisSet&);
00041
00042 public:
00043 BasisSet(int chkptfile);
00044 BasisSet(const BasisSet&);
00045 ~BasisSet();
00046
00048 void print(char* id, FILE* outfile) const;
00049
00050 int num_prims() const;
00051 int num_shells() const;
00052 int num_ao() const;
00053 int num_bf() const;
00054 int max_am() const;
00055
00057 GaussianShell& shell(int si) const;
00059 int first_bf(int si) const;
00061 int first_ao(int si) const;
00063 int center(int si) const;
00064
00066 void set_center(int ci, PSI_FLOAT[3]);
00068 PSI_FLOAT get_center(int ci, int i);
00069 };
00070
00071 }
00072
00073 #endif