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