NAMD
Classes | Public Member Functions | Static Public Member Functions | List of all members
CollectionMgr Class Reference

#include <CollectionMgr.h>

Inheritance diagram for CollectionMgr:

Classes

class  CollectVectorInstance
 
class  CollectVectorSequence
 

Public Member Functions

 CollectionMgr (SlaveInitMsg *msg)
 
 ~CollectionMgr (void)
 
void submitPositions (int seq, FullAtomList &a, Lattice l, int prec)
 
void submitVelocities (int seq, int zero, FullAtomList &a)
 
void submitForces (int seq, FullAtomList &a, int maxForceUsed, ForceList *f)
 
void sendDataStream (const char *)
 
CkChareID getMasterChareID ()
 

Static Public Member Functions

static CollectionMgrObject ()
 

Detailed Description

Definition at line 26 of file CollectionMgr.h.

Constructor & Destructor Documentation

CollectionMgr::CollectionMgr ( SlaveInitMsg msg)

Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000 by The Board of Trustees of the University of Illinois. All rights reserved.

Definition at line 20 of file CollectionMgr.C.

References DebugM.

20  : master(msg->master)
21 {
22  delete msg;
23  if (CkpvAccess(CollectionMgr_instance) == 0) {
24  CkpvAccess(CollectionMgr_instance) = this;
25  } else {
26  DebugM(1, "CollectionMgr::CollectionMgr() - another instance of CollectionMgr exists!\n");
27  }
28 }
CkChareID master
Definition: CollectionMgr.h:23
#define DebugM(x, y)
Definition: Debug.h:59
CollectionMgr::~CollectionMgr ( void  )

Definition at line 31 of file CollectionMgr.C.

32 {
33 }

Member Function Documentation

CkChareID CollectionMgr::getMasterChareID ( )
inline

Definition at line 41 of file CollectionMgr.h.

Referenced by ParallelIOMgr::initialize().

41 { return master; }
static CollectionMgr* CollectionMgr::Object ( )
inlinestatic

Definition at line 30 of file CollectionMgr.h.

Referenced by ComputeStir::doForce(), datastream::endd(), and ParallelIOMgr::initialize().

30  {
31  return CkpvAccess(CollectionMgr_instance);
32  }
void CollectionMgr::sendDataStream ( const char *  data)

Definition at line 308 of file CollectionMgr.C.

References ResizeArray< T >::begin(), DataStreamMsg::data, and ResizeArray< T >::resize().

Referenced by ComputeStir::doForce(), and datastream::endd().

308  {
309  DataStreamMsg *msg = new DataStreamMsg;
310  msg->data.resize(strlen(data)+1);
311  strcpy(msg->data.begin(),data);
312  CProxy_CollectionMaster cm(master);
313  cm.receiveDataStream(msg);
314 }
ResizeArray< char > data
void resize(int i)
Definition: ResizeArray.h:84
iterator begin(void)
Definition: ResizeArray.h:36
void CollectionMgr::submitForces ( int  seq,
FullAtomList a,
int  maxForceUsed,
ForceList f 
)

Definition at line 269 of file CollectionMgr.C.

References CollectVectorMsg::aid, CollectionMgr::CollectVectorInstance::aid, CollectVectorMsg::aid_size, ResizeArray< T >::begin(), CollectVectorMsg::data, CollectionMgr::CollectVectorInstance::data, CollectVectorMsg::data_size, CollectVectorMsg::fdata_size, SimParameters::fixedAtomsForceOutput, CollectionMgr::CollectVectorInstance::free(), Node::Object(), CollectVectorMsg::seq, CollectionMgr::CollectVectorInstance::seq, Node::simParameters, ResizeArray< T >::size(), and CollectionMgr::CollectVectorSequence::submitData().

Referenced by Sequencer::submitCollections().

270 {
271  int numAtoms = a.size();
272  AtomIDList aid(numAtoms);
273  ForceList d(numAtoms);
274  for ( int i=0; i<numAtoms; ++i ) {
275  aid[i] = a[i].id;
276  d[i] = 0.;
277  }
278  for ( int j=0; j<=maxForceUsed; ++j ) {
279  Force *fptr = f[j].begin();
280  for ( int i=0; i<numAtoms; ++i ) {
281  d[i] += fptr[i];
282  }
283  }
284  if ( Node::Object()->simParameters->fixedAtomsOn && !Node::Object()->simParameters->fixedAtomsForceOutput) {
285  for ( int i=0; i<numAtoms; ++i ) {
286  if ( a[i].atomFixed ) d[i] = 0.;
287  }
288  }
289  CollectVectorInstance *c;
290  if ( ( c = forces.submitData(seq,aid,d) ) )
291  {
292  int aid_size = c->aid.size();
293  int data_size = c->data.size();
294  CollectVectorMsg *msg = new (aid_size, data_size, 0, 0) CollectVectorMsg;
295  msg->seq = c->seq;
296  msg->aid_size = aid_size;
297  msg->data_size = data_size;
298  msg->fdata_size = 0;
299  memcpy(msg->aid,c->aid.begin(),aid_size*sizeof(AtomID));
300  memcpy(msg->data,c->data.begin(),data_size*sizeof(Vector));
301  CProxy_CollectionMaster cm(master);
302  cm.receiveForces(msg);
303  c->free();
304  }
305 }
static Node * Object()
Definition: Node.h:86
Bool fixedAtomsForceOutput
int AtomID
Definition: NamdTypes.h:29
Definition: Vector.h:64
SimParameters * simParameters
Definition: Node.h:178
static __thread float4 * forces
int size(void) const
Definition: ResizeArray.h:127
iterator begin(void)
Definition: ResizeArray.h:36
void CollectionMgr::submitPositions ( int  seq,
FullAtomList a,
Lattice  l,
int  prec 
)

