QCTrace.hpp

Go to the documentation of this file.
00001 // This is a -*- C++ -*-  file
00002 //
00003 // C++ Interface: QCTrace
00004 //
00005 // Description: 
00006 //
00007 //
00008 // Author: Olivier Coulaud <Olivier.Coulaud@inria.fr>, (C) 2005
00009 //
00010 // Copyright: See COPYING file that comes with this distribution
00011 //
00012 //
00013 #ifndef QC_TRACE_H
00014 
00015 #define QC_TRACE_H
00016 
00017 #include <fstream>
00018 #include <string>
00019 //
00020 // QCPP includes
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

Generated on Sat Jan 28 21:07:30 2006 for QC++ by  doxygen 1.4.4