Ignore:
Timestamp:
Nov 4, 2016, 9:37:49 AM (9 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_StructOpt_integration_tests, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.6.0, Candidate_v1.6.1, Candidate_v1.7.0, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, 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_ChronosMutex, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, GeometryObjects, Gui_displays_atomic_force_velocity, IndependentFragmentGrids_IntegrationTest, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, RotateToPrincipalAxisSystem_UndoRedo, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, ThirdParty_MPQC_rebuilt_buildsystem, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, Ubuntu_1604_changes, stable
Children:
16c6f7
Parents:
95304c
git-author:
Frederik Heber <heber@…> (10/02/16 13:24:41)
git-committer:
Frederik Heber <heber@…> (11/04/16 09:37:49)
Message:

MPQCData additionally stores the atomic number per nuclei.

  • in case of DoSampleValenceOnly the charge does not represent the atomic number and moreover it is no longer unique. However, we need this unique association for fitting potentials to the fragment results.
  • TESTFIX: set all tests to XFAIL that parse either fragmentation results or homologies.
  • TESTFIX: needed to adapt HomologyContainerUnitTest which uses FragmentStub.
  • TESTFIX: needed to adapt FragmentUnitTest.
File:
1 edited

Legend:

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

    r95304c r6829d2  
    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.