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

◆ getANewMsg()

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

Definition at line 149 of file ProxyMgr.C.

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

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

Member Data Documentation

◆ flLen

int ProxyResultVarsizeMsg::flLen[Results::maxNumForces]

Definition at line 179 of file ProxyMgr.h.

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

◆ forceArr

Force* ProxyResultVarsizeMsg::forceArr

Definition at line 181 of file ProxyMgr.h.

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

◆ isZero

char* ProxyResultVarsizeMsg::isZero

Definition at line 184 of file ProxyMgr.h.

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

◆ node

NodeID ProxyResultVarsizeMsg::node

Definition at line 177 of file ProxyMgr.h.

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

◆ padding

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.

◆ patch

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: