- Timestamp:
- Aug 20, 2009, 3:40:49 PM (15 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:
- 0227a9, 29812d
- Parents:
- 78b73c
- Location:
- src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/atom.cpp
r78b73c r89c8b2 38 38 previous = NULL; 39 39 next = NULL; 40 father = this; // generally, father is itself40 father = pointer; // generally, father is itself 41 41 Ancestor = NULL; 42 42 GraphNr = -1; … … 53 53 nr = -1; 54 54 sort = &nr; 55 node = &x; 55 56 } 56 57 -
src/molecules.cpp
r78b73c r89c8b2 176 176 * Increases molecule::last_atom and gives last number to added atom. 177 177 * \param *pointer allocated and set atom 178 * \return true - succeeded, false - atom not found in list178 * \return pointer to the newly added atom 179 179 */ 180 180 atom * molecule::AddCopyAtom(atom *pointer) … … 612 612 return copy; 613 613 }; 614 615 616 /** 617 * Copies all atoms of a molecule which are within the defined parallelepiped. 618 * 619 * @param offest for the origin of the parallelepiped 620 * @param three vectors forming the matrix that defines the shape of the parallelpiped 621 */ 622 molecule* molecule::CopyMoleculeFromSubRegion(Vector offset, double *parallelepiped) { 623 molecule *copy = new molecule(elemente); 624 atom *Walker = start; 625 626 while(Walker->next != end) { 627 Walker = Walker->next; 628 if (Walker->x.IsInParallelepiped(offset, parallelepiped)) { 629 cout << "Adding atom " << *Walker << endl; 630 copy->AddCopyAtom(Walker); 631 } 632 } 633 634 //TODO: copy->BuildInducedSubgraph((ofstream *)&cout, this); 635 636 return copy; 637 } 614 638 615 639 /** Adds a bond to a the molecule specified by two atoms, \a *first and \a *second. -
src/molecules.hpp
r78b73c r89c8b2 207 207 208 208 molecule *CopyMolecule(); 209 molecule* CopyMoleculeFromSubRegion(Vector offset, double *parallelepiped); 209 210 210 211 /// Fragment molecule by two different approaches: -
src/vector.cpp
r78b73c r89c8b2 1221 1221 return true; 1222 1222 }; 1223 1224 /** 1225 * Checks whether this vector is within the parallelepiped defined by the given three vectors and 1226 * their offset. 1227 * 1228 * @param offest for the origin of the parallelepiped 1229 * @param three vectors forming the matrix that defines the shape of the parallelpiped 1230 */ 1231 bool Vector::IsInParallelepiped(Vector offset, double *parallelepiped) 1232 { 1233 Vector a; 1234 a.CopyVector(this); 1235 a.SubtractVector(&offset); 1236 a.InverseMatrixMultiplication(parallelepiped); 1237 bool isInside = true; 1238 1239 for (int i=NDIM;i--;) 1240 isInside = isInside && ((a.x[i] <= 1) && (a.x[i] >= 0)); 1241 1242 return isInside; 1243 } -
src/vector.hpp
r78b73c r89c8b2 68 68 void AskPosition(double *cell_size, bool check); 69 69 bool Output(ofstream *out) const; 70 bool IsInParallelepiped(Vector offset, double *parallelepiped); 70 71 }; 71 72 -
src/vectorunittest.cpp
r78b73c r89c8b2 258 258 } 259 259 260 /** 261 * UnitTest for Vector::IsInParallelepiped(). 262 */ 263 void VectorTest::IsInParallelepipedTest() 264 { 265 double parallelepiped[NDIM*NDIM]; 266 parallelepiped[0] = 1; 267 parallelepiped[1] = 0; 268 parallelepiped[2] = 0; 269 parallelepiped[3] = 0; 270 parallelepiped[4] = 1; 271 parallelepiped[5] = 0; 272 parallelepiped[6] = 0; 273 parallelepiped[7] = 0; 274 parallelepiped[8] = 1; 275 276 fixture.CopyVector(zero); 277 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 278 fixture.Init(2.5,2.5,2.5); 279 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 280 fixture.Init(1.,1.,1.); 281 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 282 fixture.Init(3.5,3.5,3.5); 283 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 284 fixture.Init(2.,2.,2.); 285 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 286 fixture.Init(2.,3.,2.); 287 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 288 fixture.Init(-2.,2.,-1.); 289 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 290 } 291 260 292 261 293 /********************************************** Main routine **************************************/ -
src/vectorunittest.hpp
r78b73c r89c8b2 28 28 CPPUNIT_TEST ( LineIntersectionTest ); 29 29 CPPUNIT_TEST ( VectorRotationTest ); 30 CPPUNIT_TEST ( IsInParallelepipedTest ); 30 31 CPPUNIT_TEST_SUITE_END(); 31 32 … … 44 45 void LineIntersectionTest(); 45 46 void VectorRotationTest(); 47 void IsInParallelepipedTest(); 46 48 47 49 private:
Note:
See TracChangeset
for help on using the changeset viewer.