13#ifndef CD_CDRITERATORIMPLEM_H
14#define CD_CDRITERATORIMPLEM_H
18#include <CD_NamespaceHeader.H>
23 CH_TIME(
"CdrIterator<T>::CdrIterator(CdrLayout<T>, SpeciesIteration)");
28 m_numSolvers = m_solvers.size();
39 CH_TIME(
"CdrIterator<T>::~CdrIterator()");
46 CH_TIME(
"CdrIterator<T>::getNumberOfSolvers()");
48 CH_assert(m_isDefined);
57 CH_TIME(
"CdrIterator<T>::index()");
59 CH_assert(m_isDefined);
68 CH_TIME(
"CdrIterator<T>::reset()");
70 CH_assert(m_isDefined);
79 CH_TIME(
"CdrIterator<T>::ok()");
81 CH_assert(m_isDefined);
83 return (m_isolver < m_numSolvers);
90 CH_TIME(
"CdrIterator<T>::operator++()");
92 CH_assert(m_isDefined);
94 if (m_mode == SpeciesIteration::All) {
100 for (
int isolver = m_isolver; this->ok(); ++isolver) {
101 const RefCountedPtr<CdrSpecies>& species = m_species[isolver];
103 if (m_mode == SpeciesIteration::Charged) {
104 if (species->getChargeNumber() != 0) {
109 else if (m_mode == SpeciesIteration::Negative) {
110 if (species->getChargeNumber() < 0) {
115 else if (m_mode == SpeciesIteration::Positive) {
116 if (species->getChargeNumber() > 0) {
121 else if (m_mode == SpeciesIteration::Neutral) {
122 if (species->getChargeNumber() == 0) {
135 CH_TIME(
"CdrIterator<T>::operator()");
137 CH_assert(m_isDefined);
138 CH_assert(m_isolver < m_numSolvers);
140 return m_solvers[m_isolver];
144RefCountedPtr<CdrSpecies>&
147 CH_TIME(
"CdrIterator<T>::getSpecies()");
149 CH_assert(m_isDefined);
150 CH_assert(m_isolver < m_numSolvers);
152 return m_species[m_isolver];
155#include <CD_NamespaceFooter.H>
Declaration of an iterator class for CdrLayout (for iterating through subsets of solvers).
virtual void reset()
Reset iterator to the beginning.
Definition CD_CdrIteratorImplem.H:66
virtual bool ok() const
Check if the iterator is valid.
Definition CD_CdrIteratorImplem.H:77
virtual int index() const
Get current solver number (i.e. index in CdrLayouts solvers).
Definition CD_CdrIteratorImplem.H:55
virtual RefCountedPtr< CdrSpecies > & getSpecies()
Return the current species.
Definition CD_CdrIteratorImplem.H:145
virtual RefCountedPtr< T > & operator()()
Return the current solver.
Definition CD_CdrIteratorImplem.H:133
virtual void operator++()
Increment the iterator. Behavior depends on iteration mode.
Definition CD_CdrIteratorImplem.H:88
CdrIterator()=delete
Disallowed weak construction. Always use the full constructor.
SpeciesIteration
Enum class for iterating through subsets of species.
Definition CD_CdrIterator.H:35
virtual ~CdrIterator()
Destructor (does nothing).
Definition CD_CdrIteratorImplem.H:37
virtual int getNumberOfSolvers()
Get number of solvers.
Definition CD_CdrIteratorImplem.H:44
Class for holding a set of CdrSolvers.
Definition CD_CdrLayout.H:40
virtual Vector< RefCountedPtr< T > > & getSolvers()
Get solvers.
Definition CD_CdrLayoutImplem.H:367
virtual Vector< RefCountedPtr< CdrSpecies > > & getSpecies()
Get species.
Definition CD_CdrLayoutImplem.H:379