Changeset d760bb for src/Fragmentation/Fragmentation.cpp
- Timestamp:
- Feb 24, 2013, 12:59:18 PM (13 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, Candidate_v1.7.0, 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:
- c91572
- Parents:
- b6b5b8
- git-author:
- Frederik Heber <heber@…> (02/19/13 12:42:38)
- git-committer:
- Frederik Heber <heber@…> (02/24/13 12:59:18)
- File:
-
- 1 edited
-
src/Fragmentation/Fragmentation.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Fragmentation.cpp
rb6b5b8 rd760bb 200 200 { 201 201 Info FunctionInfo(__func__); 202 Graph ***FragmentLowerOrdersList = NULL;202 std::vector<Graph*> *FragmentLowerOrdersList = NULL; 203 203 int NumLevels = 0; 204 204 int NumMolecules = 0; … … 210 210 int RootKeyNr = 0; 211 211 int RootNr = 0; 212 UniqueFragments FragmentSearch;213 212 214 213 // FragmentLowerOrdersList is a 2D-array of pointer to MoleculeListClass objects, one dimension represents the ANOVA expansion of a single order (i.e. 5) 215 214 // with all needed lower orders that are subtracted, the other dimension is the BondOrder (i.e. from 1 to 5) 216 215 NumMoleculesOfOrder = new int[UpgradeCount]; 217 FragmentLowerOrdersList = new Graph**[UpgradeCount];218 219 for(int i=0;i<UpgradeCount;i++) {216 FragmentLowerOrdersList = new std::vector<Graph*>[UpgradeCount]; 217 218 for(int i=0;i<UpgradeCount;i++) 220 219 NumMoleculesOfOrder[i] = 0; 221 FragmentLowerOrdersList[i] = NULL;222 }223 224 FragmentSearch.Init(mol->FindAtom(RootKeyNr));225 220 226 221 // Construct the complete KeySet which we need for topmost level only (but for all Roots) … … 244 239 //} else 245 240 { 246 // increase adaptive order by one247 Walker->GetTrueFather()->AdaptiveOrder ++;241 // set adaptive order to desired max order 242 Walker->GetTrueFather()->AdaptiveOrder = Walker->GetTrueFather()->MaxOrder; 248 243 Order = Walker->AdaptiveOrder = Walker->GetTrueFather()->AdaptiveOrder; 249 244 245 // allocate memory for all lower level orders 246 NumLevels = Order; 247 FragmentLowerOrdersList[RootNr].resize(NumLevels, NULL); 248 for( size_t i=0;i<NumLevels;++i) 249 FragmentLowerOrdersList[RootNr][i] = new Graph; 250 250 251 // initialise Order-dependent entries of UniqueFragments structure 251 class PowerSetGenerator PSG(&FragmentSearch, Walker->AdaptiveOrder); 252 253 // allocate memory for all lower level orders in this 1D-array of ptrs 254 NumLevels = 1 << (Order-1); // (int)pow(2,Order); 255 FragmentLowerOrdersList[RootNr] = new Graph*[NumLevels]; 256 for (int i=0;i<NumLevels;i++) 257 FragmentLowerOrdersList[RootNr][i] = NULL; 252 UniqueFragments FragmentSearch(1., FragmentLowerOrdersList[RootNr], Walker); 253 PowerSetGenerator PSG(&FragmentSearch, Walker->AdaptiveOrder); 258 254 259 255 // create top order where nothing is reduced 260 256 LOG(0, "=============================================================================================================="); 261 LOG(0, "Creating KeySets ofBond Order " << Order << " for " << *Walker << ", " << (RootStack.size()-RootNr) << " Roots remaining."); // , NumLevels is " << NumLevels << "257 LOG(0, "Creating KeySets up till Bond Order " << Order << " for " << *Walker << ", " << (RootStack.size()-RootNr) << " Roots remaining."); // , NumLevels is " << NumLevels << " 262 258 263 259 // Create list of Graphs of current Bond Order (i.e. F_{ij}) 264 FragmentLowerOrdersList[RootNr][0] = new Graph;265 FragmentSearch.PrepareForPowersetGeneration(1., FragmentLowerOrdersList[RootNr][0], Walker);266 260 NumMoleculesOfOrder[RootNr] = PSG(CompleteMolecule, saturation); 267 261 … … 270 264 if (NumMoleculesOfOrder[RootNr] != 0) { 271 265 NumMolecules = 0; 272 } else {273 Walker->GetTrueFather()->MaxOrder = true;274 266 } 275 267 // now, we have completely filled each cell of FragmentLowerOrdersList[] for the current Walker->AdaptiveOrder … … 284 276 LOG(1, "Total number of resulting molecules is: " << TotalNumMolecules << "."); 285 277 LOG(0, "=============================================================================================================="); 286 287 // cleanup FragmentSearch structure288 FragmentSearch.Cleanup();289 278 290 279 // now, FragmentLowerOrdersList is complete, it looks - for BondOrder 5 - as this (number is the ANOVA Order of the terms therein) … … 362 351 delete[](IndexKeySetList); 363 352 } else { // global increase of Bond Order 364 for(molecule:: const_iterator iter = mol->begin(); iter != mol->end(); ++iter) {353 for(molecule::iterator iter = mol->begin(); iter != mol->end(); ++iter) { 365 354 if (AtomMask.isTrue((*iter)->getNr())) { // skip masked out 355 (*iter)->MaxOrder = (Order != 0 ? Order : (*iter)->MaxOrder+1); 366 356 // remove all that have reached desired order 367 if (( Order != 0) && ((*iter)->AdaptiveOrder >= Order)) // && ((*iter)->AdaptiveOrder < MinimumRingSize[(*iter)->getNr()]))357 if ((*iter)->AdaptiveOrder >= (*iter)->MaxOrder) // && ((*iter)->AdaptiveOrder < MinimumRingSize[(*iter)->getNr()])) 368 358 AtomMask.setFalse((*iter)->getNr()); 369 359 else … … 450 440 for(molecule::iterator iter=mol->begin();iter!=mol->end();++iter){ 451 441 (*iter)->AdaptiveOrder = OrderArray[(*iter)->getNr()]; 452 (*iter)->MaxOrder = MaxArray.isTrue((*iter)->getNr());442 (*iter)->MaxOrder = OrderArray[(*iter)->getNr()]; //MaxArray.isTrue((*iter)->getNr()); 453 443 } 454 444 //SetAtomValueToIndexedArray( OrderArray, &atom::getNr(), &atom::AdaptiveOrder );
Note:
See TracChangeset
for help on using the changeset viewer.
