Actual source code: ex61view.c
petsc-3.3-p7 2013-05-11
1: static const char help[] = "Loads data generated by ex61 and VTK file suitable for Paraview or Visit.\n\n";
3: /*
5: ./ex61gen -random_seed <integer> : creates ex61.random.<integer>
6: ./ex61 [-random_seed <integer>] -graphicsfile other options : creates ex61.data[.<integer>]
7: ./ex61view [-random_seed <integer>] : creates ex61.data[.<integer>]_cv_%d.vtk ex61.data[.<integer>]_eta_%d.vtk
9: where [ ] indicates the optional seed value; <integer> the seed value provided and %d the timestep
11: The resulting .vtk files may be loaded into ParaView or ViSIT
13: */
15: #include petscdmda.h
20: int main(int argc, char **argv)
21: {
22: PetscErrorCode ierr;
23: Vec U,cv,eta;
24: DM da,da2;
25: PetscViewer viewer,view_vtk_cv,view_vtk_eta;
26: char filename[PETSC_MAX_PATH_LEN],cv_filename[PETSC_MAX_PATH_LEN],eta_filename[PETSC_MAX_PATH_LEN];
27: PetscBool flg,sflg = PETSC_FALSE;
28: PetscInt i,n=10000;
29: PetscInt seed;
31: PetscInitialize(&argc,&argv, (char*)0, help);
32: PetscOptionsSetValue("-viewer_binary_skip_info","true");
33: PetscOptionsGetString(PETSC_NULL,"-f",filename,PETSC_MAX_PATH_LEN,&flg);
34: if (!flg) {
35: PetscOptionsGetInt(PETSC_NULL,"-random_seed",&seed,&sflg);
36: if (!sflg) {
37: PetscStrcpy(filename,"ex61.data");
38: } else {
39: sprintf(filename,"ex61.data.%d",seed);
40: }
41: }
43: PetscViewerBinaryOpen(PETSC_COMM_WORLD,filename,FILE_MODE_READ,&viewer);
45: /* Get physics and time parameters */
46: DMCreate(PETSC_COMM_WORLD,&da);
47: DMLoad(da,viewer);
48: DMCreateGlobalVector(da,&U);
49: DMDAGetReducedDA(da,1,&da2);
50: DMCreateGlobalVector(da2,&cv);
51: DMCreateGlobalVector(da2,&eta);
52:
53: for (i=0; i<n; i++) {
54: /* when this fails it simply means the file is finished */
55: VecLoad(U,viewer);
56: VecStrideGather(U,1,cv,INSERT_VALUES);
57: VecStrideGather(U,4,eta,INSERT_VALUES);
58: sprintf(cv_filename,"%s_cv_%d.vtk",filename,i);
59: sprintf(eta_filename,"%s_eta_%d.vtk",filename,i);
60: PetscViewerASCIIOpen(PETSC_COMM_WORLD,cv_filename,&view_vtk_cv);
61: PetscViewerASCIIOpen(PETSC_COMM_WORLD,eta_filename,&view_vtk_eta);
62: PetscViewerSetFormat(view_vtk_cv, PETSC_VIEWER_ASCII_VTK);
63: PetscViewerSetFormat(view_vtk_eta, PETSC_VIEWER_ASCII_VTK);
64: DMView(da2,view_vtk_cv);
65: DMView(da2,view_vtk_eta);
66: VecView(cv,view_vtk_cv);
67: VecView(eta,view_vtk_eta);
68: PetscViewerDestroy(&view_vtk_cv);
69: PetscViewerDestroy(&view_vtk_eta);
70: }
71: VecDestroy(&U);
72: VecDestroy(&cv);
73: VecDestroy(&eta);
74: DMDestroy(&da);
75: DMDestroy(&da2);
76: PetscFinalize();
77: return 0;
78: }