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