/[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 3126 by jfenwick, Wed Sep 1 00:37:53 2010 UTC revision 3145 by jfenwick, Fri Sep 3 01:25:52 2010 UTC
# Line 355  void Dudley_Mesh_saveVTK(const char *fil Line 355  void Dudley_Mesh_saveVTK(const char *fil
355      /* write number of points and the mesh component */      /* write number of points and the mesh component */
356    
357      if (Dudley_noError()) {      if (Dudley_noError()) {
358          const index_t *nodeIndex;      int flag1=0;
359          if (DUDLEY_REDUCED_NODES == nodeType) {          if (DUDLEY_REDUCED_NODES == nodeType) {
360              nodeIndex = elements->referenceElementSet->referenceElement->Type->linearNodes;              flag1=1;
361          } else if (numVTKNodesPerElement  !=  elements->referenceElementSet->referenceElement->Type->numNodes) {          } else if (numVTKNodesPerElement  !=  elements->referenceElementSet->referenceElement->Type->numNodes) {
362              nodeIndex = elements->referenceElementSet->referenceElement->Type->relevantGeoNodes;              flag1=1;
363          } else {          }
             nodeIndex = NULL;  
         }  
   
364          if (strlen(metadata)>0) {          if (strlen(metadata)>0) {
365             if (strlen(metadata_schema)>0) {             if (strlen(metadata_schema)>0) {
366                sprintf(txtBuffer, vtkHeader," ",metadata_schema,metadata,"\n",globalNumPoints, numCellFactor*globalNumCells, 3);                sprintf(txtBuffer, vtkHeader," ",metadata_schema,metadata,"\n",globalNumPoints, numCellFactor*globalNumCells, 3);
# Line 410  void Dudley_Mesh_saveVTK(const char *fil Line 407  void Dudley_Mesh_saveVTK(const char *fil
407              MPI_RANK0_WRITE_SHARED(tags_End_Points_and_Start_Conn);              MPI_RANK0_WRITE_SHARED(tags_End_Points_and_Start_Conn);
408              txtBuffer[0] = '\0';              txtBuffer[0] = '\0';
409              txtBufferInUse = 0;              txtBufferInUse = 0;
410              if (nodeIndex == NULL) {              if (!flag1) {
411                  for (i = 0; i < numCells; i++) {                  for (i = 0; i < numCells; i++) {
412                      if (elements->Owner[i] == my_mpi_rank) {                      if (elements->Owner[i] == my_mpi_rank) {
413                          for (j = 0; j < numVTKNodesPerElement; j++) {                          for (j = 0; j < numVTKNodesPerElement; j++) {
# Line 424  void Dudley_Mesh_saveVTK(const char *fil Line 421  void Dudley_Mesh_saveVTK(const char *fil
421                  for (i = 0; i < numCells; i++) {                  for (i = 0; i < numCells; i++) {
422                      if (elements->Owner[i] == my_mpi_rank) {                      if (elements->Owner[i] == my_mpi_rank) {
423                          for (l = 0; l < numCellFactor; l++) {                          for (l = 0; l < numCellFactor; l++) {
424                              const int* idx=&nodeIndex[l*numVTKNodesPerElement];                  const int idx=l*numVTKNodesPerElement;
425                              for (j = 0; j < numVTKNodesPerElement; j++) {                              for (j = 0; j < numVTKNodesPerElement; j++) {
426                                  sprintf(tmpBuffer, INT_FORMAT, globalNodeIndex[elements->Nodes[INDEX2(idx[j], i, NN)]]);                                  sprintf(tmpBuffer, INT_FORMAT, globalNodeIndex[elements->Nodes[INDEX2(idx+j, i, NN)]]);
427                                  __STRCAT(txtBuffer, tmpBuffer, txtBufferInUse);                                  __STRCAT(txtBuffer, tmpBuffer, txtBufferInUse);
428                              }                              }
429                              __STRCAT(txtBuffer, NEWLINE, txtBufferInUse);                              __STRCAT(txtBuffer, NEWLINE, txtBufferInUse);
# Line 489  void Dudley_Mesh_saveVTK(const char *fil Line 486  void Dudley_Mesh_saveVTK(const char *fil
486    
487              /* write the cells */              /* write the cells */
488              fputs(tags_End_Points_and_Start_Conn, fileHandle_p);              fputs(tags_End_Points_and_Start_Conn, fileHandle_p);
489              if (nodeIndex == NULL) {              if (!flag1) {
490                  for (i = 0; i < numCells; i++) {                  for (i = 0; i < numCells; i++) {
491                      for (j = 0; j < numVTKNodesPerElement; j++) {                      for (j = 0; j < numVTKNodesPerElement; j++) {
492                          fprintf(fileHandle_p, INT_FORMAT, globalNodeIndex[elements->Nodes[INDEX2(j, i, NN)]]);                          fprintf(fileHandle_p, INT_FORMAT, globalNodeIndex[elements->Nodes[INDEX2(j, i, NN)]]);
# Line 499  void Dudley_Mesh_saveVTK(const char *fil Line 496  void Dudley_Mesh_saveVTK(const char *fil
496              } else {              } else {
497                  for (i = 0; i < numCells; i++) {                  for (i = 0; i < numCells; i++) {
498                      for (l = 0; l < numCellFactor; l++) {                      for (l = 0; l < numCellFactor; l++) {
499                          const int* idx=&nodeIndex[l*numVTKNodesPerElement];                          const int idx=l*numVTKNodesPerElement;
500                          for (j = 0; j < numVTKNodesPerElement; j++) {                          for (j = 0; j < numVTKNodesPerElement; j++) {
501                              fprintf(fileHandle_p, INT_FORMAT, globalNodeIndex[elements->Nodes[INDEX2(idx[j], i, NN)]]);                              fprintf(fileHandle_p, INT_FORMAT, globalNodeIndex[elements->Nodes[INDEX2(idx+j, i, NN)]]);
502                          }                          }
503                          fprintf(fileHandle_p, NEWLINE);                          fprintf(fileHandle_p, NEWLINE);
504                      }                      }

Legend:
Removed from v.3126  
changed lines
  Added in v.3145

  ViewVC Help
Powered by ViewVC 1.1.26