#include "petsc.h"
#include "petscfix.h"
/* asm.c */
/* Fortran interface file */

/*
* This file was generated automatically by bfort from the C source
* file.  
 */

#ifdef PETSC_USE_POINTER_CONVERSION
#if defined(__cplusplus)
extern "C" { 
#endif 
extern void *PetscToPointer(void*);
extern int PetscFromPointer(void *);
extern void PetscRmPointer(void*);
#if defined(__cplusplus)
} 
#endif 

#else

#define PetscToPointer(a) (*(long *)(a))
#define PetscFromPointer(a) (long)(a)
#define PetscRmPointer(a)
#endif

#include "petscpc.h"
#ifdef MPI_BUILD_PROFILING
#ifdef PETSC_HAVE_FORTRAN_CAPS
#define pcasmsetuseinplace_ PPCASMSETUSEINPLACE
#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE)
#define pcasmsetuseinplace_ ppcasmsetuseinplace
#else
#define pcasmsetuseinplace_ ppcasmsetuseinplace_
#endif
#else
#ifdef PETSC_HAVE_FORTRAN_CAPS
#define pcasmsetuseinplace_ PCASMSETUSEINPLACE
#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE)
#define pcasmsetuseinplace_ pcasmsetuseinplace
#endif
#endif

#ifdef MPI_BUILD_PROFILING
#ifdef PETSC_HAVE_FORTRAN_CAPS
#define pcasmsetoverlap_ PPCASMSETOVERLAP
#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE)
#define pcasmsetoverlap_ ppcasmsetoverlap
#else
#define pcasmsetoverlap_ ppcasmsetoverlap_
#endif
#else
#ifdef PETSC_HAVE_FORTRAN_CAPS
#define pcasmsetoverlap_ PCASMSETOVERLAP
#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE)
#define pcasmsetoverlap_ pcasmsetoverlap
#endif
#endif

#ifdef MPI_BUILD_PROFILING
#ifdef PETSC_HAVE_FORTRAN_CAPS
#define pcasmsettype_ PPCASMSETTYPE
#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE)
#define pcasmsettype_ ppcasmsettype
#else
#define pcasmsettype_ ppcasmsettype_
#endif
#else
#ifdef PETSC_HAVE_FORTRAN_CAPS
#define pcasmsettype_ PCASMSETTYPE
#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE)
#define pcasmsettype_ pcasmsettype
#endif
#endif

#ifdef MPI_BUILD_PROFILING
#ifdef PETSC_HAVE_FORTRAN_CAPS
#define pcasmcreatesubdomains2d_ PPCASMCREATESUBDOMAINS2D
#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE)
#define pcasmcreatesubdomains2d_ ppcasmcreatesubdomains2d
#else
#define pcasmcreatesubdomains2d_ ppcasmcreatesubdomains2d_
#endif
#else
#ifdef PETSC_HAVE_FORTRAN_CAPS
#define pcasmcreatesubdomains2d_ PCASMCREATESUBDOMAINS2D
#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE)
#define pcasmcreatesubdomains2d_ pcasmcreatesubdomains2d
#endif
#endif



/* Definitions of Fortran Wrapper routines */
#if defined(__cplusplus)
extern "C" {
#endif
void PETSC_STDCALL   pcasmsetuseinplace_(PC pc, int *__ierr ){
*__ierr = PCASMSetUseInPlace(
	(PC)PetscToPointer((pc) ));
}
void PETSC_STDCALL   pcasmsetoverlap_(PC pc,PetscInt *ovl, int *__ierr ){
*__ierr = PCASMSetOverlap(
	(PC)PetscToPointer((pc) ),*ovl);
}
void PETSC_STDCALL   pcasmsettype_(PC pc,PCASMType *type, int *__ierr ){
*__ierr = PCASMSetType(
	(PC)PetscToPointer((pc) ),*type);
}
void PETSC_STDCALL   pcasmcreatesubdomains2d_(PetscInt *m,PetscInt *n,PetscInt *M,PetscInt *N,PetscInt *dof,PetscInt *overlap,PetscInt *Nsub,IS **is, int *__ierr ){
*__ierr = PCASMCreateSubdomains2D(*m,*n,*M,*N,*dof,*overlap,Nsub,is);
}
#if defined(__cplusplus)
}
#endif
