Changeset babcc1
- Timestamp:
- Oct 26, 2011, 12:43:16 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, 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:
- 99b0dc
- Parents:
- 091838
- git-author:
- Frederik Heber <heber@…> (10/20/11 23:12:48)
- git-committer:
- Frederik Heber <heber@…> (10/26/11 12:43:16)
- Location:
- src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Fragmentation.cpp
r091838 rbabcc1 39 39 #include "MoleculeLeafClass.hpp" 40 40 #include "MoleculeListClass.hpp" 41 #include "Parser/ParserTypes.hpp" 41 42 #include "World.hpp" 42 43 … … 215 216 216 217 DoLog(1) && (Log() << Verbose(1) << "Writing " << BondFragments->ListOfMolecules.size() << " possible bond fragmentation configs" << endl); 217 if (BondFragments->OutputConfigForListOfFragments(prefix, SortIndex)) 218 if ((BondFragments->OutputConfigForListOfFragments(prefix, SortIndex, xyz)) 219 && (BondFragments->OutputConfigForListOfFragments(prefix, SortIndex, mpqc)) 220 && (BondFragments->OutputConfigForListOfFragments(prefix, SortIndex, pcp))) 218 221 DoLog(1) && (Log() << Verbose(1) << "All configs written." << endl); 219 222 else -
src/MoleculeListClass.hpp
r091838 rbabcc1 20 20 #include "CodePatterns/ObservedIterator.hpp" 21 21 #include "CodePatterns/Cacheable.hpp" 22 23 #include "Parser/ParserTypes.hpp" 22 24 23 25 class molecule; … … 45 47 void erase(molecule *mol); 46 48 molecule * ReturnIndex(int index); 47 bool OutputConfigForListOfFragments(std::string &prefix, int *SortIndex );49 bool OutputConfigForListOfFragments(std::string &prefix, int *SortIndex, ParserTypes type); 48 50 int NumberOfActiveMolecules(); 49 51 void Enumerate(std::ostream *out); -
src/Parser/FormatParserStorage.cpp
r091838 rbabcc1 41 41 #include "CodePatterns/Singleton_impl.hpp" 42 42 43 const std::string FormatParserStorage::unknownTypeString("unknown"); 43 44 44 45 /** Constructor of class FormatParserStorage. … … 195 196 } else 196 197 return ParserLookupSuffixes[type]; 198 } 199 200 const std::string &FormatParserStorage::getNameFromType(ParserTypes type) 201 { 202 if (ParserNames.find(type) == ParserNames.end()) { 203 DoeLog(1) && (eLog() << Verbose(1) << "Unknown type " << type << "." << endl); 204 return unknownTypeString; 205 } else 206 return ParserNames[type]; 207 } 208 209 const std::string &FormatParserStorage::getSuffixFromType(ParserTypes type) 210 { 211 if (ParserSuffixes.find(type) == ParserSuffixes.end()) { 212 DoeLog(1) && (eLog() << Verbose(1) << "Unknown type " << type << "." << endl); 213 return unknownTypeString; 214 } else 215 return ParserSuffixes[type]; 197 216 } 198 217 -
src/Parser/FormatParserStorage.hpp
r091838 rbabcc1 50 50 ParserTypes getTypeFromSuffix(std::string type); 51 51 52 const std::string &getSuffixFromType(ParserTypes type); 53 const std::string &getNameFromType(ParserTypes type); 54 52 55 void SetOutputPrefixForAll(std::string &_prefix); 53 56 void SaveAll(); … … 84 87 std::string prefix; 85 88 89 static const std::string unknownTypeString; 90 86 91 public: 87 92 template<ParserTypes Ptype> void addParser() -
src/moleculelist.cpp
r091838 rbabcc1 514 514 * \param &prefix path and prefix to the fragment config files 515 515 * \param *SortIndex Index to map from the BFS labeling to the sequence how of Ion_Type in the config 516 * \param type desired type to store 516 517 * \return true - success (each file was written), false - something went wrong. 517 518 */ 518 bool MoleculeListClass::OutputConfigForListOfFragments(std::string &prefix, int *SortIndex )519 bool MoleculeListClass::OutputConfigForListOfFragments(std::string &prefix, int *SortIndex, ParserTypes type) 519 520 { 520 521 ofstream outputFragment; … … 534 535 // store the fragments as config and as xyz 535 536 for (MoleculeList::iterator ListRunner = ListOfMolecules.begin(); ListRunner != ListOfMolecules.end(); ListRunner++) { 536 // save default path as it is changed for each fragment537 path = World::getInstance().getConfig()->GetDefaultPath();538 if (path != NULL)539 strcpy(PathBackup, path);540 else {541 ELOG(0, "OutputConfigForListOfFragments: NULL default path obtained from config!");542 performCriticalExit();543 }544 545 537 // correct periodic 546 538 if ((*ListRunner)->ScanForPeriodicCorrection()) { … … 559 551 560 552 { 561 // output xyz file 553 // center on edge 554 (*ListRunner)->CenterEdge(&BoxDimension); 555 for (int k = 0; k < NDIM; k++) // if one edge is to small, set at least to 1 angstroem 556 if (BoxDimension[k] < 1.) 557 BoxDimension[k] += 1.; 558 (*ListRunner)->SetBoxDimension(&BoxDimension); // update Box of atoms by boundary 559 for (int k = 0; k < NDIM; k++) { 560 BoxDimension[k] = 2.5 * (World::getInstance().getConfig()->GetIsAngstroem() ? 1. : 1. / AtomicLengthToAngstroem); 561 cell_size.at(k,k) = BoxDimension[k] * 2.; 562 } 563 World::getInstance().setDomain(cell_size); 564 (*ListRunner)->Translate(&BoxDimension); 565 566 // output file 567 std::vector<atom *> atoms; 568 for (molecule::const_iterator iter = (*ListRunner)->begin(); iter != (*ListRunner)->end(); ++iter) { 569 atoms.push_back(*iter); 570 } 562 571 FragmentNumber = FixedDigitNumber(ListOfMolecules.size(), FragmentCounter++); 563 FragmentName = prefix + FragmentNumber + ". conf.xyz";572 FragmentName = prefix + FragmentNumber + "." + FormatParserStorage::getInstance().getSuffixFromType(type); 564 573 outputFragment.open(FragmentName.c_str(), ios::out); 565 574 std::stringstream output; 566 575 output << "Saving bond fragment No. " << FragmentNumber << "/" << FragmentCounter - 1 << " as XYZ ... "; 567 if ((intermediateResult = (*ListRunner)->OutputXYZ(&outputFragment))) 576 if ((intermediateResult = FormatParserStorage::getInstance().save( 577 outputFragment, 578 FormatParserStorage::getInstance().getSuffixFromType(type), 579 atoms))) 568 580 output << " done."; 569 581 else 570 582 output << " failed."; 571 583 LOG(3, output.str()); 584 delete[](FragmentNumber); 585 572 586 result = result && intermediateResult; 573 587 outputFragment.close(); 574 588 outputFragment.clear(); 575 589 } 576 577 // center on edge578 (*ListRunner)->CenterEdge(&BoxDimension);579 for (int k = 0; k < NDIM; k++) // if one edge is to small, set at least to 1 angstroem580 if (BoxDimension[k] < 1.)581 BoxDimension[k] += 1.;582 (*ListRunner)->SetBoxDimension(&BoxDimension); // update Box of atoms by boundary583 for (int k = 0; k < NDIM; k++) {584 BoxDimension[k] = 2.5 * (World::getInstance().getConfig()->GetIsAngstroem() ? 1. : 1. / AtomicLengthToAngstroem);585 cell_size.at(k,k) = BoxDimension[k] * 2.;586 }587 World::getInstance().setDomain(cell_size);588 (*ListRunner)->Translate(&BoxDimension);589 590 // change path in config591 FragmentName = PathBackup;592 FragmentName += "/";593 FragmentName += FRAGMENTPREFIX;594 FragmentName += FragmentNumber;595 FragmentName += "/";596 World::getInstance().getConfig()->SetDefaultPath(FragmentName.c_str());597 598 {599 // and save as config600 FragmentName = prefix + FragmentNumber + ".conf";601 std::stringstream output;602 output << "Saving bond fragment No. " << FragmentNumber << "/" << FragmentCounter - 1 << " as config ... ";603 if ((intermediateResult = World::getInstance().getConfig()->Save(FragmentName.c_str(), (*ListRunner)->elemente, (*ListRunner))))604 output << " done.";605 else606 output << " failed.";607 LOG(3, output.str());608 result = result && intermediateResult;609 }610 611 // restore old config612 World::getInstance().getConfig()->SetDefaultPath(PathBackup);613 614 {615 // and save as mpqc input file616 stringstream output;617 FragmentName = prefix + FragmentNumber + ".conf.in";618 output << "Saving bond fragment No. " << FragmentNumber << "/" << FragmentCounter - 1 << " as mpqc input ... ";619 std::ofstream outfile(FragmentName.c_str());620 std::vector<atom *> atoms;621 for (molecule::const_iterator iter = (*ListRunner)->begin(); iter != (*ListRunner)->end(); ++iter)622 atoms.push_back(*iter);623 // atoms.resize((*ListRunner)->getAtomCount());624 // std::copy((*ListRunner)->begin(), (*ListRunner)->end(), atoms.begin());625 FormatParserStorage::getInstance().get(mpqc).save(&outfile, atoms);626 // if ((intermediateResult = World::getInstance().getConfig()->SaveMPQC(FragmentName.c_str(), (*ListRunner))))627 output << " done.";628 // else629 // output << " failed.";630 LOG(3, output.str());631 }632 633 result = result && intermediateResult;634 //outputFragment.close();635 //outputFragment.clear();636 delete[](FragmentNumber);637 590 } 638 591 LOG(0, "STATUS: done.");
Note:
See TracChangeset
for help on using the changeset viewer.