Lines Matching refs:lg
23 PetscErrorCode PetscDrawLGGetAxis(PetscDrawLG lg, PetscDrawAxis *axis) in PetscDrawLGGetAxis() argument
26 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGGetAxis()
28 *axis = lg->axis; in PetscDrawLGGetAxis()
47 PetscErrorCode PetscDrawLGGetDraw(PetscDrawLG lg, PetscDraw *draw) in PetscDrawLGGetDraw() argument
50 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGGetDraw()
52 *draw = lg->win; in PetscDrawLGGetDraw()
72 PetscErrorCode PetscDrawLGSPDraw(PetscDrawLG lg, PetscDrawSP spin) in PetscDrawLGSPDraw() argument
81 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGSPDraw()
83 PetscCall(PetscDrawIsNull(lg->win, &isnull)); in PetscDrawLGSPDraw()
85 PetscCallMPI(MPI_Comm_rank(PetscObjectComm((PetscObject)lg), &rank)); in PetscDrawLGSPDraw()
87 draw = lg->win; in PetscDrawLGSPDraw()
91 xmin = PetscMin(lg->xmin, sp->xmin); in PetscDrawLGSPDraw()
92 ymin = PetscMin(lg->ymin, sp->ymin); in PetscDrawLGSPDraw()
93 xmax = PetscMax(lg->xmax, sp->xmax); in PetscDrawLGSPDraw()
94 ymax = PetscMax(lg->ymax, sp->ymax); in PetscDrawLGSPDraw()
95 PetscCall(PetscDrawAxisSetLimits(lg->axis, xmin, xmax, ymin, ymax)); in PetscDrawLGSPDraw()
96 PetscCall(PetscDrawAxisDraw(lg->axis)); in PetscDrawLGSPDraw()
101 dim = lg->dim; in PetscDrawLGSPDraw()
102 nopts = lg->nopts; in PetscDrawLGSPDraw()
105 …PetscCall(PetscDrawLine(draw, lg->x[(j - 1) * dim + i], lg->y[(j - 1) * dim + i], lg->x[j * dim + … in PetscDrawLGSPDraw()
106 …if (lg->use_markers) PetscCall(PetscDrawMarker(draw, lg->x[j * dim + i], lg->y[j * dim + i], PETSC… in PetscDrawLGSPDraw()
148 PetscDrawLG lg; in PetscDrawLGCreate() local
155 …PetscCall(PetscHeaderCreate(lg, PETSC_DRAWLG_CLASSID, "DrawLG", "Line Graph", "Draw", PetscObjectC… in PetscDrawLGCreate()
156 PetscCall(PetscDrawLGSetOptionsPrefix(lg, ((PetscObject)draw)->prefix)); in PetscDrawLGCreate()
159 lg->win = draw; in PetscDrawLGCreate()
161 lg->view = NULL; in PetscDrawLGCreate()
162 lg->destroy = NULL; in PetscDrawLGCreate()
163 lg->nopts = 0; in PetscDrawLGCreate()
164 lg->xmin = 1.e20; in PetscDrawLGCreate()
165 lg->ymin = 1.e20; in PetscDrawLGCreate()
166 lg->xmax = -1.e20; in PetscDrawLGCreate()
167 lg->ymax = -1.e20; in PetscDrawLGCreate()
168 PetscCall(PetscCIntCast(dim, &lg->dim)); in PetscDrawLGCreate()
169 …etscCall(PetscMalloc2(dim * PETSC_DRAW_LG_CHUNK_SIZE, &lg->x, dim * PETSC_DRAW_LG_CHUNK_SIZE, &lg-… in PetscDrawLGCreate()
171 lg->len = lg->dim * PETSC_DRAW_LG_CHUNK_SIZE; in PetscDrawLGCreate()
172 lg->loc = 0; in PetscDrawLGCreate()
173 lg->use_markers = PETSC_FALSE; in PetscDrawLGCreate()
175 PetscCall(PetscDrawAxisCreate(draw, &lg->axis)); in PetscDrawLGCreate()
177 *outlg = lg; in PetscDrawLGCreate()
194 PetscErrorCode PetscDrawLGSetColors(PetscDrawLG lg, const int colors[]) in PetscDrawLGSetColors() argument
197 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGSetColors()
198 if (lg->dim) PetscAssertPointer(colors, 2); in PetscDrawLGSetColors()
200 PetscCall(PetscFree(lg->colors)); in PetscDrawLGSetColors()
201 PetscCall(PetscMalloc1(lg->dim, &lg->colors)); in PetscDrawLGSetColors()
202 PetscCall(PetscArraycpy(lg->colors, colors, lg->dim)); in PetscDrawLGSetColors()
222 PetscErrorCode PetscDrawLGSetLegend(PetscDrawLG lg, const char *const names[]) in PetscDrawLGSetLegend() argument
227 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGSetLegend()
230 if (lg->legend) { in PetscDrawLGSetLegend()
231 for (i = 0; i < lg->dim; i++) PetscCall(PetscFree(lg->legend[i])); in PetscDrawLGSetLegend()
232 PetscCall(PetscFree(lg->legend)); in PetscDrawLGSetLegend()
235 PetscCall(PetscMalloc1(lg->dim, &lg->legend)); in PetscDrawLGSetLegend()
236 for (i = 0; i < lg->dim; i++) PetscCall(PetscStrallocpy(names[i], &lg->legend[i])); in PetscDrawLGSetLegend()
256 PetscErrorCode PetscDrawLGGetDimension(PetscDrawLG lg, PetscInt *dim) in PetscDrawLGGetDimension() argument
259 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGGetDimension()
261 *dim = lg->dim; in PetscDrawLGGetDimension()
278 PetscErrorCode PetscDrawLGSetDimension(PetscDrawLG lg, PetscInt dim) in PetscDrawLGSetDimension() argument
283 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGSetDimension()
284 PetscValidLogicalCollectiveInt(lg, dim, 2); in PetscDrawLGSetDimension()
285 if (lg->dim == dim) PetscFunctionReturn(PETSC_SUCCESS); in PetscDrawLGSetDimension()
287 PetscCall(PetscFree2(lg->x, lg->y)); in PetscDrawLGSetDimension()
288 if (lg->legend) { in PetscDrawLGSetDimension()
289 for (i = 0; i < lg->dim; i++) PetscCall(PetscFree(lg->legend[i])); in PetscDrawLGSetDimension()
290 PetscCall(PetscFree(lg->legend)); in PetscDrawLGSetDimension()
292 PetscCall(PetscFree(lg->colors)); in PetscDrawLGSetDimension()
293 PetscCall(PetscCIntCast(dim, &lg->dim)); in PetscDrawLGSetDimension()
294 …etscCall(PetscMalloc2(dim * PETSC_DRAW_LG_CHUNK_SIZE, &lg->x, dim * PETSC_DRAW_LG_CHUNK_SIZE, &lg-… in PetscDrawLGSetDimension()
295 lg->len = lg->dim * PETSC_DRAW_LG_CHUNK_SIZE; in PetscDrawLGSetDimension()
317 PetscErrorCode PetscDrawLGGetData(PetscDrawLG lg, PetscInt *dim, PetscInt *n, const PetscReal *x[],… in PetscDrawLGGetData() argument
320 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGGetData()
323 *dim = lg->dim; in PetscDrawLGGetData()
327 *n = lg->nopts; in PetscDrawLGGetData()
331 *x = lg->x; in PetscDrawLGGetData()
335 *y = lg->y; in PetscDrawLGGetData()
358 PetscErrorCode PetscDrawLGSetLimits(PetscDrawLG lg, PetscReal x_min, PetscReal x_max, PetscReal y_m… in PetscDrawLGSetLimits() argument
361 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGSetLimits()
363 (lg)->xmin = x_min; in PetscDrawLGSetLimits()
364 (lg)->xmax = x_max; in PetscDrawLGSetLimits()
365 (lg)->ymin = y_min; in PetscDrawLGSetLimits()
366 (lg)->ymax = y_max; in PetscDrawLGSetLimits()
382 PetscErrorCode PetscDrawLGReset(PetscDrawLG lg) in PetscDrawLGReset() argument
385 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGReset()
386 lg->xmin = 1.e20; in PetscDrawLGReset()
387 lg->ymin = 1.e20; in PetscDrawLGReset()
388 lg->xmax = -1.e20; in PetscDrawLGReset()
389 lg->ymax = -1.e20; in PetscDrawLGReset()
390 lg->loc = 0; in PetscDrawLGReset()
391 lg->nopts = 0; in PetscDrawLGReset()
407 PetscErrorCode PetscDrawLGDestroy(PetscDrawLG *lg) in PetscDrawLGDestroy() argument
412 if (!*lg) PetscFunctionReturn(PETSC_SUCCESS); in PetscDrawLGDestroy()
413 PetscValidHeaderSpecific(*lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGDestroy()
414 if (--((PetscObject)*lg)->refct > 0) { in PetscDrawLGDestroy()
415 *lg = NULL; in PetscDrawLGDestroy()
419 if ((*lg)->legend) { in PetscDrawLGDestroy()
420 for (i = 0; i < (*lg)->dim; i++) PetscCall(PetscFree((*lg)->legend[i])); in PetscDrawLGDestroy()
421 PetscCall(PetscFree((*lg)->legend)); in PetscDrawLGDestroy()
423 PetscCall(PetscFree((*lg)->colors)); in PetscDrawLGDestroy()
424 PetscCall(PetscFree2((*lg)->x, (*lg)->y)); in PetscDrawLGDestroy()
425 PetscCall(PetscDrawAxisDestroy(&(*lg)->axis)); in PetscDrawLGDestroy()
426 PetscCall(PetscDrawDestroy(&(*lg)->win)); in PetscDrawLGDestroy()
427 PetscCall(PetscHeaderDestroy(lg)); in PetscDrawLGDestroy()
446 PetscErrorCode PetscDrawLGSetUseMarkers(PetscDrawLG lg, PetscBool flg) in PetscDrawLGSetUseMarkers() argument
449 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGSetUseMarkers()
450 PetscValidLogicalCollectiveBool(lg, flg, 2); in PetscDrawLGSetUseMarkers()
451 lg->use_markers = flg; in PetscDrawLGSetUseMarkers()
467 PetscErrorCode PetscDrawLGDraw(PetscDrawLG lg) in PetscDrawLGDraw() argument
475 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGDraw()
476 PetscCall(PetscDrawIsNull(lg->win, &isnull)); in PetscDrawLGDraw()
478 PetscCallMPI(MPI_Comm_rank(PetscObjectComm((PetscObject)lg), &rank)); in PetscDrawLGDraw()
480 draw = lg->win; in PetscDrawLGDraw()
484 xmin = lg->xmin; in PetscDrawLGDraw()
485 xmax = lg->xmax; in PetscDrawLGDraw()
486 ymin = lg->ymin; in PetscDrawLGDraw()
487 ymax = lg->ymax; in PetscDrawLGDraw()
493 PetscCall(PetscDrawAxisSetLimits(lg->axis, xmin, xmax, ymin, ymax)); in PetscDrawLGDraw()
494 PetscCall(PetscDrawAxisDraw(lg->axis)); in PetscDrawLGDraw()
498 int i, j, dim = lg->dim, nopts = lg->nopts, cl; in PetscDrawLGDraw()
501 cl = lg->colors ? lg->colors[i] : ((PETSC_DRAW_BLACK + i) % PETSC_DRAW_MAXCOLOR); in PetscDrawLGDraw()
502 …PetscCall(PetscDrawLine(draw, lg->x[(j - 1) * dim + i], lg->y[(j - 1) * dim + i], lg->x[j * dim + … in PetscDrawLGDraw()
503 … if (lg->use_markers) PetscCall(PetscDrawMarker(draw, lg->x[j * dim + i], lg->y[j * dim + i], cl)); in PetscDrawLGDraw()
507 if (rank == 0 && lg->legend) { in PetscDrawLGDraw()
509 int i, dim = lg->dim, cl; in PetscDrawLGDraw()
513 PetscCall(PetscDrawAxisGetLimits(lg->axis, &xl, &xr, &yl, &yr)); in PetscDrawLGDraw()
516 PetscCall(PetscStrlen(lg->legend[i], &slen)); in PetscDrawLGDraw()
533 cl = lg->colors ? lg->colors[i] : (PETSC_DRAW_BLACK + i); in PetscDrawLGDraw()
535 …PetscCall(PetscDrawString(draw, xl + 6 * tw, yr - (i + 1.5) * th, PETSC_DRAW_BLACK, lg->legend[i])… in PetscDrawLGDraw()
557 PetscErrorCode PetscDrawLGSave(PetscDrawLG lg) in PetscDrawLGSave() argument
560 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGSave()
561 PetscCall(PetscDrawSave(lg->win)); in PetscDrawLGSave()
578 PetscErrorCode PetscDrawLGView(PetscDrawLG lg, PetscViewer viewer) in PetscDrawLGView() argument
580 PetscReal xmin = lg->xmin, xmax = lg->xmax, ymin = lg->ymin, ymax = lg->ymax; in PetscDrawLGView()
581 PetscInt i, j, dim = lg->dim, nopts = lg->nopts; in PetscDrawLGView()
584 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGView()
589 if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)lg), &viewer)); in PetscDrawLGView()
590 PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)lg, viewer)); in PetscDrawLGView()
593 …ll(PetscViewerASCIIPrintf(viewer, " X: %g Y: %g\n", (double)lg->x[j * dim + i], (double)lg->y[j *… in PetscDrawLGView()
612 PetscErrorCode PetscDrawLGSetOptionsPrefix(PetscDrawLG lg, const char prefix[]) in PetscDrawLGSetOptionsPrefix() argument
615 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGSetOptionsPrefix()
616 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)lg, prefix)); in PetscDrawLGSetOptionsPrefix()
635 PetscErrorCode PetscDrawLGSetFromOptions(PetscDrawLG lg) in PetscDrawLGSetFromOptions() argument
641 PetscValidHeaderSpecific(lg, PETSC_DRAWLG_CLASSID, 1); in PetscDrawLGSetFromOptions()
643 PetscCall(PetscDrawGetMarkerType(lg->win, &markertype)); in PetscDrawLGSetFromOptions()
644 …PetscCall(PetscOptionsGetEnum(((PetscObject)lg)->options, ((PetscObject)lg)->prefix, "-lg_marker_t… in PetscDrawLGSetFromOptions()
646 PetscCall(PetscDrawLGSetUseMarkers(lg, PETSC_TRUE)); in PetscDrawLGSetFromOptions()
647 PetscCall(PetscDrawSetMarkerType(lg->win, markertype)); in PetscDrawLGSetFromOptions()
649 usemarkers = lg->use_markers; in PetscDrawLGSetFromOptions()
650 …PetscCall(PetscOptionsGetBool(((PetscObject)lg)->options, ((PetscObject)lg)->prefix, "-lg_use_mark… in PetscDrawLGSetFromOptions()
651 if (set) PetscCall(PetscDrawLGSetUseMarkers(lg, usemarkers)); in PetscDrawLGSetFromOptions()