Date: 2025-03-28T21:10:42+00:00

Actual source code: viewercgnsimpl.h

      1: #pragma once

      3: #include <petsc/private/viewerimpl.h>
      4: #include <cgnstypes.h>
      5: #include <cgnslib.h>

      7: typedef struct {
      8:   char           *filename_template;
      9:   char           *filename;
     10:   PetscFileMode   btype;
     11:   int             file_num;
     12:   const PetscInt *node_l2g;
     13:   int             base, zone;
     14:   CGNS_ENUMT(GridLocation_t) grid_loc;
     15:   PetscInt       num_local_nodes, nStart, nEnd;
     16:   PetscInt       eStart, eEnd;
     17:   PetscScalar   *nodal_field;
     18:   PetscSegBuffer output_steps;
     19:   PetscSegBuffer output_times;
     20:   PetscInt       batch_size;

     22:   // Solution reading information
     23:   PetscInt solution_index;              // User set solution index
     24:   int      solution_file_index;         // CGNS file solution index for direct access
     25:   int      solution_file_pointer_index; // CGNS file solution index for FlowSolutionPointers (and other related arrays), index by 1
     26:   char    *solution_name;
     27: } PetscViewer_CGNS;

     29: #define PetscCallCGNS(ierr) \
     30:   do { \
     31:     int _cgns_ier = (ierr); \
     32:     PetscCheck(!_cgns_ier, PETSC_COMM_SELF, PETSC_ERR_LIB, "CGNS error %d %s", _cgns_ier, cg_get_error()); \
     33:   } while (0)

     35: #if !defined(PRIdCGSIZE)
     36:   #if CG_SIZEOF_SIZE == 32
     37:     // cgsize_t is defined as int
     38:     #define MPIU_CGSIZE MPI_INT
     39:     #define PRIdCGSIZE  "d"
     40:   #else
     41:     #if defined(_WIN32)
     42:       // cgsize_t is defined as __int64, which is synonymous with long long
     43:       #define MPIU_CGSIZE MPI_LONG_LONG
     44:       #define PRIdCGSIZE  "lld"
     45:     #else
     46:       // cgsize_t is defined as long
     47:       #define MPIU_CGSIZE MPI_LONG
     48:       #define PRIdCGSIZE  "ld"
     49:     #endif
     50:   #endif
     51: #else
     52:   #if CG_SIZEOF_SIZE == 32
     53:     // cgsize_t is defined as int32_t
     54:     #define MPIU_CGSIZE MPI_INT32_T
     55:   #else
     56:     // cgsize_t is defined as int64_t
     57:     #define MPIU_CGSIZE MPI_INT64_T
     58:   #endif
     59: #endif

     61: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode PetscViewerCGNSCheckBatch_Internal(PetscViewer);
     62: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode PetscViewerCGNSFileOpen_Internal(PetscViewer, PetscInt);
     63: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode PetscViewerCGNSGetSolutionFileIndex_Internal(PetscViewer, int *);