Actual source code: ex31.c
1: /*
2: Demonstrates PetscMatlabEngineXXX()
3: */
5: #include petscvec.h
9: int main(int argc,char **argv)
10: {
12: PetscMPIInt rank;
13: PetscInt n = 5;
14: char *output;
15: Vec x;
17: PetscInitialize(&argc,&argv,(char *)0,0);
19: VecCreate(PETSC_COMM_WORLD,&x);
20: VecSetSizes(x,PETSC_DECIDE,n);
21: VecSetFromOptions(x);
23: MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
24: PetscMatlabEngineGetOutput(PETSC_MATLAB_ENGINE_WORLD,&output);
25: PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_WORLD,"MPI_Comm_rank");
26: PetscSynchronizedPrintf(PETSC_COMM_WORLD,"[%d]Processor rank is %s",rank,output);
27: PetscSynchronizedFlush(PETSC_COMM_WORLD);
29: PetscObjectSetName((PetscObject)x,"x");
30: PetscMatlabEnginePut(PETSC_MATLAB_ENGINE_WORLD,(PetscObject)x);
31: PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_WORLD,"x = x + MPI_Comm_rank;\n");
32: PetscMatlabEngineGet(PETSC_MATLAB_ENGINE_WORLD,(PetscObject)x);
34: PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_WORLD,"whos\n");
35: PetscSynchronizedPrintf(PETSC_COMM_WORLD,"[%d]The result is %s",rank,output);
36: PetscSynchronizedFlush(PETSC_COMM_WORLD);
38: VecView(x,PETSC_VIEWER_STDOUT_WORLD);
39: VecDestroy(x);
40: PetscFinalize();
41: return 0;
42: }
43: