- Main Page
- Related Pages
- Classes
- Files

# extent.h

    00001 //
    00002 // extent.h
    00003 //
    00004
    00005 #ifndef _chemistry_qc_basis_extent_h
    00006 #define _chemistry_qc_basis_extent_h
    00007
    00008 #ifdef __GNUC__
    00009 #pragma interface
    00010 #endif
    00011
    00012 #include <vector>
    00013
    00014 #include <float.h>
    00015 #include <chemistry/qc/basis/basis.h>
    00016
    00017 namespace sc {
    00018
    00019 struct ExtentData {
    00020     int shell;
    00021     double bound;
    00022     ExtentData() {}
    00023     ExtentData(int s, double b): shell(s), bound(b) {}
    00024 };
    00025
    00026 class ShellExtent: public RefCount {
    00027     double lower_[3];
    00028     double resolution_;
    00029     int n_[3];
    00030     std::vector<ExtentData> *contributing_shells_;
    00031     std::vector<ExtentData> null_;
    00032
    00033     std::vector<ExtentData> &data(int *b);
    00034     double distance(double loc, int axis, int origin, int point);
    00035     std::vector<ExtentData> &data(int x, int y, int z);
    00036   public:
    00037     ShellExtent();
    00038     ~ShellExtent();
    00039     void init(const Ref<GaussianBasisSet>&,
    00040               double resolution = 1.0, double tolerance = DBL_EPSILON);
    00043     const std::vector<ExtentData> &contributing_shells(int x, int y, int z)
    00044         { return data(x,y,z); }
    00045     const std::vector<ExtentData> &contributing_shells(double x, double y, double z);
    00046     void print(std::ostream &o = ExEnv::out0());
    00047     const int *n() const { return n_; }
    00048     int n(int ixyz) const { return n_[ixyz]; }
    00049     double lower(int ixyz) const { return lower_[ixyz]; }
    00050     double upper(int ixyz) const { return resolution_*n_[ixyz] + lower_[ixyz]; }
    00051     double resolution() const { return resolution_; }
    00052 };
    00053
    00054 }
    00055
    00056 #endif
    00057
    00058 // Local Variables:
    00059 // mode: c++
    00060 // c-file-style: "CLJ"
    00061 // End: