Changeset 666f70 for src/bin


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

Extracted parsing restart file into own function.

File:
1 edited

Legend:

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

    r09bc09 r666f70  
    795795}
    796796
     797void performRestart(
     798    Ref<KeyVal> &keyval,
     799    Ref<MessageGrp> &grp,
     800    Ref<Optimize> &opt,
     801    Ref<MolecularEnergy> &mole,
     802    char *&restartfile
     803    )
     804{
     805  int restart = keyval->booleanvalue("restart",truevalue);
     806  struct stat sb;
     807  int statresult, statsize;
     808  if (restart) {
     809    if (grp->me() == 0) {
     810      statresult = stat(restartfile,&sb);
     811      statsize = (statresult==0) ? sb.st_size : 0;
     812    }
     813    grp->bcast(statresult);
     814    grp->bcast(statsize);
     815  }
     816  if (restart && statresult==0 && statsize) {
     817    BcastStateInBin si(grp,restartfile);
     818    if (keyval->exists("override")) {
     819      si.set_override(new PrefixKeyVal(keyval,"override"));
     820    }
     821    char *suf = strrchr(restartfile,'.');
     822    if (!strcmp(suf,".wfn")) {
     823      mole << SavableState::key_restore_state(si,"mole");
     824      ExEnv::out0() << endl
     825                   << indent << "Restored <" << mole->class_name()
     826                   << "> from " << restartfile << endl;
     827
     828      opt << keyval->describedclassvalue("opt");
     829      if (opt.nonnull())
     830        opt->set_function(mole.pointer());
     831    }
     832    else {
     833      opt << SavableState::key_restore_state(si,"opt");
     834      if (opt.nonnull()) {
     835        mole << opt->function();
     836        ExEnv::out0() << endl << indent
     837             << "Restored <Optimize> from " << restartfile << endl;
     838      }
     839    }
     840  } else {
     841    mole << keyval->describedclassvalue("mole");
     842    opt << keyval->describedclassvalue("opt");
     843  }
     844}
     845
     846
    797847int
    798848try_main(int argc, char *argv[])
     
    894944       << "Total number of processors = " << grp->n() * thread->nthread() << endl;
    895945
    896   // prepapre CCA if available
     946  // prepare CCA if available
    897947  prepareCCA(keyval, options);
    898948
     
    942992  int savestate = keyval->booleanvalue("savestate",truevalue);
    943993
    944   struct stat sb;
    945994  Ref<MolecularEnergy> mole;
    946995  Ref<Optimize> opt;
    947996
    948   int statresult, statsize;
    949   if (restart) {
    950     if (grp->me() == 0) {
    951       statresult = stat(restartfile,&sb);
    952       statsize = (statresult==0) ? sb.st_size : 0;
    953     }
    954     grp->bcast(statresult);
    955     grp->bcast(statsize);
    956   }
    957   if (restart && statresult==0 && statsize) {
    958     BcastStateInBin si(grp,restartfile);
    959     if (keyval->exists("override")) {
    960       si.set_override(new PrefixKeyVal(keyval,"override"));
    961     }
    962     char *suf = strrchr(restartfile,'.');
    963     if (!strcmp(suf,".wfn")) {
    964       mole << SavableState::key_restore_state(si,"mole");
    965       ExEnv::out0() << endl
    966                    << indent << "Restored <" << mole->class_name()
    967                    << "> from " << restartfile << endl;
    968 
    969       opt << keyval->describedclassvalue("opt");
    970       if (opt.nonnull())
    971         opt->set_function(mole.pointer());
    972     }
    973     else {
    974       opt << SavableState::key_restore_state(si,"opt");
    975       if (opt.nonnull()) {
    976         mole << opt->function();
    977         ExEnv::out0() << endl << indent
    978              << "Restored <Optimize> from " << restartfile << endl;
    979       }
    980     }
    981   } else {
    982     mole << keyval->describedclassvalue("mole");
    983     opt << keyval->describedclassvalue("opt");
    984   }
     997  performRestart(keyval, grp, opt, mole, restartfile);
    985998
    986999  if (mole.nonnull()) {
Note: See TracChangeset for help on using the changeset viewer.