Changeset 620517


Ignore:
Timestamp:
Feb 15, 2013, 5:09:57 PM (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:
56b04c
Parents:
b123a5
git-author:
Frederik Heber <heber@…> (01/28/13 23:19:04)
git-committer:
Frederik Heber <heber@…> (02/15/13 17:09:57)
Message:

FIX: SamplingGrid::getWindowGridPoints() was broken.

  • or at least inconsistent with use in MPQC.
  • also added .._inline.hpp module to contain all inline functions.
  • placed several one- or two-liners in the inline section.
Location:
src/Jobs/Grid
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • src/Jobs/Grid/Makefile.am

    rb123a5 r620517  
    88JOBSGRIDHEADER = \
    99        Jobs/Grid/SamplingGrid.hpp \
     10        Jobs/Grid/SamplingGrid_inline.hpp \
    1011        Jobs/Grid/SamplingGridProperties.hpp
    1112
  • src/Jobs/Grid/SamplingGrid.cpp

    rb123a5 r620517  
    169169}
    170170
    171 const double SamplingGrid::getVolume() const
    172 {
    173   double volume = 1.;
    174   for (size_t i=0;i<3;++i)
    175     volume *= end[i]-begin[i];
    176   return volume;
    177 }
    178 
    179 const double SamplingGrid::getWindowVolume() const
    180 {
    181   double volume = 1.;
    182   for (size_t i=0;i<3;++i)
    183     volume *= end_window[i]-begin_window[i];
    184   return volume;
    185 }
    186 
    187 const size_t SamplingGrid::getTotalGridPoints() const
    188 {
    189   return pow(getGridPointsPerAxis(),3);
    190 }
    191 
    192 const size_t SamplingGrid::getGridPointsPerAxis() const
    193 {
    194   return pow(2, level);
    195 }
    196 
    197 const size_t SamplingGrid::getWindowGridPoints() const
    198 {
    199   const double volume = getVolume();
    200   if (fabs(volume) < std::numeric_limits<double>::epsilon())
     171const size_t SamplingGrid::getWindowGridPointsPerAxis(const size_t axis) const
     172{
     173  static const double round_offset(
     174      (std::numeric_limits<size_t>::round_style == std::round_toward_zero) ?
     175          0.5 : 0.); // need offset to get to round_toward_nearest behavior
     176//  const double total = getTotalLengthPerAxis(axis);
     177  const double delta = getDeltaPerAxis(axis);
     178  if (delta == 0)
    201179    return 0;
    202   else
    203     return (getWindowVolume()*getTotalGridPoints())/volume;
     180  const double length = getWindowLengthPerAxis(axis);
     181  if (length == 0)
     182    return 0;
     183  return (size_t)(length/delta+round_offset);
    204184}
    205185
     
    283263  sampled_grid.clear();
    284264  sampled_grid.resize(gridpoints_window, 0.);
    285 }
    286 
    287 void SamplingGrid::setDomainSize(
    288     const double _begin[3],
    289     const double _end[3])
    290 {
    291   for (size_t index=0;index<3;++index) {
    292     begin[index] = _begin[index];
    293     end[index] = _end[index];
    294   }
    295265}
    296266
  • src/Jobs/Grid/SamplingGrid.hpp

    rb123a5 r620517  
    159159  const size_t getWindowGridPoints() const;
    160160
     161  /** Returns the number of gridpoints of the discrete mesh for the current
     162   * window size for given axis \axis.
     163   *
     164   * \param axis axis to calculate number of gridpoints for
     165   * \return number of gridpoints along this axis
     166   */
     167  const size_t getWindowGridPointsPerAxis(const size_t axis) const;
     168
    161169  /** Returns the total number of gridpoints of the discrete mesh covering the volume.
    162170   *
     
    170178   */
    171179  const size_t getGridPointsPerAxis() const;
     180
     181  /** Returns the length of the domain for the given \a axis.
     182   *
     183   * \param axis axis for which to get step length
     184   * \return domain length for the given axis, i.e. end - begin
     185   */
     186  const double getTotalLengthPerAxis(const size_t axis) const;
     187
     188  /** Returns the length of the window for the given \a axis.
     189   *
     190   * \param axis axis for which to get step length
     191   * \return window length for the given axis, i.e. end - begin
     192   */
     193  const double getWindowLengthPerAxis(const size_t axis) const;
     194
     195  /** Returns the real step length from one discrete grid point to the next.
     196   *
     197   * \param axis axis for which to get step length
     198   * \return step length for the given axis, as domain length over getGridPointsPerAxis()
     199   */
     200  const double getDeltaPerAxis(const size_t axis) const;
    172201
    173202  /** Returns the volume of the domain covered by the current window.
     
    311340BOOST_CLASS_EXPORT_KEY(SamplingGrid)
    312341
     342// define inline functions
     343#include "SamplingGrid_inline.hpp"
     344
    313345#endif /* SAMPLINGGRID_HPP_ */
Note: See TracChangeset for help on using the changeset viewer.