/[escript]/trunk/finley/src/Mesh_saveVTK.c
ViewVC logotype

Diff of /trunk/finley/src/Mesh_saveVTK.c

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

revision 616 by elspeth, Wed Mar 22 02:46:56 2006 UTC revision 687 by gross, Mon Mar 27 22:17:32 2006 UTC
# Line 32  void Finley_Mesh_saveVTK(const char * fi Line 32  void Finley_Mesh_saveVTK(const char * fi
32    /* if there is no mesh we just return */    /* if there is no mesh we just return */
33    if (mesh_p==NULL) return;    if (mesh_p==NULL) return;
34    
35    int i, j, k, numVTKNodesPerElement,i_data;    int i, j, k, numVTKNodesPerElement,i_data,m, count, n, rank,shape, numPoints, cellType, numCells,
36          nDim, numPointsPerSample, nComp, nCompReqd;
37    
38    index_t j2;    index_t j2;
39    double* values, rtmp;    double* values, rtmp;
40      char elemTypeStr[32];
41        
42    /* open the file and check handle */    /* open the file and check handle */
43    
# Line 153  void Finley_Mesh_saveVTK(const char * fi Line 156  void Finley_Mesh_saveVTK(const char * fi
156       }       }
157    }    }
158    /* select nomber of points and the mesh component */    /* select nomber of points and the mesh component */
159    int numPoints = mesh_p->Nodes->numNodes;    numPoints = mesh_p->Nodes->numNodes;
160    if (nodetype==FINLEY_REDUCED_DEGREES_OF_FREEDOM) {    if (nodetype==FINLEY_REDUCED_DEGREES_OF_FREEDOM) {
161        numPoints = mesh_p->Nodes->reducedNumNodes;        numPoints = mesh_p->Nodes->reducedNumNodes;
162    } else {    } else {
# Line 181  void Finley_Mesh_saveVTK(const char * fi Line 184  void Finley_Mesh_saveVTK(const char * fi
184       return;       return;
185    }    }
186    /* map finley element type to VTK element type */    /* map finley element type to VTK element type */
187    int numCells = elements->numElements;      numCells = elements->numElements;  
   int cellType;  
188    ElementTypeId TypeId;    ElementTypeId TypeId;
   char elemTypeStr[32];  
