00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 #ifdef __GNUG__
00013 #pragma interface
00014 #endif
00015 
00016 #ifndef _CHEMISTRY_QC_PSI_PSI_INPUT_H
00017 #define _CHEMISTRY_QC_PSI_PSI_INPUT_H
00018 
00019 #include<chemistry/molecule/molecule.h>
00020 #include<chemistry/qc/basis/basis.h>
00021 
00022 class CorrelationTable;
00023 
00024 class PSI_Input {
00025 
00026    private:
00027       int indentation;
00028       int memory; 
00029       char * opentype;
00030       int nirrep;
00031       int * docc;
00032       int * socc;
00033       int * frozen_docc;
00034       int * frozen_uocc;
00035       int ex_lvl;
00036       char * label;
00037       char * name;
00038       int nunit;
00039       char **unit;
00040       int *nvolume;
00041       char ***volumes;
00042       int _test;
00043 
00044    protected:
00045       Ref<PointGroup> _origpg;
00046       Ref<Molecule> _mol;
00047       Ref<GaussianBasisSet> _gbs;
00048       FILE *fp;
00049 
00050    public:
00051       void begin_section(const char * s);
00052       void end_section();
00053       void write_indent();
00054       int write_keyword(const char *, const char *);
00055       int write_keyword(const char *, int);
00056       int write_keyword(const char *, double);
00057       int write_keyword(const char *, int, int *);
00058       int write_keyword(const char *, int, double *);
00059       int write_geom();
00060       void write_string(const char *);
00061 
00062       int write_basis(void);
00063       int write_defaults(const char *, const char *);
00064       void write_input();
00065       int write_key_wq(const char *, const char *);
00066       void write_orbvec(const CorrelationTable &corrtab,
00067                         const char *orbvec_name,
00068                         const int *orbvec);
00069 
00070    public:
00071       PSI_Input(const Ref<KeyVal>&);
00072       PSI_Input();
00073       virtual ~PSI_Input();
00074       void print(std::ostream&);
00075       virtual void write_input_file(const char *,const char *,
00076                const int convergence = 0, const char *s = "input.dat");
00077       int test() { return _test; }
00078 
00079       void open(const char*filename);
00080       void close();
00081 };
00082 
00083 #endif