~njansson/dolfin/hpc

« back to all changes in this revision

Viewing changes to src/io/BinaryFile.cpp

  • Committer: Niclas Jansson
  • Date: 2011-10-08 18:40:52 UTC
  • Revision ID: njansson@csc.kth.se-20111008184052-yg19ssfk0hq11e4x
Tags: 0.8.2-hpc
Fixed various build problems and parallel read of serial written mesh

Show diffs side-by-side

added added

removed removed

Lines of Context:
208
208
    real *values = new real[size];
209
209
    u->vector().get(values);
210
210
 
211
 
    size = u->dim(0) * (mesh.numVertices() - mesh.distdata().num_ghost(0));      
212
 
    
 
211
    size = u->dim(0) * (mesh.numVertices() - mesh.distdata().num_ghost(0));   
 
212
 
213
213
    BinaryFunctionHeader f_hdr;
214
214
    f_hdr.dim = dim;
215
215
    f_hdr.size = u->dim(0) * mesh.distdata().global_numVertices();
220
220
      f_hdr.t = *_t;
221
221
    else 
222
222
      f_hdr.t = counter;
223
 
    MPI_File_write_at_all(fh, byte_offset, &f_hdr, sizeof(BinaryFunctionHeader), 
 
223
    MPI_File_write_at_all(fh, byte_offset, &f_hdr, 
 
224
                          sizeof(BinaryFunctionHeader),
224
225
                          MPI_BYTE, MPI_STATUS_IGNORE);
225
226
    byte_offset += sizeof(BinaryFunctionHeader);
226
227
 
227
228
    MPI_File_write_at_all(fh, byte_offset + u->vector().offset()*sizeof(real),
228
229
                          values, size, MPI_DOUBLE, MPI_STATUS_IGNORE);
229
 
    byte_offset += u->dim(0) * (mesh.distdata().global_numVertices() * sizeof(real));
 
230
    byte_offset += u->dim(0) *
 
231
      (mesh.distdata().global_numVertices() * sizeof(real));
230
232
 
231
233
    delete[] values;
232
234
  }
453
455
      local_max = std::max(local_max, (uint) non_local_cells[i].size());
454
456
      
455
457
    uint buff_size = 0;
456
 
    MPI_Allreduce(&local_max, &buff_size, 1, MPI_UNSIGNED, MPI_MAX, MPI::DOLFIN_COMM);
 
458
    MPI_Allreduce(&local_max, &buff_size, 1, MPI_UNSIGNED,
 
459
                  MPI_MAX, MPI::DOLFIN_COMM);
457
460
 
458
461
 
459
462
    uint *recv_buffer = new uint[buff_size];    
502
505
    }
503
506
 
504
507
    // Number of vertices in mesh, used + ghosts
505
 
    uint num_local_vertices = used_vertices.size() + ghosted_entities.size();    
506
 
 
 
508
    uint num_local_vertices = used_vertices.size() + ghosted_entities.size(); 
 
509
    
507
510
 
508
511
    std::string celltype;
509
512
    if (type == 0)
525
528
      all_vertices.insert(offset[0] + i);
526
529
    std::set_difference(all_vertices.begin(), all_vertices.end(),
527
530
                        used_vertices.begin(), used_vertices.end(),
528
 
                        std::inserter(orphaned_vertices, orphaned_vertices.end()));
 
531
                        std::inserter(orphaned_vertices,
 
532
                                      orphaned_vertices.end()));
529
533
 
530
534
    // Open mesh for editing
531
535
    MeshEditor editor;