1 /* 2 This file contains Fortran stubs for Options routines. 3 These are not generated automatically since they require passing strings 4 between Fortran and C. 5 */ 6 7 #include <petsc/private/fortranimpl.h> 8 9 #if defined(PETSC_HAVE_FORTRAN_CAPS) 10 #define petscobjectcompose_ PETSCOBJECTCOMPOSE 11 #define petscobjectquery_ PETSCOBJECTQUERY 12 #define petscobjectreference_ PETSCOBJECTREFERENCE 13 #define petscobjectdereference_ PETSCOBJECTDEREFERENCE 14 #define petscobjectgetreference_ PETSCOBJECTGETREFERENCE 15 #define petsccudainitialize_ PETSCCUDAINITIALIZE 16 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 17 #define petscobjectcompose_ petscobjectcompose 18 #define petscobjectquery_ petscobjectquery 19 #define petscobjectreference_ petscobjectreference 20 #define petscobjectdereference_ petscobjectdereference 21 #define petscobjectgetreference_ petscobjectgetreference 22 #define petsccudainitialize_ petsccudainitialize 23 #endif 24 25 /* ---------------------------------------------------------------------*/ 26 27 #if defined(PETSC_HAVE_CUDA) 28 PETSC_EXTERN void petsccudainitialize_(MPI_Fint *comm, PetscErrorCode *ierr) 29 { 30 *ierr = PetscCUDAInitialize(MPI_Comm_f2c(*(comm))); 31 } 32 #endif 33 34 PETSC_EXTERN void petscobjectcompose_(PetscObject *obj, char *name, PetscObject *ptr, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 35 { 36 char *n1; 37 38 FIXCHAR(name,len,n1); 39 *ierr = PetscObjectCompose(*obj, n1, *ptr);if (*ierr) return; 40 FREECHAR(name,n1); 41 } 42 43 PETSC_EXTERN void petscobjectquery_(PetscObject *obj, char *name, PetscObject *ptr, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 44 { 45 char *n1; 46 47 FIXCHAR(name,len,n1); 48 *ierr = PetscObjectQuery(*obj, n1, ptr);if (*ierr) return; 49 FREECHAR(name,n1); 50 } 51 52 PETSC_EXTERN void petscobjectreference_(PetscObject *obj,PetscErrorCode *ierr) 53 { 54 *ierr = PetscObjectReference(*obj); 55 } 56 57 PETSC_EXTERN void petscobjectdereference_(PetscObject *obj,PetscErrorCode *ierr) 58 { 59 *ierr = PetscObjectDereference(*obj); 60 } 61 62 PETSC_EXTERN void petscobjectgetreference_(PetscObject *obj,PetscInt *ref,PetscErrorCode *ierr) 63 { 64 *ierr = PetscObjectGetReference(*obj,ref); 65 } 66