Changeset 09bc09


Ignore:
Timestamp:
Jul 10, 2012, 1:15:50 PM (13 years ago)
Author:
Frederik Heber <heber@…>
Children:
666f70
Parents:
f5403d
git-author:
Frederik Heber <heber@…> (07/06/12 19:17:15)
git-committer:
Frederik Heber <heber@…> (07/10/12 13:15:50)
Message:

Extracted getting integral factory into own function.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/bin/mpqc/mpqc.cc

    rf5403d r09bc09  
    698698}
    699699
     700/** Prepares CCA component if available.
     701 *
     702 * \param keyval keyvalue container
     703 * \param options parsed command line options
     704 */
     705void prepareCCA(
     706    Ref<KeyVal> &keyval,
     707    GetLongOpt &options
     708    )
     709{
     710#ifdef HAVE_CHEMISTRY_CCA
     711  // initialize cca framework
     712  KeyValValuestring emptystring("");
     713  bool do_cca = keyval->booleanvalue("do_cca",falsevalue);
     714
     715  string cca_path(options.retrieve("cca-path"));
     716  string cca_load(options.retrieve("cca-load"));
     717  if(cca_path.size()==0)
     718    cca_path = keyval->stringvalue("cca_path",emptystring);
     719  if(cca_load.size()==0)
     720    cca_load = keyval->stringvalue("cca_load",emptystring);
     721
     722  if( !do_cca && (cca_load.size() > 0 || cca_path.size() > 0) )
     723    do_cca = true;
     724
     725  if(cca_path.size()==0) {
     726    #ifdef CCA_PATH
     727      cca_path = CCA_PATH;
     728    #endif
     729  }
     730  if(cca_load.size()==0) {
     731    cca_load += "MPQC.IntegralEvaluatorFactory";
     732  }
     733
     734  if( cca_load.size() > 0 && cca_path.size() > 0 && do_cca ) {
     735    string cca_args = "--path " + cca_path + " --load " + cca_load;
     736    ExEnv::out0() << endl << indent << "Initializing CCA framework with args: "
     737                  << endl << indent << cca_args << endl;
     738    CCAEnv::init( cca_args );
     739  }
     740#endif
     741}
     742
    700743/** Setup debugger.
    701744 *
     
    721764      debugger->debug("Starting debugger because -d given on command line.");
    722765  }
     766}
     767
     768/** Get integral factory.
     769 *
     770 * \param keyval keyvalue container
     771 * \param integral integral group on return
     772 * \param argc argument count
     773 * \param argv argument array
     774 */
     775void getIntegralFactory(
     776    Ref<KeyVal> &keyval,
     777    Ref<Integral> &integral,
     778    int argc,
     779    char **argv)
     780{
     781  // first try commandline and environment
     782  integral = Integral::initial_integral(argc, argv);
     783
     784  // if we still don't have a integral, try reading the integral
     785  // from the input
     786  if (integral.null()) {
     787    integral << keyval->describedclassvalue("integrals");
     788  }
     789
     790  if (integral.nonnull())
     791    Integral::set_default_integral(integral);
     792  else
     793    integral = Integral::get_default_integral();
     794
    723795}
    724796
     
    822894       << "Total number of processors = " << grp->n() * thread->nthread() << endl;
    823895
    824 #ifdef HAVE_CHEMISTRY_CCA
    825   // initialize cca framework
    826   KeyValValuestring emptystring("");
    827   bool do_cca = keyval->booleanvalue("do_cca",falsevalue);
    828 
    829   string cca_path(options.retrieve("cca-path"));
    830   string cca_load(options.retrieve("cca-load"));
    831   if(cca_path.size()==0)
    832     cca_path = keyval->stringvalue("cca_path",emptystring);
    833   if(cca_load.size()==0)
    834     cca_load = keyval->stringvalue("cca_load",emptystring);
    835 
    836   if( !do_cca && (cca_load.size() > 0 || cca_path.size() > 0) )
    837     do_cca = true;
    838 
    839   if(cca_path.size()==0) {
    840     #ifdef CCA_PATH
    841       cca_path = CCA_PATH;                                 
    842     #endif
    843   }
    844   if(cca_load.size()==0) {
    845     cca_load += "MPQC.IntegralEvaluatorFactory";
    846   }
    847 
    848   if( cca_load.size() > 0 && cca_path.size() > 0 && do_cca ) {
    849     string cca_args = "--path " + cca_path + " --load " + cca_load;
    850     ExEnv::out0() << endl << indent << "Initializing CCA framework with args: "
    851                   << endl << indent << cca_args << endl;
    852     CCAEnv::init( cca_args );
    853   }
    854 #endif
     896  // prepapre CCA if available
     897  prepareCCA(keyval, options);
    855898
    856899  // now set up the debugger
     
    864907        keyval->describedclassvalue("matrixkit").pointer()));
    865908
    866   // get the integral factory. first try commandline and environment
    867   Ref<Integral> integral = Integral::initial_integral(argc, argv);
    868  
    869   // if we still don't have a integral, try reading the integral
    870   // from the input
    871   if (integral.null()) {
    872     integral << keyval->describedclassvalue("integrals");
    873   }
    874 
    875   if (integral.nonnull())
    876     Integral::set_default_integral(integral);
    877   else
    878     integral = Integral::get_default_integral();
    879 
     909  // get the integral factory.
     910  Ref<Integral> integral;
     911  getIntegralFactory(keyval, integral, argc, argv);
    880912  ExEnv::out0() << endl << indent
    881913       << "Using " << integral->class_name()
Note: See TracChangeset for help on using the changeset viewer.