Changeset 35b698 for src/moleculelist.cpp
- Timestamp:
- Jun 23, 2010, 3:52:50 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:
- d0fbec
- Parents:
- dc0d21
- git-author:
- Frederik Heber <heber@…> (06/23/10 15:20:35)
- git-committer:
- Frederik Heber <heber@…> (06/23/10 15:52:50)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/moleculelist.cpp
rdc0d21 r35b698 380 380 * bonded to the same atom, then we add for this pair a correction term constructed from a Morse 381 381 * potential function fit to QM calculations with respecting to the interatomic hydrogen distance. 382 * \param *out output stream for debugging 383 * \param *path path to file 384 */ 385 bool MoleculeListClass::AddHydrogenCorrection(char *path) 382 * \param &path path to file 383 */ 384 bool MoleculeListClass::AddHydrogenCorrection(std::string &path) 386 385 { 387 386 bond *Binder = NULL; … … 401 400 // 0a. find dimension of matrices with constants 402 401 line = path; 403 line.append("/");404 line += FRAGMENTPREFIX;405 402 line += "1"; 406 403 line += FITCONSTANTSUFFIX; 407 404 input.open(line.c_str()); 408 if (input == NULL) {405 if (input.fail()) { 409 406 DoLog(1) && (Log() << Verbose(1) << endl << "Unable to open " << line << ", is the directory correct?" << endl); 410 407 return false; … … 570 567 571 568 /** Store force indices, i.e. the connection between the nuclear index in the total molecule config and the respective atom in fragment config. 572 * \param *out output stream for debugging 573 * \param *path path to file 569 * \param &path path to file 574 570 * \param *SortIndex Index to map from the BFS labeling to the sequence how of Ion_Type in the config 575 571 * \return true - file written successfully, false - writing failed 576 572 */ 577 bool MoleculeListClass::StoreForcesFile(char *path, 578 int *SortIndex) 573 bool MoleculeListClass::StoreForcesFile(std::string &path, int *SortIndex) 579 574 { 580 575 bool status = true; 581 ofstream ForcesFile; 582 stringstream line; 576 string filename(path); 577 filename += FORCESFILE; 578 ofstream ForcesFile(filename.c_str()); 583 579 periodentafel *periode=World::getInstance().getPeriode(); 584 580 585 581 // open file for the force factors 586 582 DoLog(1) && (Log() << Verbose(1) << "Saving force factors ... "); 587 line << path << "/" << FRAGMENTPREFIX << FORCESFILE; 588 ForcesFile.open(line.str().c_str(), ios::out); 589 if (ForcesFile != NULL) { 583 if (!ForcesFile.fail()) { 590 584 //Log() << Verbose(1) << "Final AtomicForcesList: "; 591 585 //output << prefix << "Forces" << endl; … … 612 606 } else { 613 607 status = false; 614 DoLog(1) && (Log() << Verbose(1) << "failed to open file " << line.str()<< "." << endl);608 DoLog(1) && (Log() << Verbose(1) << "failed to open file " << filename << "." << endl); 615 609 } 616 610 ForcesFile.close(); … … 621 615 /** Writes a config file for each molecule in the given \a **FragmentList. 622 616 * \param *out output stream for debugging 623 * \param *configuration standard configuration to attach atoms in fragment molecule to.617 * \param &prefix path and prefix to the fragment config files 624 618 * \param *SortIndex Index to map from the BFS labeling to the sequence how of Ion_Type in the config 625 619 * \return true - success (each file was written), false - something went wrong. 626 620 */ 627 bool MoleculeListClass::OutputConfigForListOfFragments( config *configuration, int *SortIndex)621 bool MoleculeListClass::OutputConfigForListOfFragments(std::string &prefix, int *SortIndex) 628 622 { 629 623 ofstream outputFragment; 630 char FragmentName[MAXSTRINGSIZE];624 std::string FragmentName; 631 625 char PathBackup[MAXSTRINGSIZE]; 632 626 bool result = true; … … 646 640 for (MoleculeList::iterator ListRunner = ListOfMolecules.begin(); ListRunner != ListOfMolecules.end(); ListRunner++) { 647 641 // save default path as it is changed for each fragment 648 path = configuration->GetDefaultPath();642 path = World::getInstance().getConfig()->GetDefaultPath(); 649 643 if (path != NULL) 650 644 strcpy(PathBackup, path); … … 659 653 // output xyz file 660 654 FragmentNumber = FixedDigitNumber(ListOfMolecules.size(), FragmentCounter++); 661 sprintf(FragmentName, "%s/%s%s.conf.xyz", configuration->configpath, FRAGMENTPREFIX, FragmentNumber);662 outputFragment.open(FragmentName , ios::out);655 FragmentName = prefix + FragmentNumber + ".conf.xyz"; 656 outputFragment.open(FragmentName.c_str(), ios::out); 663 657 DoLog(2) && (Log() << Verbose(2) << "Saving bond fragment No. " << FragmentNumber << "/" << FragmentCounter - 1 << " as XYZ ..."); 664 658 if ((intermediateResult = (*ListRunner)->OutputXYZ(&outputFragment))) … … 683 677 for (int k = 0; k < NDIM; k++) { 684 678 j += k + 1; 685 BoxDimension[k] = 2.5 * ( configuration->GetIsAngstroem() ? 1. : 1. / AtomicLengthToAngstroem);679 BoxDimension[k] = 2.5 * (World::getInstance().getConfig()->GetIsAngstroem() ? 1. : 1. / AtomicLengthToAngstroem); 686 680 cell_size[j] = BoxDimension[k] * 2.; 687 681 } … … 690 684 // also calculate necessary orbitals 691 685 (*ListRunner)->CountElements(); // this is a bugfix, atoms should shoulds actually be added correctly to this fragment 692 (*ListRunner)->CalculateOrbitals(*configuration);686 //(*ListRunner)->CalculateOrbitals(*World::getInstance().getConfig); 693 687 694 688 // change path in config 695 //strcpy(PathBackup, configuration->configpath); 696 sprintf(FragmentName, "%s/%s%s/", PathBackup, FRAGMENTPREFIX, FragmentNumber); 697 configuration->SetDefaultPath(FragmentName); 689 FragmentName = PathBackup; 690 FragmentName += "/"; 691 FragmentName += FRAGMENTPREFIX; 692 FragmentName += FragmentNumber; 693 FragmentName += "/"; 694 World::getInstance().getConfig()->SetDefaultPath(FragmentName.c_str()); 698 695 699 696 // and save as config 700 sprintf(FragmentName, "%s/%s%s.conf", configuration->configpath, FRAGMENTPREFIX, FragmentNumber);697 FragmentName = prefix + FragmentNumber + ".conf"; 701 698 DoLog(2) && (Log() << Verbose(2) << "Saving bond fragment No. " << FragmentNumber << "/" << FragmentCounter - 1 << " as config ..."); 702 if ((intermediateResult = configuration->Save(FragmentName, (*ListRunner)->elemente, (*ListRunner))))699 if ((intermediateResult = World::getInstance().getConfig()->Save(FragmentName.c_str(), (*ListRunner)->elemente, (*ListRunner)))) 703 700 DoLog(0) && (Log() << Verbose(0) << " done." << endl); 704 701 else … … 707 704 708 705 // restore old config 709 configuration->SetDefaultPath(PathBackup);706 World::getInstance().getConfig()->SetDefaultPath(PathBackup); 710 707 711 708 // and save as mpqc input file 712 sprintf(FragmentName, "%s/%s%s.conf", configuration->configpath, FRAGMENTPREFIX, FragmentNumber);709 FragmentName = prefix + FragmentNumber + ".conf"; 713 710 DoLog(2) && (Log() << Verbose(2) << "Saving bond fragment No. " << FragmentNumber << "/" << FragmentCounter - 1 << " as mpqc input ..."); 714 if ((intermediateResult = configuration->SaveMPQC(FragmentName, (*ListRunner))))711 if ((intermediateResult = World::getInstance().getConfig()->SaveMPQC(FragmentName.c_str(), (*ListRunner)))) 715 712 DoLog(2) && (Log() << Verbose(2) << " done." << endl); 716 713 else … … 768 765 769 766 // 1. dissect the molecule into connected subgraphs 770 if (!configuration->BG->ConstructBondGraph(mol)) { 771 World::getInstance().destroyMolecule(mol); 772 DoeLog(1) && (eLog()<< Verbose(1) << "There are no bonds." << endl); 767 if (configuration->BG != NULL) { 768 if (!configuration->BG->ConstructBondGraph(mol)) { 769 World::getInstance().destroyMolecule(mol); 770 DoeLog(1) && (eLog()<< Verbose(1) << "There are no bonds." << endl); 771 return; 772 } 773 } else { 774 DoeLog(1) && (eLog()<< Verbose(1) << "There is no BondGraph class present to create bonds." << endl); 773 775 return; 774 776 }
Note:
See TracChangeset
for help on using the changeset viewer.