Ignore:
Timestamp:
Apr 23, 2021, 8:34:11 PM (5 years ago)
Author:
Frederik Heber <frederik.heber@…>
Branches:
Candidate_v1.7.0, stable
Children:
ef0f8f
Parents:
addb51
git-author:
Frederik Heber <frederik.heber@…> (10/03/20 21:20:26)
git-committer:
Frederik Heber <frederik.heber@…> (04/23/21 20:34:11)
Message:

Extending PairCorrelation to correlate element and set of atoms.

  • one may also correlate an element with a selected set of atoms.
  • TEST: Added regression test case.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/AnalysisAction/PairCorrelationAction.cpp

    raddb51 rd9e1d1  
    6868  binoutput.open(params.binoutputname.get().string().c_str());
    6969  PairCorrelationMap *correlationmap = NULL;
    70   ASSERT(params.elements.get().size() == 2,
    71       "AnalysisPairCorrelationAction::performCall() - Exactly two elements are required for pair correlation.");
    72   std::vector<const element *>::const_iterator elemiter = params.elements.get().begin();
    73   const World::ConstAtomComposite atoms_first =
    74       const_cast<const World &>(World::getInstance()).getAllAtoms(AtomByType(*(elemiter++)));
    75   const World::ConstAtomComposite atoms_second =
    76       const_cast<const World &>(World::getInstance()).getAllAtoms(AtomByType(*(elemiter++)));
    77   ASSERT(elemiter == params.elements.get().end(),
    78       "AnalysisPairCorrelationAction::performCall() - Exactly two elements are required for pair correlation.");
     70  World::ConstAtomComposite atoms_first;
     71  World::ConstAtomComposite atoms_second;
     72  if (params.elements.get().size() == 2) {
     73    std::vector<const element *>::const_iterator elemiter = params.elements.get().begin();
     74    atoms_first = World::getConstInstance().getAllAtoms(AtomByType(*(elemiter++)));
     75    if (elemiter != params.elements.get().end()) {
     76      atoms_second = World::getConstInstance().getAllAtoms(AtomByType(*(elemiter++)));
     77    } else {
     78      atoms_second = World::getConstInstance().getSelectedAtoms();
     79    }
     80  } else if (params.elements.get().size() == 1) {
     81    std::vector<const element *>::const_iterator elemiter = params.elements.get().begin();
     82    atoms_first = World::getConstInstance().getSelectedAtoms();
     83    atoms_second = World::getConstInstance().getAllAtoms(AtomByType(*(elemiter++)));
     84  } else {
     85    STATUS("Either one or two elements must be given.");
     86    return Action::failure;
     87  }
    7988  double max_distance = params.BinEnd.get();
    8089  if (params.BinEnd.get() <= 0.) {
Note: See TracChangeset for help on using the changeset viewer.