Unverified Commit f8ad7cc9 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

refactor fix for detecting intel pair styles in hybrid pair styles

parent 4c974c6d
Loading
Loading
Loading
Loading
+19 −5
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
                        Anupama Kurpad (Intel) - Host Affinitization
------------------------------------------------------------------------- */

#include "fix_intel.h"
#include "comm.h"
#include "error.h"
#include "force.h"
@@ -27,7 +28,7 @@
#include "timer.h"
#include "universe.h"
#include "update.h"
#include "fix_intel.h"
#include "utils.h"

#include <cstring>
#include <cstdlib>
@@ -391,6 +392,20 @@ void FixIntel::setup_pre_reverse(int eflag, int vflag)

/* ---------------------------------------------------------------------- */

bool FixIntel::pair_hybrid_check()
{
  PairHybrid *ph = (PairHybrid *)force->pair;
  bool has_intel = false;
  int nstyles = ph->nstyles;

  for (int i = 0; i < nstyles; ++i)
    if (ph->styles[i]->suffix_flag & Suffix::INTEL) has_intel = true;

  return has_intel;
}

/* ---------------------------------------------------------------------- */

void FixIntel::pair_init_check(const bool cdmessage)
{
  #ifdef INTEL_VMASK
@@ -510,9 +525,9 @@ void FixIntel::bond_init_check()
  int intel_pair = 0;
  if (force->pair_match("/intel$", 0) != NULL)
    intel_pair = 1;
  else if (force->pair_match("^hybrid", 1) != NULL) {
  else if (force->pair_match("^hybrid", 0) != NULL) {
    _hybrid_nonpair = 1;
    if (_pair_intel_count) intel_pair = 1;
    if (pair_hybrid_check()) intel_pair = 1;
  }

  if (intel_pair == 0)
@@ -529,8 +544,7 @@ void FixIntel::kspace_init_check()
    intel_pair = 1;
  else if (force->pair_match("^hybrid", 0) != NULL) {
    _hybrid_nonpair = 1;
    pair_init_check();     // need to run this here explicitly, since pair->init() was not run yet.
    if (_pair_intel_count) intel_pair = 1;
    if (pair_hybrid_check()) intel_pair = 1;
  }

  if (intel_pair == 0)
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ class FixIntel : public Fix {
  inline void min_setup(int in) { setup(in); }
  void setup_pre_reverse(int eflag = 0, int vflag = 0);

  bool pair_hybrid_check();
  void pair_init_check(const bool cdmessage=false);
  void bond_init_check();
  void kspace_init_check();
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ class Pair : protected Pointers {
  friend class DihedralCharmm;
  friend class DihedralCharmmOMP;
  friend class FixGPU;
  friend class FixIntel;
  friend class FixOMP;
  friend class ThrOMP;
  friend class Info;