/* Generated by Cython 0.29.33 */

#ifndef __PYX_HAVE__petsc4py__PETSc
#define __PYX_HAVE__petsc4py__PETSc

#include "Python.h"
struct PyPetscCommObject;
struct PyPetscObjectObject;
struct PyPetscViewerObject;
struct PyPetscRandomObject;
struct PyPetscISObject;
struct PyPetscLGMapObject;
struct PyPetscSFObject;
struct PyPetscVecObject;
struct PyPetscSpaceObject;
struct PyPetscDualSpaceObject;
struct PyPetscFEObject;
struct PyPetscQuadObject;
struct PyPetscScatterObject;
struct PyPetscSectionObject;
struct PyPetscMatObject;
struct PyPetscMatPartitioningObject;
struct PyPetscNullSpaceObject;
struct PyPetscPCObject;
struct PyPetscKSPObject;
struct PyPetscSNESObject;
struct PyPetscTSObject;
struct PyPetscTAOObject;
struct PyPetscAOObject;
struct PyPetscDMObject;
struct PyPetscDSObject;
struct PyPetscPartitionerObject;
struct PyPetscDMLabelObject;

/* "petsc4py/PETSc.pxd":103
 * # --------------------------------------------------------------------
 * 
 * ctypedef public api class Comm [             # <<<<<<<<<<<<<<
 *     type   PyPetscComm_Type,
 *     object PyPetscCommObject,
 */
struct PyPetscCommObject {
  PyObject_HEAD
  MPI_Comm comm;
  int isdup;
  PyObject *base;
};
typedef struct PyPetscCommObject PyPetscCommObject;

/* "petsc4py/PETSc.pxd":111
 *     cdef object base
 * 
 * ctypedef public api class Object [             # <<<<<<<<<<<<<<
 *     type   PyPetscObject_Type,
 *     object PyPetscObjectObject,
 */
struct PyPetscObjectObject {
  PyObject_HEAD
  struct __pyx_vtabstruct_8petsc4py_5PETSc_Object *__pyx_vtab;
  PyObject *__weakref__;
  PyObject *__pyx___dummy__;
  PetscObject oval;
  PetscObject *obj;
};
typedef struct PyPetscObjectObject PyPetscObjectObject;

/* "petsc4py/PETSc.pxd":123
 *     cdef object get_dict(self)
 * 
 * ctypedef public api class Viewer(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscViewer_Type,
 *     object PyPetscViewerObject,
 */
struct PyPetscViewerObject {
  struct PyPetscObjectObject __pyx_base;
  PetscViewer vwr;
};
typedef struct PyPetscViewerObject PyPetscViewerObject;

/* "petsc4py/PETSc.pxd":129
 *     cdef PetscViewer vwr
 * 
 * ctypedef public api class Random(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscRandom_Type,
 *     object PyPetscRandomObject,
 */
struct PyPetscRandomObject {
  struct PyPetscObjectObject __pyx_base;
  PetscRandom rnd;
};
typedef struct PyPetscRandomObject PyPetscRandomObject;

/* "petsc4py/PETSc.pxd":135
 *     cdef PetscRandom rnd
 * 
 * ctypedef public api class IS(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscIS_Type,
 *     object PyPetscISObject,
 */
struct PyPetscISObject {
  struct PyPetscObjectObject __pyx_base;
  IS iset;
};
typedef struct PyPetscISObject PyPetscISObject;

/* "petsc4py/PETSc.pxd":141
 *     cdef PetscIS iset
 * 
 * ctypedef public api class LGMap(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscLGMap_Type,
 *     object PyPetscLGMapObject,
 */
struct PyPetscLGMapObject {
  struct PyPetscObjectObject __pyx_base;
  ISLocalToGlobalMapping lgm;
};
typedef struct PyPetscLGMapObject PyPetscLGMapObject;

/* "petsc4py/PETSc.pxd":147
 *     cdef PetscLGMap lgm
 * 
 * ctypedef public api class SF(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscSF_Type,
 *     object PyPetscSFObject,
 */
struct PyPetscSFObject {
  struct PyPetscObjectObject __pyx_base;
  PetscSF sf;
};
typedef struct PyPetscSFObject PyPetscSFObject;

/* "petsc4py/PETSc.pxd":153
 *     cdef PetscSF sf
 * 
 * ctypedef public api class Vec(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscVec_Type,
 *     object PyPetscVecObject,
 */
