#include <petsc-private/fortranimpl.h> #include <petscsys.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscfixfilename_ PETSCFIXFILENAME #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscfixfilename_ petscfixfilename #endif PETSC_EXTERN void PETSC_STDCALL petscfixfilename_(CHAR filein PETSC_MIXED_LEN(len1),CHAR fileout PETSC_MIXED_LEN(len2), PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) { PetscInt i,n; char *in,*out; in = filein; out = fileout; n = len1; for (i=0; i<n; i++) { if (in[i] == PETSC_REPLACE_DIR_SEPARATOR) out[i] = PETSC_DIR_SEPARATOR; else out[i] = in[i]; } out[i] = 0; }
#include <petsc/private/fortranimpl.h> #include <petscdraw.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscdrawaxissetlabels_ PETSCDRAWAXISSETLABELS #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscdrawaxissetlabels_ petscdrawaxissetlabels #endif PETSC_EXTERN void PETSC_STDCALL petscdrawaxissetlabels_(PetscDrawAxis *axis,CHAR top PETSC_MIXED_LEN(len1), CHAR xlabel PETSC_MIXED_LEN(len2),CHAR ylabel PETSC_MIXED_LEN(len3), PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len3)) { char *t1,*t2,*t3; FIXCHAR(top,len1,t1); FIXCHAR(xlabel,len2,t2); FIXCHAR(ylabel,len3,t3); *ierr = PetscDrawAxisSetLabels(*axis,t1,t2,t3); FREECHAR(top,t1); FREECHAR(xlabel,t2); FREECHAR(ylabel,t3); }
#include <petsc-private/fortranimpl.h> #include <petscviewer.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscviewerfilesetname_ PETSCVIEWERFILESETNAME #define petscviewerasciiprintf_ PETSCVIEWERASCIIPRINTF #define petscviewerasciisynchronizedprintf_ PETSCVIEWERASCIISYNCHRONIZEDPRINTF #define petscviewerasciisynchronizedallow_ PETSCVIEWERASCIISYNCHRONIZEALLOW #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscviewerfilesetname_ petscviewerfilesetname #define petscviewerasciiprintf_ petscviewerasciiprintf #define petscviewerasciisynchronizedprintf_ petscviewerasciisynchronizedprintf #define petscviewerasciisynchronizedallow_ petscviewerasciisynchronizedallow #endif PETSC_EXTERN void PETSC_STDCALL petscviewerfilesetname_(PetscViewer *viewer,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *c1; PetscViewer v; PetscPatchDefaultViewers_Fortran(viewer,v); FIXCHAR(name,len,c1); *ierr = PetscViewerFileSetName(v,c1); FREECHAR(name,c1); } #undef __FUNCT__ #define __FUNCT__ "PetscFixSlashN" static PetscErrorCode PetscFixSlashN(const char *in, char **out) { PetscErrorCode ierr; PetscInt i;
#define petsclogallbegin_ petsclogallbegin #define petsclogdestroy_ petsclogdestroy #define petsclogbegin_ petsclogbegin #define petsclogeventregister_ petsclogeventregister #define petsclogdump_ petsclogdump #define petsclogstagepop_ petsclogstagepop #define petsclogstageregister_ petsclogstageregister #define petsccookieregister_ petsccookieregister #define petsclogstagepush_ petsclogstagepush #define petscgetflops_ petscgetflops #define petsclogstagegetid_ petsclogstagegetid #endif EXTERN_C_BEGIN void PETSC_STDCALL petsclogprintsummary_(MPI_Comm *comm,CHAR filename PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { #if defined(PETSC_USE_LOG) char *t; FIXCHAR(filename,len,t); *ierr = PetscLogPrintSummary(MPI_Comm_f2c(*(MPI_Fint *)&*comm),t); FREECHAR(filename,t); #endif } void PETSC_STDCALL petsclogprintDetailed_(MPI_Comm *comm,CHAR filename PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { #if defined(PETSC_USE_LOG) char *t; FIXCHAR(filename,len,t); *ierr = PetscLogPrintDetailed(MPI_Comm_f2c(*(MPI_Fint *)&*comm),t);
*ierr = MatDenseGetArray(*mat,&mm); if (*ierr) return; *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; } PETSC_EXTERN void PETSC_STDCALL matdenserestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) { PetscScalar *lx; PetscInt m,n; *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; *ierr = MatDenseRestoreArray(*mat,&lx);if (*ierr) return; } PETSC_EXTERN void PETSC_STDCALL matfactorgetsolverpackage_(Mat *mat,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { const char *tname; *ierr = MatFactorGetSolverPackage(*mat,&tname);if (*ierr) return; if (name != PETSC_NULL_CHARACTER_Fortran) { *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; } FIXRETURNCHAR(PETSC_TRUE,name,len); } PETSC_EXTERN void PETSC_STDCALL matgetfactor_(Mat *mat,CHAR outtype PETSC_MIXED_LEN(len),MatFactorType *ftype,Mat *M,PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(outtype,len,t); *ierr = MatGetFactor(*mat,t,*ftype,M);
#include <petsc-private/fortranimpl.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petsc_viewer_stdout__ PETSC_VIEWER_STDOUT_BROKEN #define petscviewerasciiopen_ PETSCVIEWERASCIIOPEN #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscviewerasciiopen_ petscviewerasciiopen #define petsc_viewer_stdout__ petsc_viewer_stdout_ #endif #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE_UNDERSCORE) #define petsc_viewer_stdout__ petsc_viewer_stdout___ #endif EXTERN_C_BEGIN void PETSC_STDCALL petscviewerasciiopen_(MPI_Comm *comm,CHAR name PETSC_MIXED_LEN(len),PetscViewer *lab, PetscErrorCode *ierr PETSC_END_LEN(len)) { char *c1; FIXCHAR(name,len,c1); *ierr = PetscViewerASCIIOpen(MPI_Comm_f2c(*(MPI_Fint *)&*comm),c1,lab); FREECHAR(name,c1); } PetscViewer PETSC_STDCALL petsc_viewer_stdout__(MPI_Comm *comm) { return PETSC_VIEWER_STDOUT_(MPI_Comm_f2c(*(MPI_Fint *)&*comm)); } EXTERN_C_END
#include <petsc-private/fortranimpl.h> #include <petscts.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define tssettype_ TSSETTYPE #define tsgettype_ TSGETTYPE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define tssettype_ tssettype #define tsgettype_ tsgettype #endif PETSC_EXTERN void PETSC_STDCALL tssettype_(TS *ts,CHAR type PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(type,len,t); *ierr = TSSetType(*ts,t); FREECHAR(type,t); } PETSC_EXTERN void PETSC_STDCALL tsgettype_(TS *ts,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { const char *tname; *ierr = TSGetType(*ts,&tname); *ierr = PetscStrncpy(name,tname,len); FIXRETURNCHAR(PETSC_TRUE,name,len); }
#include <petsc-private/fortranimpl.h> #include <petscdraw.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscdrawgettitle_ PETSCDRAWGETTITLE #define petscdrawsettitle_ PETSCDRAWSETTITLE #define petscdrawappendtitle_ PETSCDRAWAPPENDTITLE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscdrawgettitle_ petscdrawgettitle #define petscdrawsettitle_ petscdrawsettitle #define petscdrawappendtitle_ petscdrawappendtitle #endif PETSC_EXTERN void PETSC_STDCALL petscdrawgettitle_(PetscDraw *draw,CHAR title PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) { char *c3,*t; int len3; c3 = title; len3 = len - 1; *ierr = PetscDrawGetTitle(*draw,&t); *ierr = PetscStrncpy(c3,t,len3); } PETSC_EXTERN void PETSC_STDCALL petscdrawsettitle_(PetscDraw *draw,CHAR title PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t1; FIXCHAR(title,len,t1); *ierr = PetscDrawSetTitle(*draw,t1); FREECHAR(title,t1);
#include <petsc-private/fortranimpl.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscobjectsetname_ PETSCOBJECTSETNAME #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscobjectsetname_ petscobjectsetname #endif EXTERN_C_BEGIN void PETSC_STDCALL petscobjectsetname_(PetscObject *obj,CHAR name PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t1; FIXCHAR(name,len,t1); *ierr = PetscObjectSetName(*obj,t1); FREECHAR(name,t1); } EXTERN_C_END
static PetscErrorCode PetscFixSlashN(const char *in, char **out) { PetscErrorCode ierr; PetscInt i; size_t len; PetscFunctionBegin; ierr = PetscStrallocpy(in,out);CHKERRQ(ierr); ierr = PetscStrlen(*out,&len);CHKERRQ(ierr); for (i=0; i<(int)len-1; i++) { if ((*out)[i] == '\\' && (*out)[i+1] == 'n') {(*out)[i] = ' '; (*out)[i+1] = '\n';} } PetscFunctionReturn(0); } PETSC_EXTERN void PETSC_STDCALL petscfprintf_(MPI_Comm *comm,FILE **file,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) { char *c1,*tmp; FIXCHAR(fname,len1,c1); *ierr = PetscFixSlashN(c1,&tmp);if (*ierr) return; FREECHAR(fname,c1); *ierr = PetscFPrintf(MPI_Comm_f2c(*(MPI_Fint*)&*comm),*file,tmp);if (*ierr) return; *ierr = PetscFree(tmp); } PETSC_EXTERN void PETSC_STDCALL petscprintf_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) { char *c1,*tmp; FIXCHAR(fname,len1,c1);
} } PETSC_EXTERN void PETSC_STDCALL taolinesearchsetobjectiveandgtsroutine_(TaoLineSearch *ls, void (PETSC_STDCALL *func)(TaoLineSearch*, Vec *, Vec *, PetscReal*, PetscReal*,void*, PetscErrorCode *), void *ctx, PetscErrorCode *ierr) { CHKFORTRANNULLOBJECT(ctx); PetscObjectAllocateFortranPointers(*ls,NFUNCS); if (!func) { *ierr = TaoLineSearchSetObjectiveAndGTSRoutine(*ls,0,ctx); } else { ((PetscObject)*ls)->fortran_func_pointers[OBJGTS] = (PetscVoidFunction)func; *ierr = TaoLineSearchSetObjectiveAndGTSRoutine(*ls, ourtaolinesearchobjectiveandgtsroutine,ctx); } } PETSC_EXTERN void PETSC_STDCALL taolinesearchsettype_(TaoLineSearch *ls, CHAR type_name PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(type_name,len,t); *ierr = TaoLineSearchSetType(*ls,t); FREECHAR(type_name,t); } PETSC_EXTERN void PETSC_STDCALL taolinesearchview_(TaoLineSearch *ls, PetscViewer *viewer, PetscErrorCode *ierr) { PetscViewer v; PetscPatchDefaultViewers_Fortran(viewer,v); *ierr = TaoLineSearchView(*ls,v);
PETSC_EXTERN void PETSC_STDCALL pcview_(PC *pc,PetscViewer *viewer, PetscErrorCode *ierr) { PetscViewer v; PetscPatchDefaultViewers_Fortran(viewer,v); *ierr = PCView(*pc,v); } PETSC_EXTERN void PETSC_STDCALL pcgetoperators_(PC *pc,Mat *mat,Mat *pmat,MatStructure *flag,PetscErrorCode *ierr) { CHKFORTRANNULLOBJECT(mat); CHKFORTRANNULLOBJECT(pmat); CHKFORTRANNULLINTEGER(flag); *ierr = PCGetOperators(*pc,mat,pmat,flag); } PETSC_EXTERN void PETSC_STDCALL pcsetoptionsprefix_(PC *pc,CHAR prefix PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(prefix,len,t); *ierr = PCSetOptionsPrefix(*pc,t); FREECHAR(prefix,t); } PETSC_EXTERN void PETSC_STDCALL pcappendoptionsprefix_(PC *pc,CHAR prefix PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(prefix,len,t); *ierr = PCAppendOptionsPrefix(*pc,t); FREECHAR(prefix,t);
#include "private/fortranimpl.h" #ifdef PETSC_HAVE_FORTRAN_CAPS #define petscobjectsetoptionsprefix PETSCOBJECTSETOPTIONSPREFIX #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscobjectsetoptionsprefix_ petscobjectsetoptionsprefix #endif EXTERN_C_BEGIN void PETSC_STDCALL petscobjectsetoptionsprefix_(PetscObject *obj,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(prefix,len,t); *ierr = PetscObjectSetOptionsPrefix(*obj,t); FREECHAR(prefix,t); } EXTERN_C_END
#include <petsc-private/fortranimpl.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscobjecttypecompare_ PETSCOBJECTTYPECOMPARE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscobjecttypecompare_ petscobjecttypecompare #endif PETSC_EXTERN void PETSC_STDCALL petscobjecttypecompare_(PetscObject *obj,CHAR type_name PETSC_MIXED_LEN(len), PetscBool *same,PetscErrorCode *ierr PETSC_END_LEN(len)) { char *c1; FIXCHAR(type_name,len,c1); *ierr = PetscObjectTypeCompare(*obj,c1,same); FREECHAR(type_name,c1); }
#include <petsc/private/fortranimpl.h> #include <petscpc.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define pccompositeaddpc_ PCCOMPOSITEADDPC #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define pccompositeaddpc_ pccompositeaddpc #endif PETSC_EXTERN void PETSC_STDCALL pccompositeaddpc_(PC *pc,CHAR type PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(type,len,t); *ierr = PCCompositeAddPC(*pc,t); FREECHAR(type,t); }
#include <petsc/private/fortranimpl.h> #include <petscviewer.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscviewerstringopen_ PETSCVIEWERSTRINGOPEN #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscviewerstringopen_ petscviewerstringopen #endif PETSC_EXTERN void PETSC_STDCALL petscviewerstringopen_(MPI_Comm *comm,CHAR name PETSC_MIXED_LEN(len1),PetscInt *len,PetscViewer *str, PetscErrorCode *ierr PETSC_END_LEN(len1)) { *ierr = PetscViewerStringOpen(MPI_Comm_f2c(*(MPI_Fint*)&*comm),name,*len,str); }
PetscErrorCode ierr = 0; (*(void (PETSC_STDCALL *)(SNESLineSearch*,Vec*, Vec*, PetscBool*,void*,PetscErrorCode*))(((PetscObject)linesearch)->fortran_func_pointers[1]))(&linesearch,&X,&Y,changed,ctx,&ierr);CHKERRQ(ierr); return 0; } static PetscErrorCode oursneslinesearchpostcheck(SNESLineSearch linesearch, Vec X, Vec Y, Vec W, PetscBool * changed_Y, PetscBool * changed_W, void * ctx) { PetscErrorCode ierr = 0; (*(void (PETSC_STDCALL *)(SNESLineSearch*,Vec*,Vec*,Vec*,PetscBool*,PetscBool*,void*,PetscErrorCode*)) (((PetscObject)linesearch)->fortran_func_pointers[2]))(&linesearch,&X,&Y,&W,changed_Y,changed_W,ctx,&ierr);CHKERRQ(ierr); return 0; } EXTERN_C_BEGIN void PETSC_STDCALL sneslinesearchsettype_(SNESLineSearch *linesearch,CHAR type PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(type,len,t); *ierr = SNESLineSearchSetType(*linesearch,t); FREECHAR(type,t); } void PETSC_STDCALL sneslinesearchsetprecheck_(SNESLineSearch *linesearch, void (PETSC_STDCALL *func)(SNESLineSearch*,Vec*,Vec*,PetscBool*,PetscErrorCode*), void *ctx, PetscErrorCode *ierr) { PetscObjectAllocateFortranPointers(*linesearch,3);
#include <petsc/private/fortranimpl.h> #include <petscksp.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define ksppythonsettype_ KSPPYTHONSETTYPE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define ksppythonsettype_ ksppythonsettype #endif PETSC_EXTERN void PETSC_STDCALL ksppythonsettype_(KSP *ksp, CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(name,len,t); *ierr = KSPPythonSetType(*ksp,t); FREECHAR(name,t); }
/* -----------------------------------------------------------------------------------------------*/ #if defined(PETSC_HAVE_SAWS) #include <petscviewersaws.h> extern PetscErrorCode PetscInitializeSAWs(const char[]); #endif /* petscinitialize - Version called from Fortran. Notes: Since this is called from Fortran it does not return error codes */ PETSC_EXTERN void PETSC_STDCALL petscinitialize_(CHAR filename PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { #if defined (PETSC_USE_NARGS) short flg,i; #else int i; #if !defined(PETSC_HAVE_PXFGETARG_NEW) && !defined (PETSC_HAVE_PXFGETARG_NEW) && !defined(PETSC_HAVE_FORTRAN_GET_COMMAND_ARGUMENT) int j; #endif #endif #if defined(PETSC_HAVE_CUDA) PetscBool flg2; cublasStatus_t cberr; #endif int flag; PetscMPIInt size;
#include <petsc-private/fortranimpl.h> #include <petscpc.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define pchypresettype_ PCHYPRESETTYPE #define pchypregettype_ PCHYPREGETTYPE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define pchypresettype_ pchypresettype #define pchypregettype_ pchypregettype #endif PETSC_EXTERN void PETSC_STDCALL pchypresettype_(PC *pc, CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(name,len,t); *ierr = PCHYPRESetType(*pc,t); FREECHAR(name,t); } PETSC_EXTERN void PETSC_STDCALL pchypregettype_(PC *pc,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { const char *tname; *ierr = PCHYPREGetType(*pc,&tname); *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; FIXRETURNCHAR(PETSC_TRUE,name,len); }
#define petscmatlabenginecreate_ PETSCMATLABENGINECREATE #define petscmatlabengineevaluate_ PETSCMATLABENGINEEVALUATE #define petscmatlabenginegetoutput_ PETSCMATLABENGINEGETOUTPUT #define petscmatlabengineprintoutput_ PETSCMATLABENGINEPRINTOUTPUT #define petscmatlabengineputarray_ PETSCMATLABENGINEPUTARRAY #define petscmatlabenginegetarray_ PETSCMATLABENGINEGETARRAY #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscmatlabenginecreate_ petscmatlabenginecreate #define petscmatlabengineevaluate_ petscmatlabengineevaluate #define petscmatlabenginegetoutput_ petscmatlabenginegetoutput #define petscmatlabengineprintoutput_ petscmatlabengineprintoutput #define petscmatlabengineputarray_ petscmatlabengineputarray #define petscmatlabenginegetarray_ petscmatlabenginegetarray #endif PETSC_EXTERN void PETSC_STDCALL petscmatlabenginecreate_(MPI_Comm *comm,CHAR m PETSC_MIXED_LEN(len),PetscMatlabEngine *e, PetscErrorCode *ierr PETSC_END_LEN(len)) { char *ms; FIXCHAR(m,len,ms); *ierr = PetscMatlabEngineCreate(MPI_Comm_f2c(*(MPI_Fint*)&*comm),ms,e); FREECHAR(m,ms); } PETSC_EXTERN void PETSC_STDCALL petscmatlabengineevaluate_(PetscMatlabEngine *e,CHAR m PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) { char *ms; FIXCHAR(m,len,ms); *ierr = PetscMatlabEngineEvaluate(*e,ms);
#include <petsc/private/fortranimpl.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscpythoninitialize_ PETSCPYTHONINITIALIZE #define petscpythonfinalize_ PETSCPYTHONFINALIZE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscpythoninitialize_ petscpythoninitialize #define petscpythonfinalize_ petscpythonfinalize #endif PETSC_EXTERN void PETSC_STDCALL petscpythoninitialize_(CHAR n1 PETSC_MIXED_LEN(l1),CHAR n2 PETSC_MIXED_LEN(l2), PetscErrorCode *ierr PETSC_END_LEN(l1) PETSC_END_LEN(l2)) { char *t1,*t2; FIXCHAR(n1,l1,t1); FIXCHAR(n2,l2,t2); *ierr = PetscPythonInitialize(t1,t2);if (*ierr) return; FREECHAR(n1,t1); FREECHAR(n2,t2); } PETSC_EXTERN void PETSC_STDCALL petscpythonfinalize_(PetscErrorCode *ierr) { *ierr = PetscPythonFinalize(); }
#include "private/fortranimpl.h" #include "petscpc.h" #if defined(PETSC_HAVE_FORTRAN_CAPS) #define pcsettype_ PCSETTYPE #define pcgettype_ PCGETTYPE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define pcsettype_ pcsettype #define pcgettype_ pcgettype #endif EXTERN_C_BEGIN void PETSC_STDCALL pcsettype_(PC *pc,CHAR type PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(type,len,t); *ierr = PCSetType(*pc,t); FREECHAR(type,t); } void PETSC_STDCALL pcgettype_(PC *pc,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { const char *tname; *ierr = PCGetType(*pc,&tname); *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; FIXRETURNCHAR(PETSC_TRUE,name,len); }
#include "private/fortranimpl.h" #include "petscpc.h" #if defined(PETSC_HAVE_FORTRAN_CAPS) #define pcfactorsetmatorderingtype_ PCFACTORSETMATORDERINGTYPE #define pcfactorsetmatsolverpackage_ PCFACTORSETMATSOLVERPACKAGE #define pcfactorgetmatsolverpackage_ PCFACTORGETMATSOLVERPACKAGE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define pcfactorsetmatorderingtype_ pcfactorsetmatorderingtype #define pcfactorsetmatsolverpackage_ pcfactorsetmatsolverpackage #define pcfactorgetmatsolverpackage_ pcfactorgetmatsolverpackage #endif EXTERN_C_BEGIN void PETSC_STDCALL pcfactorsetmatorderingtype_(PC *pc,CHAR ordering PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)){ char *t; FIXCHAR(ordering,len,t); *ierr = PCFactorSetMatOrderingType(*pc,t); FREECHAR(ordering,t); } void PETSC_STDCALL pcfactorsetmatsolverpackage_(PC *pc,CHAR ordering PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)){ char *t; FIXCHAR(ordering,len,t); *ierr = PCFactorSetMatSolverPackage(*pc,t); FREECHAR(ordering,t); } void PETSC_STDCALL pcfactorgetmatsolverpackage_(PC *mat,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) {
Mat mat = (Mat) ctx; (*(void (PETSC_STDCALL *)(void*,Vec*,Vec*,PetscErrorCode*))(((PetscObject)mat)->fortran_func_pointers[0]))((void*)(PETSC_UINTPTR_T)((PetscObject)mat)->fortran_func_pointers[1],&x,&f,&ierr);CHKERRQ(ierr); return 0; } PETSC_EXTERN void PETSC_STDCALL matmffdsetfunction_(Mat *mat,void (PETSC_STDCALL *func)(void*,Vec*,Vec*,PetscErrorCode*),void *ctx,PetscErrorCode *ierr) { CHKFORTRANNULLOBJECT(ctx); PetscObjectAllocateFortranPointers(*mat,2); ((PetscObject)*mat)->fortran_func_pointers[0] = (PetscVoidFunction)func; ((PetscObject)*mat)->fortran_func_pointers[1] = (PetscVoidFunction)(PETSC_UINTPTR_T)ctx; *ierr = MatMFFDSetFunction(*mat,ourmatmffdfunction,*mat); } PETSC_EXTERN void PETSC_STDCALL matmffdsettype_(Mat *mat,CHAR ftype PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(ftype,len,t); *ierr = MatMFFDSetType(*mat,t); FREECHAR(ftype,t); } PETSC_EXTERN void PETSC_STDCALL matmffdsetoptionsprefix_(Mat *mat,CHAR prefix PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(prefix,len,t); *ierr = MatMFFDSetOptionsPrefix(*mat,t); FREECHAR(prefix,t); }
#include "private/fortranimpl.h" #include "petscsnes.h" #if defined(PETSC_HAVE_FORTRAN_CAPS) #define snespythonsettype_ SNESPYTHONSETTYPE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define snespythonsettype_ snespythonsettype #endif EXTERN_C_BEGIN void PETSC_STDCALL snespythonsettype_(SNES *snes, CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len) ) { char *t; FIXCHAR(name,len,t); *ierr = SNESPythonSetType(*snes,t); FREECHAR(name,t); } EXTERN_C_END
#include "private/fortranimpl.h" #include "petscda.h" #if defined(PETSC_HAVE_FORTRAN_CAPS) #define dasetfieldname_ DASETFIELDNAME #define dagetfieldname_ DAGETFIELDNAME #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define dasetfieldname_ dasetfieldname #define dagetfieldname_ dagetfieldname #endif EXTERN_C_BEGIN void PETSC_STDCALL dasetfieldname_(DA *da,PetscInt *nf,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(name,len,t); *ierr = DASetFieldName(*da,*nf,t); FREECHAR(name,t); } void PETSC_STDCALL dagetfieldname_(DA *da,PetscInt *nf,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) { char *tname; *ierr = DAGetFieldName(*da,*nf,&tname); *ierr = PetscStrncpy(name,tname,len); } EXTERN_C_END
#include <petsc-private/fortranimpl.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define petscviewerhdf5open_ PETSCVIEWERHDF5OPEN #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define petscviewerhdf5open_ petscviewerhdf5open #endif EXTERN_C_BEGIN void PETSC_STDCALL petscviewerhdf5open_(MPI_Comm *comm,CHAR name PETSC_MIXED_LEN(len),PetscFileMode *type, PetscViewer *binv,PetscErrorCode *ierr PETSC_END_LEN(len)) { char *c1; FIXCHAR(name,len,c1); *ierr = PetscViewerHDF5Open(MPI_Comm_f2c(*(MPI_Fint *)&*comm),c1,*type,binv); FREECHAR(name,c1); } EXTERN_C_END
#endif EXTERN_C_BEGIN void PETSC_STDCALL matpartitioningsetvertexweights_(MatPartitioning *part,const PetscInt weights[],PetscErrorCode *ierr) { PetscInt len; PetscInt *array; *ierr = MatGetLocalSize((*part)->adj,&len,0); if (*ierr) return; *ierr = PetscMalloc(len*sizeof(PetscInt),&array); if (*ierr) return; *ierr = PetscMemcpy(array,weights,len*sizeof(PetscInt));if (*ierr) return; *ierr = MatPartitioningSetVertexWeights(*part,array); } void PETSC_STDCALL matpartitioningview_(MatPartitioning *part,PetscViewer *viewer, PetscErrorCode *ierr) { PetscViewer v; PetscPatchDefaultViewers_Fortran(viewer,v); *ierr = MatPartitioningView(*part,v); } void PETSC_STDCALL matpartitioningsettype_(MatPartitioning *part,CHAR type PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) { char *t; FIXCHAR(type,len,t); *ierr = MatPartitioningSetType(*part,t); FREECHAR(type,t); } EXTERN_C_END
#include <petsc-private/fortranimpl.h> #include <petscts.h> #if defined(PETSC_HAVE_FORTRAN_CAPS) #define tspythonsettype_ TSPYTHONSETTYPE #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define tspythonsettype_ tspythonsettype #endif EXTERN_C_BEGIN void PETSC_STDCALL tspythonsettype_(TS *ts, CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len) ) { char *t; FIXCHAR(name,len,t); *ierr = TSPythonSetType(*ts,t); FREECHAR(name,t); } EXTERN_C_END