Changeset bfd839
- Timestamp:
- May 27, 2010, 9:17:11 AM (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:
- b32dbb
- Parents:
- f2f4ae
- Location:
- src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Legacy/oldmenu.cpp
rf2f4ae rbfd839 8 8 9 9 #include "Legacy/oldmenu.hpp" 10 #include "analysis_bonds.hpp" 10 11 #include "analysis_correlation.hpp" 11 12 #include "World.hpp" … … 501 502 Log() << Verbose(0) << " f - calculate temperature from current velocity" << endl; 502 503 Log() << Verbose(0) << " g - output all temperatures per step from velocities" << endl; 504 Log() << Verbose(0) << " h - count the number of hydrogen bonds" << endl; 503 505 Log() << Verbose(0) << "all else - go back" << endl; 504 506 Log() << Verbose(0) << "===============================================" << endl; … … 591 593 output->close(); 592 594 delete(output); 595 } 596 break; 597 case 'h': 598 { 599 int Z1; 600 cout << "Please enter first interface element: "; 601 cin >> Z1; 602 const element * InterfaceElement = World::getInstance().getPeriode()->FindElement(Z1); 603 int Z2; 604 cout << "Please enter second interface element: "; 605 cin >> Z2; 606 const element * InterfaceElement2 = World::getInstance().getPeriode()->FindElement(Z2); 607 cout << endl << "There are " << CountHydrogenBridgeBonds(World::getInstance().getMolecules(), InterfaceElement, InterfaceElement2) << " hydrogen bridges with connections to " << (InterfaceElement != 0 ? InterfaceElement->name : "None") << " and " << (InterfaceElement2 != 0 ? InterfaceElement2->name : "None") << "." << endl; 593 608 } 594 609 break; -
src/analysis_bonds.cpp
rf2f4ae rbfd839 123 123 * \param *molecules molecules to count bonds 124 124 * \param *InterfaceElement or NULL 125 */ 126 int CountHydrogenBridgeBonds(MoleculeListClass *molecules, element * InterfaceElement = NULL) 125 * \param *Interface2Element or NULL 126 */ 127 int CountHydrogenBridgeBonds(MoleculeListClass *molecules, const element * InterfaceElement = NULL, const element * Interface2Element = NULL) 127 128 { 128 129 atom *Walker = NULL; … … 132 133 double Otherangle = 0.; 133 134 bool InterfaceFlag = false; 135 bool Interface2Flag = false; 134 136 bool OtherHydrogenFlag = true; 135 137 for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin();MolWalker != molecules->ListOfMolecules.end(); MolWalker++) { … … 151 153 OtherHydrogens = 0; 152 154 InterfaceFlag = (InterfaceElement == NULL); 155 Interface2Flag = (Interface2Element == NULL); 153 156 for (BondList::const_iterator BondRunner = Runner->ListOfBonds.begin(); BondRunner != Runner->ListOfBonds.end(); BondRunner++) { 154 157 atom * const OtherAtom = (*BondRunner)->GetOtherAtom(Runner); … … 161 164 } 162 165 InterfaceFlag = InterfaceFlag || (OtherAtom->type == InterfaceElement); 166 Interface2Flag = Interface2Flag || (OtherAtom->type == Interface2Element); 163 167 } 164 168 DoLog(1) && (Log() << Verbose(1) << "Otherangle is " << Otherangle << " for " << OtherHydrogens << " hydrogens." << endl); … … 174 178 break; 175 179 } 176 if (InterfaceFlag && OtherHydrogenFlag) {180 if (InterfaceFlag && Interface2Flag && OtherHydrogenFlag) { 177 181 // on this element (Walker) we check for bond to hydrogen, i.e. part of water molecule 178 182 for (BondList::const_iterator BondRunner = Walker->ListOfBonds.begin(); BondRunner != Walker->ListOfBonds.end(); BondRunner++) { -
src/analysis_bonds.hpp
rf2f4ae rbfd839 33 33 void MinMeanMaxBondDistanceBetweenElements(const molecule *mol, element *type1, element *type2, double &Min, double &Mean, double &Max); 34 34 35 int CountHydrogenBridgeBonds(MoleculeListClass * const molecules, element * InterfaceElement);35 int CountHydrogenBridgeBonds(MoleculeListClass * const molecules, const element * InterfaceElement, const element * Interface2Element); 36 36 int CountBondsOfTwo(MoleculeListClass * const molecules, const element * const first, const element * const second); 37 37 int CountBondsOfThree(MoleculeListClass * const molecules, const element * const first, const element * const second, const element * const third); -
src/builder.cpp
rf2f4ae rbfd839 70 70 #include "molecule.hpp" 71 71 #include "periodentafel.hpp" 72 #include "tesselationhelpers.hpp" 72 73 #include "UIElements/UIFactory.hpp" 73 74 #include "UIElements/MainWindow.hpp" … … 1519 1520 switch(argv[argptr-1][1]) { 1520 1521 case 'h': 1521 case 'H':1522 1522 case '?': 1523 1523 DoLog(0) && (Log() << Verbose(0) << "MoleCuilder suite" << endl << "==================" << endl << endl); … … 1538 1538 DoLog(0) && (Log() << Verbose(0) << "\t-FF <MaxDistance> <xyz of filler> <dist_x> <dist_y> <dist_z> <epsilon> <randatom> <randmol> <DoRotate>\tFilling Box with water molecules." << endl); 1539 1539 DoLog(0) && (Log() << Verbose(0) << "\t-g <file>\tParses a bond length table from the given file." << endl); 1540 DoLog(0) && (Log() << Verbose(0) << "\t-h/-H/-?\tGive this help screen." << endl); 1540 DoLog(0) && (Log() << Verbose(0) << "\t-h/-?\tGive this help screen." << endl); 1541 DoLog(0) && (Log() << Verbose(0) << "\t-H\tCount Hydrogen bridge bonds." << endl); 1541 1542 DoLog(0) && (Log() << Verbose(0) << "\t-I\t Dissect current system of molecules into a set of disconnected (subgraphs of) molecules." << endl); 1542 1543 DoLog(0) && (Log() << Verbose(0) << "\t-j\t<path> Store all bonds to file." << endl); … … 1817 1818 if (mol != NULL) 1818 1819 mol->ActiveFlag = true; 1820 } 1821 break; 1822 case 'H': 1823 if ((argptr+1 >= argc) || (argv[argptr][0] == '-') || (argv[argptr+1][0] == '-')) { 1824 ExitFlag = 255; 1825 DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for calculating hydrogen bridge bonds: -H <Z1> <Z2>" << endl); 1826 performCriticalExit(); 1827 } else { 1828 if (ExitFlag == 0) ExitFlag = 1; 1829 const element *elemental = periode->FindElement((const int) atoi(argv[argptr])); 1830 const element *elemental2 = periode->FindElement((const int) atoi(argv[argptr+1])); 1831 cout << endl << "There are " << CountHydrogenBridgeBonds(molecules, elemental, elemental2) << " hydrogen bridges with connections to " << (elemental != 0 ? elemental->name : "None") << " and " << (elemental2 != 0 ? elemental2->name : "None") << "." << endl; 1832 argptr+=1; 1819 1833 } 1820 1834 break; -
src/unittests/CountBondsUnitTest.cpp
rf2f4ae rbfd839 167 167 Translator = Vector(3,0,0); 168 168 TestMolecule2->Translate(&Translator); 169 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL ) );170 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, oxygen ) );169 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 170 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, oxygen, NULL) ); 171 171 //OutputTestMolecule(TestMolecule2, "testmolecule2-1.xyz"); 172 172 Translator = Vector(-3,0,0); … … 176 176 Translator = Vector(0,3,0); 177 177 TestMolecule2->Translate(&Translator); 178 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL ) );178 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 179 179 //OutputTestMolecule(TestMolecule2, "testmolecule2-2.xyz"); 180 180 Translator = Vector(0,-3,0); … … 185 185 TestMolecule2->Scale((const double ** const)&mirror); 186 186 TestMolecule2->Translate(&Translator); 187 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL ) );187 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 188 188 //OutputTestMolecule(TestMolecule2, "testmolecule2-3.xyz"); 189 189 Translator = Vector(0,3,0); … … 194 194 Translator = Vector(2,1,0); 195 195 TestMolecule2->Translate(&Translator); 196 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL ) );196 CPPUNIT_ASSERT_EQUAL( 1 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 197 197 //OutputTestMolecule(TestMolecule2, "testmolecule2-4.xyz"); 198 198 Translator = Vector(-2,-1,0); … … 202 202 Translator = Vector(0,0,3); 203 203 TestMolecule2->Translate(&Translator); 204 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL ) );204 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 205 205 //OutputTestMolecule(TestMolecule2, "testmolecule2-5.xyz"); 206 206 Translator = Vector(0,0,-3); … … 211 211 TestMolecule2->Scale((const double ** const)&mirror); 212 212 TestMolecule2->Translate(&Translator); 213 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL ) );213 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 214 214 //OutputTestMolecule(TestMolecule2, "testmolecule2-6.xyz"); 215 215 Translator = Vector(3,0,0); … … 221 221 TestMolecule2->Scale((const double ** const)&mirror); 222 222 TestMolecule2->Translate(&Translator); 223 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL ) );223 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 224 224 //OutputTestMolecule(TestMolecule2, "testmolecule2-7.xyz"); 225 225 Translator = Vector(-3,0,0); … … 232 232 TestMolecule2->Translate(&Translator); 233 233 //OutputTestMolecule(TestMolecule2, "testmolecule2-8.xyz"); 234 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL ) );234 CPPUNIT_ASSERT_EQUAL( 0 , CountHydrogenBridgeBonds(molecules, NULL, NULL) ); 235 235 Translator = Vector(0,-3,0); 236 236 TestMolecule2->Translate(&Translator);
Note:
See TracChangeset
for help on using the changeset viewer.