/[escript]/branches/RW_WIN32/finley/src/finleyC/Mesh_saveVTK.c
ViewVC logotype

Diff of /branches/RW_WIN32/finley/src/finleyC/Mesh_saveVTK.c

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

revision 209 by robwdcock, Sun Nov 20 05:43:12 2005 UTC revision 210 by robwdcock, Wed Nov 23 09:54:02 2005 UTC
# Line 49  void Finley_Mesh_saveVTK(const char * fi Line 49  void Finley_Mesh_saveVTK(const char * fi
49    /* find the mesh type to be written */    /* find the mesh type to be written */
50    int nodetype=FINLEY_DEGREES_OF_FREEDOM;    int nodetype=FINLEY_DEGREES_OF_FREEDOM;
51    int elementtype=FINLEY_UNKNOWN;    int elementtype=FINLEY_UNKNOWN;
52    bool_t isCellCentered[num_data],write_celldata=FALSE,write_pointdata=FALSE;    /* win32 refactor */
53      bool_t *isCellCentered = (num_data>0) ? TMPMEMALLOC(num_data,bool_t) : (bool_t*)NULL;
54      bool_t write_celldata=FALSE,write_pointdata=FALSE;
55    for (i_data=0;i_data<num_data;++i_data) {    for (i_data=0;i_data<num_data;++i_data) {
56       if (! isEmpty(data_pp[i_data])) {       if (! isEmpty(data_pp[i_data])) {
57          switch(getFunctionSpaceType(data_pp[i_data])) {          switch(getFunctionSpaceType(data_pp[i_data])) {
# Line 60  void Finley_Mesh_saveVTK(const char * fi Line 62  void Finley_Mesh_saveVTK(const char * fi
62               } else {               } else {
63                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");
64                   fclose(fileHandle_p);                   fclose(fileHandle_p);
65         /* win32 refactor */
66         TMPMEMFREE(isCellCentered);
67                   return;                   return;
68               }               }
69               isCellCentered[i_data]=FALSE;               isCellCentered[i_data]=FALSE;
# Line 71  void Finley_Mesh_saveVTK(const char * fi Line 75  void Finley_Mesh_saveVTK(const char * fi
75               } else {               } else {
76                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");
77                   fclose(fileHandle_p);                   fclose(fileHandle_p);
78         /* win32 refactor */
79         TMPMEMFREE(isCellCentered);
80                   return;                   return;
81               }               }
82               isCellCentered[i_data]=FALSE;               isCellCentered[i_data]=FALSE;
# Line 82  void Finley_Mesh_saveVTK(const char * fi Line 88  void Finley_Mesh_saveVTK(const char * fi
88               } else {               } else {
89                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");
90                   fclose(fileHandle_p);                   fclose(fileHandle_p);
91         /* win32 refactor */
92         TMPMEMFREE(isCellCentered);
93                   return;                   return;
94               }               }
95               isCellCentered[i_data]=FALSE;               isCellCentered[i_data]=FALSE;
# Line 93  void Finley_Mesh_saveVTK(const char * fi Line 101  void Finley_Mesh_saveVTK(const char * fi
101               } else {               } else {
102                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");
103                   fclose(fileHandle_p);                   fclose(fileHandle_p);
104         /* win32 refactor */
105         TMPMEMFREE(isCellCentered);
106                   return;                   return;
107               }               }
108               isCellCentered[i_data]=TRUE;               isCellCentered[i_data]=TRUE;
# Line 104  void Finley_Mesh_saveVTK(const char * fi Line 114  void Finley_Mesh_saveVTK(const char * fi
114               } else {               } else {
115                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");
116                   fclose(fileHandle_p);                   fclose(fileHandle_p);
117         /* win32 refactor */
118         TMPMEMFREE(isCellCentered);
119                   return;                   return;
120               }               }
121               isCellCentered[i_data]=TRUE;               isCellCentered[i_data]=TRUE;
# Line 115  void Finley_Mesh_saveVTK(const char * fi Line 127  void Finley_Mesh_saveVTK(const char * fi
127               } else {               } else {
128                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");
129                   fclose(fileHandle_p);                   fclose(fileHandle_p);
130         /* win32 refactor */
131         TMPMEMFREE(isCellCentered);
132                   return;                   return;
133               }               }
134               isCellCentered[i_data]=TRUE;               isCellCentered[i_data]=TRUE;
# Line 126  void Finley_Mesh_saveVTK(const char * fi Line 140  void Finley_Mesh_saveVTK(const char * fi
140               } else {               } else {
141                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");
142                   fclose(fileHandle_p);                   fclose(fileHandle_p);
143         /* win32 refactor */
144         TMPMEMFREE(isCellCentered);
145                   return;                   return;
146               }               }
147               isCellCentered[i_data]=TRUE;               isCellCentered[i_data]=TRUE;
# Line 137  void Finley_Mesh_saveVTK(const char * fi Line 153  void Finley_Mesh_saveVTK(const char * fi
153               } else {               } else {
154                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");                   Finley_setError(TYPE_ERROR,"saveVTK: cannot write given data in single file.");
155                   fclose(fileHandle_p);                   fclose(fileHandle_p);
156         /* win32 refactor */
157         TMPMEMFREE(isCellCentered);
158                   return;                   return;
159               }               }
160               isCellCentered[i_data]=TRUE;               isCellCentered[i_data]=TRUE;
# Line 145  void Finley_Mesh_saveVTK(const char * fi Line 163  void Finley_Mesh_saveVTK(const char * fi
163               sprintf(error_msg,"saveVTK: Finley does not know anything about function space type %d",getFunctionSpaceType(data_pp[i_data]));               sprintf(error_msg,"saveVTK: Finley does not know anything about function space type %d",getFunctionSpaceType(data_pp[i_data]));
164               Finley_setError(TYPE_ERROR,error_msg);               Finley_setError(TYPE_ERROR,error_msg);
165               fclose(fileHandle_p);               fclose(fileHandle_p);
166         /* win32 refactor */
167         TMPMEMFREE(isCellCentered);
168               return;               return;
169          }          }
170          if (isCellCentered[i_data]) {          if (isCellCentered[i_data]) {
# Line 180  void Finley_Mesh_saveVTK(const char * fi Line 200  void Finley_Mesh_saveVTK(const char * fi
200    if (elements==NULL) {    if (elements==NULL) {
201       Finley_setError(SYSTEM_ERROR,"saveVTK: undefined element file");       Finley_setError(SYSTEM_ERROR,"saveVTK: undefined element file");
202       fclose(fileHandle_p);       fclose(fileHandle_p);
203         /* win32 refactor */
204         TMPMEMFREE(isCellCentered);
205       return;       return;
206    }    }
207    /* map finley element type to VTK element type */    /* map finley element type to VTK element type */
# Line 291  void Finley_Mesh_saveVTK(const char * fi Line 313  void Finley_Mesh_saveVTK(const char * fi
313        sprintf(error_msg, "saveVTK: Element type %s is not supported by VTK",elements->ReferenceElement->Type->Name);        sprintf(error_msg, "saveVTK: Element type %s is not supported by VTK",elements->ReferenceElement->Type->Name);
314        Finley_setError(VALUE_ERROR,error_msg);        Finley_setError(VALUE_ERROR,error_msg);
315        fclose(fileHandle_p);        fclose(fileHandle_p);
316         /* win32 refactor */
317         TMPMEMFREE(isCellCentered);
318        return;        return;
319    }    }
320    /* xml header */    /* xml header */
# Line 435  void Finley_Mesh_saveVTK(const char * fi Line 459  void Finley_Mesh_saveVTK(const char * fi
459                         sprintf(error_msg, "saveVTK: data %s: Vtk can't handle objects with rank greater than 2.",names_p[i_data]);                         sprintf(error_msg, "saveVTK: data %s: Vtk can't handle objects with rank greater than 2.",names_p[i_data]);
460                         Finley_setError(VALUE_ERROR,error_msg);                         Finley_setError(VALUE_ERROR,error_msg);
461                         fclose(fileHandle_p);                         fclose(fileHandle_p);
462         /* win32 refactor */
463         TMPMEMFREE(isCellCentered);
464                         return;                         return;
465                  }                  }
466              }              }
# Line 455  void Finley_Mesh_saveVTK(const char * fi Line 481  void Finley_Mesh_saveVTK(const char * fi
481                   if  (shape>3) {                   if  (shape>3) {
482                       Finley_setError(VALUE_ERROR, "saveVTK: rank 1 object must have less then 4 components");                       Finley_setError(VALUE_ERROR, "saveVTK: rank 1 object must have less then 4 components");
483                       fclose(fileHandle_p);                       fclose(fileHandle_p);
484         /* win32 refactor */
485         TMPMEMFREE(isCellCentered);
486                       return;                       return;
487                   }                   }
488                   nCompReqd = 3;                   nCompReqd = 3;
# Line 463  void Finley_Mesh_saveVTK(const char * fi Line 491  void Finley_Mesh_saveVTK(const char * fi
491                   if  (shape>3 || shape != getDataPointShape(data_pp[i_data], 1)) {                   if  (shape>3 || shape != getDataPointShape(data_pp[i_data], 1)) {
492                       Finley_setError(VALUE_ERROR, "saveVTK: rank 2 object must have less then 4x4 components and must have a square shape");                       Finley_setError(VALUE_ERROR, "saveVTK: rank 2 object must have less then 4x4 components and must have a square shape");
493                       fclose(fileHandle_p);                       fclose(fileHandle_p);
494         /* win32 refactor */
495         TMPMEMFREE(isCellCentered);
496                       return;                       return;
497                   }                   }
498                   nCompReqd = 9;                   nCompReqd = 9;
499               }               }
500               fprintf(fileHandle_p, "<DataArray Name=\"%s\" type=\"Float32\" NumberOfComponents=\"%d\" format=\"ascii\">\n",names_p[i_data], nCompReqd);               fprintf(fileHandle_p, "<DataArray Name=\"%s\" type=\"Float32\" NumberOfComponents=\"%d\" format=\"ascii\">\n",names_p[i_data], nCompReqd);
501      /* win32 refactor */
502      double *sampleAvg = (nComp>0) ? TMPMEMALLOC(nComp,double) : (double*)NULL;
503        
          double sampleAvg[nComp];  
