--- trunk/mdtools/headers/mpiSimulation.hpp 2002/09/30 19:36:00 121 +++ trunk/mdtools/headers/mpiSimulation.hpp 2003/01/24 21:25:04 244 @@ -1,27 +1,62 @@ +#ifndef __MPISIMULATION__ +#define __MPISIMULATION__ +#include "SimInfo.hpp" +#include "MakeStamps.hpp" +#define __C +#include "mpiComponentPlan.h" + class mpiSimulation{ public: - mpiSimulation(); - ~mpiSimulation(); + mpiSimulation(SimInfo* the_entryPlug); + ~mpiSimulation(); + + void divideLabor( void ); + + int getMyNode(void) { return mpiPlug->myNode; } + int getNumberProcessors(void) { return mpiPlug->numberProcessors; } + int getMyMolStart( void ) { return mpiPlug->myMolStart; } + int getMyMolEnd( void ) { return mpiPlug->myMolEnd; } + int getMyMol( void ) { return mpiPlug->myMol; } + int getMyAtomStart( void ) { return mpiPlug->myAtomStart; } + int getMyAtomEnd( void ) { return mpiPlug->myAtomEnd; } + int getMyNlocal( void ) { return mpiPlug->myNlocal; } + int getTotAtoms( void ) { return mpiPlug->nAtomsGlobal; } + - int getMyNode(void) {return myNode;} - int mpiInitSimulation(); - int mpiDistSimulation(); + // sets the internal function pointer to fortran. + void setInternal( void (*fSetup)( mpiSimData*, int*, int*, int*) ){ + setFsimParallel = fSetup; + } + private: protected: - int myMolStart; - int myMolEnd; - int myMol; - int numberProcessors; - int myNode; - int processorNameLen; - char processorName[MPI_MAX_PROCESSOR_NAME]; - int natomsRow,natomsCol,natomsStart,natomsEnd; - int numberCols,numberRows; - int nmolsRow,nmolsCol,nmolsLocal; + SimInfo* entryPlug; + mpiSimData* mpiPlug; + // function to wrap the fortran function + void wrapMe(); + + // private function to initialize the fortran side of the simulation + void (*setFsimParallel)(mpiSimData* the_mpiPlug, int *nLocal, + int* globalIndex, int* isError ); + + // int *myIdents; // is needed by Cpp only. It tells the molecule which stamp it is. + }; + + +/** + The following pointer is the global declaration of the mpiSim + object created when the mpiSimulation creation routine is + called. Every one who includes the header file will then have + access to all of the routines in mnpiSimulation class. +*/ + +extern mpiSimulation* mpiSim; + +#endif