Date: 2022-08-02T03:13:16+00:00

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