Changeset e08c46 for src/molecule.cpp
- Timestamp:
- May 31, 2010, 6:41:12 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:
- 1b9321
- Parents:
- 1024cb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/molecule.cpp
r1024cb re08c46 36 36 */ 37 37 molecule::molecule(const periodentafel * const teil) : elemente(teil), 38 first(new bond(0, 0, 1, -1)), last(new bond(0, 0, 1, -1)),MDSteps(0),38 MDSteps(0), 39 39 BondCount(0), ElementCount(0), NoNonHydrogen(0), NoNonBonds(0), NoCyclicBonds(0), BondDistance(0.), 40 40 ActiveFlag(false), IndexNr(-1), … … 42 42 AtomCount(this,boost::bind(&molecule::doCountAtoms,this)), last_atom(0), InternalPointer(begin()) 43 43 { 44 // init bond chain list45 link(first,last);46 44 47 45 // other stuff … … 61 59 { 62 60 CleanupMolecule(); 63 delete(first);64 delete(last);65 61 }; 66 62 … … 607 603 608 604 // copy all bonds 609 bond *Binder = first;605 bond *Binder = NULL; 610 606 bond *NewBond = NULL; 611 while(Binder->next != last) { 612 Binder = Binder->next; 613 614 // get the pendant atoms of current bond in the copy molecule 615 copy->ActOnAllAtoms( &atom::EqualsFather, (const atom *)Binder->leftatom, (const atom **)&LeftAtom ); 616 copy->ActOnAllAtoms( &atom::EqualsFather, (const atom *)Binder->rightatom, (const atom **)&RightAtom ); 617 618 NewBond = copy->AddBond(LeftAtom, RightAtom, Binder->BondDegree); 619 NewBond->Cyclic = Binder->Cyclic; 620 if (Binder->Cyclic) 621 copy->NoCyclicBonds++; 622 NewBond->Type = Binder->Type; 623 } 607 for(molecule::iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner) 608 for(BondList::iterator BondRunner = (*AtomRunner)->ListOfBonds.begin(); !(*AtomRunner)->ListOfBonds.empty(); BondRunner = (*AtomRunner)->ListOfBonds.begin()) 609 if ((*BondRunner)->leftatom == *AtomRunner) { 610 Binder = (*BondRunner); 611 612 // get the pendant atoms of current bond in the copy molecule 613 copy->ActOnAllAtoms( &atom::EqualsFather, (const atom *)Binder->leftatom, (const atom **)&LeftAtom ); 614 copy->ActOnAllAtoms( &atom::EqualsFather, (const atom *)Binder->rightatom, (const atom **)&RightAtom ); 615 616 NewBond = copy->AddBond(LeftAtom, RightAtom, Binder->BondDegree); 617 NewBond->Cyclic = Binder->Cyclic; 618 if (Binder->Cyclic) 619 copy->NoCyclicBonds++; 620 NewBond->Type = Binder->Type; 621 } 624 622 // correct fathers 625 623 ActOnAllAtoms( &atom::CorrectFather ); … … 627 625 // copy values 628 626 copy->CountElements(); 629 if ( first->next != last) { // if adjaceny list is present627 if (hasBondStructure()) { // if adjaceny list is present 630 628 copy->BondDistance = BondDistance; 631 629 } … … 672 670 if ((atom1->type != NULL) && (atom1->type->Z != 1) && (atom2->type != NULL) && (atom2->type->Z != 1)) 673 671 NoNonBonds++; 674 add(Binder, last);675 672 676 673 return Binder; … … 685 682 { 686 683 //DoeLog(1) && (eLog()<< Verbose(1) << "molecule::RemoveBond: Function not implemented yet." << endl); 687 pointer->leftatom->RegisterBond(pointer); 688 pointer->rightatom->RegisterBond(pointer); 689 removewithoutcheck(pointer); 684 delete(pointer); 690 685 return true; 691 686 }; … … 785 780 for (molecule::iterator iter = begin(); !empty(); iter = begin()) 786 781 erase(iter); 787 return (cleanup(first,last));788 782 }; 789 783
Note:
See TracChangeset
for help on using the changeset viewer.