testQCDistMDSystem.cpp

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

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