504           for (i=0; i<numCells; i++) {           for (i=0; i<numCells; i++) {
505              values = getSampleData(data_pp[i_data], i);              values = getSampleData(data_pp[i_data], i);
506              /* averaging over the number of points in the sample */              /* averaging over the number of points in the sample */
# Line 506  void Finley_Mesh_saveVTK(const char * fi Line 537  void Finley_Mesh_saveVTK(const char * fi
537                fprintf(fileHandle_p, "\n");                fprintf(fileHandle_p, "\n");
538               }               }
539               fprintf(fileHandle_p, "</DataArray>\n");               fprintf(fileHandle_p, "</DataArray>\n");
540                      /* win32 refactor */
541         TMPMEMFREE(sampleAvg);
542    
543           }           }
544         }         }
545         fprintf(fileHandle_p, "</CellData>\n");         fprintf(fileHandle_p, "</CellData>\n");
# Line 544  void Finley_Mesh_saveVTK(const char * fi Line 578  void Finley_Mesh_saveVTK(const char * fi
578                         sprintf(error_msg, "saveVTK: data %s: Vtk can't handle objects with rank greater than 2.",names_p[i_data]);                         sprintf(error_msg, "saveVTK: data %s: Vtk can't handle objects with rank greater than 2.",names_p[i_data]);
579                         Finley_setError(VALUE_ERROR,error_msg);                         Finley_setError(VALUE_ERROR,error_msg);
580                         fclose(fileHandle_p);                         fclose(fileHandle_p);
581         /* win32 refactor */
582         TMPMEMFREE(isCellCentered);
583                         return;                         return;
584                  }                  }
585              }              }
# Line 564  void Finley_Mesh_saveVTK(const char * fi Line 600  void Finley_Mesh_saveVTK(const char * fi
600                   if  (shape>3) {                   if  (shape>3) {
601                       Finley_setError(VALUE_ERROR, "saveVTK: rank 1 object must have less then 4 components");                       Finley_setError(VALUE_ERROR, "saveVTK: rank 1 object must have less then 4 components");
602                       fclose(fileHandle_p);                       fclose(fileHandle_p);
603         /* win32 refactor */
604         TMPMEMFREE(isCellCentered);
605                       return;                       return;
606                   }                   }
607                   nCompReqd = 3;                   nCompReqd = 3;
# Line 572  void Finley_Mesh_saveVTK(const char * fi Line 610  void Finley_Mesh_saveVTK(const char * fi
610                   if  (shape>3 || shape != getDataPointShape(data_pp[i_data], 1)) {                   if  (shape>3 || shape != getDataPointShape(data_pp[i_data], 1)) {
611                       Finley_setError(VALUE_ERROR, "saveVTK: rank 2 object must have less then 4x4 components and must have a square shape");                       Finley_setError(VALUE_ERROR, "saveVTK: rank 2 object must have less then 4x4 components and must have a square shape");
612                       fclose(fileHandle_p);                       fclose(fileHandle_p);
613         /* win32 refactor */
614         TMPMEMFREE(isCellCentered);
615                       return;                       return;
616                   }                   }
617                   nCompReqd = 9;                   nCompReqd = 9;
# Line 648  void Finley_Mesh_saveVTK(const char * fi Line 688  void Finley_Mesh_saveVTK(const char * fi
688    fprintf(fileHandle_p, "</VTKFile>\n");    fprintf(fileHandle_p, "</VTKFile>\n");
689    /* close the file */    /* close the file */
690    fclose(fileHandle_p);    fclose(fileHandle_p);
691         /* win32 refactor */
692         TMPMEMFREE(isCellCentered);
693    return;    return;
694  }  }

Legend:
Removed from v.209  
changed lines
  Added in v.210

  ViewVC Help
Powered by ViewVC 1.1.26