/[escript]/branches/domexper/dudley/src/Mesh_saveVTK.c
ViewVC logotype

Diff of /branches/domexper/dudley/src/Mesh_saveVTK.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2548 by jfenwick, Mon Jul 20 06:20:06 2009 UTC revision 2743 by caltinay, Mon Nov 16 05:28:47 2009 UTC
# Line 27  Line 27 
27  #define SCALAR_FORMAT "%12.6e\n"  #define SCALAR_FORMAT "%12.6e\n"
28  #define VECTOR_FORMAT "%12.6e %12.6e %12.6e\n"  #define VECTOR_FORMAT "%12.6e %12.6e %12.6e\n"
29  #define TENSOR_FORMAT "%12.6e %12.6e %12.6e %12.6e %12.6e %12.6e %12.6e %12.6e %12.6e\n"  #define TENSOR_FORMAT "%12.6e %12.6e %12.6e %12.6e %12.6e %12.6e %12.6e %12.6e %12.6e\n"
30  #define LEN_TENSOR_FORMAT (unsigned int)(9*(12+1)+1)  /* strlen("-1.234567e+78 ") == 14 */
31    #define LEN_TENSOR_FORMAT (unsigned int)(9*14+1)
32  #define NEWLINE "\n"  #define NEWLINE "\n"
33  #define LEN_TMP_BUFFER LEN_TENSOR_FORMAT+(MAX_numNodes*LEN_INT_FORMAT+1)+2  #define LEN_TMP_BUFFER LEN_TENSOR_FORMAT+(MAX_numNodes*LEN_INT_FORMAT+1)+2
34  #define NCOMP_MAX (unsigned int)9  #define NCOMP_MAX (unsigned int)9
# Line 493  void Finley_Mesh_saveVTK(const char *fil Line 494  void Finley_Mesh_saveVTK(const char *fil
494    
495      txtBufferSize = strlen(vtkHeader) + 3*LEN_INT_FORMAT + (30+3*maxNameLen)+strlen(metadata)+strlen(metadata_schema);      txtBufferSize = strlen(vtkHeader) + 3*LEN_INT_FORMAT + (30+3*maxNameLen)+strlen(metadata)+strlen(metadata_schema);
496      if (mpi_size > 1) {      if (mpi_size > 1) {
497         txtBufferSize = MAX(txtBufferSize, myNumPoints * LEN_TMP_BUFFER);          txtBufferSize = MAX(txtBufferSize, myNumPoints * LEN_TMP_BUFFER);
498          txtBufferSize = MAX(txtBufferSize, numCellFactor * myNumCells *          txtBufferSize = MAX(txtBufferSize, numCellFactor * myNumCells *
499                  (LEN_INT_FORMAT * numVTKNodesPerElement + 1));                  (LEN_INT_FORMAT * numVTKNodesPerElement + 1));
500          txtBufferSize = MAX(txtBufferSize,          txtBufferSize = MAX(txtBufferSize,
# Line 778  void Finley_Mesh_saveVTK(const char *fil Line 779  void Finley_Mesh_saveVTK(const char *fil
779                  txtBufferInUse = 0;                  txtBufferInUse = 0;
780                  for (i=0; i<numCells; i++) {                  for (i=0; i<numCells; i++) {
781                      if (elements->Owner[i] == my_mpi_rank) {                      if (elements->Owner[i] == my_mpi_rank) {
782              void* sampleBuffer=allocSampleBuffer(data_pp[dataIdx]);                          void* sampleBuffer=allocSampleBuffer(data_pp[dataIdx]);
783                          __const double *values = getSampleDataRO(data_pp[dataIdx], i,sampleBuffer);                          __const double *values = getSampleDataRO(data_pp[dataIdx], i,sampleBuffer);
784                          for (l = 0; l < numCellFactor; l++) {                          for (l = 0; l < numCellFactor; l++) {
785                              double sampleAvg[NCOMP_MAX];                              double sampleAvg[NCOMP_MAX];
# Line 845  void Finley_Mesh_saveVTK(const char *fil Line 846  void Finley_Mesh_saveVTK(const char *fil
846                                  fputs(tmpBuffer, fileHandle_p);                                  fputs(tmpBuffer, fileHandle_p);
847                              }                              }
848                          } /* for l (numCellFactor) */                          } /* for l (numCellFactor) */
849              freeSampleBuffer(sampleBuffer);                          freeSampleBuffer(sampleBuffer);
850                      } /* if I am the owner */                      } /* if I am the owner */
851                  } /* for i (numCells) */                  } /* for i (numCells) */
852    
# Line 961  void Finley_Mesh_saveVTK(const char *fil Line 962  void Finley_Mesh_saveVTK(const char *fil
962                  for (i=0; i<mesh_p->Nodes->numNodes; i++) {                  for (i=0; i<mesh_p->Nodes->numNodes; i++) {
963                      k = globalNodeIndex[i];                      k = globalNodeIndex[i];
964                      if ( (myFirstNode <= k) && (k < myLastNode) ) {                      if ( (myFirstNode <= k) && (k < myLastNode) ) {
965              void* sampleBuffer=allocSampleBuffer(data_pp[dataIdx]);                          void* sampleBuffer=allocSampleBuffer(data_pp[dataIdx]);
966                          __const double *values = getSampleDataRO(data_pp[dataIdx], nodeMapping->target[i], sampleBuffer);                          __const double *values = getSampleDataRO(data_pp[dataIdx], nodeMapping->target[i], sampleBuffer);
967                          /* if the number of mpi_required components is more than                          /* if the number of mpi_required components is more than
968                           * the number of actual components, pad with zeros.                           * the number of actual components, pad with zeros.
# Line 1002  void Finley_Mesh_saveVTK(const char *fil Line 1003  void Finley_Mesh_saveVTK(const char *fil
1003                          } else {                          } else {
1004                              fputs(tmpBuffer, fileHandle_p);                              fputs(tmpBuffer, fileHandle_p);
1005                          }                          }
1006              freeSampleBuffer(sampleBuffer);         /* no-one needs values anymore */                          freeSampleBuffer(sampleBuffer);                 /* no-one needs values anymore */
1007                      } /* if this is my node */                      } /* if this is my node */
1008                  } /* for i (numNodes) */                  } /* for i (numNodes) */
1009    
# Line 1035  void Finley_Mesh_saveVTK(const char *fil Line 1036  void Finley_Mesh_saveVTK(const char *fil
1036      if ( mpi_size > 1) {      if ( mpi_size > 1) {
1037  #ifdef PASO_MPI  #ifdef PASO_MPI
1038          MPI_File_close(&mpi_fileHandle_p);          MPI_File_close(&mpi_fileHandle_p);
1039      MPI_Barrier(mesh_p->Nodes->MPIInfo->comm);          MPI_Barrier(mesh_p->Nodes->MPIInfo->comm);
1040  #endif  #endif
1041      } else {      } else {
1042          fclose(fileHandle_p);          fclose(fileHandle_p);

Legend:
Removed from v.2548  
changed lines
  Added in v.2743

  ViewVC Help
Powered by ViewVC 1.1.26