struct PyPetscVecObject {
  struct PyPetscObjectObject __pyx_base;
  Vec vec;
};
typedef struct PyPetscVecObject PyPetscVecObject;

/* "petsc4py/PETSc.pxd":159
 *     cdef PetscVec vec
 * 
 * ctypedef public api class Space(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscSpace_Type,
 *     object PyPetscSpaceObject,
 */
struct PyPetscSpaceObject {
  struct PyPetscObjectObject __pyx_base;
  PetscSpace space;
};
typedef struct PyPetscSpaceObject PyPetscSpaceObject;

/* "petsc4py/PETSc.pxd":165
 *     cdef PetscSpace space
 * 
 * ctypedef public api class DualSpace(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDualSpace_Type,
 *     object PyPetscDualSpaceObject,
 */
struct PyPetscDualSpaceObject {
  struct PyPetscObjectObject __pyx_base;
  PetscDualSpace dualspace;
};
typedef struct PyPetscDualSpaceObject PyPetscDualSpaceObject;

/* "petsc4py/PETSc.pxd":171
 *     cdef PetscDualSpace dualspace
 * 
 * ctypedef public api class FE(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscFE_Type,
 *     object PyPetscFEObject,
 */
struct PyPetscFEObject {
  struct PyPetscObjectObject __pyx_base;
  PetscFE fe;
};
typedef struct PyPetscFEObject PyPetscFEObject;

/* "petsc4py/PETSc.pxd":177
 *     cdef PetscFE fe
 * 
 * ctypedef public api class Quad(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscQuad_Type,
 *     object PyPetscQuadObject,
 */
struct PyPetscQuadObject {
  struct PyPetscObjectObject __pyx_base;
  PetscQuadrature quad;
};
typedef struct PyPetscQuadObject PyPetscQuadObject;

/* "petsc4py/PETSc.pxd":183
 *     cdef PetscQuadrature quad
 * 
 * ctypedef public api class Scatter(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscScatter_Type,
 *     object PyPetscScatterObject,
 */
struct PyPetscScatterObject {
  struct PyPetscObjectObject __pyx_base;
  VecScatter sct;
};
typedef struct PyPetscScatterObject PyPetscScatterObject;

/* "petsc4py/PETSc.pxd":189
 *     cdef PetscScatter sct
 * 
 * ctypedef public api class Section(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscSection_Type,
 *     object PyPetscSectionObject,
 */
struct PyPetscSectionObject {
  struct PyPetscObjectObject __pyx_base;
  PetscSection sec;
};
typedef struct PyPetscSectionObject PyPetscSectionObject;

/* "petsc4py/PETSc.pxd":195
 *     cdef PetscSection sec
 * 
 * ctypedef public api class Mat(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscMat_Type,
 *     object PyPetscMatObject,
 */
struct PyPetscMatObject {
  struct PyPetscObjectObject __pyx_base;
  Mat mat;
};
typedef struct PyPetscMatObject PyPetscMatObject;

/* "petsc4py/PETSc.pxd":201
 *     cdef PetscMat mat
 * 
 * ctypedef public api class MatPartitioning(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscMatPartitioning_Type,
 *     object PyPetscMatPartitioningObject,
 */
struct PyPetscMatPartitioningObject {
  struct PyPetscObjectObject __pyx_base;
  MatPartitioning part;
};
typedef struct PyPetscMatPartitioningObject PyPetscMatPartitioningObject;

/* "petsc4py/PETSc.pxd":207
 *     cdef PetscMatPartitioning part
 * 
 * ctypedef public api class NullSpace(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscNullSpace_Type,
 *     object PyPetscNullSpaceObject,
 */
struct PyPetscNullSpaceObject {
  struct PyPetscObjectObject __pyx_base;
  MatNullSpace nsp;
};
typedef struct PyPetscNullSpaceObject PyPetscNullSpaceObject;

/* "petsc4py/PETSc.pxd":213
 *     cdef PetscNullSpace nsp
 * 
 * ctypedef public api class PC(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscPC_Type,
 *     object PyPetscPCObject,
 */
struct PyPetscPCObject {
  struct PyPetscObjectObject __pyx_base;
  PC pc;
};
typedef struct PyPetscPCObject PyPetscPCObject;

/* "petsc4py/PETSc.pxd":219
 *     cdef PetscPC pc
 * 
 * ctypedef public api class KSP(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscKSP_Type,
 *     object PyPetscKSPObject,
 */
