ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/io/RestWriter.cpp
(Generate patch)

Comparing trunk/OOPSE-4/src/io/RestWriter.cpp (file contents):
Revision 2867 by tim, Wed May 17 21:51:42 2006 UTC vs.
Revision 2868 by chrisfen, Mon Jun 19 01:36:06 2006 UTC

# Line 51 | Line 51 | namespace oopse {
51   namespace oopse {
52    RestWriter::RestWriter(SimInfo* info) :
53      info_(info) {
54 <    
55 <      //we use master - slave mode, only master node writes to disk
54 >
55 >    // only the master node writes to the disk
56 > #ifdef IS_MPI
57 >    if (worldRank == 0) {
58 > #endif // is_mpi
59 >
60        outName = info_->getRestFileName();
61 +
62 + #ifdef IS_MPI
63      }
64 + #endif // is_mpi
65 +  }
66    
67    RestWriter::~RestWriter() {}
68    
# Line 69 | Line 77 | namespace oopse {
77      StuntDouble* integrableObject;
78      SimInfo::MoleculeIterator mi;
79      Molecule::IntegrableObjectIterator ii;
80 <    
80 >
81   #ifdef IS_MPI
82      if(worldRank == 0 ){
83   #endif    
# Line 125 | Line 133 | namespace oopse {
133      int intObIndex;
134      RealType zAngle;
135    
136 <    if (masterNode == 0) {
136 >    if (worldRank == masterNode) {
137        std::map<int, RealType> zAngData;
138        for(int i = 0 ; i < nproc; ++i) {
139          if (i == masterNode) {
# Line 136 | Line 144 | namespace oopse {
144                   integrableObject != NULL;
145                   integrableObject = mol->nextIntegrableObject(ii)) {
146                
147 <              intObIndex = integrableObject->getGlobalIndex() ;
147 >              intObIndex = integrableObject->getGlobalIndex();
148 >
149                zAngle = integrableObject->getZangle();
150                zAngData.insert(std::pair<int, RealType>(intObIndex, zAngle));
151              }      
152            }
144          
153          } else {
154 <          for(int k = 0; k < nIntObjectsInProc[i]; ++k) {
155 <            MPI_Recv(&intObIndex, 1, MPI_INT, i, 0, MPI_COMM_WORLD,&ierr);
156 <            MPI_Recv(&zAngle, 1, MPI_REALTYPE, i, 0, MPI_COMM_WORLD,&ierr);
157 <            zAngData.insert(std::pair<int, RealType>(intObIndex, zAngle));
158 <          }
154 >          for (mol = info_->beginMolecule(mi); mol != NULL;
155 >               mol = info_->nextMolecule(mi)) {
156 >            
157 >            for (integrableObject = mol->beginIntegrableObject(ii);
158 >                 integrableObject != NULL;
159 >                 integrableObject = mol->nextIntegrableObject(ii)) {
160 >              
161 >              MPI_Recv(&intObIndex, 1, MPI_INT, i, 0, MPI_COMM_WORLD,&ierr);
162 >              MPI_Recv(&zAngle, 1, MPI_REALTYPE, i, 0, MPI_COMM_WORLD,&ierr);
163 >              zAngData.insert(std::pair<int, RealType>(intObIndex, zAngle));
164 >            }
165 >          }
166          }
152        
167        }
168        
169        finalOut
# Line 158 | Line 172 | namespace oopse {
172        
173        std::map<int, RealType>::iterator l;
174        for (l = zAngData.begin(); l != zAngData.end(); ++l) {
175 <        finalOut << l->second << "\n";
175 >        sprintf( tempBuffer,
176 >                 "%14.10lf\n",
177 >                 l->second);
178 >        strcpy( writeLine, tempBuffer );
179 >        
180 >        finalOut << writeLine;      
181        }
182 +
183 +      finalOut.close();
184        
185      } else {
186 <      
187 <      for (mol = info_->beginMolecule(mi); mol != NULL;
188 <           mol = info_->nextMolecule(mi)) {
189 <        
190 <        for (integrableObject = mol->beginIntegrableObject(ii);
191 <             integrableObject != NULL;
192 <             integrableObject = mol->nextIntegrableObject(ii)) {
193 <          intObIndex = integrableObject->getGlobalIndex();            
194 <          zAngle = integrableObject->getZangle();
195 <          MPI_Send(&intObIndex, 1, MPI_INT, masterNode, 0, MPI_COMM_WORLD);
196 <          MPI_Send(&zAngle, 1, MPI_REALTYPE, masterNode, 0, MPI_COMM_WORLD);
197 <        }
186 >      for(int j = 1; j < nproc; ++j) {
187 >        for (mol = info_->beginMolecule(mi); mol != NULL;
188 >             mol = info_->nextMolecule(mi)) {
189 >          
190 >          for (integrableObject = mol->beginIntegrableObject(ii);
191 >               integrableObject != NULL;
192 >               integrableObject = mol->nextIntegrableObject(ii)) {
193 >            intObIndex = integrableObject->getGlobalIndex();            
194 >            zAngle = integrableObject->getZangle();
195 >
196 >            MPI_Send(&intObIndex, 1, MPI_INT, masterNode, 0, MPI_COMM_WORLD);
197 >            MPI_Send(&zAngle, 1, MPI_REALTYPE, masterNode, 0, MPI_COMM_WORLD);
198 >          }
199 >        }
200        }
201      }
202 +
203   #endif
180    
181 #ifdef IS_MPI
182    finalOut.close();
183 #endif
184    
204    }
205    
206   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines