1c4762a1bSJed Brown static char help[] = "Demonstrates PetscMatlabEngineXXX()\n"; 2c4762a1bSJed Brown 3c4762a1bSJed Brown #include <petscsys.h> 4c4762a1bSJed Brown #include <petscmatlab.h> 5c4762a1bSJed Brown 6d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv) 7d71ae5a4SJacob Faibussowitsch { 8c4762a1bSJed Brown PetscMPIInt rank; 9c4762a1bSJed Brown char buffer[256], *output, user[256]; 10c4762a1bSJed Brown PetscBool userhappy = PETSC_FALSE; 11c4762a1bSJed Brown 12327415f7SBarry Smith PetscFunctionBeginUser; 13*c8025a54SPierre Jolivet PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 14d0609cedSBarry Smith PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD, &rank)); 15c4762a1bSJed Brown 169566063dSJacob Faibussowitsch PetscCall(PetscMatlabEngineGetOutput(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD), &output)); 17c4762a1bSJed Brown 189566063dSJacob Faibussowitsch PetscCall(PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD), "MPI_Comm_rank")); 199566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedPrintf(PETSC_COMM_WORLD, "[%d]Processor rank is %s", rank, output)); 209566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedFlush(PETSC_COMM_WORLD, PETSC_STDOUT)); 219566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PETSC_COMM_WORLD, ">>")); 229566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedFGets(PETSC_COMM_WORLD, stdin, 256, user)); 239566063dSJacob Faibussowitsch PetscCall(PetscStrncmp(user, "exit", 4, &userhappy)); 24c4762a1bSJed Brown while (!userhappy) { 259566063dSJacob Faibussowitsch PetscCall(PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD), user)); 269566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedPrintf(PETSC_COMM_WORLD, "[%d]The result is %s", rank, output)); 279566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedFlush(PETSC_COMM_WORLD, PETSC_STDOUT)); 289566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PETSC_COMM_WORLD, ">>")); 299566063dSJacob Faibussowitsch PetscCall(PetscSynchronizedFGets(PETSC_COMM_WORLD, stdin, 256, user)); 309566063dSJacob Faibussowitsch PetscCall(PetscStrncmp(user, "exit", 4, &userhappy)); 31c4762a1bSJed Brown } 329566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 33b122ec5aSJacob Faibussowitsch return 0; 34c4762a1bSJed Brown } 35