- Timestamp:
- Feb 22, 2012, 11:28:41 AM (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:
- c52e08
- Parents:
- dd067a
- git-author:
- Frederik Heber <heber@…> (01/02/12 19:04:42)
- git-committer:
- Frederik Heber <heber@…> (02/22/12 11:28:41)
- Location:
- src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Box.cpp
rdd067a rd66cb7 57 57 M->setIdentity(); 58 58 Minv->setIdentity(); 59 conditions.resize(3);60 conditions[0] = conditions[1] = conditions[2] = Wrap;61 59 } 62 60 … … 97 95 ASSERT(M->determinant()!=0,"Matrix in Box construction was not invertible"); 98 96 *Minv = M->invert(); 99 conditions.resize(3);100 conditions[0] = conditions[1] = conditions[2] = Wrap;101 97 } 102 98 … … 140 136 141 137 switch(conditions[i]){ 142 case Wrap:138 case BoundaryConditions::Wrap: 143 139 helper.at(i)=fmod(helper.at(i),1); 144 140 helper.at(i)+=(helper.at(i)>=0)?0:1; 145 141 break; 146 case Boun ce:142 case BoundaryConditions::Bounce: 147 143 { 148 144 // there probably is a better way to handle this... … … 153 149 } 154 150 break; 155 case Ignore:151 case BoundaryConditions::Ignore: 156 152 break; 157 153 default: … … 171 167 for(int i=0;i<NDIM;i++) 172 168 result = result && 173 ((conditions[i] == Ignore) ||169 ((conditions[i] == BoundaryConditions::Ignore) || 174 170 ((tester[i] >= -MYEPSILON) && 175 171 ((tester[i] - 1.) < MYEPSILON))); … … 198 194 index.clear(); 199 195 for(int i=0;i<NDIM;++i){ 200 if(conditions[i]== Ignore){196 if(conditions[i]==BoundaryConditions::Ignore){ 201 197 mask[i]=translater[i]; 202 198 continue; … … 220 216 for(int i=0;i<dims;++i){ 221 217 switch(conditions[coords[i]]){ 222 case Wrap:218 case BoundaryConditions::Wrap: 223 219 helper[coords[i]] = index[i]+translater[coords[i]]; 224 220 break; 225 case Boun ce:221 case BoundaryConditions::Bounce: 226 222 { 227 223 // Bouncing the coordinate x produces the series: … … 241 237 } 242 238 break; 243 case Ignore:239 case BoundaryConditions::Ignore: 244 240 ASSERT(0,"Ignored coordinate handled in generation loop"); 245 241 break; … … 308 304 } 309 305 310 const Bo x::Conditions_t Box::getConditions() const311 { 312 return conditions ;313 } 314 315 void Box::setCondition( int i,Box::BoundaryCondition_t condition)306 const BoundaryConditions::Conditions_t Box::getConditions() const 307 { 308 return conditions.get(); 309 } 310 311 void Box::setCondition(size_t i, const BoundaryConditions::BoundaryCondition_t condition) 316 312 { 317 313 OBSERVE; 318 314 NOTIFY(BoundaryConditionsChanged); 319 conditions [i]=condition;315 conditions.set(i, condition); 320 316 } 321 317 -
src/Box.hpp
rdd067a rd66cb7 25 25 #include "LinearAlgebra/VectorSet.hpp" 26 26 27 #include "Box_BoundaryConditions.hpp" 28 27 29 /** 28 30 * A simple class that can be used to store periodic Boxes … … 41 43 NotificationType_MAX // denotes the maximum of available notification types 42 44 }; 43 44 typedef enum{45 Wrap,46 Bounce,47 Ignore48 } BoundaryCondition_t;49 50 typedef std::vector<BoundaryCondition_t> Conditions_t;51 45 52 46 Box(); … … 121 115 122 116 Shape getShape() const; 123 const Conditions_t getConditions() const; 124 void setCondition(int,BoundaryCondition_t); 117 118 const BoundaryConditions::Conditions_t getConditions() const; 119 void setCondition(size_t i,const BoundaryConditions::BoundaryCondition_t condition); 125 120 126 121 const std::vector<std::pair<Plane,Plane> > getBoundingPlanes() const; … … 149 144 mutable std::vector<int> index; 150 145 151 Conditions_tconditions;146 BoundaryConditions::BCContainer conditions; 152 147 RealSpaceMatrix *M; //!< Defines the layout of the box 153 148 RealSpaceMatrix *Minv; //!< Inverse of M to avoid recomputation -
src/LinkedCell/LinkedCell_Model.cpp
rdd067a rd66cb7 425 425 for (size_t i=0;i<NDIM;++i) { 426 426 switch (domain.getConditions()[i]) { 427 case Bo x::Wrap:427 case BoundaryConditions::Wrap: 428 428 if ((index[i] < 0) || (index[i] >= getSize(i))) 429 429 index[i] = (index[i] % getSize(i)); 430 430 break; 431 case Bo x::Bounce:431 case BoundaryConditions::Bounce: 432 432 if (index[i] < 0) 433 433 index[i] = 0; … … 435 435 index[i] = getSize(i)-1; 436 436 break; 437 case Bo x::Ignore:437 case BoundaryConditions::Ignore: 438 438 if (index[i] < 0) 439 439 index[i] = 0; … … 470 470 "LinkedCell_Model::getNeighborhoodBounds() - index "+toString(index)+" out of upper bounds."); 471 471 switch (domain.getConditions()[i]) { 472 case Bo x::Wrap:472 case BoundaryConditions::Wrap: 473 473 if ((index[i] - step[i]) < 0) 474 474 neighbors.first[i] = getSize(i) + (index[i] - step[i]); … … 479 479 neighbors.second[i] = 2*step[i]+1; 480 480 break; 481 case Bo x::Bounce:481 case BoundaryConditions::Bounce: 482 482 neighbors.second[i] = 2*step[i]+1; 483 483 if (index[i] - step[i] >= 0) { … … 491 491 } 492 492 break; 493 case Bo x::Ignore:493 case BoundaryConditions::Ignore: 494 494 if (index[i] - step[i] < 0) 495 495 neighbors.first[i] = 0; -
src/LinkedCell/unittests/Makefile.am
rdd067a rd66cb7 58 58 ../LinkedCell/unittests/stubs/TesselPointStub.cpp \ 59 59 ../LinkedCell/unittests/stubs/WorldStub.cpp \ 60 ../LinkedCell/PointCloudAdaptor.hpp 60 ../LinkedCell/PointCloudAdaptor.hpp \ 61 ../Box_BoundaryConditions.cpp \ 62 ../Box_BoundaryConditions.hpp 61 63 LinkedCell_ControllerUnitTest_LDADD = \ 62 64 ../libMolecuilderLinkedCell.la \ -
src/LinkedCell/unittests/stubs/ObserverBoxStub.cpp
rdd067a rd66cb7 38 38 OurChannel->addChannel(Box::MatrixChanged); 39 39 *Minv = M->invert(); 40 41 conditions.resize(3);42 conditions[0] = conditions[1] = conditions[2] = Wrap;43 40 } 44 41 … … 59 56 } 60 57 61 const Bo x::Conditions_t Box::getConditions() const58 const BoundaryConditions::Conditions_t Box::getConditions() const 62 59 { 63 return conditions ;60 return conditions.get(); 64 61 } 65 62 -
src/unittests/BoxUnitTest.cpp
rdd067a rd66cb7 896 896 VECTORSET(std::vector) res; 897 897 898 unitBox->setCondition(0,Bo x::Bounce);899 stretchedBox1->setCondition(0,Bo x::Bounce);900 stretchedBox2->setCondition(0,Bo x::Bounce);901 stretchedBox3->setCondition(0,Bo x::Bounce);902 stretchedBox4->setCondition(0,Bo x::Bounce);903 tiltedBox1->setCondition(0,Bo x::Bounce);904 tiltedBox2->setCondition(0,Bo x::Bounce);905 tiltedBox3->setCondition(0,Bo x::Bounce);906 tiltedBox4->setCondition(0,Bo x::Bounce);898 unitBox->setCondition(0,BoundaryConditions::Bounce); 899 stretchedBox1->setCondition(0,BoundaryConditions::Bounce); 900 stretchedBox2->setCondition(0,BoundaryConditions::Bounce); 901 stretchedBox3->setCondition(0,BoundaryConditions::Bounce); 902 stretchedBox4->setCondition(0,BoundaryConditions::Bounce); 903 tiltedBox1->setCondition(0,BoundaryConditions::Bounce); 904 tiltedBox2->setCondition(0,BoundaryConditions::Bounce); 905 tiltedBox3->setCondition(0,BoundaryConditions::Bounce); 906 tiltedBox4->setCondition(0,BoundaryConditions::Bounce); 907 907 908 908 { … … 994 994 } 995 995 996 unitBox->setCondition(1,Bo x::Bounce);997 stretchedBox1->setCondition(1,Bo x::Bounce);998 stretchedBox2->setCondition(1,Bo x::Bounce);999 stretchedBox3->setCondition(1,Bo x::Bounce);1000 stretchedBox4->setCondition(1,Bo x::Bounce);1001 tiltedBox1->setCondition(1,Bo x::Bounce);1002 tiltedBox2->setCondition(1,Bo x::Bounce);1003 tiltedBox3->setCondition(1,Bo x::Bounce);1004 tiltedBox4->setCondition(1,Bo x::Bounce);996 unitBox->setCondition(1,BoundaryConditions::Bounce); 997 stretchedBox1->setCondition(1,BoundaryConditions::Bounce); 998 stretchedBox2->setCondition(1,BoundaryConditions::Bounce); 999 stretchedBox3->setCondition(1,BoundaryConditions::Bounce); 1000 stretchedBox4->setCondition(1,BoundaryConditions::Bounce); 1001 tiltedBox1->setCondition(1,BoundaryConditions::Bounce); 1002 tiltedBox2->setCondition(1,BoundaryConditions::Bounce); 1003 tiltedBox3->setCondition(1,BoundaryConditions::Bounce); 1004 tiltedBox4->setCondition(1,BoundaryConditions::Bounce); 1005 1005 1006 1006 { … … 1092 1092 } 1093 1093 1094 unitBox->setCondition(2,Bo x::Bounce);1095 stretchedBox1->setCondition(2,Bo x::Bounce);1096 stretchedBox2->setCondition(2,Bo x::Bounce);1097 stretchedBox3->setCondition(2,Bo x::Bounce);1098 stretchedBox4->setCondition(2,Bo x::Bounce);1099 tiltedBox1->setCondition(2,Bo x::Bounce);1100 tiltedBox2->setCondition(2,Bo x::Bounce);1101 tiltedBox3->setCondition(2,Bo x::Bounce);1102 tiltedBox4->setCondition(2,Bo x::Bounce);1094 unitBox->setCondition(2,BoundaryConditions::Bounce); 1095 stretchedBox1->setCondition(2,BoundaryConditions::Bounce); 1096 stretchedBox2->setCondition(2,BoundaryConditions::Bounce); 1097 stretchedBox3->setCondition(2,BoundaryConditions::Bounce); 1098 stretchedBox4->setCondition(2,BoundaryConditions::Bounce); 1099 tiltedBox1->setCondition(2,BoundaryConditions::Bounce); 1100 tiltedBox2->setCondition(2,BoundaryConditions::Bounce); 1101 tiltedBox3->setCondition(2,BoundaryConditions::Bounce); 1102 tiltedBox4->setCondition(2,BoundaryConditions::Bounce); 1103 1103 1104 1104 { … … 1195 1195 VECTORSET(std::vector) res; 1196 1196 1197 unitBox->setCondition(0,Bo x::Ignore);1198 stretchedBox1->setCondition(0,Bo x::Ignore);1199 stretchedBox2->setCondition(0,Bo x::Ignore);1200 stretchedBox3->setCondition(0,Bo x::Ignore);1201 stretchedBox4->setCondition(0,Bo x::Ignore);1202 tiltedBox1->setCondition(0,Bo x::Ignore);1203 tiltedBox2->setCondition(0,Bo x::Ignore);1204 tiltedBox3->setCondition(0,Bo x::Ignore);1205 tiltedBox4->setCondition(0,Bo x::Ignore);1197 unitBox->setCondition(0,BoundaryConditions::Ignore); 1198 stretchedBox1->setCondition(0,BoundaryConditions::Ignore); 1199 stretchedBox2->setCondition(0,BoundaryConditions::Ignore); 1200 stretchedBox3->setCondition(0,BoundaryConditions::Ignore); 1201 stretchedBox4->setCondition(0,BoundaryConditions::Ignore); 1202 tiltedBox1->setCondition(0,BoundaryConditions::Ignore); 1203 tiltedBox2->setCondition(0,BoundaryConditions::Ignore); 1204 tiltedBox3->setCondition(0,BoundaryConditions::Ignore); 1205 tiltedBox4->setCondition(0,BoundaryConditions::Ignore); 1206 1206 1207 1207 { … … 1293 1293 } 1294 1294 1295 unitBox->setCondition(1,Bo x::Ignore);1296 stretchedBox1->setCondition(1,Bo x::Ignore);1297 stretchedBox2->setCondition(1,Bo x::Ignore);1298 stretchedBox3->setCondition(1,Bo x::Ignore);1299 stretchedBox4->setCondition(1,Bo x::Ignore);1300 tiltedBox1->setCondition(1,Bo x::Ignore);1301 tiltedBox2->setCondition(1,Bo x::Ignore);1302 tiltedBox3->setCondition(1,Bo x::Ignore);1303 tiltedBox4->setCondition(1,Bo x::Ignore);1295 unitBox->setCondition(1,BoundaryConditions::Ignore); 1296 stretchedBox1->setCondition(1,BoundaryConditions::Ignore); 1297 stretchedBox2->setCondition(1,BoundaryConditions::Ignore); 1298 stretchedBox3->setCondition(1,BoundaryConditions::Ignore); 1299 stretchedBox4->setCondition(1,BoundaryConditions::Ignore); 1300 tiltedBox1->setCondition(1,BoundaryConditions::Ignore); 1301 tiltedBox2->setCondition(1,BoundaryConditions::Ignore); 1302 tiltedBox3->setCondition(1,BoundaryConditions::Ignore); 1303 tiltedBox4->setCondition(1,BoundaryConditions::Ignore); 1304 1304 1305 1305 { … … 1391 1391 } 1392 1392 1393 unitBox->setCondition(2,Bo x::Ignore);1394 stretchedBox1->setCondition(2,Bo x::Ignore);1395 stretchedBox2->setCondition(2,Bo x::Ignore);1396 stretchedBox3->setCondition(2,Bo x::Ignore);1397 stretchedBox4->setCondition(2,Bo x::Ignore);1398 tiltedBox1->setCondition(2,Bo x::Ignore);1399 tiltedBox2->setCondition(2,Bo x::Ignore);1400 tiltedBox3->setCondition(2,Bo x::Ignore);1401 tiltedBox4->setCondition(2,Bo x::Ignore);1393 unitBox->setCondition(2,BoundaryConditions::Ignore); 1394 stretchedBox1->setCondition(2,BoundaryConditions::Ignore); 1395 stretchedBox2->setCondition(2,BoundaryConditions::Ignore); 1396 stretchedBox3->setCondition(2,BoundaryConditions::Ignore); 1397 stretchedBox4->setCondition(2,BoundaryConditions::Ignore); 1398 tiltedBox1->setCondition(2,BoundaryConditions::Ignore); 1399 tiltedBox2->setCondition(2,BoundaryConditions::Ignore); 1400 tiltedBox3->setCondition(2,BoundaryConditions::Ignore); 1401 tiltedBox4->setCondition(2,BoundaryConditions::Ignore); 1402 1402 1403 1403 { … … 1494 1494 VECTORSET(std::vector) res; 1495 1495 1496 unitBox->setCondition(0,Bo x::Bounce);1497 unitBox->setCondition(1,Bo x::Ignore);1498 unitBox->setCondition(2,Bo x::Wrap);1499 1500 stretchedBox1->setCondition(0,Bo x::Bounce);1501 stretchedBox1->setCondition(1,Bo x::Ignore);1502 stretchedBox1->setCondition(2,Bo x::Wrap);1503 1504 stretchedBox2->setCondition(0,Bo x::Bounce);1505 stretchedBox2->setCondition(1,Bo x::Ignore);1506 stretchedBox2->setCondition(2,Bo x::Wrap);1507 1508 stretchedBox3->setCondition(0,Bo x::Bounce);1509 stretchedBox3->setCondition(1,Bo x::Ignore);1510 stretchedBox3->setCondition(2,Bo x::Wrap);1511 1512 stretchedBox4->setCondition(0,Bo x::Bounce);1513 stretchedBox4->setCondition(1,Bo x::Ignore);1514 stretchedBox4->setCondition(2,Bo x::Wrap);1515 1516 tiltedBox1->setCondition(0,Bo x::Bounce);1517 tiltedBox1->setCondition(1,Bo x::Ignore);1518 tiltedBox1->setCondition(2,Bo x::Wrap);1519 1520 tiltedBox2->setCondition(0,Bo x::Bounce);1521 tiltedBox2->setCondition(1,Bo x::Ignore);1522 tiltedBox2->setCondition(2,Bo x::Wrap);1523 1524 tiltedBox3->setCondition(0,Bo x::Bounce);1525 tiltedBox3->setCondition(1,Bo x::Ignore);1526 tiltedBox3->setCondition(2,Bo x::Wrap);1527 1528 tiltedBox4->setCondition(0,Bo x::Bounce);1529 tiltedBox4->setCondition(1,Bo x::Ignore);1530 tiltedBox4->setCondition(2,Bo x::Wrap);1496 unitBox->setCondition(0,BoundaryConditions::Bounce); 1497 unitBox->setCondition(1,BoundaryConditions::Ignore); 1498 unitBox->setCondition(2,BoundaryConditions::Wrap); 1499 1500 stretchedBox1->setCondition(0,BoundaryConditions::Bounce); 1501 stretchedBox1->setCondition(1,BoundaryConditions::Ignore); 1502 stretchedBox1->setCondition(2,BoundaryConditions::Wrap); 1503 1504 stretchedBox2->setCondition(0,BoundaryConditions::Bounce); 1505 stretchedBox2->setCondition(1,BoundaryConditions::Ignore); 1506 stretchedBox2->setCondition(2,BoundaryConditions::Wrap); 1507 1508 stretchedBox3->setCondition(0,BoundaryConditions::Bounce); 1509 stretchedBox3->setCondition(1,BoundaryConditions::Ignore); 1510 stretchedBox3->setCondition(2,BoundaryConditions::Wrap); 1511 1512 stretchedBox4->setCondition(0,BoundaryConditions::Bounce); 1513 stretchedBox4->setCondition(1,BoundaryConditions::Ignore); 1514 stretchedBox4->setCondition(2,BoundaryConditions::Wrap); 1515 1516 tiltedBox1->setCondition(0,BoundaryConditions::Bounce); 1517 tiltedBox1->setCondition(1,BoundaryConditions::Ignore); 1518 tiltedBox1->setCondition(2,BoundaryConditions::Wrap); 1519 1520 tiltedBox2->setCondition(0,BoundaryConditions::Bounce); 1521 tiltedBox2->setCondition(1,BoundaryConditions::Ignore); 1522 tiltedBox2->setCondition(2,BoundaryConditions::Wrap); 1523 1524 tiltedBox3->setCondition(0,BoundaryConditions::Bounce); 1525 tiltedBox3->setCondition(1,BoundaryConditions::Ignore); 1526 tiltedBox3->setCondition(2,BoundaryConditions::Wrap); 1527 1528 tiltedBox4->setCondition(0,BoundaryConditions::Bounce); 1529 tiltedBox4->setCondition(1,BoundaryConditions::Ignore); 1530 tiltedBox4->setCondition(2,BoundaryConditions::Wrap); 1531 1531 1532 1532 { … … 1646 1646 1647 1647 // create update BoundaryConditionsChanged 1648 unitBox->setCondition(0, Bo x::Wrap);1648 unitBox->setCondition(0, BoundaryConditions::Wrap); 1649 1649 CPPUNIT_ASSERT_EQUAL((int)2, observer_general->updates); 1650 1650 CPPUNIT_ASSERT_EQUAL(false, observer_matrix->wasNotified);
Note:
See TracChangeset
for help on using the changeset viewer.