xref: /petsc/src/sys/tests/ex16.c (revision 69cdbcb9da6ff2586d8aaad5c78ee6fa55c7fe19)
1 
2 static char help[] = "Demonstrates PetscMatlabEngineXXX()\n";
3 
4 #include <petscsys.h>
5 #include <petscmatlab.h>
6 
7 int main(int argc,char **argv)
8 {
9   PetscErrorCode ierr;
10   PetscMPIInt    rank;
11   char           buffer[256],*output,user[256];
12   PetscBool      userhappy = PETSC_FALSE;
13 
14   ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr;
15   ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
16 
17   ierr = PetscMatlabEngineGetOutput(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD),&output);CHKERRQ(ierr);
18 
19   ierr = PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD),"MPI_Comm_rank");CHKERRQ(ierr);
20   ierr = PetscSynchronizedPrintf(PETSC_COMM_WORLD,"[%d]Processor rank is %s",rank,output);CHKERRQ(ierr);
21   ierr = PetscSynchronizedFlush(PETSC_COMM_WORLD,PETSC_STDOUT);CHKERRQ(ierr);
22   ierr = PetscPrintf(PETSC_COMM_WORLD,">>");CHKERRQ(ierr);
23   ierr = PetscSynchronizedFGets(PETSC_COMM_WORLD,stdin,256,user);CHKERRQ(ierr);
24   ierr = PetscStrncmp(user,"exit",4,&userhappy);CHKERRQ(ierr);
25   while (!userhappy) {
26     ierr = PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD),user);CHKERRQ(ierr);
27     ierr = PetscSynchronizedPrintf(PETSC_COMM_WORLD,"[%d]The result is %s",rank,output);CHKERRQ(ierr);
28     ierr = PetscSynchronizedFlush(PETSC_COMM_WORLD,PETSC_STDOUT);CHKERRQ(ierr);
29     ierr = PetscPrintf(PETSC_COMM_WORLD,">>");CHKERRQ(ierr);
30     ierr = PetscSynchronizedFGets(PETSC_COMM_WORLD,stdin,256,user);CHKERRQ(ierr);
31     ierr = PetscStrncmp(user,"exit",4,&userhappy);CHKERRQ(ierr);
32   }
33   ierr = PetscFinalize();
34   return ierr;
35 }
36 
37