#include int main(int argc, char **argv) { Vec *v; PetscRandom r; PetscInt n = 100; PetscCall(PetscInitialize(&argc, &argv, NULL, NULL)); PetscCall(PetscRandomCreate(PETSC_COMM_WORLD, &r)); PetscCall(PetscOptionsGetInt(NULL, NULL, "-n", &n, NULL)); PetscCall(PetscMalloc1(n, &v)); PetscCall(VecCreate(PETSC_COMM_WORLD, &v[0])); PetscCall(VecSetFromOptions(v[0])); PetscCall(VecSetSizes(v[0], PETSC_DETERMINE, 10)); PetscCall(VecSetRandom(v[0], r)); for (PetscInt i = 1; i < n; ++i) { PetscCall(VecDuplicate(v[0], &v[i])); PetscCall(VecSetRandom(v[i], r)); } for (PetscInt i = 0; i < n; ++i) { char vname[PETSC_MAX_PATH_LEN]; PetscCall(PetscSNPrintf(vname, PETSC_MAX_PATH_LEN, "%dth Vector", i)); PetscCall(PetscObjectSetName((PetscObject) v[i], vname)); } for (PetscInt i = 0; i < n; ++i) PetscCall(VecViewFromOptions(v[i], NULL, "-vec_view")); for (PetscInt i = 0; i < n; ++i) PetscCall(VecDestroy(&v[i])); PetscCall(PetscFree(v)); PetscCall(PetscRandomDestroy(&r)); PetscCall(PetscFinalize()); return 0; }