00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <time.h>
00013
00014 #include "QCMacro.hpp"
00015 #include "QCTrace.hpp"
00016 #include "QCSymMatrix.hpp"
00017
00018 QCTrace::QCTrace() : _traceOn(true),_matrices(NULL)
00019 {}
00020
00021 QCTrace::~QCTrace()
00022 {
00023 _outTrace.close();
00024 }
00025
00026 void QCTrace::init(std::string & name, const int myDomain, const int myProc){
00027 _outTrace.open(name.c_str());
00028 tm *t ;
00029 asctime(t);
00030 char s[256] ; size_t size ;
00031 size = strftime(s,size,"%+",t);
00032 _outTrace << "Trace for subdomain " << myProc << " located on proc " <<myDomain << std::endl
00033 << "File created : " <<s <<std::endl
00034 << "#########################################################################"
00035 << std::endl;
00036 _outTrace.setf(std::ios_base::scientific) ;
00037 _outTrace.precision(20) ;
00038 }
00039
00040 void QCTrace::writeDensityMatrix(QCModelMatrices& matrices ){
00041 if(_traceOn){
00042 QC_TRACE("BEGIN QCTrace::writeDensityMatrix");
00043 matrices.getDensityP().getMatrix().print("Density Matrix",_outTrace) ;
00044 QC_TRACE("END QCTrace::writeDensityMatrix");
00045 }
00046 }
00047 void QCTrace::writeReducedDensityMatrix(QCModelMatrices& matrices ){
00048 if(_traceOn){
00049 QC_TRACE("BEGIN QCTrace::writeDReduceensityMatrix");
00050 matrices.getWeightedDensityP()->getMatrix().print("Reduced Density Matrix",_outTrace) ;
00051 QC_TRACE("END QCTrace::writeReduceDensityMatrix");
00052 }
00053 }
00054 void QCTrace::writeDensityMatrix(){
00055 if(_traceOn){
00056 QC_TRACE("BEGIN QCTrace::writeDensityMatrix");
00057 _matrices->getDensityP().getMatrix().print("Density Matrix",_outTrace) ;
00058 QC_TRACE("END QCTrace::writeDensityMatrix");
00059 }
00060 }
00061 void QCTrace::writeReducedDensityMatrix(){
00062 if(_traceOn){
00063 QC_TRACE("BEGIN QCTrace::writeDReduceensityMatrix");
00064 _matrices->getWeightedDensityP()->getMatrix().print("Reduced Density Matrix",_outTrace) ;
00065 QC_TRACE("END QCTrace::writeReduceDensityMatrix");
00066 }
00067 }
00068
00069 void QCTrace::writeEigenValue(QCModelMatrices& matrices){
00070 if(_traceOn){
00071 QC_TRACE("BEGIN QCTrace::writeEigenValue");
00072 int dim = matrices.getFockF().getMatrix().getDim();
00073 QCFloat *QCRestrict eigenVal = matrices.getEigenVal() ;
00074 _outTrace << std::endl<< std::endl<< "Eigen Values of Fock matrix" <<std::endl;
00075 for(int i = 0 ; i < dim ; ++i){
00076 _outTrace << " "<< i << " " << eigenVal[i] <<std::endl;
00077 }
00078 _outTrace << std::endl;
00079 QC_TRACE("END QCTrace::writeEigenValue");
00080 }
00081 }
00082 void QCTrace::writeEigenValue(){
00083 if(_traceOn){
00084 QC_TRACE("BEGIN QCTrace::writeEigenValue");
00085 int dim = _matrices->getFockF().getMatrix().getDim();
00086 QCFloat *QCRestrict eigenVal = _matrices->getEigenVal() ;
00087 _outTrace << std::endl<< std::endl<< "Eigen Values of Fock matrix" <<std::endl;
00088 for(int i = 0 ; i < dim ; ++i){
00089 _outTrace << " "<< i << " " << eigenVal[i] <<std::endl;
00090 }
00091 _outTrace << std::endl;
00092 QC_TRACE("END QCTrace::writeEigenValue");
00093 }
00094 }
00095 void QCTrace::writeEigenValuesAndEigenVectors(){
00096 if(_traceOn){
00097 QC_TRACE("BEGIN QCTrace::writeEigenValuesAndEigenVectors");
00098 int dim = _matrices->getFockF().getMatrix().getDim();
00099 QCFloat *QCRestrict eigenVal = _matrices->getEigenVal() ;
00100 _outTrace << std::endl<< std::endl<< "Eigen Values of Fock matrix " <<std::endl;
00101 for(int i = 0 ; i < dim ; ++i){
00102 _outTrace << " "<< i << " Eigen Value " << eigenVal[i] << std::endl;
00103 }
00104 _matrices->getEigenVectCt().getMatrix().print("Eigen Vectors of Fock matrix",_outTrace) ;
00105
00106 _outTrace << std::endl;
00107 QC_TRACE("END QCTrace::writeEigenValuesAndEigenVectors");
00108 }
00109 }
00110
00111 void QCTrace::writeFockMatrix( QCModelMatrices& matrices ){
00112 if(_traceOn){
00113 QC_TRACE("BEGIN QCTrace::writeFockMatrix");
00114 matrices.getFockF().getMatrix().print("FockMatrix",_outTrace) ;
00115 QC_TRACE("END QCTrace::writeFockMatrix");
00116 }
00117 }
00118 void QCTrace::writeFockMatrix(){
00119 if(_traceOn){
00120 QC_TRACE("BEGIN QCTrace::writeFockMatrix");
00121 _matrices->getFockF().getMatrix().print("FockMatrix",_outTrace) ;
00122 QC_TRACE("END QCTrace::writeFockMatrix");
00123 }
00124 }
00125
00126 void QCTrace::writeHamiltonMatrix(QCModelMatrices& matrices ){
00127 if(_traceOn){
00128 QC_TRACE("BEGIN QCTrace::writeHamiltonMatrix");
00129 matrices.getHamiltonH().getMatrix().print("Hamilton Matrix",_outTrace) ;
00130 QC_TRACE("END QCTrace::writeHamiltonMatrix");
00131 }
00132 }
00133 void QCTrace::writeHamiltonMatrix( ){
00134 if(_traceOn){
00135 QC_TRACE("BEGIN QCTrace::writeHamiltonMatrix");
00136 _matrices->getHamiltonH().getMatrix().print("Hamilton Matrix",_outTrace) ;
00137 QC_TRACE("END QCTrace::writeHamiltonMatrix");
00138 }
00139 }
00140
00141 QCTrace *qctrace;
00142