- Timestamp:
- Sep 19, 2013, 8:24:28 PM (11 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:
- d5521e
- Parents:
- f06cbb
- git-author:
- Frederik Heber <heber@…> (08/30/13 23:18:46)
- git-committer:
- Frederik Heber <heber@…> (09/19/13 20:24:28)
- Location:
- src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/FillAction/FillRegularGridAction.cpp
rf06cbb raeb694 140 140 { 141 141 Filler *fillerFunction = new Filler(*mesh, Andpredicate, *inserter); 142 // TODO: When molecule::getBoundingS hape() does not use a sphere anymore,142 // TODO: When molecule::getBoundingSphere() does not use a sphere anymore, 143 143 // we need to check whether we rotate the molecule randomly. For this to 144 144 // work we need a sphere! 145 const Shape s = filler->getBoundingS hape(params.RandAtomDisplacement.get());145 const Shape s = filler->getBoundingSphere(params.RandAtomDisplacement.get()); 146 146 ClusterInterface::Cluster_impl cluster( new Cluster(filler->getAtomIds(), s) ); 147 147 CopyAtoms_withBonds copyMethod; -
src/Actions/FillAction/FillSurfaceAction.cpp
rf06cbb raeb694 125 125 { 126 126 Filler *fillerFunction = new Filler(*mesh, *voidnode_predicate, *inserter); 127 ClusterInterface::Cluster_impl cluster( new Cluster( filler->getAtomIds(), filler->getBoundingS hape() ) );127 ClusterInterface::Cluster_impl cluster( new Cluster( filler->getAtomIds(), filler->getBoundingSphere() ) ); 128 128 CopyAtoms_withBonds copyMethod; 129 129 Filler::ClusterVector_t ClonedClusters; -
src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject_molecule.cpp
rf06cbb raeb694 82 82 void GLMoleculeObject_molecule::updateBoundingBox() 83 83 { 84 Shape shape = _molecule->getBoundingS hape();84 Shape shape = _molecule->getBoundingSphere(); 85 85 Vector v = shape.getCenter(); 86 86 setPosition(QVector3D(v[0], v[1], v[2])); -
src/molecule.cpp
rf06cbb raeb694 958 958 } 959 959 960 Shape molecule::getBoundingShape(const double boundary) const 960 Shape molecule::getBoundingShape(const double scale) const 961 { 962 // create Sphere around every atom 963 if (empty()) 964 return Nowhere(); 965 const_iterator iter = begin(); 966 const Vector center = (*iter)->getPosition(); 967 const double vdWRadius = (*iter)->getElement().getVanDerWaalsRadius(); 968 Shape BoundingShape = Sphere(center, vdWRadius*scale); 969 for(++iter; iter != end(); ++iter) { 970 const Vector center = (*iter)->getPosition(); 971 const double vdWRadius = (*iter)->getElement().getVanDerWaalsRadius(); 972 if (vdWRadius*scale != 0.) 973 BoundingShape = Sphere(center, vdWRadius*scale) || BoundingShape; 974 } 975 return BoundingShape; 976 } 977 978 Shape molecule::getBoundingSphere(const double boundary) const 961 979 { 962 980 // get center and radius -
src/molecule.hpp
rf06cbb raeb694 244 244 * and the shape's surface) 245 245 */ 246 Shape getBoundingShape(const double boundary = 0.) const; 246 Shape getBoundingSphere(const double boundary = 0.) const; 247 248 /** Creates the bounding box by adding van der Waals-Spheres around every atom. 249 * 250 * \param scale extra scale parameter to enlarge the spheres artifically 251 */ 252 Shape getBoundingShape(const double scale = 1.) const; 247 253 248 254 /// remove atoms from molecule. -
src/unittests/MoleculeUnitTest.cpp
rf06cbb raeb694 80 80 } 81 81 82 /** Unit test for molecule::getBoundingSphere() with a linear chain 83 * 84 */ 85 void MoleculeUnittest::getBoundingSphereTest_linearchain() 86 { 87 // prepare a chain of atoms 88 double offset = 0.; 89 BOOST_FOREACH(atom *_atom, atomVector) { 90 _atom->setPosition( Vector(offset, 0., 0.) ); 91 offset += 1.; 92 } 93 94 { 95 // get bounding shape 96 Shape s = mol->getBoundingSphere(); 97 98 // check that each atom is truely inside the shape 99 BOOST_FOREACH(atom *_atom, atomVector) { 100 CPPUNIT_ASSERT( s.isInside(_atom->getPosition()) ); 101 } 102 } 103 } 104 105 /** Unit test for molecule::getBoundingSphere() with a v-shaped molecule. 106 * 107 */ 108 void MoleculeUnittest::getBoundingSphereTest_vshaped() 109 { 110 double xoffset = -2.5; 111 double yoffset = -2.5; 112 double yadder = -1; 113 BOOST_FOREACH(atom *_atom, atomVector) { 114 _atom->setPosition( Vector(xoffset, yoffset, 0.) ); 115 xoffset += 1.; 116 yoffset -= yadder; 117 if (yoffset <= 0) { 118 yadder = 1.; 119 } 120 } 121 122 { 123 // get bounding shape 124 Shape s = mol->getBoundingSphere(); 125 126 // check that each atom is truely inside the shape 127 BOOST_FOREACH(atom *_atom, atomVector) { 128 CPPUNIT_ASSERT( s.isInside(_atom->getPosition()) ); 129 } 130 } 131 } 132 82 133 /** Unit test for molecule::getBoundingShape() with a linear chain 83 134 * -
src/unittests/MoleculeUnitTest.hpp
rf06cbb raeb694 25 25 { 26 26 CPPUNIT_TEST_SUITE( MoleculeUnittest ); 27 CPPUNIT_TEST ( getBoundingSphereTest_linearchain ); 28 CPPUNIT_TEST ( getBoundingSphereTest_vshaped ); 27 29 CPPUNIT_TEST ( getBoundingShapeTest_linearchain ); 28 30 CPPUNIT_TEST ( getBoundingShapeTest_vshaped ); … … 33 35 void tearDown(); 34 36 37 void getBoundingSphereTest_linearchain(); 38 void getBoundingSphereTest_vshaped(); 35 39 void getBoundingShapeTest_linearchain(); 36 40 void getBoundingShapeTest_vshaped();
Note:
See TracChangeset
for help on using the changeset viewer.