PetscErrorCode PFDestroy_Matlab(void *value) { PetscErrorCode ierr; PF_Matlab *matlab = (PF_Matlab*)value; PetscFunctionBegin; ierr = PetscStrfree(matlab->string);CHKERRQ(ierr); ierr = PetscMatlabEngineDestroy(matlab->mengine);CHKERRQ(ierr); ierr = PetscFree(matlab);CHKERRQ(ierr); PetscFunctionReturn(0); }
int main(int argc, char **argv) { AppCtx user; PetscErrorCode ierr; PetscScalar tmp; int i; ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr; ierr = PetscMatlabEngineCreate(PETSC_COMM_SELF,NULL,&user.mengine);CHKERRQ(ierr); ierr = PetscMatlabEngineEvaluate(user.mengine,"TestingInitialize");CHKERRQ(ierr); for (i = 1; i <= 53; ++i) { ierr = PetscPrintf(PETSC_COMM_SELF,"%d\n",i); ierr = PetscMatlabEngineEvaluate(user.mengine,"np = %d; ProblemInitialize",i);CHKERRQ(ierr); ierr = PetscMatlabEngineGetArray(user.mengine,1,1,&tmp,"n");CHKERRQ(ierr); user.n = (int)tmp; ierr = PetscMatlabEngineGetArray(user.mengine,1,1,&tmp,"m");CHKERRQ(ierr); user.m = (int)tmp; ierr = PetscMatlabEngineGetArray(user.mengine,1,1,&tmp,"nfmax");CHKERRQ(ierr); user.nfmax = (int)tmp; ierr = PetscMatlabEngineGetArray(user.mengine,1,1,&tmp,"npmax");CHKERRQ(ierr); user.npmax = (int)tmp; ierr = PetscMatlabEngineGetArray(user.mengine,1,1,&tmp,"delta");CHKERRQ(ierr); user.delta = (double)tmp; /* Ignore return code for now -- do not stop testing on inf or nan errors */ ierr = TaoPounders(&user); ierr = PetscMatlabEngineEvaluate(user.mengine,"ProblemFinalize");CHKERRQ(ierr); } ierr = PetscMatlabEngineEvaluate(user.mengine,"TestingFinalize");CHKERRQ(ierr); ierr = PetscMatlabEngineDestroy(&user.mengine);CHKERRQ(ierr); ierr = PetscFinalize(); return ierr; }
void PETSC_STDCALL petscmatlabenginedestroy_(PetscMatlabEngine v, int *__ierr ){ *__ierr = PetscMatlabEngineDestroy( (PetscMatlabEngine)PetscToPointer((v) )); }