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