Actual source code: ex31.c
petsc-3.7.4 2016-10-02
1: static const char help[] = "Demonstrates PetscMatlabEngineXXX()\n";
3: #include <petscvec.h>
4: #include <petscmatlab.h>
8: int main(int argc,char **argv)
9: {
11: PetscMPIInt rank;
12: PetscInt n = 5;
13: char *output;
14: Vec x;
16: PetscInitialize(&argc,&argv,(char*)0,help);
18: VecCreate(PETSC_COMM_WORLD,&x);
19: VecSetSizes(x,PETSC_DECIDE,n);
20: VecSetFromOptions(x);
22: MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
23: PetscMatlabEngineGetOutput(PETSC_MATLAB_ENGINE_WORLD,&output);
24: PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_WORLD,"MPI_Comm_rank");
25: PetscSynchronizedPrintf(PETSC_COMM_WORLD,"[%d]Processor rank is %s",rank,output);
26: PetscSynchronizedFlush(PETSC_COMM_WORLD,PETSC_STDOUT);
28: PetscObjectSetName((PetscObject)x,"x");
29: PetscMatlabEnginePut(PETSC_MATLAB_ENGINE_WORLD,(PetscObject)x);
30: PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_WORLD,"x = x + MPI_Comm_rank;\n");
31: PetscMatlabEngineGet(PETSC_MATLAB_ENGINE_WORLD,(PetscObject)x);
33: PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_WORLD,"whos\n");
34: PetscSynchronizedPrintf(PETSC_COMM_WORLD,"[%d]The result is %s",rank,output);
35: PetscSynchronizedFlush(PETSC_COMM_WORLD,PETSC_STDOUT);
37: VecView(x,PETSC_VIEWER_STDOUT_WORLD);
38: VecDestroy(&x);
39: PetscFinalize();
40: return 0;
41: }