Ignore:
Timestamp:
Oct 2, 2016, 1:49:57 PM (9 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Fix_FitPotential_needs_atomicnumbers
Children:
a13e21
Parents:
f6f761
git-author:
Frederik Heber <heber@…> (10/02/16 13:24:41)
git-committer:
Frederik Heber <heber@…> (10/02/16 13:49:57)
Message:

MPQCData additionally stores the atomic number per nuclei.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/Summation/SetValues/Fragment.cpp

    rf6f761 r8d5db8  
    5454{}
    5555
    56 Fragment::Fragment(const positions_t &_positions, const charges_t &_charges)
     56Fragment::Fragment(
     57    const positions_t &_positions,
     58    const atomicnumbers_t &_atomicnumbers,
     59    const charges_t &_charges)
    5760{
    5861  ASSERT( _positions.size() == _charges.size(),
    5962      "Fragment::Fragment() - given charges and positions don't match in size.");
    6063  positions_t::const_iterator piter = _positions.begin();
     64  atomicnumbers_t::const_iterator aiter = _atomicnumbers.begin();
    6165  charges_t::const_iterator citer = _charges.begin();
    62   for (;piter != _positions.end(); ++piter, ++citer)
    63     nuclei.push_back( make_pair( *piter, *citer) );
     66  for (;piter != _positions.end(); ++piter, ++aiter, ++citer)
     67    nuclei.push_back( createNucleus(*piter, *aiter, *citer) );
    6468}
    6569
     
    121125}
    122126
     127Fragment::atomicnumbers_t Fragment::getAtomicNumbers() const
     128{
     129  atomicnumbers_t positions;
     130  for (nuclei_t::const_iterator iter = nuclei.begin();
     131      iter != nuclei.end(); ++iter)
     132    positions.push_back(iter->second.first);
     133  return positions;
     134}
     135
    123136Fragment::charges_t Fragment::getCharges() const
    124137{
     
    126139  for (nuclei_t::const_iterator iter = nuclei.begin();
    127140      iter != nuclei.end(); ++iter)
    128     charges.push_back(iter->second);
     141    charges.push_back(iter->second.second);
    129142  return charges;
    130143}
    131144
    132 Fragment::nucleus_t Fragment::createNucleus(const position_t &position, const double charge)
    133 {
    134   return nucleus_t( make_pair( position, charge ) );
     145Fragment::nucleus_t Fragment::createNucleus(
     146    const position_t &position,
     147    const atomicNumber_t &atomicnumber,
     148    const double charge)
     149{
     150  return nucleus_t( make_pair( position, std::make_pair(atomicnumber, charge) ) );
    135151}
    136152
     
    174190std::ostream & operator<<(std::ostream &ost, const Fragment::nucleus_t &n)
    175191{
    176   ost << n.first << " with charge " << n.second;
     192  ost << n.first << " with Z of " << n.second.first << " charge " << n.second.second;
    177193  return ost;
    178194}
     
    183199  // check positions
    184200  status &= Fragment::isPositionEqual(a.first, b.first);
    185   status &= fabs(a.second - b.second) < std::numeric_limits<double>::epsilon();
     201  status &= (a.second.first == b.second.first);
     202  status &= fabs(a.second.second - b.second.second) < std::numeric_limits<double>::epsilon();
    186203  return status;
    187204}
     
    190207{
    191208  Fragment::positions_t positions;
     209  Fragment::atomicnumbers_t atomicnumbers;
    192210  Fragment::charges_t charges;
    193   Fragment returnvalue(positions, charges);
     211  Fragment returnvalue(positions, atomicnumbers, charges);
    194212  return returnvalue;
    195213}
Note: See TracChangeset for help on using the changeset viewer.