Changeset 2ebfd7 for src/Fragmentation
- 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:
- 4a3df8
- Parents:
- ec1aae
- git-author:
- Frederik Heber <heber@…> (06/08/16 13:22:46)
- git-committer:
- Frederik Heber <heber@…> (09/14/16 18:42:53)
- Location:
- src/Fragmentation/Summation/Containers
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Summation/Containers/MPQCData.cpp
rec1aae r2ebfd7 105 105 } 106 106 107 void MPQCData::assignWithDownsampledGrid( 108 MPQCData &instance, 109 const MPQCData &other) 110 { 111 if (&instance != &other) { 112 instance.energies = other.energies; 113 instance.forces = other.forces; 114 instance.DoLongrange = other.DoLongrange; 115 instance.DoValenceOnly = other.DoValenceOnly; 116 /** We need to return from the local grid of the fragment to the global 117 * grid and change the level in such a way that the gridpoints remain exactly 118 * the same. 119 */ 120 SamplingGridProperties domain(instance.sampled_grid); 121 //!> we need to downsample by the difference in levels and by the smaller grid size 122 const double surplus_level = instance.sampled_grid.getSurplusLevel(other.sampled_grid); 123 ASSERT( fabs(surplus_level - round(surplus_level)) < std::numeric_limits<double>::epsilon()*1e4, 124 "MPQCData::assignWithDownsampledGrid() - surplus level is not integer: " 125 +toString(surplus_level)); 126 const int downsample_level = 127 (other.sampled_grid.level - instance.sampled_grid.level) + round(surplus_level); 128 // downsample the stored grid values to the coarser grid 129 SamplingGrid::downsample( 130 instance.sampled_grid, other.sampled_grid, 131 other.sampled_grid.level - downsample_level); 132 // then we can simply take over 133 #ifndef NDEBUG 134 const size_t window_gridpoints = instance.sampled_grid.getWindowGridPoints(); 135 #endif 136 static_cast<SamplingGridProperties &>(instance.sampled_grid) = domain; 137 ASSERT(instance.sampled_grid.getWindowGridPoints() == window_gridpoints, 138 "MPQCData::assignWithDownsampledGrid() - number of window gridpoints is " 139 +toString(instance.sampled_grid.getWindowGridPoints())+" and was "+toString(window_gridpoints)); 140 instance.positions = other.positions; 141 instance.charges = other.charges; 142 instance.times = other.times; 143 instance.accuracy = other.accuracy; 144 instance.desired_accuracy = other.desired_accuracy; 145 } 146 } 147 107 148 std::ostream & operator<<(std::ostream &ost, const MPQCData &data) 108 149 { -
src/Fragmentation/Summation/Containers/MPQCData.hpp
rec1aae r2ebfd7 57 57 return !(*this == other); 58 58 } 59 60 /** Assignment operator with a downsampled grid. 61 * 62 * All values are taken over (with self-assignment check), but the grid 63 * is sampled down to the desired \a _level (left untouched if larger 64 * than grid level contained in \a other). 65 * 66 * \param instance instance to assign, containing desired grid and level 67 * \param other instance to get values and grid from 68 */ 69 static void assignWithDownsampledGrid( 70 MPQCData &instance, 71 const MPQCData &other); 59 72 60 73 /// Energie structure
Note:
See TracChangeset
for help on using the changeset viewer.