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

CollectionMaster Class Reference

#include <CollectionMaster.h>

List of all members.

Public Member Functions

 CollectionMaster ()
 ~CollectionMaster (void)
void receivePositions (CollectVectorMsg *msg)
void receiveVelocities (CollectVectorMsg *msg)
void receiveDataStream (DataStreamMsg *msg)
void enqueuePositions (int seq, Lattice &lattice)
void enqueueVelocities (int seq)
void enqueuePositionsFromHandler (EnqueueDataMsg *msg)
void enqueueVelocitiesFromHandler (int seq)
void disposePositions (CollectVectorInstance *c)
void disposeVelocities (CollectVectorInstance *c)

Static Public Member Functions

CollectionMasterObject ()


Constructor & Destructor Documentation

CollectionMaster::CollectionMaster  ) 
 

Definition at line 84 of file CollectionMaster.C.

References DebugM.

00085 {
00086   if (CpvAccess(CollectionMaster_instance) == 0) {
00087     CpvAccess(CollectionMaster_instance) = this;
00088   } else {
00089     DebugM(1, "CollectionMaster::CollectionMaster() - another instance of CollectionMaster exists!\n");
00090   }
00091   dataStreamFile = 0;
00092 }

CollectionMaster::~CollectionMaster void   ) 
 

Definition at line 95 of file CollectionMaster.C.

00096 {
00097 }


Member Function Documentation

void CollectionMaster::disposePositions CollectVectorInstance c  ) 
 

Definition at line 122 of file CollectionMaster.C.

References ResizeArray< Elem >::begin(), Output::coordinate(), CollectionMaster::CollectVectorInstance::data, DebugM, CollectionMaster::CollectVectorInstance::fdata, CollectionMaster::CollectVectorInstance::free(), CollectionMaster::CollectVectorInstance::lattice, Node::Object(), Node::output, CollectionMaster::CollectVectorInstance::seq, and ResizeArray< Elem >::size().

Referenced by enqueuePositions(), and receivePositions().

00123 {
00124     DebugM(3,"Collected positions at " << c->seq << std::endl);
00125     int seq = c->seq;
00126     int size = c->data.size();
00127     if ( ! size ) size = c->fdata.size();
00128     Vector *data = c->data.begin();
00129     FloatVector *fdata = c->fdata.begin();
00130     Node::Object()->output->coordinate(seq,size,data,fdata,c->lattice);
00131     c->free();
00132 }

void CollectionMaster::disposeVelocities CollectVectorInstance c  ) 
 

Definition at line 157 of file CollectionMaster.C.

References ResizeArray< Elem >::begin(), CollectionMaster::CollectVectorInstance::data, DebugM, CollectionMaster::CollectVectorInstance::free(), Node::Object(), Node::output, CollectionMaster::CollectVectorInstance::seq, ResizeArray< Elem >::size(), and Output::velocity().

Referenced by enqueueVelocities(), and receiveVelocities().

00158 {
00159     DebugM(3,"Collected velocities at " << c->seq << std::endl);
00160     int seq = c->seq;
00161     int size = c->data.size();
00162     Vector *data = c->data.begin();
00163     Node::Object()->output->velocity(seq,size,data);
00164     c->free();
00165 }

void CollectionMaster::enqueuePositions int  seq,
Lattice lattice
 

Definition at line 109 of file CollectionMaster.C.

References disposePositions(), CollectionMaster::CollectVectorSequence::enqueue(), and CollectionMaster::CollectVectorSequence::removeReady().

Referenced by Controller::enqueueCollections(), and enqueuePositionsFromHandler().

00110 {
00111   positions.enqueue(seq,lattice);
00112 
00113   CollectVectorInstance *c;
00114   while ( ( c = positions.removeReady() ) ) { disposePositions(c); }
00115 }

void CollectionMaster::enqueuePositionsFromHandler EnqueueDataMsg msg  ) 
 

Definition at line 117 of file CollectionMaster.C.

References enqueuePositions(), EnqueueDataMsg::l, and EnqueueDataMsg::timestep.

00117                                                                      {
00118     enqueuePositions(msg->timestep, msg->l);
00119     delete msg;
00120 }

void CollectionMaster::enqueueVelocities int  seq  ) 
 

Definition at line 144 of file CollectionMaster.C.

References disposeVelocities(), CollectionMaster::CollectVectorSequence::enqueue(), and CollectionMaster::CollectVectorSequence::removeReady().

Referenced by Controller::enqueueCollections(), and enqueueVelocitiesFromHandler().

00145 {
00146   Lattice dummy;
00147   velocities.enqueue(seq,dummy);
00148 
00149   CollectVectorInstance *c;
00150   while ( ( c = velocities.removeReady() ) ) { disposeVelocities(c); }
00151 }

void CollectionMaster::enqueueVelocitiesFromHandler int  seq  ) 
 

Definition at line 153 of file CollectionMaster.C.

References enqueueVelocities().

00153                                                           {
00154     enqueueVelocities(seq);
00155 }

CollectionMaster* CollectionMaster::Object  )  [inline, static]
 

Definition at line 28 of file CollectionMaster.h.

00028                                     { 
00029     return CpvAccess(CollectionMaster_instance); 
00030   }

void CollectionMaster::receiveDataStream DataStreamMsg msg  ) 
 

Definition at line 168 of file CollectionMaster.C.

References SimParameters::auxFilename, ResizeArray< Elem >::begin(), DataStreamMsg::data, NAMD_backup_file(), NAMD_die(), Node::Object(), and Node::simParameters.

00168                                                            {
00169     if ( ! dataStreamFile ) {
00170       char *fname = Node::Object()->simParameters->auxFilename;
00171       // iout has large file linking issues on AIX
00172       // iout << iINFO << "OPENING AUXILIARY DATA STREAM FILE "
00173       //                                << fname << "\n" << endi;
00174       CkPrintf("Info: OPENING AUXILIARY DATA STREAM FILE %s\n", fname);
00175       NAMD_backup_file(fname);
00176       dataStreamFile = fopen(fname,"w");
00177       if ( ! dataStreamFile )
00178                 NAMD_die("Can't open auxiliary data stream file!");
00179     }
00180     fprintf(dataStreamFile,"%s",msg->data.begin());
00181     fflush(dataStreamFile);
00182     delete msg;
00183 }

void CollectionMaster::receivePositions CollectVectorMsg msg  ) 
 

Definition at line 100 of file CollectionMaster.C.

References CollectVectorMsg::aid, CollectVectorMsg::data, disposePositions(), CollectVectorMsg::fdata, CollectionMaster::CollectVectorSequence::removeReady(), CollectVectorMsg::seq, and CollectionMaster::CollectVectorSequence::submitData().

00101 {
00102   positions.submitData(msg->seq,msg->aid,msg->data,msg->fdata);
00103   delete msg;
00104 
00105   CollectVectorInstance *c;
00106   while ( ( c = positions.removeReady() ) ) { disposePositions(c); }
00107 }

void CollectionMaster::receiveVelocities CollectVectorMsg msg  ) 
 

Definition at line 135 of file CollectionMaster.C.

References CollectVectorMsg::aid, CollectVectorMsg::data, disposeVelocities(), CollectVectorMsg::fdata, CollectionMaster::CollectVectorSequence::removeReady(), CollectVectorMsg::seq, and CollectionMaster::CollectVectorSequence::submitData().

00136 {
00137   velocities.submitData(msg->seq,msg->aid,msg->data,msg->fdata);
00138   delete msg;
00139 
00140   CollectVectorInstance *c;
00141   while ( ( c = velocities.removeReady() ) ) { disposeVelocities(c); }
00142 }


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