Changeset 4d2b33 for src


Ignore:
Timestamp:
Mar 27, 2012, 3:53:35 PM (13 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:
46c832
Parents:
955b91
git-author:
Frederik Heber <heber@…> (03/19/12 16:42:39)
git-committer:
Frederik Heber <heber@…> (03/27/12 15:53:35)
Message:

FIX: molecule does not need a periodentafel.

  • removed periodentafel param from cstor.
  • removed member variable elemente
  • removed AddXyzFile which was sole user of elemente.
  • removed depending functions in MoleculeListClass which were all remnants from old menu interface.
Location:
src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/MoleculeListClass.hpp

    r955b91 r4d2b33  
    5353  int CountAllAtoms() const;
    5454
    55   // Methods moved here from the menus
    56   // TODO: more refactoring needed on these methods
    57   void createNewMolecule(periodentafel *periode);
    58   void loadFromXYZ(periodentafel *periode);
    59   void setMoleculeFilename();
    60   void parseXYZIntoMolecule();
    61   void eraseMolecule();
    62 
    6355private:
    6456  World *world; //!< The world this List belongs to. Needed to avoid deadlocks in the destructor
  • src/molecule.cpp

    r955b91 r4d2b33  
    3636#include "Descriptors/AtomIdDescriptor.hpp"
    3737#include "Element/element.hpp"
    38 #include "Element/periodentafel.hpp"
    3938#include "Graph/BondGraph.hpp"
    4039#include "LinearAlgebra/Exceptions.hpp"
     
    5554 * Initialises molecule list with correctly referenced start and end, and sets molecule::last_atom to zero.
    5655 */
    57 molecule::molecule(const periodentafel * const teil) :
     56molecule::molecule() :
    5857  Observable("molecule"),
    59   elemente(teil),
    6058  MDSteps(0),
    6159  NoNonHydrogen(0),
     
    7472
    7573molecule *NewMolecule(){
    76   return new molecule(World::getInstance().getPeriode());
     74  return new molecule();
    7775}
    7876
     
    590588};
    591589
    592 /** Adds given atom \a *pointer from molecule list.
    593  * Increases molecule::last_atom and gives last number to added atom.
    594  * \param filename name and path of xyz file
    595  * \return true - succeeded, false - file not found
    596  */
    597 bool molecule::AddXYZFile(std::string filename)
    598 {
    599 
    600   istringstream *input = NULL;
    601   int NumberOfAtoms = 0; // atom number in xyz read
    602   int i; // loop variables
    603   atom *Walker = NULL;  // pointer to added atom
    604   char shorthand[3];  // shorthand for atom name
    605   ifstream xyzfile;   // xyz file
    606   string line;    // currently parsed line
    607   double x[3];    // atom coordinates
    608 
    609   xyzfile.open(filename.c_str());
    610   if (!xyzfile)
    611     return false;
    612 
    613   OBSERVE;
    614   getline(xyzfile,line,'\n'); // Read numer of atoms in file
    615   input = new istringstream(line);
    616   *input >> NumberOfAtoms;
    617   LOG(0, "Parsing " << NumberOfAtoms << " atoms in file.");
    618   getline(xyzfile,line,'\n'); // Read comment
    619   LOG(1, "Comment: " << line);
    620 
    621   if (MDSteps == 0) // no atoms yet present
    622     MDSteps++;
    623   for(i=0;i<NumberOfAtoms;i++){
    624     Walker = World::getInstance().createAtom();
    625     getline(xyzfile,line,'\n');
    626     istringstream *item = new istringstream(line);
    627     //istringstream input(line);
    628     //LOG(1, "Reading: " << line);
    629     *item >> shorthand;
    630     *item >> x[0];
    631     *item >> x[1];
    632     *item >> x[2];
    633     Walker->setType(elemente->FindElement(shorthand));
    634     if (Walker->getType() == NULL) {
    635       ELOG(1, "Could not parse the element at line: '" << line << "', setting to H.");
    636       Walker->setType(1);
    637     }
    638 
    639     Walker->setPosition(Vector(x));
    640     Walker->setPositionAtStep(MDSteps-1, Vector(x));
    641     Walker->setAtomicVelocityAtStep(MDSteps-1, zeroVec);
    642     Walker->setAtomicForceAtStep(MDSteps-1, zeroVec);
    643     AddAtom(Walker);  // add to molecule
    644     delete(item);
    645   }
    646   xyzfile.close();
    647   delete(input);
    648   return true;
    649 };
    650 
    651590/** Creates a copy of this molecule.
    652591 * \return copy of molecule
  • src/molecule.hpp

    r955b91 r4d2b33  
    8484  typedef boost::transform_iterator<FromIdToAtom, atomIdSet::const_iterator, const atom *, atomId_t const &> const_iterator;
    8585
    86   const periodentafel * const elemente; //!< periodic table with each element
    8786  int MDSteps; //!< The number of MD steps in Trajectories
    8887  mutable int NoNonHydrogen; //!< number of non-hydrogen atoms in molecule
     
    103102protected:
    104103
    105   molecule(const periodentafel * const teil);
     104  molecule();
    106105  virtual ~molecule();
    107106
     
    188187  /// Add/remove atoms to/from molecule.
    189188  atom * AddCopyAtom(atom *pointer);
    190   bool AddXYZFile(std::string filename);
    191189  bool AddHydrogenReplacementAtom(bond *Bond, atom *BottomOrigin, atom *TopOrigin, atom *TopReplacement, bool IsAngstroem);
    192190  bond * AddBond(atom *first, atom *second, int degree = 1);
  • src/moleculelist.cpp

    r955b91 r4d2b33  
    633633  return AtomNo;
    634634}
    635 
    636 /***********
    637  * Methods Moved here from the menus
    638  */
    639 
    640 void MoleculeListClass::createNewMolecule(periodentafel *periode) {
    641   OBSERVE;
    642   molecule *mol = NULL;
    643   mol = World::getInstance().createMolecule();
    644   insert(mol);
    645 };
    646 
    647 void MoleculeListClass::loadFromXYZ(periodentafel *periode){
    648   molecule *mol = NULL;
    649   Vector center;
    650   char filename[MAXSTRINGSIZE];
    651   std::cout << "Format should be XYZ with: ShorthandOfElement\tX\tY\tZ" << endl;
    652   mol = World::getInstance().createMolecule();
    653   do {
    654     std::cout << "Enter file name: ";
    655     cin >> filename;
    656   } while (!mol->AddXYZFile(filename));
    657   mol->SetNameFromFilename(filename);
    658   // center at set box dimensions
    659   mol->CenterEdge(&center);
    660   RealSpaceMatrix domain;
    661   for(int i =0;i<NDIM;++i)
    662     domain.at(i,i) = center[i];
    663   World::getInstance().setDomain(domain);
    664   insert(mol);
    665 }
    666 
    667 void MoleculeListClass::setMoleculeFilename() {
    668   char filename[MAXSTRINGSIZE];
    669   int nr;
    670   molecule *mol = NULL;
    671   do {
    672     std::cout << "Enter index of molecule: ";
    673     cin >> nr;
    674     mol = ReturnIndex(nr);
    675   } while (mol == NULL);
    676   std::cout << "Enter name: ";
    677   cin >> filename;
    678   mol->SetNameFromFilename(filename);
    679 }
    680 
    681 void MoleculeListClass::parseXYZIntoMolecule(){
    682   char filename[MAXSTRINGSIZE];
    683   int nr;
    684   molecule *mol = NULL;
    685   mol = NULL;
    686   do {
    687     std::cout << "Enter index of molecule: ";
    688    cin >> nr;
    689    mol = ReturnIndex(nr);
    690   } while (mol == NULL);
    691   std::cout << "Format should be XYZ with: ShorthandOfElement\tX\tY\tZ" << endl;
    692   do {
    693     std::cout << "Enter file name: ";
    694    cin >> filename;
    695   } while (!mol->AddXYZFile(filename));
    696   mol->SetNameFromFilename(filename);
    697 };
    698 
    699 void MoleculeListClass::eraseMolecule(){
    700   int nr;
    701   molecule *mol = NULL;
    702   std::cout << "Enter index of molecule: ";
    703   cin >> nr;
    704   for(MoleculeList::iterator ListRunner = ListOfMolecules.begin(); ListRunner != ListOfMolecules.end(); ListRunner++)
    705     if (nr == (*ListRunner)->IndexNr) {
    706       mol = *ListRunner;
    707       ListOfMolecules.erase(ListRunner);
    708       World::getInstance().destroyMolecule(mol);
    709       break;
    710     }
    711 };
Note: See TracChangeset for help on using the changeset viewer.