Actual source code: ex42a.c

  1: static char help[] = "Sends a PETSc vector to a socket connection, receives it back, within a loop. Must be run with ex42.c.\n";

  3: #include <petscvec.h>

  5: int main(int argc, char **args)
  6: {
  7:   Vec         b;
  8:   PetscViewer fd;
  9:   PetscInt    i;

 11:   PetscFunctionBeginUser;
 12:   PetscCall(PetscInitialize(&argc, &args, (char *)0, help));
 13:   /* server indicates we WAIT for someone to connect to our socket */
 14:   PetscCall(PetscViewerSocketOpen(PETSC_COMM_WORLD, "server", PETSC_DEFAULT, &fd));

 16:   PetscCall(VecCreateFromOptions(PETSC_COMM_WORLD, NULL, 1, 10000, PETSC_DECIDE, &b));
 17:   for (i = 0; i < 1000; i++) {
 18:     PetscCall(VecView(b, fd));
 19:     PetscCall(VecDestroy(&b));
 20:     PetscCall(VecCreate(PETSC_COMM_WORLD, &b));
 21:     PetscCall(VecLoad(b, fd));
 22:   }
 23:   PetscCall(VecDestroy(&b));
 24:   PetscCall(PetscViewerDestroy(&fd));
 25:   PetscCall(PetscFinalize());
 26:   return 0;
 27: }