Main Page | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

hapseudopot.h

00001 // HARLEM
00002 // Igor Kurnikov
00003 // University of Pittsburgh
00004 //
00005 // hapseudopot.h: interface for the classes to manage core pseudopotentials
00006 // 
00007 // Created: December 1998
00008 // Revised: December 1998
00010 
00011 #ifndef HAPSEUDOPOT_H
00012 #define HAPSEUDOPOT_H
00013 
00014 #include "hastl.h"
00015 #include "hastring.h"
00016 
00017 
00018 class PseudoTerm
00019 {
00020 public:
00021 
00022         PseudoTerm();
00023         PseudoTerm(int new_npower, double new_expon, double new_coef);
00024         ~PseudoTerm();
00025 
00026         int npower;
00027         double expon;
00028         double coef;
00029 };
00030 
00031 class PseudoBlock
00032 {
00033 public:
00034         PseudoBlock();
00035         ~PseudoBlock();
00036 
00037         HaString description;
00038         vector<PseudoTerm> terms;
00039 
00040 };
00041 
00042 
00043 class HaPseudoPot
00044 // class to define Core Pseudopotentials 
00045 // 
00046 {
00047 public:
00048   HaPseudoPot();
00049   virtual ~HaPseudoPot();
00050 
00051   bool SaveGaussInp(ostream& os) const;
00052   int GetNCoreEl() const { return ncore_el; } 
00053   
00054   bool Print_info(ostream& sout, const int level) const;
00055 
00056   friend class HaPseudoPotDB;
00057 protected:
00058 
00059   HaString pot_name;
00060   HaString at_symbol;
00061   unsigned int max_angm;
00062   unsigned int ncore_el;
00063      
00064   vector<PseudoBlock> blocks;
00065 
00066 
00067 
00068 };
00069 
00070 class HaPseudoPotRef
00071 {
00072 public:
00073         HaPseudoPotRef();
00074     HaPseudoPotRef(const HaString & new_pot_name, const HaString & new_at_label);
00075         virtual ~HaPseudoPotRef();
00076         
00077         friend class HaPseudoPotDB;
00078 
00079   bool operator == (const HaPseudoPotRef &  rhs) const ;
00080   bool operator <  (const HaPseudoPotRef &  rhs) const ;
00081 
00082 protected:
00083 
00084         HaString pot_name;
00085         HaString at_label;
00086 
00087 };
00088 
00089 
00090 class HaPseudoPotDB
00091 {
00092 public:
00093         HaPseudoPotDB();
00094         ~HaPseudoPotDB();
00095 
00096         HaPseudoPot* Extract(const HaString & pot_name, const HaString & at_label); 
00097         bool Init();
00098 
00099         
00100 protected:
00101         map<HaPseudoPotRef,HaPseudoPot*, less<HaPseudoPotRef> > dat; // Atomic Orbital symbol
00102 
00103         bool InitHayWadt_1(); // Initialize Hay and Wadt Pseudopotential 1 (only valence electrons)
00104 };
00105 
00106 
00107 #endif /* !HAPSEUDOPOT_H */

Generated on Tue Feb 17 02:03:06 2004 for harlem by doxygen 1.3.6