1c4762a1bSJed Brown 2c4762a1bSJed Brown static char help[] = "Demonstrates PetscMatlabEngineXXX()\n"; 3c4762a1bSJed Brown 4c4762a1bSJed Brown #include <petscsys.h> 5c4762a1bSJed Brown #include <petscmatlab.h> 6c4762a1bSJed Brown 7c4762a1bSJed Brown int main(int argc,char **argv) 8c4762a1bSJed Brown { 9c4762a1bSJed Brown PetscMPIInt rank; 10c4762a1bSJed Brown char buffer[256],*output,user[256]; 11c4762a1bSJed Brown PetscBool userhappy = PETSC_FALSE; 12c4762a1bSJed Brown 13*327415f7SBarry Smith PetscFunctionBeginUser; 149566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc,&argv,(char*)0,help)); 15d0609cedSBarry Smith PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank)); 16c4762a1bSJed Brown 179566063dSJacob Faibussowitsch PetscCall(PetscMatlabEngineGetOutput(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD),&output)); 18c4762a1bSJed Brown 199566063dSJacob Faibussowitsch PetscCall(PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD),"MPI_Comm_rank")); 209566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedPrintf(PETSC_COMM_WORLD,"[%d]Processor rank is %s",rank,output)); 219566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedFlush(PETSC_COMM_WORLD,PETSC_STDOUT)); 229566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PETSC_COMM_WORLD,">>")); 239566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedFGets(PETSC_COMM_WORLD,stdin,256,user)); 249566063dSJacob Faibussowitsch PetscCall(PetscStrncmp(user,"exit",4,&userhappy)); 25c4762a1bSJed Brown while (!userhappy) { 269566063dSJacob Faibussowitsch PetscCall(PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD),user)); 279566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedPrintf(PETSC_COMM_WORLD,"[%d]The result is %s",rank,output)); 289566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedFlush(PETSC_COMM_WORLD,PETSC_STDOUT)); 299566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PETSC_COMM_WORLD,">>")); 309566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedFGets(PETSC_COMM_WORLD,stdin,256,user)); 319566063dSJacob Faibussowitsch PetscCall(PetscStrncmp(user,"exit",4,&userhappy)); 32c4762a1bSJed Brown } 339566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 34b122ec5aSJacob Faibussowitsch return 0; 35c4762a1bSJed Brown } 36