diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 0ec814f9a6c22d8cc4ec2b13766697b4cb92cb88..94c03705d62f2f9ced97b03c0c79569f5fc70534 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -27,6 +27,7 @@ #include "domain.h" #include "neighbor.h" #include "neigh_list.h" +#include "neigh_request.h" #include "math_special.h" #include "pair_dpd_fdt_energy.h" @@ -640,6 +641,20 @@ void FixRX::init() for (int i = 0; i < modify->nfix; i++) if (strcmp(modify->fix[i]->style,"eos/table/rx") == 0) eos_flag = true; if(!eos_flag) error->all(FLERR,"fix rx requires fix eos/table/rx to be specified"); + + // need a half neighbor list + // built whenever re-neighboring occurs + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; +} + +/* ---------------------------------------------------------------------- */ + +void FixRX::init_list(int, class NeighList* ptr) +{ + this->list = ptr; } /* ---------------------------------------------------------------------- */ @@ -1685,10 +1700,10 @@ void FixRX::computeLocalTemperature() sumWeights = new double[sumWeightsCt]; memset(sumWeights, 0, sizeof(double)*sumWeightsCt); - inum = pairDPDE->list->inum; - ilist = pairDPDE->list->ilist; - numneigh = pairDPDE->list->numneigh; - firstneigh = pairDPDE->list->firstneigh; + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; // loop over neighbors of my atoms for (ii = 0; ii < inum; ii++) { diff --git a/src/USER-DPD/fix_rx.h b/src/USER-DPD/fix_rx.h index ca3938f0675f3ca656b0cf7dc32d5bec398ae141..c35c9afabfb930290b888a2ac85aa6817353a36c 100644 --- a/src/USER-DPD/fix_rx.h +++ b/src/USER-DPD/fix_rx.h @@ -34,6 +34,7 @@ class FixRX : public Fix { int setmask(); void post_constructor(); virtual void init(); + void init_list(int, class NeighList *); virtual void setup_pre_force(int); virtual void pre_force(int); @@ -43,6 +44,8 @@ class FixRX : public Fix { int pack_forward_comm(int , int *, double *, int, int *); void unpack_forward_comm(int , int , double *); + class NeighList *list; + double tmpArg; int *mol2param; // mapping from molecule to parameters