NAMD
Static Public Member Functions | Public Attributes | List of all members
ProxyResultVarsizeMsg Class Reference

#include <ProxyMgr.h>

Inheritance diagram for ProxyResultVarsizeMsg:

Static Public Member Functions

static ProxyResultVarsizeMsggetANewMsg (NodeID nid, PatchID pid, int prioSize, ForceList *fls)
 

Public Attributes

NodeID node
 
PatchID patch
 
int flLen [Results::maxNumForces]
 
ForceforceArr
 
char * isZero
 
char padding [(8-(sizeof(envelope)+sizeof(NodeID)+sizeof(PatchID)+sizeof(int)*Results::maxNumForces+2 *sizeof(void *))%8)%8]
 

Detailed Description

Definition at line 175 of file ProxyMgr.h.

Member Function Documentation

ProxyResultVarsizeMsg * ProxyResultVarsizeMsg::getANewMsg ( NodeID  nid,
PatchID  pid,
int  prioSize,
ForceList fls 
)
static

Definition at line 150 of file ProxyMgr.C.

References ResizeArray< T >::begin(), flLen, forceArr, isZero, Results::maxNumForces, node, patch, ResizeArray< T >::size(), Vector::x, Vector::y, and Vector::z.

150  {
151 
152  //1. decide the length of forceArr and iszero field.
153  int tmpLen[Results::maxNumForces];
154  int iszeroLen = 0;
155  for (int i=0; i<Results::maxNumForces; i++){
156  tmpLen[i] = fls[i].size();
157  iszeroLen += tmpLen[i];
158  }
159  char *tmpIszero = new char[iszeroLen];
160  char *iszeroPtr = tmpIszero;
161  int fArrLen = 0;
162  for(int i=0; i<Results::maxNumForces; i++) {
163  Force *fiPtr = fls[i].begin();
164  for(int j=0; j<tmpLen[i]; j++, fiPtr++, iszeroPtr++) {
165  if(fiPtr->x!=0.0 || fiPtr->y!=0.0 || fiPtr->z!=0) {
166  *iszeroPtr=0;
167  fArrLen++;
168  }else{
169  *iszeroPtr=1;
170  }
171  }
172  }
173 
174  //2. Ready to create the msg, and set all fields
175  ProxyResultVarsizeMsg *retmsg = new(fArrLen, iszeroLen, prioSize)ProxyResultVarsizeMsg;
176  retmsg->node = nid;
177  retmsg->patch = pid;
178  memcpy(retmsg->flLen, tmpLen, sizeof(int)*Results::maxNumForces);
179  iszeroPtr = tmpIszero;
180  Force *forcePtr = retmsg->forceArr;
181  for(int i=0; i<Results::maxNumForces; i++) {
182  Force *fiPtr = fls[i].begin();
183  for(int j=0; j<tmpLen[i]; j++, fiPtr++, iszeroPtr++) {
184  if((*iszeroPtr)!=1) {
185  forcePtr->x = fiPtr->x;
186  forcePtr->y = fiPtr->y;
187  forcePtr->z = fiPtr->z;
188  forcePtr++;
189  }
190  }
191  }
192  memcpy(retmsg->isZero, tmpIszero, sizeof(char)*iszeroLen);
193  delete [] tmpIszero;
194  return retmsg;
195 }
int flLen[Results::maxNumForces]
Definition: ProxyMgr.h:179
Definition: Vector.h:64
BigReal z
Definition: Vector.h:66
BigReal x
Definition: Vector.h:66
BigReal y
Definition: Vector.h:66
int size(void) const
Definition: ResizeArray.h:127
iterator begin(void)
Definition: ResizeArray.h:36

Member Data Documentation

int ProxyResultVarsizeMsg::flLen[Results::maxNumForces]

Definition at line 179 of file ProxyMgr.h.

Referenced by getANewMsg(), and HomePatch::receiveResults().

Force* ProxyResultVarsizeMsg::forceArr

Definition at line 181 of file ProxyMgr.h.

Referenced by getANewMsg(), and HomePatch::receiveResults().

char* ProxyResultVarsizeMsg::isZero

Definition at line 184 of file ProxyMgr.h.

Referenced by getANewMsg(), and HomePatch::receiveResults().

NodeID ProxyResultVarsizeMsg::node

Definition at line 177 of file ProxyMgr.h.

Referenced by getANewMsg(), and HomePatch::receiveResults().

char ProxyResultVarsizeMsg::padding[(8-(sizeof(envelope)+sizeof(NodeID)+sizeof(PatchID)+sizeof(int)*Results::maxNumForces+2 *sizeof(void *))%8)%8]

Definition at line 190 of file ProxyMgr.h.

PatchID ProxyResultVarsizeMsg::patch

Definition at line 178 of file ProxyMgr.h.

Referenced by getANewMsg(), ProxyMgr::recvResults(), and ProxyMgr::sendResults().


The documentation for this class was generated from the following files: