00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifdef __GNUC__
00029 #pragma interface
00030 #endif
00031
00032 #ifndef _chemistry_qc_psi_exenv_h
00033 #define _chemistry_qc_psi_exenv_h
00034
00035 using namespace std;
00036
00037 #include <string>
00038 #include <sstream>
00039 #include <libpsio/psio.hpp>
00040 #include <libchkpt/chkpt.hpp>
00041 #include <chemistry/qc/psi/psiinput.h>
00042 #include <chemistry/qc/psi/psifile11.h>
00043
00044 namespace sc {
00045
00047
00048 class PsiExEnv: public DescribedClass {
00049
00050
00051 static string defaultinputname_;
00052 static string defaultoutputname_;
00053 static string file11name_;
00054 static int ckptfile_;
00055
00056
00057 static string defaultpsiprefix_;
00058 static string defaultcwd_;
00059 static string defaultfileprefix_;
00060 static string defaultstdout_;
00061 static string defaultstderr_;
00062
00063
00064 string psiprefix_;
00065 string cwd_;
00066 string inputname_;
00067 string outputname_;
00068 string fileprefix_;
00069 string stdout_;
00070 string stderr_;
00071 int nscratch_;
00072 string *scratch_;
00073 Ref<PsiInput> psiinput_;
00074 Ref<PsiFile11> psifile11_;
00075
00076 void config_psio();
00077 psi::PSIO psio_;
00078 psi::Chkpt* chkpt_;
00079
00080
00081 void add_to_path(const string &);
00082
00083
00084 int me_;
00085
00086 public:
00087 PsiExEnv();
00088 PsiExEnv(const Ref<KeyVal>&);
00089 ~PsiExEnv();
00090
00092 Ref<PsiInput> get_psi_input() const { return psiinput_;};
00094 Ref<PsiFile11> get_psi_file11() const { return psifile11_;};
00095
00097 void run_psi();
00099 void run_psi_module(const char *);
00100
00102 string get_cwd() const { return cwd_;};
00104 string get_fileprefix() const { return fileprefix_; };
00106 int get_nscratch() const { return nscratch_; };
00108 string get_scratch(int i) const { return scratch_[i]; };
00109
00111 psi::PSIO& psio() { return psio_; }
00113 psi::Chkpt& chkpt();
00114
00115 void print(std::ostream&o=ExEnv::out0()) const;
00116 };
00117
00118 }
00119
00120 #endif