static char help[] = "Demonstrates use of PetscDrawZoom()\n"; #if defined(PETSC_APPLE_FRAMEWORK) #include #include #else #include #include #endif PetscErrorCode zoomfunction(PetscDraw draw, void *dummy) { MPI_Comm comm; PetscMPIInt size, rank; PetscFunctionBeginUser; PetscCall(PetscObjectGetComm((PetscObject)draw, &comm)); PetscCallMPI(MPI_Comm_size(comm, &size)); PetscCallMPI(MPI_Comm_rank(comm, &rank)); for (int i = rank; i < 256; i += size) { PetscReal y = ((PetscReal)i) / (256 - 1); PetscCall(PetscDrawLine(draw, 0.0, y, 1.0, y, i)); } PetscFunctionReturn(PETSC_SUCCESS); } int main(int argc, char **argv) { int x = 0, y = 0, width = 256, height = 256; PetscDraw draw; PetscFunctionBeginUser; PetscCall(PetscInitialize(&argc, &argv, NULL, help)); PetscCall(PetscDrawCreate(PETSC_COMM_WORLD, NULL, "Title", x, y, width, height, &draw)); PetscCall(PetscDrawSetFromOptions(draw)); PetscCall(PetscDrawZoom(draw, zoomfunction, NULL)); PetscCall(PetscDrawDestroy(&draw)); PetscCall(PetscFinalize()); return 0; } /*TEST build: requires: x test: output_file: output/ex1_1.out test: suffix: db args: -draw_double_buffer 0 output_file: output/ex1_1.out test: suffix: df args: -draw_fast output_file: output/ex1_1.out test: suffix: dv args: -draw_virtual output_file: output/ex1_1.out TEST*/