Changeset d6a7b9


Ignore:
Timestamp:
Jul 13, 2014, 6:04:51 PM (11 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
99692c
Parents:
18ed8c
git-author:
Frederik Heber <heber@…> (07/12/14 23:05:27)
git-committer:
Frederik Heber <heber@…> (07/13/14 18:04:51)
Message:

Specifying executable and suffix in SystemCommandJob with MPQCCommandFragmentController.

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • configure.ac

    r18ed8c rd6a7b9  
    235235AC_MSG_RESULT($enable_jobmarket)
    236236AS_IF([test x"$enable_jobmarket" != x"no"],[
    237   # JobMarket library (needs priorizing of jobs)
    238   AM_PATH_JOBMARKET([1.1.4], $have_debug,[
     237  # JobMarket library (needs SystemCommandJob with suffix)
     238  AM_PATH_JOBMARKET([1.1.5], $have_debug,[
    239239    # the following is only required if we have JobMarket
    240240    BOOST_ASIO
  • src/Actions/FragmentationAction/FragmentationAutomationAction.cpp

    r18ed8c rd6a7b9  
    169169    const size_t NoJobs = mpqccontroller.addJobsFromQueue(
    170170        params.DoLongrange.get() ? MPQCData::DoSampleDensity : MPQCData::DontSampleDensity,
    171         params.DoValenceOnly.get() ? MPQCData::DoSampleValenceOnly : MPQCData::DontSampleValenceOnly
     171        params.DoValenceOnly.get() ? MPQCData::DoSampleValenceOnly : MPQCData::DontSampleValenceOnly,
     172        params.executable.get().string()
    172173        );
    173174    LOG(1, "INFO: Added " << NoJobs << " from FragmentJobsQueue.");
  • src/Fragmentation/Automation/MPQCCommandFragmentController.cpp

    r18ed8c rd6a7b9  
    6161bool MPQCCommandFragmentController::addJobsFromQueue(
    6262    const MPQCData::DoLongrange_t _DoLongrange,
    63     const MPQCData::DoValenceOnly_t _DoValenceOnly
     63    const MPQCData::DoValenceOnly_t _DoValenceOnly,
     64    const std::string &_executable
    6465    )
    6566{
     
    7475#ifndef HAVE_JOBMARKET
    7576    job->setId(getAvailableId());
     77    if (!_executable.empty())
     78      job->setCommand(_executable);
     79    job->setSuffix(".in");
    7680#endif /* cause we don't inherit from FragmentController */
    7781    // add the jobs
  • src/Fragmentation/Automation/MPQCCommandFragmentController.hpp

    r18ed8c rd6a7b9  
    4444   * \param _DoSampleDensity whether to actually sample the resulting electronic density
    4545   * \param _DoValenceOnly whether to sample just the valence or the total elctron and nuclei density
     46   * \param _command command to pass to jobs for execution
    4647   * \return true - jobs obtained, false - queue empty
    4748   */
    4849  bool addJobsFromQueue(
    4950      const MPQCData::DoLongrange_t _DoLongrange,
    50       const MPQCData::DoValenceOnly_t _DoValenceOnly
     51      const MPQCData::DoValenceOnly_t _DoValenceOnly,
     52      const std::string &_command
    5153      );
    5254
  • src/Jobs/JobMarket/SystemCommandJob.cpp

    r18ed8c rd6a7b9  
    7777 * \param _outputfile configuration file for solver
    7878 * \param _JobId unique id of this job
    79  */
    80 SystemCommandJob::SystemCommandJob(const std::string &_command, const std::string &_outputfile, const JobId_t _JobId) :
     79 * \param _suffix possible suffix for temporary filenames, may be left empty
     80 */
     81SystemCommandJob::SystemCommandJob(
     82    const std::string &_command,
     83    const std::string &_outputfile,
     84    const JobId_t _JobId,
     85    const std::string &_suffix) :
    8186  FragmentJob(_JobId),
    8287  command(_command),
     88  suffix(_suffix),
    8389  outputfile(_outputfile)
    8490{}
     
    121127    "SystemCommandJob::Work() - the temporary file could not be opened.");
    122128  output << outputfile << std::endl;
     129  output.close();
    123130
    124131  // fork into subprocess and launch command
     
    163170
    164171  // close temporary file and remove it
    165   output.close();
    166172  boost::filesystem::path tmpPath(tmpTemplate);
    167173  if (boost::filesystem::exists(boost::filesystem::status(tmpPath))) {
  • src/Jobs/JobMarket/SystemCommandJob.hpp

    r18ed8c rd6a7b9  
    4242  friend class SystemCommandJobTest;
    4343public:
    44   SystemCommandJob(const std::string &_command, const std::string &_outputfile, const JobId_t _JobId);
     44  SystemCommandJob(const std::string &_command, const std::string &_outputfile, const JobId_t _JobId, const std::string &_suffix = std::string(""));
    4545  virtual ~SystemCommandJob();
    4646
     
    5353  }
    5454
    55 private:
     55  const std::string& getOutputfile() const {
     56    return outputfile;
     57  }
     58
     59  const std::string& getCommand() const {
     60    return command;
     61  }
     62
     63protected:
    5664  virtual FragmentResult::ptr extractResult(const std::string &resultstring);
    5765
    5866  //!> string containing the command to launch the solver
    5967  std::string command;
     68
     69  //!> suffix to be appended to output file name
     70  std::string suffix;
    6071
    6172  //!> string containing the configuration file for the solver
  • src/Jobs/MPQCCommandJob.hpp

    r18ed8c rd6a7b9  
    2929
    3030class MPQCCommandJobTest;
     31class MPQCCommandFragmentController;
    3132
    3233/** This class calls mpqc for solving a specific Hartree Fock problem.
     
    3738  //!> grant unit test access
    3839  friend class MPQCCommandJobTest;
     40  //!> grant access to controller
     41  friend class MPQCCommandFragmentController;
    3942public:
    4043  MPQCCommandJob(const std::string &_inputfile, const JobId_t _JobId, const std::string &_command = std::string("mpqc"));
     
    4851
    4952private:
     53  //!> Allow controller access to changing the commands
     54  void setCommand(const std::string &_command)
     55  { command = _command; }
     56
     57  //!> Allow controller access to changing the suffix
     58  void setSuffix(const std::string &_suffix)
     59  { suffix = _suffix; }
     60
    5061  //!> private default cstor only for serializatio
    5162  MPQCCommandJob();
Note: See TracChangeset for help on using the changeset viewer.