Changeset c27778 for src/moleculelist.cpp
- Timestamp:
- Jul 3, 2010, 2:02:26 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:
- 2a374e
- Parents:
- b9c847
- git-author:
- Frederik Heber <heber@…> (07/03/10 13:24:25)
- git-committer:
- Frederik Heber <heber@…> (07/03/10 14:02:26)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/moleculelist.cpp
rb9c847 rc27778 1017 1017 * \param *out output stream for debugging 1018 1018 * \param *reference reference molecule with the bond structure to be copied 1019 * \param &FragmentCounter Counter needed to address \a **ListOfLocalAtoms 1020 * \param ***ListOfLocalAtoms Lookup table for each subgraph and index of each atom in \a *reference, may be NULL on start, then it is filled 1019 * \param **&ListOfLocalAtoms Lookup table for this subgraph and index of each atom in \a *reference, may be NULL on start, then it is filled 1021 1020 * \param FreeList true - ***ListOfLocalAtoms is free'd before return, false - it is not 1022 1021 * \return true - success, false - faoilure 1023 1022 */ 1024 bool MoleculeLeafClass::FillBondStructureFromReference(const molecule * const reference, int &FragmentCounter, atom ***&ListOfLocalAtoms, bool FreeList)1023 bool MoleculeLeafClass::FillBondStructureFromReference(const molecule * const reference, atom **&ListOfLocalAtoms, bool FreeList) 1025 1024 { 1026 1025 atom *OtherWalker = NULL; … … 1031 1030 DoLog(1) && (Log() << Verbose(1) << "Begin of FillBondStructureFromReference." << endl); 1032 1031 // fill ListOfLocalAtoms if NULL was given 1033 if (!FillListOfLocalAtoms(ListOfLocalAtoms, FragmentCounter,reference->getAtomCount(), FreeList)) {1032 if (!FillListOfLocalAtoms(ListOfLocalAtoms, reference->getAtomCount(), FreeList)) { 1034 1033 DoLog(1) && (Log() << Verbose(1) << "Filling of ListOfLocalAtoms failed." << endl); 1035 1034 return false; … … 1048 1047 AtomNo = Father->nr; // global id of the current walker 1049 1048 for (BondList::const_iterator Runner = Father->ListOfBonds.begin(); Runner != Father->ListOfBonds.end(); (++Runner)) { 1050 OtherWalker = ListOfLocalAtoms[ FragmentCounter][(*Runner)->GetOtherAtom((*iter)->GetTrueFather())->nr]; // local copy of current bond partner of walker1049 OtherWalker = ListOfLocalAtoms[(*Runner)->GetOtherAtom((*iter)->GetTrueFather())->nr]; // local copy of current bond partner of walker 1051 1050 if (OtherWalker != NULL) { 1052 1051 if (OtherWalker->nr > (*iter)->nr) 1053 1052 Leaf->AddBond((*iter), OtherWalker, (*Runner)->BondDegree); 1054 1053 } else { 1055 DoLog(1) && (Log() << Verbose(1) << "OtherWalker = ListOfLocalAtoms[" << FragmentCounter << "][" <<(*Runner)->GetOtherAtom((*iter)->GetTrueFather())->nr << "] is NULL!" << endl);1054 DoLog(1) && (Log() << Verbose(1) << "OtherWalker = ListOfLocalAtoms[" << (*Runner)->GetOtherAtom((*iter)->GetTrueFather())->nr << "] is NULL!" << endl); 1056 1055 status = false; 1057 1056 } … … 1062 1061 if ((FreeList) && (ListOfLocalAtoms != NULL)) { 1063 1062 // free the index lookup list 1064 delete[](ListOfLocalAtoms[FragmentCounter]); 1065 if (FragmentCounter == 0) // first fragments frees the initial pointer to list 1066 delete[](ListOfLocalAtoms); 1063 delete[](ListOfLocalAtoms); 1067 1064 } 1068 1065 DoLog(1) && (Log() << Verbose(1) << "End of FillBondStructureFromReference." << endl); … … 1110 1107 /** Fills a lookup list of father's Atom::nr -> atom for each subgraph. 1111 1108 * \param *out output stream from debugging 1112 * \param ***ListOfLocalAtoms Lookup table for each subgraph and index of each atom in global molecule, may be NULL on start, then it is filled 1113 * \param FragmentCounter counts the fragments as we move along the list 1109 * \param **&ListOfLocalAtoms Lookup table for each subgraph and index of each atom in global molecule, may be NULL on start, then it is filled 1114 1110 * \param GlobalAtomCount number of atoms in the complete molecule 1115 1111 * \param &FreeList true - ***ListOfLocalAtoms is free'd before return, false - it is not 1116 * \return true - success, false - failure 1117 */ 1118 bool MoleculeLeafClass::FillListOfLocalAtoms(atom ** *&ListOfLocalAtoms, const int FragmentCounter, const int GlobalAtomCount, bool &FreeList)1112 * \return true - success, false - failure (ListOfLocalAtoms != NULL) 1113 */ 1114 bool MoleculeLeafClass::FillListOfLocalAtoms(atom **&ListOfLocalAtoms, const int GlobalAtomCount, bool &FreeList) 1119 1115 { 1120 1116 bool status = true; 1121 1117 1122 if (ListOfLocalAtoms == NULL) { // allocated initial pointer 1123 // allocate and set each field to NULL 1124 const int Counter = Count(); 1125 ASSERT(FragmentCounter < Counter, "FillListOfLocalAtoms: FragmenCounter greater than present fragments."); 1126 ListOfLocalAtoms = new atom**[Counter]; 1127 if (ListOfLocalAtoms == NULL) { 1128 FreeList = FreeList && false; 1129 status = false; 1130 } 1131 for (int i=0;i<Counter;i++) 1132 ListOfLocalAtoms[i] = NULL; 1133 } 1134 1135 if ((ListOfLocalAtoms != NULL) && (ListOfLocalAtoms[FragmentCounter] == NULL)) { // allocate and fill list of this fragment/subgraph 1136 status = status && Leaf->CreateFatherLookupTable(ListOfLocalAtoms[FragmentCounter], GlobalAtomCount); 1118 if (ListOfLocalAtoms == NULL) { // allocate and fill list of this fragment/subgraph 1119 status = status && Leaf->CreateFatherLookupTable(ListOfLocalAtoms, GlobalAtomCount); 1137 1120 FreeList = FreeList && true; 1138 } 1121 } else 1122 return false; 1139 1123 1140 1124 return status; … … 1158 1142 DoLog(1) && (Log() << Verbose(1) << "Begin of AssignKeySetsToFragment." << endl); 1159 1143 // fill ListOfLocalAtoms if NULL was given 1160 if (!FillListOfLocalAtoms(ListOfLocalAtoms , FragmentCounter, reference->getAtomCount(), FreeList)) {1144 if (!FillListOfLocalAtoms(ListOfLocalAtoms[FragmentCounter], reference->getAtomCount(), FreeList)) { 1161 1145 DoLog(1) && (Log() << Verbose(1) << "Filling of ListOfLocalAtoms failed." << endl); 1162 1146 return false; … … 1203 1187 // free the index lookup list 1204 1188 delete[](ListOfLocalAtoms[FragmentCounter]); 1205 if (FragmentCounter == 0) // first fragments frees the initial pointer to list1206 delete[](ListOfLocalAtoms);1207 1189 } 1208 1190 DoLog(1) && (Log() << Verbose(1) << "End of AssignKeySetsToFragment." << endl);
Note:
See TracChangeset
for help on using the changeset viewer.