- /*! \internal
- * \brief Description of the domain setup: PBC and the connections between domains
- */
- struct DomainSetup
- {
- /*! \internal
- * \brief Description of the domain setup: PBC and the connections between domains
- */
- //! Constructor, without DD \p numDDCells and \p ddZones should be nullptr
- DomainSetup(int ePBC,
- const ivec *numDDCells,
- const gmx_domdec_zones_t *ddZones);
-
- //! The type of PBC
- int ePBC;
- //! Tells whether we are using domain decomposition
- bool haveDomDec;
- //! Tells whether we are using domain decomposition per dimension
- std::array<bool, DIM> haveDomDecPerDim;
- //! The domain decomposition zone setup
- const gmx_domdec_zones_t *zones;
- };
-
- //! Local cycle count enum for profiling different parts of search
- enum {
- enbsCCgrid, enbsCCsearch, enbsCCcombine, enbsCCnr
- };
-
- struct SearchCycleCounting
- {
- //! Start a pair search cycle counter
- void start(const int enbsCC)
- {
- cc_[enbsCC].start();
- }
-
- //! Stop a pair search cycle counter
- void stop(const int enbsCC)
- {
- cc_[enbsCC].stop();
- }
-
- //! Print the cycle counts to \p fp
- void printCycles(FILE *fp,
- gmx::ArrayRef<const PairsearchWork> work) const;
-
- bool recordCycles_ = false;
- int searchCount_ = 0;
- nbnxn_cycle_t cc_[enbsCCnr];
- };
-