- Timestamp:
- Jun 27, 2014, 9:32:55 PM (11 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:
- a42fee
- Parents:
- 31bd9c
- git-author:
- Frederik Heber <heber@…> (03/20/14 17:29:00)
- git-committer:
- Frederik Heber <heber@…> (06/27/14 21:32:55)
- Location:
- src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/CommandAction/ElementDbAction.cpp
r31bd9c r37ef6d 41 41 #include "config.hpp" 42 42 #include "Element/element.hpp" // we need element because of serialization! 43 #include "Element/ion.hpp" // we need element because of serialization! 43 44 #include "Element/periodentafel.hpp" 44 45 #include "CodePatterns/Log.hpp" -
src/Element/periodentafel.cpp
r31bd9c r37ef6d 45 45 #include "elements_db.hpp" 46 46 #include "Helpers/defs.hpp" 47 #include "ion.hpp" 47 48 #include "periodentafel.hpp" 48 49 … … 120 121 return res!=elements.end()?((*res).second):0; 121 122 }; 123 124 /** Returns the desired ion to a specific element. 125 * 126 * If the respective element is not in the list, we return 127 * NULL. 128 * \return pointer to an element or NULL if not found 129 */ 130 const element * periodentafel::FindElement(atomicNumber_t Z, const int ionization) 131 { 132 // if not ionization given, fall back to other function 133 if (ionization == 0) { 134 return FindElement(Z); 135 } 136 // element present? 137 const_iterator elementiter = elements.find(Z); 138 if (elementiter == elements.end()) 139 return NULL; 140 const element & element_base = *(elementiter->second); 141 142 // element has already got ions? 143 IonsPerElement::iterator setiter = 144 ions.find(Z); 145 if (setiter != ions.end()) { 146 // yes, found ion list 147 ionSet::const_iterator res = setiter->second.find(ionization); 148 149 if (res != setiter->second.end()) { 150 // ion present already 151 element * const _ion = res->second; 152 return _ion; 153 } else { 154 // ion not present yet 155 ion * const _ion = new ion(element_base, ionization); 156 // insert ion 157 setiter->second.insert( std::make_pair( ionization, _ion) ); 158 return _ion; 159 } 160 } else { 161 // no ions yet, create map 162 ion * const _ion = new ion(element_base, ionization); 163 std::pair<IonsPerElement::iterator,bool> inserter = 164 ions.insert( std::make_pair(Z, ionSet()) ); 165 // insert ion 166 ASSERT( inserter.second, 167 "periodentafel::FindElement() - could not insert new ionSet to element."); 168 inserter.first->second.insert( std::make_pair( ionization, _ion) ); 169 return _ion; 170 } 171 return NULL; 172 } 122 173 123 174 /** Finds an element by its atomic number. -
src/Element/periodentafel.hpp
r31bd9c r37ef6d 22 22 23 23 class element; 24 class ion; 24 25 25 26 /********************************************** declarations *******************************/ … … 33 34 private: 34 35 typedef std::map<atomicNumber_t,element*> elementSet; 36 typedef std::map<int,ion*> ionSet; 37 typedef std::map<atomicNumber_t,ionSet> IonsPerElement; 35 38 public: 36 39 typedef elementSet::iterator iterator; … … 48 51 void CleanupPeriodtable(); 49 52 const element * FindElement(atomicNumber_t) const; 53 const element * FindElement(atomicNumber_t, const int); 50 54 const element * FindElement(const std::string &shorthand) const; 51 55 const element * AskElement() const; … … 76 80 ar & boost::serialization::make_array<char>(header2, MAXSTRINGSIZE); 77 81 ar & elements; 82 ar & ions; 78 83 } 79 84 … … 93 98 94 99 elementSet elements; 100 IonsPerElement ions; 95 101 }; 96 102 -
src/Element/unittests/ElementUnitTest.cpp
r31bd9c r37ef6d 105 105 CPPUNIT_ASSERT_EQUAL( 0., testelement->getElectronegativity() ); 106 106 CPPUNIT_ASSERT_EQUAL( 0., testelement->getVanDerWaalsRadius() ); 107 CPPUNIT_ASSERT_EQUAL( 0., testelement->getCharge() ); 107 108 CPPUNIT_ASSERT_EQUAL( 0., testelement->getValence() ); 108 109 CPPUNIT_ASSERT_EQUAL( 0, testelement->getNoValenceOrbitals() ); … … 172 173 boost::archive::text_iarchive ia(stream); 173 174 // read class state from archive 174 element * newelement ;175 element * newelement = NULL; 175 176 176 177 ia >> newelement; -
src/Element/unittests/PeriodentafelUnitTest.cpp
r31bd9c r37ef6d 45 45 46 46 #include "Element/element.hpp" 47 #include "Element/ion.hpp" 47 48 #include "Element/elements_db.hpp" 48 49 #include "Element/periodentafel.hpp"
Note:
See TracChangeset
for help on using the changeset viewer.