Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

GlobalMasterServer Class Reference

#include <GlobalMasterServer.h>

List of all members.

Public Member Functions

 GlobalMasterServer (ComputeMgr *m, int theNumDataSenders)
virtual ~GlobalMasterServer ()
void recvData (ComputeGlobalDataMsg *)
void addClient (GlobalMaster *newClient)


Constructor & Destructor Documentation

GlobalMasterServer::GlobalMasterServer ComputeMgr m,
int  theNumDataSenders
 

Definition at line 358 of file GlobalMasterServer.C.

References DebugM.

00359                                                               {
00360   DebugM(3,"Constructing GlobalMasterServer\n");
00361   myComputeManager = m;
00362   numDataSenders = theNumDataSenders;
00363   recvCount = 0; /* we haven't gotten any messages yet */
00364   firstTime = 1; /* XXX temporary */
00365   step = -1;
00366   totalAtomsRequested = 0;
00367   totalGroupsRequested = 0;
00368   DebugM(3,"done constructing\n");
00369 }

GlobalMasterServer::~GlobalMasterServer  )  [virtual]
 

Definition at line 371 of file GlobalMasterServer.C.

References ResizeArray< Elem >::begin(), and ResizeArray< Elem >::end().

00371                                         {
00372   GlobalMaster *m_i = *clientList.begin();
00373   GlobalMaster *m_e = *clientList.end();
00374   
00375   /* delete each of the masters */
00376   while(m_i != m_e) {
00377     delete m_i;
00378     m_i++;
00379   }
00380 }


Member Function Documentation

void GlobalMasterServer::addClient GlobalMaster newClient  ) 
 

Definition at line 27 of file GlobalMasterServer.C.

References ResizeArray< Elem >::add(), and DebugM.

Referenced by ComputeMgr::createComputes().

00027                                                           {
00028   DebugM(3,"Adding client\n");
00029   clientList.add(newClient);
00030   DebugM(2,"Added.\n");
00031 }

void GlobalMasterServer::recvData ComputeGlobalDataMsg  ) 
 

Definition at line 33 of file GlobalMasterServer.C.

References ResizeArray< Elem >::add(), ComputeGlobalDataMsg::aid, ResizeArray< Elem >::begin(), DebugM, ResizeArray< Elem >::end(), ComputeGlobalDataMsg::fid, ComputeGlobalDataMsg::gcom, NAMD_die(), ComputeGlobalDataMsg::p, ResizeArray< Elem >::resize(), ResizeArray< Elem >::setall(), ResizeArray< Elem >::size(), ComputeGlobalDataMsg::step, and ComputeGlobalDataMsg::tf.

Referenced by ComputeMgr::recvComputeGlobalData().

00033                                                            {
00034   DebugM(3,"Storing data (" << msg->aid.size() << " positions) on master\n");
00035 
00036   if ( msg->step != -1 ) step = msg->step;
00037 
00038   /* get the beginning and end of the lists */
00039   AtomIDList::iterator a_i = msg->aid.begin();
00040   AtomIDList::iterator a_e = msg->aid.end();
00041   PositionList::iterator p_i = msg->p.begin();
00042   PositionList::iterator g_i = msg->gcom.begin();
00043   PositionList::iterator g_e = msg->gcom.end();
00044 
00045   /* iterate over each member of the atom lists */
00046   for ( ; a_i != a_e; ++a_i, ++p_i ) {
00047     receivedAtomIDs.add(*a_i);
00048     receivedAtomPositions.add(*p_i);
00049   }
00050   
00051   /* iterate over each member of "total force" lists */
00052   a_e = msg->fid.end();
00053   ForceList::iterator f_i=msg->tf.begin();
00054   for (a_i=msg->fid.begin() ; a_i!=a_e; ++a_i,++f_i) {
00055     receivedForceIDs.add(*a_i);
00056     receivedTotalForces.add(*f_i);
00057   }
00058 
00059   /* iterate over each member of the group position list */
00060   int i=0;
00061   for ( ; g_i != g_e; ++g_i ) {
00062     DebugM(1,"Received center of mass "<<*g_i<<"\n");
00063     if(i >= totalGroupsRequested) NAMD_die("Received too many groups.");
00064     receivedGroupPositions[i] += (*g_i);
00065     i++;
00066   }
00067   if(i!=totalGroupsRequested) NAMD_die("Received too few groups.");
00068 
00069   /* done with the message, delete it */
00070   delete msg;
00071 
00072   /* check whether we've gotten all the expected messages */
00073   recvCount++;
00074   if(recvCount == numDataSenders) {
00075     DebugM(3,"received messages from each of the ComputeGlobals\n");
00076     callClients();
00077 
00078     /* now restart */
00079     step = -1;
00080     receivedAtomIDs.resize(0);
00081     receivedAtomPositions.resize(0);
00082     receivedGroupPositions.resize(totalGroupsRequested);
00083     receivedGroupPositions.setall(Vector(0,0,0));
00084     receivedForceIDs.resize(0);
00085     receivedTotalForces.resize(0);
00086     recvCount = 0;
00087   }
00088 }


The documentation for this class was generated from the following files:
Generated on Sun May 19 04:07:53 2013 for NAMD by  doxygen 1.3.9.1