Definition at line 210 of file CollectionMgr.C.

References CollectVectorMsg::aid, CollectionMgr::CollectVectorInstance::aid, CollectVectorMsg::aid_size, ResizeArray< T >::begin(), CollectVectorMsg::data, CollectionMgr::CollectVectorInstance::data, CollectVectorMsg::data_size, CollectVectorMsg::fdata, CollectionMgr::CollectVectorInstance::fdata, CollectVectorMsg::fdata_size, CollectionMgr::CollectVectorInstance::free(), Lattice::reverse_transform(), CollectVectorMsg::seq, CollectionMgr::CollectVectorInstance::seq, ResizeArray< T >::size(), and CollectionMgr::CollectVectorSequence::submitData().

Referenced by Sequencer::submitCollections().

212 {
213  int numAtoms = a.size();
214  AtomIDList aid(numAtoms);
215  PositionList d(numAtoms);
216  for ( int i=0; i<numAtoms; ++i ) {
217  aid[i] = a[i].id;
218  d[i] = l.reverse_transform(a[i].position,a[i].transform);
219  }
220  CollectVectorInstance *c;
221  if ( ( c = positions.submitData(seq,aid,d,prec) ) )
222  {
223  int aid_size = c->aid.size();
224  int data_size = c->data.size();
225  int fdata_size = c->fdata.size();
226  CollectVectorMsg *msg
227  = new (aid_size, data_size, fdata_size,0) CollectVectorMsg;
228  msg->seq = c->seq;
229  msg->aid_size = aid_size;
230  msg->data_size = data_size;
231  msg->fdata_size = fdata_size;
232  memcpy(msg->aid,c->aid.begin(),aid_size*sizeof(AtomID));
233  memcpy(msg->data,c->data.begin(),data_size*sizeof(Vector));
234  memcpy(msg->fdata,c->fdata.begin(),fdata_size*sizeof(FloatVector));
235  CProxy_CollectionMaster cm(master);
236  cm.receivePositions(msg);
237  c->free();
238  }
239 }
int AtomID
Definition: NamdTypes.h:29
Definition: Vector.h:64
CollectVectorInstance * submitData(int seq, AtomIDList &i, ResizeArray< Vector > &d, int prec=2)
Position reverse_transform(Position data, const Transform &t) const
Definition: Lattice.h:138
int size(void) const
Definition: ResizeArray.h:127
FloatVector * fdata
void CollectionMgr::submitVelocities ( int  seq,
int  zero,
FullAtomList a 
)

Definition at line 241 of file CollectionMgr.C.

References CollectVectorMsg::aid, CollectionMgr::CollectVectorInstance::aid, CollectVectorMsg::aid_size, ResizeArray< T >::begin(), CollectVectorMsg::data, CollectionMgr::CollectVectorInstance::data, CollectVectorMsg::data_size, CollectVectorMsg::fdata_size, CollectionMgr::CollectVectorInstance::free(), CollectVectorMsg::seq, CollectionMgr::CollectVectorInstance::seq, ResizeArray< T >::size(), and CollectionMgr::CollectVectorSequence::submitData().

Referenced by Sequencer::submitCollections().

242 {
243  int numAtoms = a.size();
244  AtomIDList aid(numAtoms);
245  PositionList d(numAtoms);
246  for ( int i=0; i<numAtoms; ++i ) {
247  aid[i] = a[i].id;
248  if ( zero ) d[i] = 0.;
249  else d[i] = a[i].velocity;
250  }
251  CollectVectorInstance *c;
252  if ( ( c = velocities.submitData(seq,aid,d) ) )
253  {
254  int aid_size = c->aid.size();
255  int data_size = c->data.size();
256  CollectVectorMsg *msg = new (aid_size, data_size, 0, 0) CollectVectorMsg;
257  msg->seq = c->seq;
258  msg->aid_size = aid_size;
259  msg->data_size = data_size;
260  msg->fdata_size = 0;
261  memcpy(msg->aid,c->aid.begin(),aid_size*sizeof(AtomID));
262  memcpy(msg->data,c->data.begin(),data_size*sizeof(Vector));
263  CProxy_CollectionMaster cm(master);
264  cm.receiveVelocities(msg);
265  c->free();
266  }
267 }
int AtomID
Definition: NamdTypes.h:29
Definition: Vector.h:64
CollectVectorInstance * submitData(int seq, AtomIDList &i, ResizeArray< Vector > &d, int prec=2)
int size(void) const
Definition: ResizeArray.h:127

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