Changeset 6ff62c for src


Ignore:
Timestamp:
May 1, 2013, 7:52:55 AM (12 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:
b6b21a
Parents:
53c579
git-author:
Frederik Heber <heber@…> (03/27/13 11:26:13)
git-committer:
Frederik Heber <heber@…> (05/01/13 07:52:55)
Message:

Added DoValenceOnly has new option to FragmentationAutomationAction.

  • this carries over to MPQCData, MPQCJob, MPQCFragmentController, and VMGFragmentController, that need to pass on the option.
  • Changes to MPQCData have been caught by increasing serialization version.
  • TESTFIX: Redid files for regression test AnalyseFragmentResults.
Location:
src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/FragmentationAction/FragmentationAutomationAction.cpp

    r53c579 r6ff62c  
    118118    // Phase Two: add MPQCJobs and send
    119119    const size_t NoJobs = mpqccontroller.addJobsFromQueue(
    120         params.DoLongrange.get() ? MPQCData::DoSampleDensity : MPQCData::DontSampleDensity);
     120        params.DoLongrange.get() ? MPQCData::DoSampleDensity : MPQCData::DontSampleDensity,
     121        params.DoValenceOnly.get() ? MPQCData::DoSampleValenceOnly : MPQCData::DontSampleValenceOnly
     122        );
    121123    LOG(1, "INFO: Added " << NoJobs << " from FragmentJobsQueue.");
    122124    mpqccontroller.run();
     
    160162        full_sample,
    161163        near_field_cells,
    162         interpolation_degree))
     164        interpolation_degree,
     165        params.DoValenceOnly.get() ? MPQCData::DoSampleValenceOnly : MPQCData::DontSampleValenceOnly))
    163166      // can't use the summed up fragment due to saturation hydrogens
    164167//      summedChargeDensity.getFragment(),
  • src/Actions/FragmentationAction/FragmentationAutomationAction.def

    r53c579 r6ff62c  
    1818// ValueStorage by the token "Z" -> first column: int, Z, "Z"
    1919// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
    20 #define paramtypes (std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)(boost::filesystem::path)
    21 #define paramtokens ("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")("fragment-resultfile")
    22 #define paramdescriptions ("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("interpolation degree for getting the nuclei potential from the grid")("whether to calculate long-range contributions")("parse fragment results from the given file")
    23 #define paramdefaults (PARAM_DEFAULT("127.0.0.1"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("mpqc"))(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))
    24 #define paramreferences (host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)(resultsfile)
     20#define paramtypes (std::string)(std::string)(boost::filesystem::path)(unsigned int)(unsigned int)(unsigned int)(bool)(boost::filesystem::path)(bool)
     21#define paramtokens ("server-address")("server-port")("fragment-executable")("grid-level")("near-field-cells")("interpolation-degree")("DoLongrange")("fragment-resultfile")("DoValenceOnly")
     22#define paramdescriptions ("hostname of server")("controller port of server")("executable to launch on clients")("resolution of multigrid")("number of cells used in smearing out core charge")("interpolation degree for getting the nuclei potential from the grid")("whether to calculate long-range contributions")("parse fragment results from the given file")("whether the sampling uses only the valence electron and nuclei charge")
     23#define paramdefaults (PARAM_DEFAULT("127.0.0.1"))(NOPARAM_DEFAULT)(PARAM_DEFAULT("mpqc"))(PARAM_DEFAULT(5))(PARAM_DEFAULT(3))(PARAM_DEFAULT(3))(PARAM_DEFAULT("0"))(PARAM_DEFAULT(""))(PARAM_DEFAULT("0"))
     24#define paramreferences (host)(port)(executable)(level)(near_field_cells)(interpolation_degree)(DoLongrange)(resultsfile)(DoValenceOnly)
    2525#define paramvalids \
    2626(DummyValidator< std::string >()) \
     
    3131(RangeValidator< unsigned int >(1, 10)) \
    3232(DummyValidator< bool >()) \
    33 (DummyValidator< boost::filesystem::path >())
     33(DummyValidator< boost::filesystem::path >()) \
     34(DummyValidator< bool >())
    3435
    3536#undef statetypes
  • src/Fragmentation/Automation/MPQCFragmentController.cpp

    r53c579 r6ff62c  
    5151#include "World.hpp"
    5252
    53 bool MPQCFragmentController::addJobsFromQueue(const MPQCData::DoLongrange_t _DoLongrange)
     53bool MPQCFragmentController::addJobsFromQueue(
     54    const MPQCData::DoLongrange_t _DoLongrange,
     55    const MPQCData::DoValenceOnly_t _DoValenceOnly
     56    )
    5457{
    5558  // give them all valid ids
     
    6063    MPQCJob *job = boost::polymorphic_downcast<MPQCJob *>(jobiter->get());
    6164    job->DoLongrange = _DoLongrange;
     65    job->DoValenceOnly = _DoValenceOnly;
    6266    changeJobId((*jobiter), getAvailableId());
    6367  }
  • src/Fragmentation/Automation/MPQCFragmentController.hpp

    r53c579 r6ff62c  
    4242   *
    4343   * \param _DoSampleDensity whether to actually sample the resulting electronic density
     44   * \param _DoValenceOnly whether to sample just the valence or the total elctron and nuclei density
    4445   * \return true - jobs obtained, false - queue empty
    4546   */
    46   bool addJobsFromQueue(const MPQCData::DoLongrange_t _DoLongrange);
     47  bool addJobsFromQueue(
     48      const MPQCData::DoLongrange_t _DoLongrange,
     49      const MPQCData::DoValenceOnly_t _DoValenceOnly
     50      );
    4751
    4852  /** Get results map of calculated jobs.
  • src/Fragmentation/Automation/VMGFragmentController.cpp

    r53c579 r6ff62c  
    4848#include "World.hpp"
    4949
     50/** Helper function for the number of core electrons of a given element \a z.
     51 *
     52 * \param z atomic number of element
     53 * \return number of core electrons for this element
     54 */
     55static int getCoreElectrons(const int z)
     56{
     57  int n=0;
     58  if (z > 2) n += 2;
     59  if (z > 10) n += 8;
     60  if (z > 18) n += 8;
     61  if (z > 30) n += 10;
     62  if (z > 36) n += 8;
     63  if (z > 48) n += 10;
     64  if (z > 54) n += 8;
     65  return n;
     66}
     67
    5068bool VMGFragmentController::createLongRangeJobs(
    5169    const std::map<JobId_t, MPQCData> &fragmentData,
    5270    const std::vector<SamplingGrid> &full_sampled_grid,
    5371    const size_t near_field_cells,
    54     const size_t interpolation_degree)
     72    const size_t interpolation_degree,
     73    const MPQCData::DoValenceOnly_t _DoValenceOnly)
    5574{
    5675  std::vector<FragmentJob::ptr> jobs;
     
    82101      for (size_t i=0;i<3;++i) position[i] = pos[i]/AtomicLengthToAngstroem;
    83102      positions.push_back(position);
    84       charges.push_back((double)((*iter)->getElement().getAtomicNumber()));
     103      int charge = (*iter)->getElement().getAtomicNumber();
     104      // subtract core electron charge from nuclei charge if only valence sampled
     105      if (_DoValenceOnly == MPQCData::DoSampleValenceOnly)
     106        charge -= getCoreElectrons(charge);
     107      charges.push_back((double)charge);
    85108    }
    86109  }
  • src/Fragmentation/Automation/VMGFragmentController.hpp

    r53c579 r6ff62c  
    3939  {}
    4040
     41  /** Creates the long range jobs from finished short-range jobs.
     42   *
     43   * \param fragmentData finished short-range results
     44   * \param full_sampled_grid sampled electron densities from finished short-range jobs
     45   * \param near_field_cells radius of b-splines for interpolation charges onto grid
     46   * \param interpolation_degree interpolation degree for newton interpolation from grid
     47   * \param _DoValenceOnly whether to neglect core electron and nuclei charges
     48   */
    4149  bool createLongRangeJobs(
    4250      const std::map<JobId_t, MPQCData> &fragmentData,
    4351      const std::vector<SamplingGrid> &full_sampled_grid,
    4452      const size_t near_field_cells,
    45       const size_t interpolation_degree);
     53      const size_t interpolation_degree,
     54      const MPQCData::DoValenceOnly_t _DoValenceOnly);
     55
     56  /** Get results of finished long-range jobs.
     57   *
     58   * \param fragmentData contains results on return
     59   */
    4660  void getResults(std::map<JobId_t, VMGData> &fragmentData) {
    4761    SpecificFragmentController::getResults<VMGData>(fragmentData);
  • src/Fragmentation/Summation/Containers/MPQCData.cpp

    r53c579 r6ff62c  
    4545MPQCData::MPQCData(const SamplingGridProperties &_props) :
    4646  DoLongrange(DontSampleDensity),
     47  DoValenceOnly(DoSampleValenceOnly),
    4748  sampled_grid(_props)
    4849{}
    4950
    5051MPQCData::MPQCData() :
    51   DoLongrange(DontSampleDensity)
     52  DoLongrange(DontSampleDensity),
     53  DoValenceOnly(DoValenceOnly)
    5254{}
    5355
  • src/Fragmentation/Summation/Containers/MPQCData.hpp

    r53c579 r6ff62c  
    8686  DoLongrange_t DoLongrange;
    8787
     88  //!> whether to sample just the valence or the total electron and nuclei density
     89  enum DoValenceOnly_t {
     90    DontSampleValenceOnly=0,
     91    DoSampleValenceOnly=1
     92  };
     93  DoValenceOnly_t DoValenceOnly;
     94
    8895  /// Density
    8996  SamplingGrid sampled_grid;
     
    126133    ar & sampled_grid;
    127134    ar & DoLongrange;
     135    if (version > 0)
     136      ar & DoValenceOnly;
    128137    ar & positions;
    129138    ar & charges;
     
    137146};
    138147
     148BOOST_CLASS_VERSION(MPQCData, 1)
     149
    139150std::ostream & operator<<(std::ostream &ost, const MPQCData &data);
    140151
  • src/Jobs/MPQCJob.hpp

    r53c579 r6ff62c  
    4343  MPQCData::DoLongrange_t DoLongrange;
    4444
     45  //!> whether to sample just the valence or the total electron and nuclei density
     46  MPQCData::DoValenceOnly_t DoValenceOnly;
     47
    4548private:
    4649  //!> contents of inputfile
     
    6164    ar & boost::serialization::base_object<FragmentJob>(*this);
    6265    ar & DoLongrange;
     66    ar & DoValenceOnly;
    6367    ar & const_cast<std::string &>(inputfile);
    6468    ar & const_cast<SamplingGridProperties &>(grid);
Note: See TracChangeset for help on using the changeset viewer.