testQCMDSystem.cpp

Go to the documentation of this file.
00001 //*****************************************************************************//
00002 //                                                                             //
00003 //   Copyright (c) 2005                                                        //
00004 //      INRIA-Futurs                                                           //
00005 //*****************************************************************************//
00006 //                                                                             //
00007 //               *** NOTICE OF PROPRIETARY INFORMATION ***                     //
00008 //                                                                             //
00009 // The information contained in this file is considered proprietary and the    //
00010 // exclusive property of  INRIA. This information may not be disclosed,        //
00011 // duplicated or used, in whole or in part, for  any purpose  whatsoever       //
00012 // without express written authorization from INRIA                            //
00013 //                                                                             //
00014 //*****************************************************************************//
00015 
00016 #include <string>
00017 #include <iostream>
00018 //
00019 #include "QCCommon.hpp"
00020 #include "QCReader.hpp"
00021 #include "QCManager.hpp"
00022 #include "QCFiles.hpp"
00023 //
00024 #include "QCPm3.hpp"
00025 #include "QCPm3Param.hpp"
00026 #include "QCMDSystem.hpp"
00027 #include "QCDCAlgo.hpp"
00028 
00029 #if defined (QC_TRACE_IN_FILE)  
00030 #include "QCTrace.hpp"
00031 #include "QCTools.hpp"
00032 #endif
00033 
00034 
00035 
00036 int main (int argc, char **argv) 
00037 {
00038   
00039   const char *master = (argc>1)? argv[1] : "Master_DC.qci";
00040   const char *prefix = (argc>2)? argv[2] : QCCommon::datadir.c_str();
00041   //
00042   // if prefix is "." then we read and write files in the current durectory
00043   //
00044   QCCommon::datadir = prefix ;
00045   QCCommon::outdir  = prefix ;
00046 
00047   const std::string path(".") ;
00048   //
00049   QCManager<QCPm3T<QCPm3Param>, QCMDSystem<QCDCAlgo> > manager;
00050   //
00051   QCReader      reader;
00052   QCFiles       files;
00053   QCGeneralData data;
00054   //
00055   reader.readMasterFile(master, files, prefix);
00056   reader.readGeneralFile(files.getGeneralFile() + INPUT_SUFFIX, data, prefix);
00057 
00058   QC_TRACE("MAIN manager.init ");
00059   manager.init(files, data, prefix);
00060   //
00061 
00062 #if defined (QC_TRACE_IN_FILE)  
00063   std::cout << "Number of subdomains"<< manager.getSystem().getNbDomains()<<std::endl ;
00064   int nbSD = manager.getSystem().getNbDomains();
00065   qctrace = new QCTrace[nbSD] ;
00066   std::string  traceName("qctrace_seq"), c;
00067   for( int i = 0 ; i <nbSD; ++i){
00068     c = traceName + "-" +intToString(i) +".trace" ;
00069     qctrace[i].init(c,i,0) ;
00070     qctrace[i].traceOff() ;
00071     qctrace[i].initModel(manager.getSystem().getSubDomain(i).getMatrices());
00072   }
00073     
00074 #endif
00075   if(master)
00076     { 
00077       cout << "################################################################"<<std::endl 
00078            << "###                                                          ###"<<std::endl 
00079            << "###               Divide & Conquer method                    ###"<<std::endl 
00080            << "###                                                          ###"<<std::endl 
00081            << "################################################################"<<std::endl ;
00082     }
00083 
00084   QC_TRACE("MAIN manager.runComputations() ");
00085   manager.runComputations();
00086 
00087 
00088   cout <<   ">>> FILES <<<\n"        << manager.getFiles()       << endl
00089        <<   ">>> GENERAL DATA <<<\n" << manager.getGeneralData() << endl;
00090 
00091   QC_TRACE("MAIN  save partitions of the molecule ");
00092   //
00093   manager.getPartitioner()->writeInFile(manager.getSystem(),manager.getFiles(),QCCommon::outdir);
00094   //
00095   manager.getSystem().writeDensityOnFileAscii(manager ,QCCommon::outdir );
00096   //
00097   //   manager.getSystem().writeSystemOnFile(manager.getFiles() , QCCommon::outdir );
00098   //   manager.getSystem().writeLocalDensityOnFilesAscii(manager ,QCCommon::outdir );
00099   //   manager.getSystem().writeOrbitalPartition(manager ,QCCommon::outdir );
00100   //
00101   return QCPP_SUCCES;
00102 }

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