00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef QC_TRACE_H
00014
00015 #define QC_TRACE_H
00016
00017 #include <fstream>
00018 #include <string>
00019
00020
00021
00022 #include "QCCommon.hpp"
00023 #include "QCModelMatrices.hpp"
00030 class QCTrace
00031
00032 {
00033 public :
00034 QCTrace() ;
00035 ~QCTrace() ;
00038 void traceOn()
00039 {_traceOn = true;}
00040 void traceOff()
00041 {_traceOn = false;}
00042 void init(std::string & name, const int mySD, const int myProc) ;
00043 void initModel(QCModelMatrices& matrices)
00044 {_matrices = &matrices ;};
00045 void writeReducedDensityMatrix(QCModelMatrices& matrices ) ;
00046 void writeDensityMatrix(QCModelMatrices& matrices ) ;
00047 void writeEigenValue(QCModelMatrices& matrices ) ;
00048 void writeFockMatrix( QCModelMatrices & matrices ) ;
00049 void writeHamiltonMatrix(QCModelMatrices& matrices ) ;
00050 void writeEigenValue() ;
00051 void writeEigenValuesAndEigenVectors();
00052 void writeReducedDensityMatrix() ;
00053 void writeDensityMatrix() ;
00054 void writeFockMatrix() ;
00055 void writeHamiltonMatrix() ;
00059 void writeMsg(const std::string &msg)
00060 { if(_traceOn){_outTrace<<std::endl << msg <<std::endl;}};
00064 template <class T>
00065 void writeVal(const std::string &msg, const T & val)
00066 { if(_traceOn){_outTrace << std::endl<< msg <<" "<< val << std::endl;}};
00070 template <class T>
00071 void writeArray(int dim, T *val){
00072 writeArray(0, dim, val) ;
00073 }
00077 template <class T>
00078 void writeArray(int i1, int i2, T *val) ;
00079
00080 private :
00083 bool _traceOn;
00085 ofstream _outTrace ;
00087 QCModelMatrices* _matrices ;
00088 } ;
00089
00090 template <class T>
00091 void QCTrace::writeArray(int i1, int i2, T *val){
00092 if(_traceOn){
00093 QC_TRACE("BEGIN QCTrace::writeArray");
00094 for(int i = i1 ; i < i2 ; ++i){
00095 _outTrace << " "<< i << " Value " << val[i] << std::endl;
00096 }
00097 QC_TRACE("END QCTrace::writeArray");
00098 }
00099 }
00100
00101
00102
00103 extern QCTrace *qctrace;
00104
00105 #endif