Changeset 1b558c
- Timestamp:
- Feb 24, 2011, 6:20:40 PM (14 years ago)
- 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:
- b1a5d9
- Parents:
- 6b020f
- git-author:
- Frederik Heber <heber@…> (02/11/11 09:25:16)
- git-committer:
- Frederik Heber <heber@…> (02/24/11 18:20:40)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/atom_atominfo.cpp
r6b020f r1b558c 27 27 #include "periodentafel.hpp" 28 28 #include "World.hpp" 29 #include "WorldTime.hpp" 29 30 #include "atom_atominfo.hpp" 30 31 … … 80 81 const double& AtomInfo::operator[](size_t i) const 81 82 { 82 ASSERT(AtomicPosition.size() > 0, 83 "AtomInfo::operator[]() - Access out of range."); 84 return AtomicPosition[0][i]; 83 ASSERT(AtomicPosition.size() > WorldTime::getTime(), 84 "AtomInfo::operator[]() - Access out of range: " 85 +toString(WorldTime::getTime()) 86 +" not in [0,"+toString(AtomicPosition.size())+")."); 87 return AtomicPosition[WorldTime::getTime()][i]; 85 88 } 86 89 87 90 const double& AtomInfo::at(size_t i) const 88 91 { 89 ASSERT(AtomicPosition.size() > 0, 90 "AtomInfo::at() - Access out of range."); 91 return AtomicPosition[0].at(i); 92 ASSERT(AtomicPosition.size() > WorldTime::getTime(), 93 "AtomInfo::at() - Access out of range: " 94 +toString(WorldTime::getTime()) 95 +" not in [0,"+toString(AtomicPosition.size())+")."); 96 return AtomicPosition[WorldTime::getTime()].at(i); 92 97 } 93 98 … … 95 100 { 96 101 ASSERT(AtomicPosition.size() > _step, 97 "AtomInfo::atStep() - Access out of range."); 102 "AtomInfo::atStep() - Access out of range: " 103 +toString(_step) 104 +" not in [0,"+toString(AtomicPosition.size())+")."); 98 105 return AtomicPosition[_step].at(i); 99 106 } … … 101 108 void AtomInfo::set(size_t i, const double value) 102 109 { 103 ASSERT(AtomicPosition.size() > 0, 104 "AtomInfo::set() - Access out of range."); 105 AtomicPosition[0].at(i) = value; 110 ASSERT(AtomicPosition.size() > WorldTime::getTime(), 111 "AtomInfo::set() - Access out of range: " 112 +toString(WorldTime::getTime()) 113 +" not in [0,"+toString(AtomicPosition.size())+")."); 114 AtomicPosition[WorldTime::getTime()].at(i) = value; 106 115 } 107 116 108 117 const Vector& AtomInfo::getPosition() const 109 118 { 110 ASSERT(AtomicPosition.size() > 0, 111 "AtomInfo::getPosition() - Access out of range."); 112 return AtomicPosition[0]; 119 ASSERT(AtomicPosition.size() > WorldTime::getTime(), 120 "AtomInfo::getPosition() - Access out of range: " 121 +toString(WorldTime::getTime()) 122 +" not in [0,"+toString(AtomicPosition.size())+")."); 123 return AtomicPosition[WorldTime::getTime()]; 113 124 } 114 125 … … 116 127 { 117 128 ASSERT(_step < AtomicPosition.size(), 118 "AtomInfo::getPositionAtStep() - Access out of range."); 129 "AtomInfo::getPositionAtStep() - Access out of range: " 130 +toString(_step) 131 +" not in [0,"+toString(AtomicPosition.size())+")."); 119 132 return AtomicPosition[_step]; 120 133 } … … 144 157 { 145 158 ASSERT(AtomicVelocity.size() > 0, 146 "AtomInfo::getAtomicVelocity() - Access out of range."); 147 return AtomicVelocity[0]; 159 "AtomInfo::getAtomicVelocity() - Access out of range: " 160 +toString(WorldTime::getTime()) 161 +" not in [0,"+toString(AtomicPosition.size())+")."); 162 return AtomicVelocity[WorldTime::getTime()]; 148 163 } 149 164 … … 151 166 { 152 167 ASSERT(_step < AtomicVelocity.size(), 153 "AtomInfo::getAtomicVelocity() - Access out of range."); 168 "AtomInfo::getAtomicVelocity() - Access out of range: " 169 +toString(_step) 170 +" not in [0,"+toString(AtomicPosition.size())+")."); 154 171 return AtomicVelocity[_step]; 155 172 } … … 157 174 void AtomInfo::setAtomicVelocity(const Vector &_newvelocity) 158 175 { 159 ASSERT(0 < AtomicVelocity.size(), 160 "AtomInfo::setAtomicVelocity() - Access out of range."); 161 AtomicVelocity[0] = _newvelocity; 176 ASSERT(WorldTime::getTime() < AtomicVelocity.size(), 177 "AtomInfo::setAtomicVelocity() - Access out of range: " 178 +toString(WorldTime::getTime()) 179 +" not in [0,"+toString(AtomicPosition.size())+")."); 180 AtomicVelocity[WorldTime::getTime()] = _newvelocity; 162 181 } 163 182 164 183 void AtomInfo::setAtomicVelocityAtStep(const unsigned int _step, const Vector &_newvelocity) 165 184 { 166 ASSERT(_step <= AtomicVelocity.size(), 167 "AtomInfo::setAtomicVelocityAtStep() - Access out of range."); 168 if(_step < AtomicVelocity.size()) { 185 const unsigned int size = AtomicVelocity.size(); 186 ASSERT(_step <= size, 187 "AtomInfo::setAtomicVelocityAtStep() - Access out of range: " 188 +toString(_step) 189 +" not in [0,"+toString(size)+"]."); 190 if(_step < size) { 169 191 AtomicVelocity[_step] = _newvelocity; 170 } else if (_step == AtomicVelocity.size()) {192 } else if (_step == size) { 171 193 AtomicVelocity.push_back(_newvelocity); 172 194 } … … 175 197 const Vector& AtomInfo::getAtomicForce() const 176 198 { 177 ASSERT(0 < AtomicForce.size(), 178 "AtomInfo::getAtomicForce() - Access out of range."); 179 return AtomicForce[0]; 199 ASSERT(WorldTime::getTime() < AtomicForce.size(), 200 "AtomInfo::getAtomicForce() - Access out of range: " 201 +toString(WorldTime::getTime()) 202 +" not in [0,"+toString(AtomicPosition.size())+")."); 203 return AtomicForce[WorldTime::getTime()]; 180 204 } 181 205 … … 183 207 { 184 208 ASSERT(_step < AtomicForce.size(), 185 "AtomInfo::getAtomicForce() - Access out of range."); 209 "AtomInfo::getAtomicForce() - Access out of range: " 210 +toString(_step) 211 +" not in [0,"+toString(AtomicPosition.size())+")."); 186 212 return AtomicForce[_step]; 187 213 } … … 189 215 void AtomInfo::setAtomicForce(const Vector &_newforce) 190 216 { 191 ASSERT(0 < AtomicForce.size(), 192 "AtomInfo::setAtomicForce() - Access out of range."); 193 AtomicForce[0] = _newforce; 217 ASSERT(WorldTime::getTime() < AtomicForce.size(), 218 "AtomInfo::setAtomicForce() - Access out of range: " 219 +toString(WorldTime::getTime()) 220 +" not in [0,"+toString(AtomicPosition.size())+")."); 221 AtomicForce[WorldTime::getTime()] = _newforce; 194 222 } 195 223 … … 198 226 const unsigned int size = AtomicForce.size(); 199 227 ASSERT(_step <= size, 200 "AtomInfo::setAtomicForce() - Access out of range."); 228 "AtomInfo::setAtomicForce() - Access out of range: " 229 +toString(_step) 230 +" not in [0,"+toString(AtomicPosition.size())+"]."); 201 231 if(_step < size) { 202 232 AtomicForce[_step] = _newforce; … … 218 248 void AtomInfo::setPosition(const Vector& _vector) 219 249 { 220 ASSERT(0 < AtomicPosition.size(), 221 "AtomInfo::setPosition() - Access out of range."); 222 AtomicPosition[0] = _vector; 250 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 251 "AtomInfo::setPosition() - Access out of range: " 252 +toString(WorldTime::getTime()) 253 +" not in [0,"+toString(AtomicPosition.size())+")."); 254 AtomicPosition[WorldTime::getTime()] = _vector; 223 255 //cout << "AtomInfo::setPosition: " << getType()->symbol << " at " << getPosition() << endl; 224 256 } … … 226 258 void AtomInfo::setPositionAtStep(unsigned int _step, const Vector& _vector) 227 259 { 228 ASSERT(_step <= AtomicPosition.size(), 229 "AtomInfo::setPosition() - Access out of range."); 230 if(_step < AtomicPosition.size()) { 260 const unsigned int size = AtomicPosition.size(); 261 ASSERT(_step <= size, 262 "AtomInfo::setPosition() - Access out of range: " 263 +toString(_step) 264 +" not in [0,"+toString(size)+"]."); 265 if(_step < size) { 231 266 AtomicPosition[_step] = _vector; 232 } else if (_step == AtomicPosition.size()) {267 } else if (_step == size) { 233 268 AtomicPosition.push_back(_vector); 234 269 } … … 238 273 const VectorInterface& AtomInfo::operator+=(const Vector& b) 239 274 { 240 ASSERT(0 < AtomicPosition.size(), 241 "AtomInfo::operator+=() - Access out of range."); 242 AtomicPosition[0] += b; 275 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 276 "AtomInfo::operator+=() - Access out of range: " 277 +toString(WorldTime::getTime()) 278 +" not in [0,"+toString(AtomicPosition.size())+")."); 279 AtomicPosition[WorldTime::getTime()] += b; 243 280 return *this; 244 281 } … … 246 283 const VectorInterface& AtomInfo::operator-=(const Vector& b) 247 284 { 248 ASSERT(0 < AtomicPosition.size(), 249 "AtomInfo::operator-=() - Access out of range."); 250 AtomicPosition[0] -= b; 285 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 286 "AtomInfo::operator-=() - Access out of range: " 287 +toString(WorldTime::getTime()) 288 +" not in [0,"+toString(AtomicPosition.size())+")."); 289 AtomicPosition[WorldTime::getTime()] -= b; 251 290 return *this; 252 291 } … … 254 293 Vector const AtomInfo::operator+(const Vector& b) const 255 294 { 256 ASSERT(0 < AtomicPosition.size(), 257 "AtomInfo::operator+() - Access out of range."); 258 Vector a(AtomicPosition[0]); 295 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 296 "AtomInfo::operator+() - Access out of range: " 297 +toString(WorldTime::getTime()) 298 +" not in [0,"+toString(AtomicPosition.size())+")."); 299 Vector a(AtomicPosition[WorldTime::getTime()]); 259 300 a += b; 260 301 return a; … … 263 304 Vector const AtomInfo::operator-(const Vector& b) const 264 305 { 265 ASSERT(0 < AtomicPosition.size(), 266 "AtomInfo::operator-() - Access out of range."); 267 Vector a(AtomicPosition[0]); 306 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 307 "AtomInfo::operator-() - Access out of range: " 308 +toString(WorldTime::getTime()) 309 +" not in [0,"+toString(AtomicPosition.size())+")."); 310 Vector a(AtomicPosition[WorldTime::getTime()]); 268 311 a -= b; 269 312 return a; … … 272 315 double AtomInfo::distance(const Vector &point) const 273 316 { 274 ASSERT(0 < AtomicPosition.size(), 275 "AtomInfo::distance() - Access out of range."); 276 return AtomicPosition[0].distance(point); 317 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 318 "AtomInfo::distance() - Access out of range: " 319 +toString(WorldTime::getTime()) 320 +" not in [0,"+toString(AtomicPosition.size())+")."); 321 return AtomicPosition[WorldTime::getTime()].distance(point); 277 322 } 278 323 279 324 double AtomInfo::DistanceSquared(const Vector &y) const 280 325 { 281 ASSERT(0 < AtomicPosition.size(), 282 "AtomInfo::DistanceSquared() - Access out of range."); 283 return AtomicPosition[0].DistanceSquared(y); 326 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 327 "AtomInfo::DistanceSquared() - Access out of range: " 328 +toString(WorldTime::getTime()) 329 +" not in [0,"+toString(AtomicPosition.size())+")."); 330 return AtomicPosition[WorldTime::getTime()].DistanceSquared(y); 284 331 } 285 332 286 333 double AtomInfo::distance(const VectorInterface &_atom) const 287 334 { 288 ASSERT(0 < AtomicPosition.size(), 289 "AtomInfo::distance() - Access out of range."); 290 return _atom.distance(AtomicPosition[0]); 335 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 336 "AtomInfo::distance() - Access out of range: " 337 +toString(WorldTime::getTime()) 338 +" not in [0,"+toString(AtomicPosition.size())+")."); 339 return _atom.distance(AtomicPosition[WorldTime::getTime()]); 291 340 } 292 341 293 342 double AtomInfo::DistanceSquared(const VectorInterface &_atom) const 294 343 { 295 ASSERT(0 < AtomicPosition.size(), 296 "AtomInfo::DistanceSquared() - Access out of range."); 297 return _atom.DistanceSquared(AtomicPosition[0]); 344 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 345 "AtomInfo::DistanceSquared() - Access out of range: " 346 +toString(WorldTime::getTime()) 347 +" not in [0,"+toString(AtomicPosition.size())+")."); 348 return _atom.DistanceSquared(AtomicPosition[WorldTime::getTime()]); 298 349 } 299 350 300 351 VectorInterface &AtomInfo::operator=(const Vector& _vector) 301 352 { 302 ASSERT(0 < AtomicPosition.size(), 303 "AtomInfo::operator=() - Access out of range."); 304 AtomicPosition[0] = _vector; 353 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 354 "AtomInfo::operator=() - Access out of range: " 355 +toString(WorldTime::getTime()) 356 +" not in [0,"+toString(AtomicPosition.size())+")."); 357 AtomicPosition[WorldTime::getTime()] = _vector; 305 358 return *this; 306 359 } … … 308 361 void AtomInfo::ScaleAll(const double *factor) 309 362 { 310 ASSERT(0 < AtomicPosition.size(), 311 "AtomInfo::ScaleAll() - Access out of range."); 312 AtomicPosition[0].ScaleAll(factor); 363 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 364 "AtomInfo::ScaleAll() - Access out of range: " 365 +toString(WorldTime::getTime()) 366 +" not in [0,"+toString(AtomicPosition.size())+")."); 367 AtomicPosition[WorldTime::getTime()].ScaleAll(factor); 313 368 } 314 369 315 370 void AtomInfo::ScaleAll(const Vector &factor) 316 371 { 317 ASSERT(0 < AtomicPosition.size(), 318 "AtomInfo::ScaleAll() - Access out of range."); 319 AtomicPosition[0].ScaleAll(factor); 372 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 373 "AtomInfo::ScaleAll() - Access out of range: " 374 +toString(WorldTime::getTime()) 375 +" not in [0,"+toString(AtomicPosition.size())+")."); 376 AtomicPosition[WorldTime::getTime()].ScaleAll(factor); 320 377 } 321 378 322 379 void AtomInfo::Scale(const double factor) 323 380 { 324 ASSERT(0 < AtomicPosition.size(), 325 "AtomInfo::Scale() - Access out of range."); 326 AtomicPosition[0].Scale(factor); 381 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 382 "AtomInfo::Scale() - Access out of range: " 383 +toString(WorldTime::getTime()) 384 +" not in [0,"+toString(AtomicPosition.size())+")."); 385 AtomicPosition[WorldTime::getTime()].Scale(factor); 327 386 } 328 387 329 388 void AtomInfo::Zero() 330 389 { 331 ASSERT(0 < AtomicPosition.size(), 332 "AtomInfo::Zero() - Access out of range."); 333 AtomicPosition[0].Zero(); 390 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 391 "AtomInfo::Zero() - Access out of range: " 392 +toString(WorldTime::getTime()) 393 +" not in [0,"+toString(AtomicPosition.size())+")."); 394 AtomicPosition[WorldTime::getTime()].Zero(); 334 395 } 335 396 336 397 void AtomInfo::One(const double one) 337 398 { 338 ASSERT(0 < AtomicPosition.size(), 339 "AtomInfo::One() - Access out of range."); 340 AtomicPosition[0].One(one); 399 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 400 "AtomInfo::One() - Access out of range: " 401 +toString(WorldTime::getTime()) 402 +" not in [0,"+toString(AtomicPosition.size())+")."); 403 AtomicPosition[WorldTime::getTime()].One(one); 341 404 } 342 405 343 406 void AtomInfo::LinearCombinationOfVectors(const Vector &x1, const Vector &x2, const Vector &x3, const double * const factors) 344 407 { 345 ASSERT(0 < AtomicPosition.size(), 346 "AtomInfo::LinearCombinationOfVectors() - Access out of range."); 347 AtomicPosition[0].LinearCombinationOfVectors(x1,x2,x3,factors); 408 ASSERT(WorldTime::getTime() < AtomicPosition.size(), 409 "AtomInfo::LinearCombinationOfVectors() - Access out of range: " 410 +toString(WorldTime::getTime()) 411 +" not in [0,"+toString(AtomicPosition.size())+")."); 412 AtomicPosition[WorldTime::getTime()].LinearCombinationOfVectors(x1,x2,x3,factors); 348 413 } 349 414 … … 353 418 double AtomInfo::getKineticEnergy(const unsigned int _step) const{ 354 419 ASSERT(_step < AtomicPosition.size(), 355 "AtomInfo::getKineticEnergy() - Access out of range."); 420 "AtomInfo::getKineticEnergy() - Access out of range: " 421 +toString(WorldTime::getTime()) 422 +" not in [0,"+toString(AtomicPosition.size())+")."); 356 423 return getMass() * AtomicVelocity[_step].NormSquared(); 357 424 } … … 359 426 Vector AtomInfo::getMomentum(const unsigned int _step) const{ 360 427 ASSERT(_step < AtomicPosition.size(), 361 "AtomInfo::getMomentum() - Access out of range."); 428 "AtomInfo::getMomentum() - Access out of range: " 429 +toString(WorldTime::getTime()) 430 +" not in [0,"+toString(AtomicPosition.size())+")."); 362 431 return getMass()*AtomicVelocity[_step]; 363 432 } … … 375 444 AtomicForce.resize(MaxSteps+1, zeroVec); 376 445 } 446 for (size_t i = AtomicPosition.size(); i <= MaxSteps; ++i) { 447 AtomicPosition[i] = zeroVec; 448 AtomicVelocity[i] = zeroVec; 449 AtomicForce[i] = zeroVec; 450 } 377 451 }; 378 452 … … 396 470 397 471 ASSERT(dest < AtomicPosition.size(), 398 "AtomInfo::CopyStepOnStep() - destination outside of current trajectory array."); 472 "AtomInfo::CopyStepOnStep() - destination outside of current trajectory array: " 473 +toString(dest) 474 +" not in [0,"+toString(AtomicPosition.size())+")."); 399 475 ASSERT(src < AtomicPosition.size(), 400 "AtomInfo::CopyStepOnStep() - source outside of current trajectory array."); 476 "AtomInfo::CopyStepOnStep() - source outside of current trajectory array: " 477 +toString(src) 478 +" not in [0,"+toString(AtomicPosition.size())+")."); 401 479 for (int n=NDIM;n--;) { 402 480 AtomicPosition.at(dest)[n] = AtomicPosition.at(src)[n];
Note:
See TracChangeset
for help on using the changeset viewer.