189    if (nodetype==FINLEY_REDUCED_DEGREES_OF_FREEDOM) {    if (nodetype==FINLEY_REDUCED_DEGREES_OF_FREEDOM) {
190       TypeId = elements->LinearReferenceElement->Type->TypeId;       TypeId = elements->LinearReferenceElement->Type->TypeId;
191    } else {    } else {
# Line 310  void Finley_Mesh_saveVTK(const char * fi Line 311  void Finley_Mesh_saveVTK(const char * fi
311    /*    /*
312     * the reason for this if statement is explained in the long comment below     * the reason for this if statement is explained in the long comment below
313     */     */
314    int nDim = mesh_p->Nodes->numDim;    nDim = mesh_p->Nodes->numDim;
315    fprintf(fileHandle_p, "<DataArray NumberOfComponents=\"%d\" type=\"Float32\" format=\"ascii\">\n",MAX(3,nDim));    fprintf(fileHandle_p, "<DataArray NumberOfComponents=\"%d\" type=\"Float32\" format=\"ascii\">\n",MAX(3,nDim));
316    /* vtk/mayavi doesn't like 2D data, it likes 3D data with a degenerate    /* vtk/mayavi doesn't like 2D data, it likes 3D data with a degenerate
317       * third dimension to handle 2D data (like a sheet of paper).  So, if       * third dimension to handle 2D data (like a sheet of paper).  So, if
# Line 441  void Finley_Mesh_saveVTK(const char * fi Line 442  void Finley_Mesh_saveVTK(const char * fi
442         /* write the arrays */         /* write the arrays */
443         for (i_data =0 ;i_data<num_data;++i_data) {         for (i_data =0 ;i_data<num_data;++i_data) {
444            if (! isEmpty(data_pp[i_data]) && isCellCentered[i_data]) {            if (! isEmpty(data_pp[i_data]) && isCellCentered[i_data]) {
445               int numPointsPerSample = elements->ReferenceElement->numQuadNodes;               numPointsPerSample = elements->ReferenceElement->numQuadNodes;
446               int rank = getDataPointRank(data_pp[i_data]);               rank = getDataPointRank(data_pp[i_data]);
447               int nComp = getDataPointSize(data_pp[i_data]);               nComp = getDataPointSize(data_pp[i_data]);
448               int nCompReqd=1;   /* the number of components required by vtk */               nCompReqd=1;   /* the number of components required by vtk */
449               int shape=0;               shape=0;
450               if (rank == 0) {               if (rank == 0) {
451                  nCompReqd = 1;                  nCompReqd = 1;
452               } else if (rank == 1) {               } else if (rank == 1) {
# Line 485  void Finley_Mesh_saveVTK(const char * fi Line 486  void Finley_Mesh_saveVTK(const char * fi
486                 fprintf(fileHandle_p, " %e", sampleAvg[0]);                 fprintf(fileHandle_p, " %e", sampleAvg[0]);
487               } else if (nCompReqd == 3) {               } else if (nCompReqd == 3) {
488                 /* write out the data */                 /* write out the data */
489                 for (int m=0; m<shape; m++) fprintf(fileHandle_p, " %e", sampleAvg[m]);                 for (m=0; m<shape; m++) fprintf(fileHandle_p, " %e", sampleAvg[m]);
490                 for (int m=0; m<nCompReqd-shape; m++) fprintf(fileHandle_p, " %e", 0.);                 for (m=0; m<nCompReqd-shape; m++) fprintf(fileHandle_p, " %e", 0.);
491               } else if (nCompReqd == 9) {               } else if (nCompReqd == 9) {
492                 /* tensor data, so have a 3x3 matrix to output as a row                 /* tensor data, so have a 3x3 matrix to output as a row
493                  * of 9 data points */                  * of 9 data points */
494                  int count = 0;                  count = 0;
495                  for (int m=0; m<shape; m++) {                  for (m=0; m<shape; m++) {
496                    for (int n=0; n<shape; n++) {                    for (n=0; n<shape; n++) {
497                       fprintf(fileHandle_p, " %e", sampleAvg[count]);                       fprintf(fileHandle_p, " %e", sampleAvg[count]);
498                       count++;                       count++;
499                    }                    }
500                    for (int n=0; n<3-shape; n++) fprintf(fileHandle_p, " %e", 0.);                    for (n=0; n<3-shape; n++) fprintf(fileHandle_p, " %e", 0.);
501                  }                  }
502                  for (int m=0; m<3-shape; m++)                  for (m=0; m<3-shape; m++)
503                     for (int n=0; n<3; n++) fprintf(fileHandle_p, " %e", 0.);                     for (n=0; n<3; n++) fprintf(fileHandle_p, " %e", 0.);
504                  }                  }
505                fprintf(fileHandle_p, "\n");                fprintf(fileHandle_p, "\n");
506               }               }
# Line 550  void Finley_Mesh_saveVTK(const char * fi Line 551  void Finley_Mesh_saveVTK(const char * fi
551         /* write the arrays */         /* write the arrays */
552         for (i_data =0 ;i_data<num_data;++i_data) {         for (i_data =0 ;i_data<num_data;++i_data) {
553            if (! isEmpty(data_pp[i_data]) && !isCellCentered[i_data]) {            if (! isEmpty(data_pp[i_data]) && !isCellCentered[i_data]) {
554               int numPointsPerSample = elements->ReferenceElement->numQuadNodes;               numPointsPerSample = elements->ReferenceElement->numQuadNodes;
555               int rank = getDataPointRank(data_pp[i_data]);               rank = getDataPointRank(data_pp[i_data]);
556               int nComp = getDataPointSize(data_pp[i_data]);               nComp = getDataPointSize(data_pp[i_data]);
557               int nCompReqd=1;   /* the number of components required by vtk */               nCompReqd=1;   /* the number of components required by vtk */
558               int shape=0;               shape=0;
559               if (rank == 0) {               if (rank == 0) {
560                  nCompReqd = 1;                  nCompReqd = 1;
561               } else if (rank == 1) {               } else if (rank == 1) {
# Line 614  void Finley_Mesh_saveVTK(const char * fi Line 615  void Finley_Mesh_saveVTK(const char * fi
615                if (nCompReqd == 1) {                if (nCompReqd == 1) {
616                  fprintf(fileHandle_p, " %e", values[0]);                  fprintf(fileHandle_p, " %e", values[0]);
617                } else if (nCompReqd == 3) {                } else if (nCompReqd == 3) {
618                  for (int m=0; m<shape; m++) fprintf(fileHandle_p, " %e", values[m]);                  for (m=0; m<shape; m++) fprintf(fileHandle_p, " %e", values[m]);
619                  for (int m=0; m<nCompReqd-shape; m++) fprintf(fileHandle_p, " %e", 0.);                  for (m=0; m<nCompReqd-shape; m++) fprintf(fileHandle_p, " %e", 0.);
620                } else if (nCompReqd == 9) {                } else if (nCompReqd == 9) {
621                  /* tensor data, so have a 3x3 matrix to output as a row                  /* tensor data, so have a 3x3 matrix to output as a row
622                   * of 9 data points */                   * of 9 data points */
623                  int count = 0;                  count = 0;
624                  for (int m=0; m<shape; m++) {                  for (m=0; m<shape; m++) {
625                    for (int n=0; n<shape; n++) {                    for (n=0; n<shape; n++) {
626                      fprintf(fileHandle_p, " %e", values[count]);                      fprintf(fileHandle_p, " %e", values[count]);
627                      count++;                      count++;
628                    }                    }
629                    for (int n=0; n<3-shape; n++) fprintf(fileHandle_p, " %e", 0.);                    for (n=0; n<3-shape; n++) fprintf(fileHandle_p, " %e", 0.);
630                  }                  }
631                  for (int m=0; m<3-shape; m++)                    for (m=0; m<3-shape; m++)  
632                      for (int n=0; n<3; n++) fprintf(fileHandle_p, " %e", 0.);                      for (n=0; n<3; n++) fprintf(fileHandle_p, " %e", 0.);
633                }                }
634                    fprintf(fileHandle_p, "\n");                    fprintf(fileHandle_p, "\n");
635                 }                 }

Legend:
Removed from v.616  
changed lines
  Added in v.687

  ViewVC Help
Powered by ViewVC 1.1.26