Changeset c1948c for src/Fragmentation/Summation
- Timestamp:
- Sep 14, 2016, 6:42:53 PM (8 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_StructOpt_integration_tests, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, 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_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, GeometryObjects, Gui_displays_atomic_force_velocity, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, RotateToPrincipalAxisSystem_UndoRedo, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, Ubuntu_1604_changes, stable
- Children:
- 336da8
- Parents:
- c6da5e
- git-author:
- Frederik Heber <heber@…> (05/27/16 18:34:23)
- git-committer:
- Frederik Heber <heber@…> (09/14/16 18:42:53)
- Location:
- src/Fragmentation/Summation/SetValues
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Summation/SetValues/SamplingGrid.cpp
rc6da5e rc1948c 424 424 boost::bind(addElements, _1, _2, boost::cref(prefactor)), 425 425 sourcewindow); 426 } 427 428 void SamplingGrid::getDiscreteWindowIndices( 429 size_t _wbegin[NDIM], 430 size_t _wlength[NDIM], 431 size_t _wend[NDIM]) const 432 { 433 const double round_offset = 434 (std::numeric_limits<size_t>::round_style == std::round_toward_zero) ? 435 0.5 : 0.; // need offset to get to round_toward_nearest behavior 436 for(size_t index=0;index<NDIM;++index) { 437 if (fabs(end[index] - begin[index]) > std::numeric_limits<double>::epsilon()*1e4) { 438 // we refrain from using floor/ceil as the window's starts and ends, 439 // the grids have to be compatible (equal level), should always be on 440 // discrete grid point locations. 441 const double delta = getDeltaPerAxis(index); 442 // delta is conversion factor from box length to discrete length, i.e. number of points 443 _wbegin[index] = (begin_window[index] - begin[index])/delta+round_offset; 444 _wlength[index] = (end_window[index] - begin_window[index])/delta+round_offset; 445 _wend[index] = (end_window[index] - begin[index])/delta+round_offset; 446 } else { 447 _wbegin[index] = 0; 448 _wlength[index] = 0; 449 _wend[index] = 0; 450 } 451 // total is used as safe-guard against loss due to discrete conversion 452 ASSERT( (_wend[index] - _wbegin[index]) == _wlength[index], 453 "SamplingGrid::getDiscreteWindowCopyIndices() - end - begin is not equal to length for " 454 +toString(index)+"th component."); 455 } 426 456 } 427 457 -
src/Fragmentation/Summation/SetValues/SamplingGrid.hpp
rc6da5e rc1948c 200 200 const double getWindowLengthPerAxis(const size_t axis) const; 201 201 202 /** Returns the discrete length in grid cells of the window for the given \a axis. 203 * 204 * \param axis axis for which to get step length 205 * \return window length in grid cells for the given axis 206 */ 207 const size_t getDiscreteWindowLengthPerAxis(const size_t axis) const; 208 202 209 /** Returns the volume of the domain covered by the current window. 203 210 * … … 236 243 size_t *length, 237 244 size_t *total) const; 245 246 /** Returns begin, length and end of window relative to the full domain in discrete 247 * grid points, i.e. begin gives the first grid points with the window and end its 248 * last plus 1. 249 */ 250 void getDiscreteWindowIndices( 251 size_t _wbegin[NDIM], 252 size_t _wlength[NDIM], 253 size_t _wend[NDIM]) const; 238 254 239 255 /** Equality operator. -
src/Fragmentation/Summation/SetValues/SamplingGrid_inline.hpp
rc6da5e rc1948c 38 38 inline 39 39 #endif 40 const size_t SamplingGrid::getDiscreteWindowLengthPerAxis(const size_t axis) const 41 { 42 const double round_offset = 43 (std::numeric_limits<size_t>::round_style == std::round_toward_zero) ? 44 0.5 : 0.; // need offset to get to round_toward_nearest behavior 45 const double length = 46 (double)getGridPointsPerAxis()*getWindowLengthPerAxis(axis)/getTotalLengthPerAxis(axis)+round_offset; 47 return length; 48 } 49 50 #ifdef HAVE_INLINE 51 inline 52 #endif 40 53 const size_t SamplingGrid::getWindowGridPoints() const 41 54 {
Note:
See TracChangeset
for help on using the changeset viewer.