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 76 of file CollectionMaster.C.

References DebugM.

00077 {
00078   if (CkpvAccess(CollectionMaster_instance) == 0) {
00079     CkpvAccess(CollectionMaster_instance) = this;
00080   } else {
00081     DebugM(1, "CollectionMaster::CollectionMaster() - another instance of CollectionMaster exists!\n");
00082   }
00083   dataStreamFile = 0;
00084 }

CollectionMaster::~CollectionMaster void   ) 
 

Definition at line 87 of file CollectionMaster.C.

00088 {
00089 }


Member Function Documentation

void CollectionMaster::disposePositions CollectVectorInstance c  ) 
 

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

00115 {
00116     DebugM(3,"Collected positions at " << c->seq << std::endl);
00117     int seq = c->seq;
00118     int size = c->data.size();
00119     if ( ! size ) size = c->fdata.size();
00120     Vector *data = c->data.begin();
00121     FloatVector *fdata = c->fdata.begin();
00122     Node::Object()->output->coordinate(seq,size,data,fdata,c->lattice);
00123     c->free();
00124 }

void CollectionMaster::disposeVelocities CollectVectorInstance c  ) 
 

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

00150 {
00151     DebugM(3,"Collected velocities at " << c->seq << std::endl);
00152     int seq = c->seq;
00153     int size = c->data.size();
00154     Vector *data = c->data.begin();
00155     Node::Object()->output->velocity(seq,size,data);
00156     c->free();
00157 }

void CollectionMaster::enqueuePositions int  seq,
Lattice lattice
 

Definition at line 101 of file CollectionMaster.C.

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

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

00102 {
00103   positions.enqueue(seq,lattice);
00104 
00105   CollectVectorInstance *c;
00106   while ( ( c = positions.removeReady() ) ) { disposePositions(c); }
00107 }

void CollectionMaster::enqueuePositionsFromHandler EnqueueDataMsg msg  ) 
 

Definition at line 109 of file CollectionMaster.C.

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

00109                                                                      {
00110     enqueuePositions(msg->timestep, msg->l);
00111     delete msg;
00112 }

void CollectionMaster::enqueueVelocities int  seq  ) 
 

Definition at line 136 of file CollectionMaster.C.

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

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

00137 {
00138   Lattice dummy;
00139   velocities.enqueue(seq,dummy);
00140 
00141   CollectVectorInstance *c;
00142   while ( ( c = velocities.removeReady() ) ) { disposeVelocities(c); }
00143 }

void CollectionMaster::enqueueVelocitiesFromHandler int  seq  ) 
 

Definition at line 145 of file CollectionMaster.C.

References enqueueVelocities().

00145                                                           {
00146     enqueueVelocities(seq);
00147 }

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

Definition at line 28 of file CollectionMaster.h.

00028                                     { 
00029     return CkpvAccess(CollectionMaster_instance); 
00030   }

void CollectionMaster::receiveDataStream DataStreamMsg msg  ) 
 

Definition at line 160 of file CollectionMaster.C.

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

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

void CollectionMaster::receivePositions CollectVectorMsg msg  ) 
 

Definition at line 92 of file CollectionMaster.C.

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

00093 {
00094   positions.submitData(msg->seq,msg->aid,msg->data,msg->fdata);
00095   delete msg;
00096 
00097   CollectVectorInstance *c;
00098   while ( ( c = positions.removeReady() ) ) { disposePositions(c); }
00099 }

void CollectionMaster::receiveVelocities CollectVectorMsg msg  ) 
 

Definition at line 127 of file CollectionMaster.C.

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

00128 {
00129   velocities.submitData(msg->seq,msg->aid,msg->data,msg->fdata);
00130   delete msg;
00131 
00132   CollectVectorInstance *c;
00133   while ( ( c = velocities.removeReady() ) ) { disposeVelocities(c); }
00134 }


The documentation for this class was generated from the following files:
Generated on Mon Nov 23 04:59:31 2009 for NAMD by  doxygen 1.3.9.1