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