Changeset de29ad6
- Timestamp:
- Dec 28, 2011, 3:24:23 PM (13 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:
- 68c923
- Parents:
- bde4a6
- git-author:
- Frederik Heber <heber@…> (12/28/11 14:58:52)
- git-committer:
- Frederik Heber <heber@…> (12/28/11 15:24:23)
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LinearAlgebra/src/LinearAlgebra/VectorSet.hpp
rbde4a6 rde29ad6 27 27 28 28 #include "Vector.hpp" 29 #include < list>29 #include <vector> 30 30 31 31 // this tests, whether we actually have a Vector … … 62 62 if(!this->size()) 63 63 return std::numeric_limits<double>::infinity(); 64 std:: list<double> helper;64 std::vector<double> helper; 65 65 helper.resize(this->size()); 66 66 transform(this->begin(),this->end(), -
src/Box.cpp
rbde4a6 rde29ad6 37 37 38 38 39 using namespace std;40 41 VECTORSET(std::list) Box::internal_list;42 43 39 Box::Box() : 44 40 M(new RealSpaceMatrix()), 45 41 Minv(new RealSpaceMatrix()) 46 42 { 43 internal_list.reserve(pow(3,3)); 44 coords.reserve(NDIM); 45 index.reserve(NDIM); 47 46 M->setIdentity(); 48 47 Minv->setIdentity(); … … 55 54 M(new RealSpaceMatrix(*src.M)), 56 55 Minv(new RealSpaceMatrix(*src.Minv)) 57 {} 56 { 57 internal_list.reserve(pow(3,3)); 58 coords.reserve(NDIM); 59 index.reserve(NDIM); 60 } 58 61 59 62 Box::Box(RealSpaceMatrix _M) : … … 61 64 Minv(new RealSpaceMatrix()) 62 65 { 66 internal_list.reserve(pow(3,3)); 67 coords.reserve(NDIM); 68 index.reserve(NDIM); 63 69 ASSERT(M->determinant()!=0,"Matrix in Box construction was not invertible"); 64 70 *Minv = M->invert(); … … 135 141 136 142 137 VECTORSET(std:: list) Box::explode(const Vector &point,int n) const{143 VECTORSET(std::vector) Box::explode(const Vector &point,int n) const{ 138 144 ASSERT(isInside(point),"Exploded point not inside Box"); 139 145 internal_explode(point, n); 140 VECTORSET(std:: list) res(internal_list);146 VECTORSET(std::vector) res(internal_list); 141 147 return res; 142 148 } … … 144 150 void Box::internal_explode(const Vector &point,int n) const{ 145 151 internal_list.clear(); 152 size_t list_index = 0; 146 153 147 154 Vector translater = translateOut(point); … … 150 157 // count the number of coordinates we need to do 151 158 int dims = 0; // number of dimensions that are not ignored 152 vector<int> coords;153 vector<int> index;159 coords.clear(); 160 index.clear(); 154 161 for(int i=0;i<NDIM;++i){ 155 162 if(conditions[i]==Ignore){ … … 161 168 dims++; 162 169 } // there are max vectors in total we need to create 170 internal_list.resize(pow(2*n+1, dims)); 163 171 164 172 if(!dims){ 165 173 // all boundaries are ignored 166 internal_list .push_back(point);174 internal_list[list_index++] = point; 167 175 return; 168 176 } … … 206 214 // add back all ignored coordinates (not handled in above loop) 207 215 helper+=mask; 208 internal_list.push_back(translateIn(helper)); 216 ASSERT(list_index < internal_list.size(), 217 "Box::internal_explode() - we have estimated the number of vectors wrong: " 218 +toString(list_index) +" >= "+toString(internal_list.size())+"."); 219 internal_list[list_index++] = translateIn(helper); 209 220 // set the new indexes 210 221 int pos=0; … … 221 232 } 222 233 223 VECTORSET(std:: list) Box::explode(const Vector &point) const{234 VECTORSET(std::vector) Box::explode(const Vector &point) const{ 224 235 ASSERT(isInside(point),"Exploded point not inside Box"); 225 236 return explode(point,1); … … 268 279 } 269 280 270 const vector<pair<Plane,Plane> > Box::getBoundingPlanes() const271 { 272 vector<pair<Plane,Plane> > res;281 const std::vector<std::pair<Plane,Plane> > Box::getBoundingPlanes() const 282 { 283 std::vector<std::pair<Plane,Plane> > res; 273 284 for(int i=0;i<NDIM;++i){ 274 285 Vector base1,base2,base3; … … 314 325 } 315 326 316 ostream & operator << (ostream& ost, const Box &m)327 std::ostream & operator << (std::ostream& ost, const Box &m) 317 328 { 318 329 ost << m.getM(); -
src/Box.hpp
rbde4a6 rde29ad6 41 41 } BoundaryCondition_t; 42 42 43 typedef vector<BoundaryCondition_t> Conditions_t;43 typedef std::vector<BoundaryCondition_t> Conditions_t; 44 44 45 45 Box(); … … 92 92 * Carefull, needs O(n^3) time and produces as many vectors. 93 93 */ 94 VECTORSET(std:: list) explode(const Vector &point,int n) const;95 VECTORSET(std:: list) explode(const Vector &point) const;94 VECTORSET(std::vector) explode(const Vector &point,int n) const; 95 VECTORSET(std::vector) explode(const Vector &point) const; 96 96 97 97 /** … … 117 117 void setCondition(int,BoundaryCondition_t); 118 118 119 const vector<pair<Plane,Plane> > getBoundingPlanes() const;119 const std::vector<std::pair<Plane,Plane> > getBoundingPlanes() const; 120 120 121 121 void setCuboid(const Vector&); … … 134 134 void internal_explode(const Vector &point,int n) const; 135 135 136 //!> Internal vector list for exploding vectors and checking. 137 static VECTORSET(std::list) internal_list; 136 //!> Internal vector list for exploding vectors used in Box::internal_explode(). 137 mutable VECTORSET(std::vector) internal_list; 138 139 //!> Internal vector for coordinates used in Box::internal_explode() 140 mutable std::vector<int> coords; 141 //!> Internal vector for indices used in Box::internal_explode() 142 mutable std::vector<int> index; 138 143 139 144 Conditions_t conditions; … … 142 147 }; 143 148 144 ostream & operator << (ostream& ost, const Box &m);149 std::ostream & operator << (std::ostream& ost, const Box &m); 145 150 146 151 #endif /* BOX_HPP_ */ -
src/Graph/BondGraph.cpp
rbde4a6 rde29ad6 197 197 const TesselPointSTLList *OtherList = LC.GetRelativeToCurrentCell(n); 198 198 if (OtherList != NULL) { 199 LOG(3, "INFO: Current relative cell is " << LC.n[0] << ", " << LC.n[1] << ", " << LC.n[2] << " with No. " << LC.index << " containing " << List->size() << " points.");199 LOG(3, "INFO: Current relative cell is " << n[0] << ", " << n[1] << ", " << n[2] << " with No. " << LC.index << " containing " << List->size() << " points."); 200 200 for (TesselPointSTLList::const_iterator OtherRunner = OtherList->begin(); OtherRunner != OtherList->end(); OtherRunner++) { 201 201 if ((*OtherRunner) > Walker) { // just to not add bonds from both sides … … 203 203 ASSERT(OtherWalker != NULL, 204 204 "BondGraph::CreateAdjacency() - TesselPoint that was not an atom retrieved from LinkedNode"); 205 LOG(3, "INFO: Current other atom is " << *OtherWalker << "."); 205 206 if (OtherWalker->father > Walker->father ) { // just to not add bonds from both sides 206 207 const range<double> MinMaxDistanceSquared( -
src/unittests/BoxUnitTest.cpp
rbde4a6 rde29ad6 476 476 } 477 477 478 bool testWrapExplode(VECTORSET(std:: list) &set,Vector &point, Box* box){478 bool testWrapExplode(VECTORSET(std::vector) &set,Vector &point, Box* box){ 479 479 bool res = true; 480 480 Vector wrappedPoint = box->WrapPeriodically(point); 481 for(std:: list<Vector>::iterator iter = set.begin(); iter!=set.end();++iter){481 for(std::vector<Vector>::iterator iter = set.begin(); iter!=set.end();++iter){ 482 482 Vector wrapped = box->WrapPeriodically(*iter); 483 483 bool equals = (wrapped == wrappedPoint); … … 492 492 void BoxUnittest::WrapExplodeTest(){ 493 493 Vector testVector(0,0,0); 494 VECTORSET(std:: list) res;494 VECTORSET(std::vector) res; 495 495 496 496 // we only can explode those vectors that are actually inside the box … … 892 892 void BoxUnittest::BoundaryBounceTest(){ 893 893 Vector testVector(0,0,0); 894 VECTORSET(std:: list) res;894 VECTORSET(std::vector) res; 895 895 896 896 unitBox->setCondition(0,Box::Bounce); … … 1191 1191 void BoxUnittest::BoundaryIgnoreTest(){ 1192 1192 Vector testVector(0,0,0); 1193 VECTORSET(std:: list) res;1193 VECTORSET(std::vector) res; 1194 1194 1195 1195 unitBox->setCondition(0,Box::Ignore); … … 1490 1490 void BoxUnittest::BoundaryMixedTest(){ 1491 1491 Vector testVector(0,0,0); 1492 VECTORSET(std:: list) res;1492 VECTORSET(std::vector) res; 1493 1493 1494 1494 unitBox->setCondition(0,Box::Bounce);
Note:
See TracChangeset
for help on using the changeset viewer.