1ae4341f3SSatish Balay 2ae4341f3SSatish Balay #include "zpetsc.h" 3ae4341f3SSatish Balay #include "petscsys.h" 4ae4341f3SSatish Balay #include "petscmatlab.h" 5ae4341f3SSatish Balay 6ae4341f3SSatish Balay void *PETSCNULLPOINTERADDRESS = PETSC_NULL; 7ae4341f3SSatish Balay 8ae4341f3SSatish Balay #ifdef PETSC_HAVE_FORTRAN_CAPS 9ae4341f3SSatish Balay #define petscpopsignalhandler_ PETSCPOPSIGNALHANDLER 10ae4341f3SSatish Balay #define petscgetcputime_ PETSCGETCPUTIME 11ae4341f3SSatish Balay #define petscfopen_ PETSCFOPEN 12ae4341f3SSatish Balay #define petscfclose_ PETSCFCLOSE 13ae4341f3SSatish Balay #define petscfprintf_ PETSCFPRINTF 14ae4341f3SSatish Balay #define petscsynchronizedfprintf_ PETSCSYNCHRONIZEDFPRINTF 15ae4341f3SSatish Balay #define petscprintf_ PETSCPRINTF 16ae4341f3SSatish Balay #define petscsynchronizedprintf_ PETSCSYNCHRONIZEDPRINTF 17ae4341f3SSatish Balay #define petscsynchronizedflush_ PETSCSYNCHRONIZEDFLUSH 18ae4341f3SSatish Balay #define chkmemfortran_ CHKMEMFORTRAN 19ae4341f3SSatish Balay #define petscattachdebugger_ PETSCATTACHDEBUGGER 20ae4341f3SSatish Balay #define petscobjectsetname_ PETSCOBJECTSETNAME 21ae4341f3SSatish Balay #define petscobjectdestroy_ PETSCOBJECTDESTROY 22ae4341f3SSatish Balay #define petscobjectgetcomm_ PETSCOBJECTGETCOMM 23ae4341f3SSatish Balay #define petscobjectgetname_ PETSCOBJECTGETNAME 24ae4341f3SSatish Balay #define petscgetflops_ PETSCGETFLOPS 25ae4341f3SSatish Balay #define petscerror_ PETSCERROR 26ae4341f3SSatish Balay #define petscrandomcreate_ PETSCRANDOMCREATE 27ae4341f3SSatish Balay #define petscrandomdestroy_ PETSCRANDOMDESTROY 28ae4341f3SSatish Balay #define petscrandomgetvalue_ PETSCRANDOMGETVALUE 29ae4341f3SSatish Balay #define petscmallocvalidate_ PETSCMALLOCVALIDATE 30ae4341f3SSatish Balay #define petscrealview_ PETSCREALVIEW 31ae4341f3SSatish Balay #define petscintview_ PETSCINTVIEW 32ae4341f3SSatish Balay #define petscsequentialphasebegin_ PETSCSEQUENTIALPHASEBEGIN 33ae4341f3SSatish Balay #define petscsequentialphaseend_ PETSCSEQUENTIALPHASEEND 34ae4341f3SSatish Balay #define petsctrlog_ PETSCTRLOG 35ae4341f3SSatish Balay #define petscmemcpy_ PETSCMEMCPY 36ae4341f3SSatish Balay #define petscmallocdump_ PETSCMALLOCDUMP 37ae4341f3SSatish Balay #define petscmallocdumplog_ PETSCMALLOCDUMPLOG 38ae4341f3SSatish Balay #define petscmemzero_ PETSCMEMZERO 39ae4341f3SSatish Balay #define petscbinaryopen_ PETSCBINARYOPEN 40ae4341f3SSatish Balay #define petscbinaryread_ PETSCBINARYREAD 41ae4341f3SSatish Balay #define petscbinarywrite_ PETSCBINARYWRITE 42ae4341f3SSatish Balay #define petscbinaryclose_ PETSCBINARYCLOSE 43ae4341f3SSatish Balay #define petscbinaryseek_ PETSCBINARYSEEK 44ae4341f3SSatish Balay #define petscfixfilename_ PETSCFIXFILENAME 45ae4341f3SSatish Balay #define petscstrncpy_ PETSCSTRNCPY 46ae4341f3SSatish Balay #define petscbarrier_ PETSCBARRIER 47ae4341f3SSatish Balay #define petscsynchronizedflush_ PETSCSYNCHRONIZEDFLUSH 48ae4341f3SSatish Balay #define petscsplitownership_ PETSCSPLITOWNERSHIP 49ae4341f3SSatish Balay #define petscsplitownershipblock_ PETSCSPLITOWNERSHIPBLOCK 50ae4341f3SSatish Balay #define petscobjectgetnewtag_ PETSCOBJECTGETNEWTAG 51ae4341f3SSatish Balay #define petsccommgetnewtag_ PETSCCOMMGETNEWTAG 52ae4341f3SSatish Balay #define petscfptrap_ PETSCFPTRAP 53ae4341f3SSatish Balay #define petscoffsetfortran_ PETSCOFFSETFORTRAN 54ae4341f3SSatish Balay #define petscmatlabenginecreate_ PETSCMATLABENGINECREATE 55ae4341f3SSatish Balay #define petscmatlabenginedestroy_ PETSCMATLABENGINEDESTROY 56ae4341f3SSatish Balay #define petscmatlabengineevaluate_ PETSCMATLABENGINEEVALUATE 57ae4341f3SSatish Balay #define petscmatlabenginegetoutput_ PETSCMATLABENGINEGETOUTPUT 58ae4341f3SSatish Balay #define petscmatlabengineprintoutput_ PETSCMATLABENGINEPRINTOUTPUT 59ae4341f3SSatish Balay #define petscmatlabengineput_ PETSCMATLABENGINEPUT 60ae4341f3SSatish Balay #define petscmatlabengineget_ PETSCMATLABENGINEGET 61ae4341f3SSatish Balay #define petscmatlabengineputarray_ PETSCMATLABENGINEPUTARRAY 62ae4341f3SSatish Balay #define petscmatlabenginegetarray_ PETSCMATLABENGINEGETARRAY 63ae4341f3SSatish Balay #define petscgetmemoryusage _ PETSCGETMEMORYUSAGE 64ae4341f3SSatish Balay #define petscviewerasciiprintf_ PETSCVIEWERASCIIPRINTF 65ae4341f3SSatish Balay #define petscviewerasciisynchronizedprintf_ PETSCVIEWERASCIISYNCHRONIZEDPRINTF 66ae4341f3SSatish Balay #define petscviewerasciisettab_ PETSCVIEWERASCIISETTAB 67ae4341f3SSatish Balay #define petscviewerasciipushtab_ PETSCVIEWERASCIIPUSHTAB 68ae4341f3SSatish Balay #define petscviewerasciipoptab_ PETSCVIEWERASCIIPOPTAB 69ae4341f3SSatish Balay #define petscviewerasciiusetabs_ PETSCVIEWERASCIIUSETABS 70ae4341f3SSatish Balay #define petscpusherrorhandler_ PETSCPUSHERRORHANDLER 71ae4341f3SSatish Balay #define petscpoperrorhandler_ PETSCPOPERRORHANDLER 72ae4341f3SSatish Balay #define petsctracebackerrorhandler_ PETSCTRACEBACKERRORHANDLER 73ae4341f3SSatish Balay #define petscaborterrorhandler_ PETSCABORTERRORHANDLER 74ae4341f3SSatish Balay #define petscignoreerrorhandler_ PETSCIGNOREERRORHANDLER 75ae4341f3SSatish Balay #define petscemacsclienterrorhandler_ PETSCEMACSCLIENTERRORHANDLER 76ae4341f3SSatish Balay #define petscattachdebuggererrorhandler_ PETSCATTACHDEBUGGERERRORHANDLER 77ae4341f3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 78ae4341f3SSatish Balay #define petscpopsignalhandler_ petscpopsignalhandler 79ae4341f3SSatish Balay #define petscfopen_ petscfopen 80ae4341f3SSatish Balay #define petscfclose_ petscfclose 81ae4341f3SSatish Balay #define petscfprintf_ petscfprintf 82ae4341f3SSatish Balay #define petscsynchronizedfprintf_ petscsynchronizedfprintf 83ae4341f3SSatish Balay #define petscprintf_ petscprintf 84ae4341f3SSatish Balay #define petscsynchronizedprintf_ petscsynchronizedprintf 85ae4341f3SSatish Balay #define petscsynchronizedflush_ petscsynchronizedflush 86ae4341f3SSatish Balay #define petscmatlabenginecreate_ petscmatlabenginecreate 87ae4341f3SSatish Balay #define petscmatlabenginedestroy_ petscmatlabenginedestroy 88ae4341f3SSatish Balay #define petscmatlabengineevaluate_ petscmatlabengineevaluate 89ae4341f3SSatish Balay #define petscmatlabenginegetoutput_ petscmatlabenginegetoutput 90ae4341f3SSatish Balay #define petscmatlabengineprintoutput_ petscmatlabengineprintoutput 91ae4341f3SSatish Balay #define petscmatlabengineput_ petscmatlabengineput 92ae4341f3SSatish Balay #define petscmatlabengineget_ petscmatlabengineget 93ae4341f3SSatish Balay #define petscmatlabengineputarray_ petscmatlabengineputarray 94ae4341f3SSatish Balay #define petscmatlabenginegetarray_ petscmatlabenginegetarray 95ae4341f3SSatish Balay #define petscoffsetfortran_ petscoffsetfortran 96ae4341f3SSatish Balay #define chkmemfortran_ chkmemfortran 97ae4341f3SSatish Balay #define petscobjectgetnewtag_ petscobjectgetnewtag 98ae4341f3SSatish Balay #define petsccommgetnewtag_ petsccommgetnewtag 99ae4341f3SSatish Balay #define petscsplitownership_ petscsplitownership 100ae4341f3SSatish Balay #define petscsplitownershipblock_ petscsplitownershipblock 101ae4341f3SSatish Balay #define petscbarrier_ petscbarrier 102ae4341f3SSatish Balay #define petscstrncpy_ petscstrncpy 103ae4341f3SSatish Balay #define petscfixfilename_ petscfixfilename 104ae4341f3SSatish Balay #define petscattachdebugger_ petscattachdebugger 105ae4341f3SSatish Balay #define petscobjectsetname_ petscobjectsetname 106ae4341f3SSatish Balay #define petscobjectdestroy_ petscobjectdestroy 107ae4341f3SSatish Balay #define petscobjectgetcomm_ petscobjectgetcomm 108ae4341f3SSatish Balay #define petscobjectgetname_ petscobjectgetname 109ae4341f3SSatish Balay #define petscgetflops_ petscgetflops 110ae4341f3SSatish Balay #define petscerror_ petscerror 111ae4341f3SSatish Balay #define petscrandomcreate_ petscrandomcreate 112ae4341f3SSatish Balay #define petscrandomdestroy_ petscrandomdestroy 113ae4341f3SSatish Balay #define petscrandomgetvalue_ petscrandomgetvalue 114ae4341f3SSatish Balay #define petscmallocvalidate_ petscmallocvalidate 115ae4341f3SSatish Balay #define petscrealview_ petscrealview 116ae4341f3SSatish Balay #define petscintview_ petscintview 117ae4341f3SSatish Balay #define petscsequentialphasebegin_ petscsequentialphasebegin 118ae4341f3SSatish Balay #define petscsequentialphaseend_ petscsequentialphaseend 119ae4341f3SSatish Balay #define petscmemcpy_ petscmemcpy 120ae4341f3SSatish Balay #define petscmallocdump_ petscmallocdump 121ae4341f3SSatish Balay #define petscmallocdumplog_ petscmallocdumplog 122ae4341f3SSatish Balay #define petscmemzero_ petscmemzero 123ae4341f3SSatish Balay #define petscbinaryopen_ petscbinaryopen 124ae4341f3SSatish Balay #define petscbinaryread_ petscbinaryread 125ae4341f3SSatish Balay #define petscbinarywrite_ petscbinarywrite 126ae4341f3SSatish Balay #define petscbinaryclose_ petscbinaryclose 127ae4341f3SSatish Balay #define petscbinaryseek_ petscbinaryseek 128ae4341f3SSatish Balay #define petscsynchronizedflush_ petscsynchronizedflush 129ae4341f3SSatish Balay #define petscfptrap_ petscfptrap 130ae4341f3SSatish Balay #define petscgetcputime_ petscgetcputime 131ae4341f3SSatish Balay #define petscgetmemoryusage_ petscgetmemoryusage 132ae4341f3SSatish Balay #define petscviewerasciiprintf_ petscviewerasciiprintf 133ae4341f3SSatish Balay #define petscviewerasciisynchronizedprintf_ petscviewerasciisynchronizedprintf 134ae4341f3SSatish Balay #define petscviewerasciisettab_ petscviewerasciisettab 135ae4341f3SSatish Balay #define petscviewerasciipushtab_ petscviewerasciipushtab 136ae4341f3SSatish Balay #define petscviewerasciipoptab_ petscviewerasciipoptab 137ae4341f3SSatish Balay #define petscviewerasciiusetabs_ petscviewerasciiusetabs 138ae4341f3SSatish Balay #define petscpusherrorhandler_ petscpusherrorhandler 139ae4341f3SSatish Balay #define petscpoperrorhandler_ petscpoperrorhandler 140ae4341f3SSatish Balay #define petsctracebackerrorhandler_ petsctracebackerrorhandler 141ae4341f3SSatish Balay #define petscaborterrorhandler_ petscaborterrorhandler 142ae4341f3SSatish Balay #define petscignoreerrorhandler_ petscignoreerrorhandler 143ae4341f3SSatish Balay #define petscemacsclienterrorhandler_ petscemacsclienterrorhandler 144ae4341f3SSatish Balay #define petscattachdebuggererrorhandler_ petscattachdebuggererrorhandler 145ae4341f3SSatish Balay #endif 146ae4341f3SSatish Balay 147ae4341f3SSatish Balay EXTERN_C_BEGIN 148ae4341f3SSatish Balay static void (PETSC_STDCALL *f2)(int*,const CHAR PETSC_MIXED_LEN(len1),const CHAR PETSC_MIXED_LEN(len2),const CHAR PETSC_MIXED_LEN(len3),int*,int*,const CHAR PETSC_MIXED_LEN(len4),void*,PetscErrorCode* PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len3) PETSC_END_LEN(len4)); 149ae4341f3SSatish Balay EXTERN_C_END 150ae4341f3SSatish Balay 151ae4341f3SSatish Balay /* These are not extern C because they are passed into non-extern C user level functions */ 152ae4341f3SSatish Balay static PetscErrorCode ourerrorhandler(int line,const char *fun,const char *file,const char *dir,int n,int p,const char *mess,void *ctx) 153ae4341f3SSatish Balay { 154ae4341f3SSatish Balay PetscErrorCode ierr = 0; 155ae4341f3SSatish Balay size_t len1,len2,len3,len4; 156ae4341f3SSatish Balay int l1,l2,l3,l4; 157ae4341f3SSatish Balay 158ae4341f3SSatish Balay PetscStrlen(fun,&len1); l1 = (int)len1; 159ae4341f3SSatish Balay PetscStrlen(file,&len2);l2 = (int)len2; 160ae4341f3SSatish Balay PetscStrlen(dir,&len3);l3 = (int)len3; 161ae4341f3SSatish Balay PetscStrlen(mess,&len4);l4 = (int)len4; 162ae4341f3SSatish Balay 163ae4341f3SSatish Balay #if defined(PETSC_USES_CPTOFCD) 164ae4341f3SSatish Balay { 165ae4341f3SSatish Balay CHAR fun_c,file_c,dir_c,mess_c; 166ae4341f3SSatish Balay 167ae4341f3SSatish Balay fun_c = _cptofcd(fun,len1); 168ae4341f3SSatish Balay file_c = _cptofcd(file,len2); 169ae4341f3SSatish Balay dir_c = _cptofcd(dir,len3); 170ae4341f3SSatish Balay mess_c = _cptofcd(mess,len4); 171ae4341f3SSatish Balay (*f2)(&line,fun_c,file_c,dir_c,&n,&p,mess_c,ctx,&ierr,len1,len2,len3,len4); 172ae4341f3SSatish Balay 173ae4341f3SSatish Balay } 174ae4341f3SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_MIXED_STR_ARG) 175ae4341f3SSatish Balay (*f2)(&line,fun,l1,file,l2,dir,l3,&n,&p,mess,l4,ctx,&ierr); 176ae4341f3SSatish Balay #else 177ae4341f3SSatish Balay (*f2)(&line,fun,file,dir,&n,&p,mess,ctx,&ierr,l1,l2,l3,l4); 178ae4341f3SSatish Balay #endif 179ae4341f3SSatish Balay return ierr; 180ae4341f3SSatish Balay } 181ae4341f3SSatish Balay 182ae4341f3SSatish Balay EXTERN_C_BEGIN 183ae4341f3SSatish Balay /* 184ae4341f3SSatish Balay integer i_x,i_y,shift 185ae4341f3SSatish Balay Vec x,y 186ae4341f3SSatish Balay PetscScalar v_x(1),v_y(1) 187ae4341f3SSatish Balay 188ae4341f3SSatish Balay call VecGetArray(x,v_x,i_x,ierr) 189ae4341f3SSatish Balay if (x .eq. y) then 190ae4341f3SSatish Balay call PetscOffsetFortran(y_v,x_v,shift,ierr) 191ae4341f3SSatish Balay i_y = i_x + shift 192ae4341f3SSatish Balay else 193ae4341f3SSatish Balay call VecGetArray(y,v_y,i_y,ierr) 194ae4341f3SSatish Balay endif 195ae4341f3SSatish Balay */ 196ae4341f3SSatish Balay 197ae4341f3SSatish Balay /* 198ae4341f3SSatish Balay These are not usually called from Fortran but allow Fortran users 199ae4341f3SSatish Balay to transparently set these monitors from .F code 200ae4341f3SSatish Balay 201ae4341f3SSatish Balay functions, hence no STDCALL 202ae4341f3SSatish Balay */ 203ae4341f3SSatish Balay void petsctracebackerrorhandler_(int *line,const char *fun,const char *file,const char *dir,int *n,int *p,const char *mess,void *ctx,PetscErrorCode *ierr) 204ae4341f3SSatish Balay { 205ae4341f3SSatish Balay *ierr = PetscTraceBackErrorHandler(*line,fun,file,dir,*n,*p,mess,ctx); 206ae4341f3SSatish Balay } 207ae4341f3SSatish Balay 208ae4341f3SSatish Balay void petscaborterrorhandler_(int *line,const char *fun,const char *file,const char *dir,int *n,int *p,const char *mess,void *ctx,PetscErrorCode *ierr) 209ae4341f3SSatish Balay { 210ae4341f3SSatish Balay *ierr = PetscAbortErrorHandler(*line,fun,file,dir,*n,*p,mess,ctx); 211ae4341f3SSatish Balay } 212ae4341f3SSatish Balay 213ae4341f3SSatish Balay void petscattachdebuggererrorhandler_(int *line,const char *fun,const char *file,const char *dir,int *n,int *p,const char *mess,void *ctx,PetscErrorCode *ierr) 214ae4341f3SSatish Balay { 215ae4341f3SSatish Balay *ierr = PetscAttachDebuggerErrorHandler(*line,fun,file,dir,*n,*p,mess,ctx); 216ae4341f3SSatish Balay } 217ae4341f3SSatish Balay 218ae4341f3SSatish Balay void petscemacsclienterrorhandler_(int *line,const char *fun,const char *file,const char *dir,int *n,int *p,const char *mess,void *ctx,PetscErrorCode *ierr) 219ae4341f3SSatish Balay { 220ae4341f3SSatish Balay *ierr = PetscEmacsClientErrorHandler(*line,fun,file,dir,*n,*p,mess,ctx); 221ae4341f3SSatish Balay } 222ae4341f3SSatish Balay 223ae4341f3SSatish Balay void petscignoreerrorhandler_(int *line,const char *fun,const char *file,const char *dir,int *n,int *p,const char *mess,void *ctx,PetscErrorCode *ierr) 224ae4341f3SSatish Balay { 225ae4341f3SSatish Balay *ierr = PetscIgnoreErrorHandler(*line,fun,file,dir,*n,*p,mess,ctx); 226ae4341f3SSatish Balay } 227ae4341f3SSatish Balay 228ae4341f3SSatish Balay void PETSC_STDCALL petscpusherrorhandler_(void (PETSC_STDCALL *handler)(int*,const CHAR PETSC_MIXED_LEN(len1),const CHAR PETSC_MIXED_LEN(len2),const CHAR PETSC_MIXED_LEN(len3),int*,int*,const CHAR PETSC_MIXED_LEN(len4),void*,PetscErrorCode* PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len3) PETSC_END_LEN(len4)),void *ctx,PetscErrorCode *ierr) 229ae4341f3SSatish Balay { 230ae4341f3SSatish Balay if ((void(*)(void))handler == (void(*)(void))petsctracebackerrorhandler_) { 231ae4341f3SSatish Balay *ierr = PetscPushErrorHandler(PetscTraceBackErrorHandler,0); 232ae4341f3SSatish Balay } else { 233ae4341f3SSatish Balay f2 = handler; 234ae4341f3SSatish Balay *ierr = PetscPushErrorHandler(ourerrorhandler,ctx); 235ae4341f3SSatish Balay } 236ae4341f3SSatish Balay } 237ae4341f3SSatish Balay 238ae4341f3SSatish Balay void PETSC_STDCALL petscpopsignalhandler_(PetscErrorCode *ierr) 239ae4341f3SSatish Balay { 240ae4341f3SSatish Balay *ierr = PetscPopSignalHandler(); 241ae4341f3SSatish Balay } 242ae4341f3SSatish Balay 243ae4341f3SSatish Balay void PETSC_STDCALL petscpoperrorhandler_(PetscErrorCode *ierr) 244ae4341f3SSatish Balay { 245ae4341f3SSatish Balay *ierr = PetscPopErrorHandler(); 246ae4341f3SSatish Balay } 247ae4341f3SSatish Balay 248ae4341f3SSatish Balay void PETSC_STDCALL petscviewerasciisettab_(PetscViewer *viewer,PetscInt *tabs,PetscErrorCode *ierr) 249ae4341f3SSatish Balay { 250ae4341f3SSatish Balay *ierr = PetscViewerASCIISetTab(*viewer,*tabs); 251ae4341f3SSatish Balay } 252ae4341f3SSatish Balay 253ae4341f3SSatish Balay void PETSC_STDCALL petscviewerasciipushtab_(PetscViewer *viewer,PetscErrorCode *ierr) 254ae4341f3SSatish Balay { 255ae4341f3SSatish Balay *ierr = PetscViewerASCIIPushTab(*viewer); 256ae4341f3SSatish Balay } 257ae4341f3SSatish Balay 258ae4341f3SSatish Balay void PETSC_STDCALL petscviewerasciipoptab_(PetscViewer *viewer,PetscErrorCode *ierr) 259ae4341f3SSatish Balay { 260ae4341f3SSatish Balay *ierr = PetscViewerASCIIPopTab(*viewer); 261ae4341f3SSatish Balay } 262ae4341f3SSatish Balay 263ae4341f3SSatish Balay void PETSC_STDCALL petscviewerasciiusetabs_(PetscViewer *viewer,PetscTruth *flg,PetscErrorCode *ierr) 264ae4341f3SSatish Balay { 265ae4341f3SSatish Balay *ierr = PetscViewerASCIIUseTabs(*viewer,*flg); 266ae4341f3SSatish Balay } 267ae4341f3SSatish Balay 268ae4341f3SSatish Balay void PETSC_STDCALL petscviewerasciiprintf_(PetscViewer *viewer,CHAR str PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 269ae4341f3SSatish Balay { 270ae4341f3SSatish Balay char *c1; 271ae4341f3SSatish Balay 272ae4341f3SSatish Balay FIXCHAR(str,len1,c1); 273ae4341f3SSatish Balay *ierr = PetscViewerASCIIPrintf(*viewer,c1); 274ae4341f3SSatish Balay FREECHAR(str,c1); 275ae4341f3SSatish Balay } 276ae4341f3SSatish Balay 277ae4341f3SSatish Balay void PETSC_STDCALL petscviewerasciisynchronizedprintf_(PetscViewer *viewer,CHAR str PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 278ae4341f3SSatish Balay { 279ae4341f3SSatish Balay char *c1; 280ae4341f3SSatish Balay 281ae4341f3SSatish Balay FIXCHAR(str,len1,c1); 282ae4341f3SSatish Balay *ierr = PetscViewerASCIISynchronizedPrintf(*viewer,c1); 283ae4341f3SSatish Balay FREECHAR(str,c1); 284ae4341f3SSatish Balay } 285ae4341f3SSatish Balay 286ae4341f3SSatish Balay void PETSC_STDCALL petscmemorygetcurrentusage_(PetscLogDouble *foo, PetscErrorCode *ierr) 287ae4341f3SSatish Balay { 288ae4341f3SSatish Balay *ierr = PetscMemoryGetCurrentUsage(foo); 289ae4341f3SSatish Balay } 290ae4341f3SSatish Balay 291ae4341f3SSatish Balay void PETSC_STDCALL petscmemorygetmaximumusage_(PetscLogDouble *foo, PetscErrorCode *ierr) 292ae4341f3SSatish Balay { 293ae4341f3SSatish Balay *ierr = PetscMemoryGetMaximumUsage(foo); 294ae4341f3SSatish Balay } 295ae4341f3SSatish Balay 296*c74decddSSatish Balay void PETSC_STDCALL petscoffsetfortran_(PetscScalar *x,PetscScalar *y,size_t *shift,PetscErrorCode *ierr) 297ae4341f3SSatish Balay { 298ae4341f3SSatish Balay *ierr = 0; 299ae4341f3SSatish Balay *shift = y - x; 300ae4341f3SSatish Balay } 301ae4341f3SSatish Balay 302ae4341f3SSatish Balay void PETSC_STDCALL petscgetcputime_(PetscLogDouble *t, PetscErrorCode *ierr) 303ae4341f3SSatish Balay { 304ae4341f3SSatish Balay *ierr = PetscGetCPUTime(t); 305ae4341f3SSatish Balay } 306ae4341f3SSatish Balay 307ae4341f3SSatish Balay void PETSC_STDCALL petscfopen_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),CHAR fmode PETSC_MIXED_LEN(len2), 308ae4341f3SSatish Balay FILE **file,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 309ae4341f3SSatish Balay { 310ae4341f3SSatish Balay char *c1,*c2; 311ae4341f3SSatish Balay 312ae4341f3SSatish Balay FIXCHAR(fname,len1,c1); 313ae4341f3SSatish Balay FIXCHAR(fmode,len2,c2); 314ae4341f3SSatish Balay *ierr = PetscFOpen((MPI_Comm)PetscToPointerComm(*comm),c1,c2,file); 315ae4341f3SSatish Balay FREECHAR(fname,c1); 316ae4341f3SSatish Balay FREECHAR(fmode,c2); 317ae4341f3SSatish Balay } 318ae4341f3SSatish Balay 319ae4341f3SSatish Balay void PETSC_STDCALL petscfclose_(MPI_Comm *comm,FILE **file,PetscErrorCode *ierr) 320ae4341f3SSatish Balay { 321ae4341f3SSatish Balay *ierr = PetscFClose((MPI_Comm)PetscToPointerComm(*comm),*file); 322ae4341f3SSatish Balay } 323ae4341f3SSatish Balay 324ae4341f3SSatish Balay void PETSC_STDCALL petscsynchronizedflush_(MPI_Comm *comm,PetscErrorCode *ierr) 325ae4341f3SSatish Balay { 326ae4341f3SSatish Balay *ierr = PetscSynchronizedFlush((MPI_Comm)PetscToPointerComm(*comm)); 327ae4341f3SSatish Balay } 328ae4341f3SSatish Balay 329ae4341f3SSatish Balay void PETSC_STDCALL petscfprintf_(MPI_Comm *comm,FILE **file,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 330ae4341f3SSatish Balay { 331ae4341f3SSatish Balay char *c1; 332ae4341f3SSatish Balay 333ae4341f3SSatish Balay FIXCHAR(fname,len1,c1); 334ae4341f3SSatish Balay *ierr = PetscFPrintf((MPI_Comm)PetscToPointerComm(*comm),*file,c1); 335ae4341f3SSatish Balay FREECHAR(fname,c1); 336ae4341f3SSatish Balay } 337ae4341f3SSatish Balay 338ae4341f3SSatish Balay void PETSC_STDCALL petscprintf_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 339ae4341f3SSatish Balay { 340ae4341f3SSatish Balay char *c1; 341ae4341f3SSatish Balay 342ae4341f3SSatish Balay FIXCHAR(fname,len1,c1); 343ae4341f3SSatish Balay *ierr = PetscPrintf((MPI_Comm)PetscToPointerComm(*comm),c1); 344ae4341f3SSatish Balay FREECHAR(fname,c1); 345ae4341f3SSatish Balay } 346ae4341f3SSatish Balay 347ae4341f3SSatish Balay void PETSC_STDCALL petscsynchronizedfprintf_(MPI_Comm *comm,FILE **file,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 348ae4341f3SSatish Balay { 349ae4341f3SSatish Balay char *c1; 350ae4341f3SSatish Balay 351ae4341f3SSatish Balay FIXCHAR(fname,len1,c1); 352ae4341f3SSatish Balay *ierr = PetscSynchronizedFPrintf((MPI_Comm)PetscToPointerComm(*comm),*file,c1); 353ae4341f3SSatish Balay FREECHAR(fname,c1); 354ae4341f3SSatish Balay } 355ae4341f3SSatish Balay 356ae4341f3SSatish Balay void PETSC_STDCALL petscsynchronizedprintf_(MPI_Comm *comm,CHAR fname PETSC_MIXED_LEN(len1),PetscErrorCode *ierr PETSC_END_LEN(len1)) 357ae4341f3SSatish Balay { 358ae4341f3SSatish Balay char *c1; 359ae4341f3SSatish Balay 360ae4341f3SSatish Balay FIXCHAR(fname,len1,c1); 361ae4341f3SSatish Balay *ierr = PetscSynchronizedPrintf((MPI_Comm)PetscToPointerComm(*comm),c1); 362ae4341f3SSatish Balay FREECHAR(fname,c1); 363ae4341f3SSatish Balay } 364ae4341f3SSatish Balay 365ae4341f3SSatish Balay void PETSC_STDCALL petscsetfptrap_(PetscFPTrap *flag,PetscErrorCode *ierr) 366ae4341f3SSatish Balay { 367ae4341f3SSatish Balay *ierr = PetscSetFPTrap(*flag); 368ae4341f3SSatish Balay } 369ae4341f3SSatish Balay 370ae4341f3SSatish Balay void PETSC_STDCALL petscobjectgetnewtag_(PetscObject *obj,PetscMPIInt *tag,PetscErrorCode *ierr) 371ae4341f3SSatish Balay { 372ae4341f3SSatish Balay *ierr = PetscObjectGetNewTag(*obj,tag); 373ae4341f3SSatish Balay } 374ae4341f3SSatish Balay 375ae4341f3SSatish Balay void PETSC_STDCALL petsccommgetnewtag_(MPI_Comm *comm,PetscMPIInt *tag,PetscErrorCode *ierr) 376ae4341f3SSatish Balay { 377ae4341f3SSatish Balay *ierr = PetscCommGetNewTag((MPI_Comm)PetscToPointerComm(*comm),tag); 378ae4341f3SSatish Balay } 379ae4341f3SSatish Balay 380ae4341f3SSatish Balay void PETSC_STDCALL petscsplitownershipblock_(MPI_Comm *comm,PetscInt *bs,PetscInt *n,PetscInt *N,PetscErrorCode *ierr) 381ae4341f3SSatish Balay { 382ae4341f3SSatish Balay *ierr = PetscSplitOwnershipBlock((MPI_Comm)PetscToPointerComm(*comm),*bs,n,N); 383ae4341f3SSatish Balay } 384ae4341f3SSatish Balay void PETSC_STDCALL petscsplitownership_(MPI_Comm *comm,PetscInt *n,PetscInt *N,PetscErrorCode *ierr) 385ae4341f3SSatish Balay { 386ae4341f3SSatish Balay *ierr = PetscSplitOwnership((MPI_Comm)PetscToPointerComm(*comm),n,N); 387ae4341f3SSatish Balay } 388ae4341f3SSatish Balay 389ae4341f3SSatish Balay void PETSC_STDCALL petscbarrier_(PetscObject *obj,PetscErrorCode *ierr) 390ae4341f3SSatish Balay { 391ae4341f3SSatish Balay *ierr = PetscBarrier(*obj); 392ae4341f3SSatish Balay } 393ae4341f3SSatish Balay 394ae4341f3SSatish Balay void PETSC_STDCALL petscstrncpy_(CHAR s1 PETSC_MIXED_LEN(len1),CHAR s2 PETSC_MIXED_LEN(len2),int *n, 395ae4341f3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 396ae4341f3SSatish Balay { 397ae4341f3SSatish Balay char *t1,*t2; 398ae4341f3SSatish Balay int m; 399ae4341f3SSatish Balay 400ae4341f3SSatish Balay #if defined(PETSC_USES_CPTOFCD) 401ae4341f3SSatish Balay t1 = _fcdtocp(s1); 402ae4341f3SSatish Balay t2 = _fcdtocp(s2); 403ae4341f3SSatish Balay m = *n; if (_fcdlen(s1) < m) m = _fcdlen(s1); if (_fcdlen(s2) < m) m = _fcdlen(s2); 404ae4341f3SSatish Balay #else 405ae4341f3SSatish Balay t1 = s1; 406ae4341f3SSatish Balay t2 = s2; 407ae4341f3SSatish Balay m = *n; if (len1 < m) m = len1; if (len2 < m) m = len2; 408ae4341f3SSatish Balay #endif 409ae4341f3SSatish Balay *ierr = PetscStrncpy(t1,t2,m); 410ae4341f3SSatish Balay } 411ae4341f3SSatish Balay 412ae4341f3SSatish Balay void PETSC_STDCALL petscfixfilename_(CHAR filein PETSC_MIXED_LEN(len1),CHAR fileout PETSC_MIXED_LEN(len2), 413ae4341f3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 414ae4341f3SSatish Balay { 415ae4341f3SSatish Balay PetscInt i,n; 416ae4341f3SSatish Balay char *in,*out; 417ae4341f3SSatish Balay 418ae4341f3SSatish Balay #if defined(PETSC_USES_CPTOFCD) 419ae4341f3SSatish Balay in = _fcdtocp(filein); 420ae4341f3SSatish Balay out = _fcdtocp(fileout); 421ae4341f3SSatish Balay n = _fcdlen (filein); 422ae4341f3SSatish Balay #else 423ae4341f3SSatish Balay in = filein; 424ae4341f3SSatish Balay out = fileout; 425ae4341f3SSatish Balay n = len1; 426ae4341f3SSatish Balay #endif 427ae4341f3SSatish Balay 428ae4341f3SSatish Balay for (i=0; i<n; i++) { 429ae4341f3SSatish Balay if (in[i] == PETSC_REPLACE_DIR_SEPARATOR) out[i] = PETSC_DIR_SEPARATOR; 430ae4341f3SSatish Balay else out[i] = in[i]; 431ae4341f3SSatish Balay } 432ae4341f3SSatish Balay out[i] = 0; 433ae4341f3SSatish Balay } 434ae4341f3SSatish Balay 435ae4341f3SSatish Balay void PETSC_STDCALL petscbinaryopen_(CHAR name PETSC_MIXED_LEN(len),PetscViewerFileType *type,int *fd, 436ae4341f3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 437ae4341f3SSatish Balay { 438ae4341f3SSatish Balay char *c1; 439ae4341f3SSatish Balay 440ae4341f3SSatish Balay FIXCHAR(name,len,c1); 441ae4341f3SSatish Balay *ierr = PetscBinaryOpen(c1,*type,fd); 442ae4341f3SSatish Balay FREECHAR(name,c1); 443ae4341f3SSatish Balay } 444ae4341f3SSatish Balay 445ae4341f3SSatish Balay void PETSC_STDCALL petscbinarywrite_(int *fd,void *p,PetscInt *n,PetscDataType *type,PetscTruth *istemp,PetscErrorCode *ierr) 446ae4341f3SSatish Balay { 447ae4341f3SSatish Balay *ierr = PetscBinaryWrite(*fd,p,*n,*type,*istemp); 448ae4341f3SSatish Balay } 449ae4341f3SSatish Balay 450ae4341f3SSatish Balay void PETSC_STDCALL petscbinaryread_(int *fd,void *p,PetscInt *n,PetscDataType *type,PetscErrorCode *ierr) 451ae4341f3SSatish Balay { 452ae4341f3SSatish Balay *ierr = PetscBinaryRead(*fd,p,*n,*type); 453ae4341f3SSatish Balay } 454ae4341f3SSatish Balay 455ae4341f3SSatish Balay void PETSC_STDCALL petscbinaryseek_(int *fd,PetscInt *size,PetscBinarySeekType *whence,off_t *offset,PetscErrorCode *ierr) 456ae4341f3SSatish Balay { 457ae4341f3SSatish Balay *ierr = PetscBinarySeek(*fd,*size,*whence,offset); 458ae4341f3SSatish Balay } 459ae4341f3SSatish Balay 460ae4341f3SSatish Balay void PETSC_STDCALL petscbinaryclose_(int *fd,PetscErrorCode *ierr) 461ae4341f3SSatish Balay { 462ae4341f3SSatish Balay *ierr = PetscBinaryClose(*fd); 463ae4341f3SSatish Balay } 464ae4341f3SSatish Balay 465ae4341f3SSatish Balay /* ---------------------------------------------------------------------------------*/ 466ae4341f3SSatish Balay void PETSC_STDCALL petscmemzero_(void *a,PetscInt *n,PetscErrorCode *ierr) 467ae4341f3SSatish Balay { 468ae4341f3SSatish Balay *ierr = PetscMemzero(a,*n); 469ae4341f3SSatish Balay } 470ae4341f3SSatish Balay 471ae4341f3SSatish Balay void PETSC_STDCALL petscmallocdump_(PetscErrorCode *ierr) 472ae4341f3SSatish Balay { 473ae4341f3SSatish Balay *ierr = PetscMallocDump(stdout); 474ae4341f3SSatish Balay } 475ae4341f3SSatish Balay void PETSC_STDCALL petscmallocdumplog_(PetscErrorCode *ierr) 476ae4341f3SSatish Balay { 477ae4341f3SSatish Balay *ierr = PetscMallocDumpLog(stdout); 478ae4341f3SSatish Balay } 479ae4341f3SSatish Balay 480ae4341f3SSatish Balay void PETSC_STDCALL petscmemcpy_(int *out,int *in,int *length,PetscErrorCode *ierr) 481ae4341f3SSatish Balay { 482ae4341f3SSatish Balay *ierr = PetscMemcpy(out,in,*length); 483ae4341f3SSatish Balay } 484ae4341f3SSatish Balay 485ae4341f3SSatish Balay /* 486ae4341f3SSatish Balay This version does not do a malloc 487ae4341f3SSatish Balay */ 488ae4341f3SSatish Balay static char FIXCHARSTRING[1024]; 489ae4341f3SSatish Balay #if defined(PETSC_USES_CPTOFCD) 490ae4341f3SSatish Balay #include <fortran.h> 491ae4341f3SSatish Balay 492ae4341f3SSatish Balay #define CHAR _fcd 493ae4341f3SSatish Balay #define FIXCHARNOMALLOC(a,n,b) \ 494ae4341f3SSatish Balay { \ 495ae4341f3SSatish Balay b = _fcdtocp(a); \ 496ae4341f3SSatish Balay n = _fcdlen (a); \ 497ae4341f3SSatish Balay if (b == PETSC_NULL_CHARACTER_Fortran) { \ 498ae4341f3SSatish Balay b = 0; \ 499ae4341f3SSatish Balay } else { \ 500ae4341f3SSatish Balay while((n > 0) && (b[n-1] == ' ')) n--; \ 501ae4341f3SSatish Balay b = FIXCHARSTRING; \ 502ae4341f3SSatish Balay *ierr = PetscStrncpy(b,_fcdtocp(a),n); \ 503ae4341f3SSatish Balay if (*ierr) return; \ 504ae4341f3SSatish Balay b[n] = 0; \ 505ae4341f3SSatish Balay } \ 506ae4341f3SSatish Balay } 507ae4341f3SSatish Balay 508ae4341f3SSatish Balay #else 509ae4341f3SSatish Balay 510ae4341f3SSatish Balay #define CHAR char* 511ae4341f3SSatish Balay #define FIXCHARNOMALLOC(a,n,b) \ 512ae4341f3SSatish Balay {\ 513ae4341f3SSatish Balay if (a == PETSC_NULL_CHARACTER_Fortran) { \ 514ae4341f3SSatish Balay b = a = 0; \ 515ae4341f3SSatish Balay } else { \ 516ae4341f3SSatish Balay while((n > 0) && (a[n-1] == ' ')) n--; \ 517ae4341f3SSatish Balay if (a[n] != 0) { \ 518ae4341f3SSatish Balay b = FIXCHARSTRING; \ 519ae4341f3SSatish Balay *ierr = PetscStrncpy(b,a,n); \ 520ae4341f3SSatish Balay if (*ierr) return; \ 521ae4341f3SSatish Balay b[n] = 0; \ 522ae4341f3SSatish Balay } else b = a;\ 523ae4341f3SSatish Balay } \ 524ae4341f3SSatish Balay } 525ae4341f3SSatish Balay 526ae4341f3SSatish Balay #endif 527ae4341f3SSatish Balay 528ae4341f3SSatish Balay void PETSC_STDCALL chkmemfortran_(int *line,CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 529ae4341f3SSatish Balay { 530ae4341f3SSatish Balay char *c1; 531ae4341f3SSatish Balay 532ae4341f3SSatish Balay FIXCHARNOMALLOC(file,len,c1); 533ae4341f3SSatish Balay *ierr = PetscMallocValidate(*line,"Userfunction",c1," "); 534ae4341f3SSatish Balay } 535ae4341f3SSatish Balay 536ae4341f3SSatish Balay void PETSC_STDCALL petscmallocvalidate_(PetscErrorCode *ierr) 537ae4341f3SSatish Balay { 538ae4341f3SSatish Balay *ierr = PetscMallocValidate(0,"Unknown Fortran",0,0); 539ae4341f3SSatish Balay } 540ae4341f3SSatish Balay 541ae4341f3SSatish Balay void PETSC_STDCALL petscrandomgetvalue_(PetscRandom *r,PetscScalar *val,PetscErrorCode *ierr) 542ae4341f3SSatish Balay { 543ae4341f3SSatish Balay *ierr = PetscRandomGetValue(*r,val); 544ae4341f3SSatish Balay } 545ae4341f3SSatish Balay 546ae4341f3SSatish Balay 547ae4341f3SSatish Balay void PETSC_STDCALL petscobjectgetname_(PetscObject *obj,CHAR name PETSC_MIXED_LEN(len), 548ae4341f3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 549ae4341f3SSatish Balay { 550ae4341f3SSatish Balay const char *tmp; 551ae4341f3SSatish Balay *ierr = PetscObjectGetName(*obj,&tmp); 552ae4341f3SSatish Balay #if defined(PETSC_USES_CPTOFCD) 553ae4341f3SSatish Balay { 554ae4341f3SSatish Balay char *t = _fcdtocp(name); 555ae4341f3SSatish Balay int len1 = _fcdlen(name); 556ae4341f3SSatish Balay *ierr = PetscStrncpy(t,tmp,len1);if (*ierr) return; 557ae4341f3SSatish Balay } 558ae4341f3SSatish Balay #else 559ae4341f3SSatish Balay *ierr = PetscStrncpy(name,tmp,len);if (*ierr) return; 560ae4341f3SSatish Balay #endif 561ae4341f3SSatish Balay } 562ae4341f3SSatish Balay 563ae4341f3SSatish Balay void PETSC_STDCALL petscobjectdestroy_(PetscObject *obj,PetscErrorCode *ierr) 564ae4341f3SSatish Balay { 565ae4341f3SSatish Balay *ierr = PetscObjectDestroy(*obj); 566ae4341f3SSatish Balay } 567ae4341f3SSatish Balay 568ae4341f3SSatish Balay void PETSC_STDCALL petscobjectgetcomm_(PetscObject *obj,int *comm,PetscErrorCode *ierr) 569ae4341f3SSatish Balay { 570ae4341f3SSatish Balay MPI_Comm c; 571ae4341f3SSatish Balay *ierr = PetscObjectGetComm(*obj,&c); 572ae4341f3SSatish Balay *(int*)comm = PetscFromPointerComm(c); 573ae4341f3SSatish Balay } 574ae4341f3SSatish Balay 575ae4341f3SSatish Balay void PETSC_STDCALL petscattachdebugger_(PetscErrorCode *ierr) 576ae4341f3SSatish Balay { 577ae4341f3SSatish Balay *ierr = PetscAttachDebugger(); 578ae4341f3SSatish Balay } 579ae4341f3SSatish Balay 580ae4341f3SSatish Balay void PETSC_STDCALL petscobjectsetname_(PetscObject *obj,CHAR name PETSC_MIXED_LEN(len), 581ae4341f3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 582ae4341f3SSatish Balay { 583ae4341f3SSatish Balay char *t1; 584ae4341f3SSatish Balay 585ae4341f3SSatish Balay FIXCHAR(name,len,t1); 586ae4341f3SSatish Balay *ierr = PetscObjectSetName(*obj,t1); 587ae4341f3SSatish Balay FREECHAR(name,t1); 588ae4341f3SSatish Balay } 589ae4341f3SSatish Balay 590ae4341f3SSatish Balay void PETSC_STDCALL petscerror_(int *number,int *p,CHAR message PETSC_MIXED_LEN(len), 591ae4341f3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 592ae4341f3SSatish Balay { 593ae4341f3SSatish Balay char *t1; 594ae4341f3SSatish Balay FIXCHAR(message,len,t1); 595ae4341f3SSatish Balay *ierr = PetscError(-1,0,0,0,*number,*p,t1); 596ae4341f3SSatish Balay FREECHAR(message,t1); 597ae4341f3SSatish Balay } 598ae4341f3SSatish Balay 599ae4341f3SSatish Balay void PETSC_STDCALL petscgetflops_(PetscLogDouble *d,PetscErrorCode *ierr) 600ae4341f3SSatish Balay { 601ae4341f3SSatish Balay #if defined(PETSC_USE_LOG) 602ae4341f3SSatish Balay *ierr = PetscGetFlops(d); 603ae4341f3SSatish Balay #else 604ae4341f3SSatish Balay ierr = 0; 605ae4341f3SSatish Balay *d = 0.0; 606ae4341f3SSatish Balay #endif 607ae4341f3SSatish Balay } 608ae4341f3SSatish Balay 609ae4341f3SSatish Balay void PETSC_STDCALL petscrandomcreate_(MPI_Comm *comm,PetscRandomType *type,PetscRandom *r,PetscErrorCode *ierr) 610ae4341f3SSatish Balay { 611ae4341f3SSatish Balay *ierr = PetscRandomCreate((MPI_Comm)PetscToPointerComm(*comm),*type,r); 612ae4341f3SSatish Balay } 613ae4341f3SSatish Balay 614ae4341f3SSatish Balay void PETSC_STDCALL petscrandomdestroy_(PetscRandom *r,PetscErrorCode *ierr) 615ae4341f3SSatish Balay { 616ae4341f3SSatish Balay *ierr = PetscRandomDestroy(*r); 617ae4341f3SSatish Balay } 618ae4341f3SSatish Balay 619ae4341f3SSatish Balay void PETSC_STDCALL petscrealview_(PetscInt *n,PetscReal *d,int *viwer,PetscErrorCode *ierr) 620ae4341f3SSatish Balay { 621ae4341f3SSatish Balay *ierr = PetscRealView(*n,d,0); 622ae4341f3SSatish Balay } 623ae4341f3SSatish Balay 624ae4341f3SSatish Balay void PETSC_STDCALL petscintview_(PetscInt *n,PetscInt *d,int *viwer,PetscErrorCode *ierr) 625ae4341f3SSatish Balay { 626ae4341f3SSatish Balay *ierr = PetscIntView(*n,d,0); 627ae4341f3SSatish Balay } 628ae4341f3SSatish Balay 629ae4341f3SSatish Balay void PETSC_STDCALL petscsequentialphasebegin_(MPI_Comm *comm,PetscInt *ng,PetscErrorCode *ierr){ 630ae4341f3SSatish Balay *ierr = PetscSequentialPhaseBegin( 631ae4341f3SSatish Balay (MPI_Comm)PetscToPointerComm(*comm),*ng); 632ae4341f3SSatish Balay } 633ae4341f3SSatish Balay void PETSC_STDCALL petscsequentialphaseend_(MPI_Comm *comm,PetscInt *ng,PetscErrorCode *ierr){ 634ae4341f3SSatish Balay *ierr = PetscSequentialPhaseEnd( 635ae4341f3SSatish Balay (MPI_Comm)PetscToPointerComm(*comm),*ng); 636ae4341f3SSatish Balay } 637ae4341f3SSatish Balay 638ae4341f3SSatish Balay 639ae4341f3SSatish Balay #if defined(PETSC_HAVE_MATLAB) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE) && !defined(PETSC_USE_MAT_SINGLE) 640ae4341f3SSatish Balay 641ae4341f3SSatish Balay void PETSC_STDCALL petscmatlabenginecreate_(MPI_Comm *comm,CHAR m PETSC_MIXED_LEN(len),PetscMatlabEngine *e, 642ae4341f3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 643ae4341f3SSatish Balay { 644ae4341f3SSatish Balay char *ms; 645ae4341f3SSatish Balay 646ae4341f3SSatish Balay FIXCHAR(m,len,ms); 647ae4341f3SSatish Balay *ierr = PetscMatlabEngineCreate((MPI_Comm)PetscToPointerComm(*comm),ms,e); 648ae4341f3SSatish Balay FREECHAR(m,ms); 649ae4341f3SSatish Balay } 650ae4341f3SSatish Balay 651ae4341f3SSatish Balay void PETSC_STDCALL petscmatlabenginedestroy_(PetscMatlabEngine *e,PetscErrorCode *ierr) 652ae4341f3SSatish Balay { 653ae4341f3SSatish Balay *ierr = PetscMatlabEngineDestroy(*e); 654ae4341f3SSatish Balay } 655ae4341f3SSatish Balay 656ae4341f3SSatish Balay void PETSC_STDCALL petscmatlabengineevaluate_(PetscMatlabEngine *e,CHAR m PETSC_MIXED_LEN(len), 657ae4341f3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 658ae4341f3SSatish Balay { 659ae4341f3SSatish Balay char *ms; 660ae4341f3SSatish Balay FIXCHAR(m,len,ms); 661ae4341f3SSatish Balay *ierr = PetscMatlabEngineEvaluate(*e,ms); 662ae4341f3SSatish Balay FREECHAR(m,ms); 663ae4341f3SSatish Balay } 664ae4341f3SSatish Balay 665ae4341f3SSatish Balay void PETSC_STDCALL petscmatlabengineput_(PetscMatlabEngine *e,PetscObject *o,PetscErrorCode *ierr) 666ae4341f3SSatish Balay { 667ae4341f3SSatish Balay *ierr = PetscMatlabEnginePut(*e,*o); 668ae4341f3SSatish Balay } 669ae4341f3SSatish Balay 670ae4341f3SSatish Balay void PETSC_STDCALL petscmatlabengineget_(PetscMatlabEngine *e,PetscObject *o,PetscErrorCode *ierr) 671ae4341f3SSatish Balay { 672ae4341f3SSatish Balay *ierr = PetscMatlabEngineGet(*e,*o); 673ae4341f3SSatish Balay } 674ae4341f3SSatish Balay 675ae4341f3SSatish Balay void PETSC_STDCALL petscmatlabengineputarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a, 676ae4341f3SSatish Balay CHAR s PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 677ae4341f3SSatish Balay { 678ae4341f3SSatish Balay char *ms; 679ae4341f3SSatish Balay FIXCHAR(s,len,ms); 680ae4341f3SSatish Balay *ierr = PetscMatlabEnginePutArray(*e,*m,*n,a,ms); 681ae4341f3SSatish Balay FREECHAR(s,ms); 682ae4341f3SSatish Balay } 683ae4341f3SSatish Balay 684ae4341f3SSatish Balay void PETSC_STDCALL petscmatlabenginegetarray_(PetscMatlabEngine *e,PetscInt *m,PetscInt *n,PetscScalar *a, 685ae4341f3SSatish Balay CHAR s PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 686ae4341f3SSatish Balay { 687ae4341f3SSatish Balay char *ms; 688ae4341f3SSatish Balay FIXCHAR(s,len,ms); 689ae4341f3SSatish Balay *ierr = PetscMatlabEngineGetArray(*e,*m,*n,a,ms); 690ae4341f3SSatish Balay FREECHAR(s,ms); 691ae4341f3SSatish Balay } 692ae4341f3SSatish Balay 693ae4341f3SSatish Balay #endif 694ae4341f3SSatish Balay /* 695ae4341f3SSatish Balay EXTERN int PetscMatlabEngineGetOutput(PetscMatlabEngine,char **); 696ae4341f3SSatish Balay EXTERN int PetscMatlabEnginePrintOutput(PetscMatlabEngine,FILE*); 697ae4341f3SSatish Balay */ 698ae4341f3SSatish Balay 699ae4341f3SSatish Balay EXTERN_C_END 700ae4341f3SSatish Balay 701ae4341f3SSatish Balay 702