Changeset 37ef6d for src/Element/periodentafel.cpp
- 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)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.
Note:
See TracChangeset
for help on using the changeset viewer.