Ignore:
Timestamp:
Oct 23, 2013, 9:57:07 PM (12 years ago)
Author:
Frederik Heber <heber@…>
Children:
84a644
Parents:
9f51f0
Message:

XmlParser::load() now gives each different charge a different element.

  • this allows search&replace to the correct element afterwards.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/XmlParser.cpp

    r9f51f0 rd0ab01  
    166166  data.config.epsilon = toString(configuration.attribute("epsilon").value());
    167167
     168  // use a map to at least give each charge a different element
     169  typedef std::map<double, atomicNumber_t> charge_map_t;
     170  charge_map_t charge_map;
     171  size_t last_atomicnumber = 1;
    168172  // particles
    169173  for(pugi::xml_node::iterator iter = configuration.begin();
     
    177181    LOG(2, "DEBUG: Parsing particle at " << p.position << ".");
    178182    atom * const newAtom = World::getInstance().createAtom();
    179     // for the moment each becomes a hydrogen
    180     newAtom->setType(World::getInstance().getPeriode()->FindElement((atomicNumber_t)1));
     183    charge_map_t::const_iterator chargeiter = charge_map.find(p.q);
     184    if (chargeiter == charge_map.end()) {
     185      // create new entry and set iter pointing to it
     186      std::pair<charge_map_t::const_iterator, bool> inserter =
     187          charge_map.insert( std::make_pair( p.q, last_atomicnumber++) );
     188      chargeiter = inserter.first;
     189    }
     190    newAtom->setType(World::getInstance().getPeriode()->FindElement(chargeiter->second));
    181191    newAtom->setPosition(p.position);
    182192    newAtom->setCharge(p.q);
Note: See TracChangeset for help on using the changeset viewer.