Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | 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 294 of file GlobalMasterServer.C.

References DebugM.

00295                                                               {
00296   DebugM(3,"Constructing GlobalMasterServer\n");
00297   myComputeManager = m;
00298   numDataSenders = theNumDataSenders;
00299   recvCount = 0; /* we haven't gotten any messages yet */
00300   firstTime = 1; /* XXX temporary */
00301   step = -1;
00302   totalAtomsRequested = 0;
00303   totalGroupsRequested = 0;
00304   DebugM(3,"done constructing\n");
00305 }

GlobalMasterServer::~GlobalMasterServer  )  [virtual]
 

Definition at line 307 of file GlobalMasterServer.C.

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

00307                                         {
00308   GlobalMaster *m_i = *clientList.begin();
00309   GlobalMaster *m_e = *clientList.end();
00310   
00311   /* delete each of the masters */
00312   while(m_i != m_e) {
00313     delete m_i;
00314     m_i++;
00315   }
00316 }


Member Function Documentation

void GlobalMasterServer::addClient GlobalMaster newClient  ) 
 

Definition at line 19 of file GlobalMasterServer.C.

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

Referenced by ComputeMgr::createComputes().

00019                                                           {
00020   DebugM(3,"Adding client\n");
00021   clientList.add(newClient);
00022   DebugM(2,"Added.\n");
00023 }

void GlobalMasterServer::recvData ComputeGlobalDataMsg  ) 
 

Definition at line 25 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().

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


The documentation for this class was generated from the following files:
Generated on Sun Jul 6 04:07:46 2008 for NAMD by  doxygen 1.3.9.1