#include <GlobalMasterServer.h>
Public Member Functions | |
| GlobalMasterServer (ComputeMgr *m, int theNumDataSenders) | |
| virtual | ~GlobalMasterServer () |
| void | recvData (ComputeGlobalDataMsg *) |
| void | addClient (GlobalMaster *newClient) |
|
||||||||||||
|
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 }
|
|
|
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 }
|
|
|
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 }
|
|
|
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 }
|
1.3.9.1