struct PyPetscKSPObject {
  struct PyPetscObjectObject __pyx_base;
  KSP ksp;
};
typedef struct PyPetscKSPObject PyPetscKSPObject;

/* "petsc4py/PETSc.pxd":225
 *     cdef PetscKSP ksp
 * 
 * ctypedef public api class SNES(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscSNES_Type,
 *     object PyPetscSNESObject,
 */
struct PyPetscSNESObject {
  struct PyPetscObjectObject __pyx_base;
  SNES snes;
};
typedef struct PyPetscSNESObject PyPetscSNESObject;

/* "petsc4py/PETSc.pxd":231
 *     cdef PetscSNES snes
 * 
 * ctypedef public api class TS(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscTS_Type,
 *     object PyPetscTSObject,
 */
struct PyPetscTSObject {
  struct PyPetscObjectObject __pyx_base;
  TS ts;
};
typedef struct PyPetscTSObject PyPetscTSObject;

/* "petsc4py/PETSc.pxd":237
 *     cdef PetscTS ts
 * 
 * ctypedef public api class TAO(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscTAO_Type,
 *     object PyPetscTAOObject,
 */
struct PyPetscTAOObject {
  struct PyPetscObjectObject __pyx_base;
  Tao tao;
};
typedef struct PyPetscTAOObject PyPetscTAOObject;

/* "petsc4py/PETSc.pxd":243
 *     cdef PetscTAO tao
 * 
 * ctypedef public api class AO(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscAO_Type,
 *     object PyPetscAOObject,
 */
struct PyPetscAOObject {
  struct PyPetscObjectObject __pyx_base;
  AO ao;
};
typedef struct PyPetscAOObject PyPetscAOObject;

/* "petsc4py/PETSc.pxd":249
 *     cdef PetscAO ao
 * 
 * ctypedef public api class DM(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDM_Type,
 *     object PyPetscDMObject,
 */
struct PyPetscDMObject {
  struct PyPetscObjectObject __pyx_base;
  DM dm;
};
typedef struct PyPetscDMObject PyPetscDMObject;

/* "petsc4py/PETSc.pxd":255
 *     cdef PetscDM dm
 * 
 * ctypedef public api class DS(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDS_Type,
 *     object PyPetscDSObject,
 */
struct PyPetscDSObject {
  struct PyPetscObjectObject __pyx_base;
  PetscDS ds;
};
typedef struct PyPetscDSObject PyPetscDSObject;

/* "petsc4py/PETSc.pxd":261
 *     cdef PetscDS ds
 * 
 * ctypedef public api class Partitioner(Object) [             # <<<<<<<<<<<<<<
 *     type PyPetscPartitioner_Type,
 *     object PyPetscPartitionerObject,
 */
struct PyPetscPartitionerObject {
  struct PyPetscObjectObject __pyx_base;
  PetscPartitioner part;
};
typedef struct PyPetscPartitionerObject PyPetscPartitionerObject;

/* "petsc4py/PETSc.pxd":267
 *     cdef PetscPartitioner part
 * 
 * ctypedef public api class DMLabel(Object) [             # <<<<<<<<<<<<<<
 *     type   PyPetscDMLabel_Type,
 *     object PyPetscDMLabelObject,
 */
struct PyPetscDMLabelObject {
  struct PyPetscObjectObject __pyx_base;
  DMLabel dmlabel;
};
typedef struct PyPetscDMLabelObject PyPetscDMLabelObject;

#ifndef __PYX_HAVE_API__petsc4py__PETSc

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#ifndef DL_IMPORT
  #define DL_IMPORT(_T) _T
#endif

__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscComm_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscObject_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscViewer_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscRandom_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscIS_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscLGMap_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscSF_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscVec_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscSpace_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDualSpace_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscFE_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscQuad_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscScatter_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscSection_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscMat_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscMatPartitioning_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscNullSpace_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscPC_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscKSP_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscSNES_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscTS_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscTAO_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscAO_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDM_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDS_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscPartitioner_Type;
__PYX_EXTERN_C DL_IMPORT(PyTypeObject) PyPetscDMLabel_Type;

#endif /* !__PYX_HAVE_API__petsc4py__PETSc */

/* WARNING: the interface of the module init function changed in CPython 3.5. */
/* It now returns a PyModuleDef instance instead of a PyModule instance. */

#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC initPETSc(void);
#else
PyMODINIT_FUNC PyInit_PETSc(void);
#endif

#endif /* !__PYX_HAVE__petsc4py__PETSc */
