Changeset de29ad6 for src/Box.cpp
- 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)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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();
Note:
See TracChangeset
for help on using the changeset viewer.