Changeset a98b86


Ignore:
Timestamp:
Jul 10, 2012, 1:15:49 PM (13 years ago)
Author:
Frederik Heber <heber@…>
Children:
8860a6
Parents:
a8458d
git-author:
Frederik Heber <heber@…> (07/06/12 18:35:39)
git-committer:
Frederik Heber <heber@…> (07/10/12 13:15:49)
Message:

Extracted function saveState().

File:
1 edited

Legend:

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

    ra8458d ra98b86  
    383383 * \param opt optimization structure
    384384 * \param molname name of molecule
    385  * \param name of restartfile
     385 * \param restartfile name of restartfile
    386386 */
    387387void printOptions(
     
    429429       << endl << decindent;
    430430
     431}
     432
     433/** Saves the current state to checkpoint file.
     434 *
     435 * \param keyval key value structure
     436 * \param opt optimization structure
     437 * \param grp message group
     438 * \param mole MolecularEnergy object
     439 * \param molname name of molecule
     440 * \param ckptfile name of check point file
     441 */
     442void saveState(
     443    char *wfn_file,
     444    int savestate,
     445    Ref<Optimize> &opt,
     446    Ref<MessageGrp> &grp,
     447    Ref<MolecularEnergy> &mole,
     448    char *&molname,
     449    char *&ckptfile)
     450{
     451  const char *devnull = "/dev/null";
     452
     453  // function stuff
     454  if (savestate) {
     455    if (opt.nonnull()) {
     456      if (grp->me() == 0) {
     457        ckptfile = new char[strlen(molname)+6];
     458        sprintf(ckptfile,"%s.ckpt",molname);
     459      }
     460      else {
     461        ckptfile = new char[strlen(devnull)+1];
     462        strcpy(ckptfile, devnull);
     463      }
     464
     465      StateOutBin so(ckptfile);
     466      SavableState::save_state(opt.pointer(),so);
     467      so.close();
     468
     469      delete[] ckptfile;
     470    }
     471
     472    if (mole.nonnull()) {
     473      if (grp->me() == 0) {
     474        if (wfn_file == 0) {
     475          wfn_file = new char[strlen(molname)+6];
     476          sprintf(wfn_file,"%s.wfn",molname);
     477        }
     478      }
     479      else {
     480        delete[] wfn_file;
     481        wfn_file = new char[strlen(devnull)+1];
     482        strcpy(wfn_file, devnull);
     483      }
     484
     485      StateOutBin so(wfn_file);
     486      SavableState::save_state(mole.pointer(),so);
     487      so.close();
     488
     489    }
     490  }
     491  delete[] wfn_file;
    431492}
    432493
     
    928989
    929990  // save this before doing the frequency stuff since that obsoletes the
    930   // function stuff
    931   if (savestate) {
    932     if (opt.nonnull()) {
    933       if (grp->me() == 0) {
    934         ckptfile = new char[strlen(molname)+6];
    935         sprintf(ckptfile,"%s.ckpt",molname);
    936       }
    937       else {
    938         ckptfile = new char[strlen(devnull)+1];
    939         strcpy(ckptfile, devnull);
    940       }
    941 
    942       StateOutBin so(ckptfile);
    943       SavableState::save_state(opt.pointer(),so);
    944       so.close();
    945 
    946       delete[] ckptfile;
    947     }
    948 
    949     if (mole.nonnull()) {
    950       if (grp->me() == 0) {
    951         if (wfn_file == 0) {
    952           wfn_file = new char[strlen(molname)+6];
    953           sprintf(wfn_file,"%s.wfn",molname);
    954         }
    955       }
    956       else {
    957         delete[] wfn_file;
    958         wfn_file = new char[strlen(devnull)+1];
    959         strcpy(wfn_file, devnull);
    960       }
     991  saveState(wfn_file, savestate, opt, grp, mole, molname, ckptfile);
    961992 
    962       StateOutBin so(wfn_file);
    963       SavableState::save_state(mole.pointer(),so);
    964       so.close();
    965 
    966     }
    967   }
    968   delete[] wfn_file;
    969 
    970993  // Frequency calculation.
    971994  if (ready_for_freq && molfreq.nonnull()) {
Note: See TracChangeset for help on using the changeset viewer.