Changeset 683914


Ignore:
Timestamp:
Jul 28, 2008, 2:41:22 PM (16 years ago)
Author:
Frederik Heber <heber@…>
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:
41baaf
Parents:
87e2735
Message:

CyclicStructureAnalysis: BUGFIX - MinimumRingSize of non-loop atoms was wrong

  • new bool atom:IsCyclic states whether atoms is part of a cycle or not, this is set in CyclicStructureAnalysis()
  • MinimumRingSize was set to MinimumRingSize plus ShortestPath thereto. This gives correct results only if this goes to a loop-member. However the if-condition was phrased in such a manner, that it became possible that non-loop members (with MinimumRingSize set below AtomCount) would now also be regarded als loop members. This is sort of a triangle inequality problem :), path of A to B plus path from B to C is probably not the same as path from A to C in terms of length
Location:
src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/atom.cpp

    r87e2735 r683914  
    2424  GraphNr = -1;
    2525  ComponentNr = NULL;
     26  IsCyclic = false;
    2627  SeparationVertex = false;
    2728  LowpointNr = -1;
  • src/molecules.cpp

    r87e2735 r683914  
    18781878      NumCycles++;
    18791879      RingSize = 1;
    1880       Walker = Root;
     1880      Root->GetTrueFather()->IsCyclic = true;
    18811881      *out << Verbose(1) << "Found ring contains: ";
    18821882      while (Walker != BackEdge->rightatom) {
    18831883        *out << Walker->Name << " <-> ";
    18841884        Walker = PredecessorList[Walker->nr];
     1885        Walker->GetTrueFather()->IsCyclic = true;
    18851886        RingSize++;
    18861887      }
     
    19361937                ShortestPathList[OtherAtom->nr] = ShortestPathList[Walker->nr]+1;
    19371938                //*out << Verbose(2) << "Coloring OtherAtom " << OtherAtom->Name << " lightgray, its predecessor is " << Walker->Name << " and its Shortest Path is " << ShortestPathList[OtherAtom->nr] << " egde(s) long." << endl;
    1938                 if (MinimumRingSize[OtherAtom->GetTrueFather()->nr] != AtomCount) { // if the other atom is connected to a ring
     1939                if (OtherAtom->GetTrueFather()->IsCyclic) { // if the other atom is connected to a ring
    19391940                  MinimumRingSize[Root->GetTrueFather()->nr] = ShortestPathList[OtherAtom->nr]+MinimumRingSize[OtherAtom->GetTrueFather()->nr];
    19401941                  OtherAtom = NULL; //break;
  • src/molecules.hpp

    r87e2735 r683914  
    100100    int *ComponentNr;//!< belongs to this nonseparable components, given in DepthFirstSearchAnalysis() (if more than one, then is SeparationVertex)
    101101    int LowpointNr; //!< needed in DepthFirstSearchAnalysis() to detect nonseparable components, is the lowest possible number of an atom to reach via tree edges only followed by at most one back edge.
    102     bool SeparationVertex; //!< whether this atom separates off subsets of atoms or not, given in DepthFirstSearchAnalysis()
     102    bool SeparationVertex; //!< whether this atom separates off subsets of atoms or not, determined in DepthFirstSearchAnalysis()
     103    bool IsCyclic;        //!< whether atom belong to as cycle or not, determined in DepthFirstSearchAnalysis()
    103104    unsigned char AdaptiveOrder;  //!< current present bond order at site (0 means "not set")
    104105 
Note: See TracChangeset for help on using the changeset viewer.