Actual source code: vtkvimpl.h

  1: #if !defined(_VTKVIMPL_H)
  2: #define _VTKVIMPL_H

  4: #include <petsc/private/viewerimpl.h>

  6: typedef struct _n_PetscViewerVTKObjectLink *PetscViewerVTKObjectLink;
  7: struct _n_PetscViewerVTKObjectLink {
  8:   PetscViewerVTKFieldType  ft;
  9:   PetscObject              vec;
 10:   PetscViewerVTKObjectLink next;
 11:   PetscInt                 field;
 12: };

 14: typedef struct {
 15:   char                     *filename;
 16:   PetscFileMode            btype;
 17:   PetscObject              dm;
 18:   PetscViewerVTKObjectLink link;
 19:   PetscErrorCode (*write)(PetscObject,PetscViewer);
 20: } PetscViewer_VTK;

 22: PETSC_EXTERN PetscErrorCode PetscViewerVTKFWrite(PetscViewer,FILE*,const void*,PetscInt,MPI_Datatype);

 24: #if defined(PETSC_HAVE_STDINT_H) /* The VTK format requires a 32-bit integer */
 25: typedef int32_t PetscVTKInt;
 26: #else                            /* Hope int is 32 bits */
 27: typedef int PetscVTKInt;
 28: #endif
 29: typedef unsigned char PetscVTKType;

 31: #define PETSC_VTK_INT_MAX  2147483647
 32: #define PETSC_VTK_INT_MIN -2147483647
 33: #if defined(PETSC_USE_64BIT_INDICES)
 35: #  define PetscVTKIntCast(a) (PetscVTKInt)(a);PetscVTKIntCheck(a)
 36: #else
 37: #  define PetscVTKIntCheck(a)
 38: #  define PetscVTKIntCast(a) a
 39: #endif

 41: /* the only problem we've encountered so far is spaces not being acceptable for paraview field names */
 42: static inline PetscErrorCode PetscViewerVTKSanitizeName_Internal(char name[], size_t maxlen)
 43: {
 44:   size_t c;

 46:   for (c = 0; c < maxlen; c++) {
 47:     char a = name[c];
 48:     if (a == '\0') break;
 49:     if (a == ' ') name[c] = '_';
 50:   }
 51:   return 0;
 52: }
 53: #endif