| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* | ||
| 2 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 3 | SLEPc - Scalable Library for Eigenvalue Problem Computations | ||
| 4 | Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain | ||
| 5 | |||
| 6 | This file is part of SLEPc. | ||
| 7 | SLEPc is distributed under a 2-clause BSD license (see LICENSE). | ||
| 8 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 9 | */ | ||
| 10 | /* | ||
| 11 | Ring region, similar to the ellipse but with a start and end angle, | ||
| 12 | together with the width | ||
| 13 | */ | ||
| 14 | |||
| 15 | #include <slepc/private/rgimpl.h> /*I "slepcrg.h" I*/ | ||
| 16 | #include <petscdraw.h> | ||
| 17 | |||
| 18 | typedef struct { | ||
| 19 | PetscScalar center; /* center of the ellipse */ | ||
| 20 | PetscReal radius; /* radius of the ellipse */ | ||
| 21 | PetscReal vscale; /* vertical scale of the ellipse */ | ||
| 22 | PetscReal start_ang; /* start angle */ | ||
| 23 | PetscReal end_ang; /* end angle */ | ||
| 24 | PetscReal width; /* ring width */ | ||
| 25 | } RG_RING; | ||
| 26 | |||
| 27 | 146 | static PetscErrorCode RGRingSetParameters_Ring(RG rg,PetscScalar center,PetscReal radius,PetscReal vscale,PetscReal start_ang,PetscReal end_ang,PetscReal width) | |
| 28 | { | ||
| 29 | 146 | RG_RING *ctx = (RG_RING*)rg->data; | |
| 30 | |||
| 31 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
146 | PetscFunctionBegin; |
| 32 | 146 | ctx->center = center; | |
| 33 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
146 | if (radius == (PetscReal)PETSC_DETERMINE) { |
| 34 | 50 | ctx->radius = 1.0; | |
| 35 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
96 | } else if (radius != (PetscReal)PETSC_CURRENT) { |
| 36 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
96 | PetscCheck(radius>0.0,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_OUTOFRANGE,"The radius argument must be > 0.0"); |
| 37 | 96 | ctx->radius = radius; | |
| 38 | } | ||
| 39 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
146 | if (vscale == (PetscReal)PETSC_DETERMINE) { |
| 40 | ✗ | ctx->vscale = 1.0; | |
| 41 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
146 | } else if (vscale != (PetscReal)PETSC_CURRENT) { |
| 42 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
146 | PetscCheck(vscale>0.0,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_OUTOFRANGE,"The vscale argument must be > 0.0"); |
| 43 | 146 | ctx->vscale = vscale; | |
| 44 | } | ||
| 45 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
146 | if (start_ang == (PetscReal)PETSC_DETERMINE) { |
| 46 | ✗ | ctx->start_ang = 0.0; | |
| 47 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
146 | } else if (start_ang != (PetscReal)PETSC_CURRENT) { |
| 48 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
146 | PetscCheck(start_ang>=0.0,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_OUTOFRANGE,"The right-hand side angle argument must be >= 0.0"); |
| 49 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
146 | PetscCheck(start_ang<=1.0,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_OUTOFRANGE,"The right-hand side angle argument must be <= 1.0"); |
| 50 | 146 | ctx->start_ang = start_ang; | |
| 51 | } | ||
| 52 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
146 | if (end_ang == (PetscReal)PETSC_DETERMINE) { |
| 53 | ✗ | ctx->end_ang = 1.0; | |
| 54 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
146 | } else if (end_ang != (PetscReal)PETSC_CURRENT) { |
| 55 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
146 | PetscCheck(end_ang>=0.0,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_OUTOFRANGE,"The left-hand side angle argument must be >= 0.0"); |
| 56 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
146 | PetscCheck(end_ang<=1.0,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_OUTOFRANGE,"The left-hand side angle argument must be <= 1.0"); |
| 57 | 146 | ctx->end_ang = end_ang; | |
| 58 | } | ||
| 59 | #if !defined(PETSC_USE_COMPLEX) | ||
| 60 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
55 | PetscCheck(ctx->start_ang+ctx->end_ang==1.0,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_WRONG,"In real scalars the region must be symmetric wrt real axis"); |
| 61 | #endif | ||
| 62 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
146 | if (width == (PetscReal)PETSC_DETERMINE) { |
| 63 | ✗ | ctx->width = 0.1; | |
| 64 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
146 | } else if (width != (PetscReal)PETSC_CURRENT) { |
| 65 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
146 | PetscCheck(width>0.0,PetscObjectComm((PetscObject)rg),PETSC_ERR_ARG_OUTOFRANGE,"The width argument must be > 0.0"); |
| 66 | 146 | ctx->width = width; | |
| 67 | } | ||
| 68 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
30 | PetscFunctionReturn(PETSC_SUCCESS); |
| 69 | } | ||
| 70 | |||
| 71 | /*@ | ||
| 72 | RGRingSetParameters - Sets the parameters defining the ring region. | ||
| 73 | |||
| 74 | Logically Collective | ||
| 75 | |||
| 76 | Input Parameters: | ||
| 77 | + rg - the region context | ||
| 78 | . center - center of the ellipse | ||
| 79 | . radius - radius of the ellipse | ||
| 80 | . vscale - vertical scale of the ellipse | ||
| 81 | . start_ang - the right-hand side angle | ||
| 82 | . end_ang - the left-hand side angle | ||
| 83 | - width - width of the ring | ||
| 84 | |||
| 85 | Options Database Keys: | ||
| 86 | + -rg_ring_center \<center\> - sets the center | ||
| 87 | . -rg_ring_radius \<radius\> - sets the radius | ||
| 88 | . -rg_ring_vscale \<vscale\> - sets the vertical scale | ||
| 89 | . -rg_ring_startangle \<start_ang\> - sets the right-hand side angle | ||
| 90 | . -rg_ring_endangle \<end_ang\> - sets the left-hand side angle | ||
| 91 | - -rg_ring_width \<width\> - sets the width of the ring | ||
| 92 | |||
| 93 | Notes: | ||
| 94 | The values of `center`, `radius` and `vscale` have the same meaning as in the | ||
| 95 | ellipse region. The `startangle` and `endangle` define the span of the ring | ||
| 96 | (by default it is the whole ring), while the `width` is the separation | ||
| 97 | between the two concentric ellipses (above and below the radius by | ||
| 98 | `width/2`). | ||
| 99 | |||
| 100 | The start and end angles are expressed as a fraction of the circumference. | ||
| 101 | The allowed range is $[0,\dots,1]$, with `0` corresponding to 0 radians, `0.25` to | ||
| 102 | $\pi/2$ radians, and so on. It is allowed to have `startangle`>`endangle`, in | ||
| 103 | which case the ring region crosses over the zero angle. | ||
| 104 | |||
| 105 | In the case of complex scalars, a complex center can be provided in the | ||
| 106 | command line with `[+/-][realnumber][+/-]realnumberi` with no spaces, e.g., | ||
| 107 | `-rg_ring_center 1.0+2.0i`. | ||
| 108 | |||
| 109 | When PETSc is built with real scalars, the center is restricted to a real value, | ||
| 110 | and the start and end angles must be such that the region is symmetric with | ||
| 111 | respect to the real axis. | ||
| 112 | |||
| 113 | For all arguments except `center`, you can use `PETSC_CURRENT` to keep the current | ||
| 114 | value, and `PETSC_DETERMINE` to set them to a default value (1 for `radius`, `vscale`, | ||
| 115 | `end_ang`, 0 for `start_and`, and 0.1 for `width`). | ||
| 116 | |||
| 117 | Level: advanced | ||
| 118 | |||
| 119 | .seealso: [](sec:rg), `RGRING`, `RGRingGetParameters()`, `RGELLIPSE` | ||
| 120 | @*/ | ||
| 121 | 146 | PetscErrorCode RGRingSetParameters(RG rg,PetscScalar center,PetscReal radius,PetscReal vscale,PetscReal start_ang,PetscReal end_ang,PetscReal width) | |
| 122 | { | ||
| 123 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
146 | PetscFunctionBegin; |
| 124 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
146 | PetscValidHeaderSpecific(rg,RG_CLASSID,1); |
| 125 |
30/68✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✓ Branch 62 taken 2 times.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 2 times.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
|
146 | PetscValidLogicalCollectiveScalar(rg,center,2); |
| 126 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
146 | PetscValidLogicalCollectiveReal(rg,radius,3); |
| 127 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
146 | PetscValidLogicalCollectiveReal(rg,vscale,4); |
| 128 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
146 | PetscValidLogicalCollectiveReal(rg,start_ang,5); |
| 129 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
146 | PetscValidLogicalCollectiveReal(rg,end_ang,6); |
| 130 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
146 | PetscValidLogicalCollectiveReal(rg,width,7); |
| 131 |
8/14✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
146 | PetscTryMethod(rg,"RGRingSetParameters_C",(RG,PetscScalar,PetscReal,PetscReal,PetscReal,PetscReal,PetscReal),(rg,center,radius,vscale,start_ang,end_ang,width)); |
| 132 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
146 | PetscFunctionReturn(PETSC_SUCCESS); |
| 133 | } | ||
| 134 | |||
| 135 | 176 | static PetscErrorCode RGRingGetParameters_Ring(RG rg,PetscScalar *center,PetscReal *radius,PetscReal *vscale,PetscReal *start_ang,PetscReal *end_ang,PetscReal *width) | |
| 136 | { | ||
| 137 | 176 | RG_RING *ctx = (RG_RING*)rg->data; | |
| 138 | |||
| 139 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
176 | PetscFunctionBegin; |
| 140 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
176 | if (center) *center = ctx->center; |
| 141 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
176 | if (radius) *radius = ctx->radius; |
| 142 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
176 | if (vscale) *vscale = ctx->vscale; |
| 143 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
176 | if (start_ang) *start_ang = ctx->start_ang; |
| 144 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
176 | if (end_ang) *end_ang = ctx->end_ang; |
| 145 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
|
176 | if (width) *width = ctx->width; |
| 146 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
176 | PetscFunctionReturn(PETSC_SUCCESS); |
| 147 | } | ||
| 148 | |||
| 149 | /*@ | ||
| 150 | RGRingGetParameters - Gets the parameters that define the ring region. | ||
| 151 | |||
| 152 | Not Collective | ||
| 153 | |||
| 154 | Input Parameter: | ||
| 155 | . rg - the region context | ||
| 156 | |||
| 157 | Output Parameters: | ||
| 158 | + center - center of the region | ||
| 159 | . radius - radius of the region | ||
| 160 | . vscale - vertical scale of the region | ||
| 161 | . start_ang - the right-hand side angle | ||
| 162 | . end_ang - the left-hand side angle | ||
| 163 | - width - width of the ring | ||
| 164 | |||
| 165 | Level: advanced | ||
| 166 | |||
| 167 | .seealso: [](sec:rg), `RGRING`, `RGRingSetParameters()` | ||
| 168 | @*/ | ||
| 169 | 176 | PetscErrorCode RGRingGetParameters(RG rg,PetscScalar *center,PetscReal *radius,PetscReal *vscale,PetscReal *start_ang,PetscReal *end_ang,PetscReal *width) | |
| 170 | { | ||
| 171 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
176 | PetscFunctionBegin; |
| 172 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
176 | PetscValidHeaderSpecific(rg,RG_CLASSID,1); |
| 173 |
9/16✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
|
176 | PetscUseMethod(rg,"RGRingGetParameters_C",(RG,PetscScalar*,PetscReal*,PetscReal*,PetscReal*,PetscReal*,PetscReal*),(rg,center,radius,vscale,start_ang,end_ang,width)); |
| 174 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
176 | PetscFunctionReturn(PETSC_SUCCESS); |
| 175 | } | ||
| 176 | |||
| 177 | 60 | static PetscErrorCode RGView_Ring(RG rg,PetscViewer viewer) | |
| 178 | { | ||
| 179 | 60 | RG_RING *ctx = (RG_RING*)rg->data; | |
| 180 | 60 | int winw,winh; | |
| 181 | 60 | PetscBool isdraw,isascii; | |
| 182 | 60 | PetscDraw draw; | |
| 183 | 60 | PetscDrawAxis axis; | |
| 184 | 60 | PetscReal cx,cy,radius,width,ab,cd,lx,ly,w,end_ang,x1,y1,x2,y2,r,theta,scale=1.2; | |
| 185 | 60 | char str[50]; | |
| 186 | |||
| 187 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
60 | PetscFunctionBegin; |
| 188 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
60 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERDRAW,&isdraw)); |
| 189 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
60 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
| 190 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
60 | if (isascii) { |
| 191 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
50 | PetscCall(SlepcSNPrintfScalar(str,sizeof(str),ctx->center,PETSC_FALSE)); |
| 192 |
7/10✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
50 | PetscCall(PetscViewerASCIIPrintf(viewer," center: %s, radius: %g, vscale: %g, start angle: %g, end angle: %g, ring width: %g\n",str,RGShowReal(ctx->radius),RGShowReal(ctx->vscale),(double)ctx->start_ang,(double)ctx->end_ang,(double)ctx->width)); |
| 193 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
10 | } else if (isdraw) { |
| 194 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscViewerDrawGetDraw(viewer,0,&draw)); |
| 195 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawCheckResizedWindow(draw)); |
| 196 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawGetWindowSize(draw,&winw,&winh)); |
| 197 | 10 | winw = PetscMax(winw,1); winh = PetscMax(winh,1); | |
| 198 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawClear(draw)); |
| 199 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawSetTitle(draw,"Ring region")); |
| 200 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawAxisCreate(draw,&axis)); |
| 201 | 10 | cx = PetscRealPart(ctx->center)*rg->sfactor; | |
| 202 | 10 | cy = PetscImaginaryPart(ctx->center)*rg->sfactor; | |
| 203 | 10 | radius = ctx->radius*rg->sfactor; | |
| 204 | 10 | width = ctx->width*rg->sfactor; | |
| 205 | 10 | lx = 2*(radius+width); | |
| 206 | 10 | ly = 2*(radius+width)*ctx->vscale; | |
| 207 | 10 | ab = cx; | |
| 208 | 10 | cd = cy; | |
| 209 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
10 | w = scale*PetscMax(lx/winw,ly/winh)/2; |
| 210 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawAxisSetLimits(axis,ab-w*winw,ab+w*winw,cd-w*winh,cd+w*winh)); |
| 211 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawAxisDraw(axis)); |
| 212 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawAxisDestroy(&axis)); |
| 213 | /* draw outer ellipse */ | ||
| 214 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawEllipse(draw,cx,cy,2*(radius+width),2*(radius+width)*ctx->vscale,PETSC_DRAW_ORANGE)); |
| 215 | /* remove inner part */ | ||
| 216 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawEllipse(draw,cx,cy,2*(radius-width),2*(radius-width)*ctx->vscale,PETSC_DRAW_WHITE)); |
| 217 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
10 | if (ctx->start_ang!=ctx->end_ang) { |
| 218 | /* remove section from end_ang to start_ang */ | ||
| 219 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
10 | end_ang = (ctx->start_ang<ctx->end_ang)? ctx->end_ang-1: ctx->end_ang; |
| 220 | 10 | theta = end_ang; | |
| 221 | 10 | r = scale*(radius+width); | |
| 222 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | if (ctx->vscale>1) r *= ctx->vscale; |
| 223 |
2/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
20 | x1 = PetscMin(PetscMax(ab+r*PetscCosReal(2.0*PETSC_PI*theta),ab-w*winw),ab+w*winw); |
| 224 |
2/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
20 | y1 = PetscMin(PetscMax(cd+r*PetscSinReal(2.0*PETSC_PI*theta),cd-w*winh),cd+w*winh); |
| 225 | 40 | do { | |
| 226 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
40 | theta = PetscMin(PetscFloorReal(8*theta+1)/8,ctx->start_ang); |
| 227 |
3/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
80 | x2 = PetscMin(PetscMax(ab+r*PetscCosReal(2.0*PETSC_PI*theta),ab-w*winw),ab+w*winw); |
| 228 |
3/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
80 | y2 = PetscMin(PetscMax(cd+r*PetscSinReal(2.0*PETSC_PI*theta),cd-w*winh),cd+w*winh); |
| 229 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
40 | PetscCall(PetscDrawTriangle(draw,cx,cy,x1,y1,x2,y2,PETSC_DRAW_WHITE,PETSC_DRAW_WHITE,PETSC_DRAW_WHITE)); |
| 230 | 40 | x1 = x2; y1 = y2; | |
| 231 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
40 | } while (theta<ctx->start_ang); |
| 232 | } | ||
| 233 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawFlush(draw)); |
| 234 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawSave(draw)); |
| 235 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscDrawPause(draw)); |
| 236 | } | ||
| 237 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
12 | PetscFunctionReturn(PETSC_SUCCESS); |
| 238 | } | ||
| 239 | |||
| 240 | 113 | static PetscErrorCode RGIsTrivial_Ring(RG rg,PetscBool *trivial) | |
| 241 | { | ||
| 242 | 113 | RG_RING *ctx = (RG_RING*)rg->data; | |
| 243 | |||
| 244 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
113 | PetscFunctionBegin; |
| 245 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
113 | if (rg->complement) *trivial = PetscNot(ctx->radius); |
| 246 | 113 | else *trivial = PetscNot(ctx->radius<PETSC_MAX_REAL); | |
| 247 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
113 | PetscFunctionReturn(PETSC_SUCCESS); |
| 248 | } | ||
| 249 | |||
| 250 | 63 | static PetscErrorCode RGComputeContour_Ring(RG rg,PetscInt n,PetscScalar *cr,PetscScalar *ci) | |
| 251 | { | ||
| 252 | 63 | RG_RING *ctx = (RG_RING*)rg->data; | |
| 253 | 63 | PetscReal theta,start_ang; | |
| 254 | 63 | PetscInt i,n2=n/2; | |
| 255 | |||
| 256 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
63 | PetscFunctionBegin; |
| 257 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
63 | start_ang = (ctx->start_ang>ctx->end_ang)? ctx->start_ang-1: ctx->start_ang; |
| 258 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1029 | for (i=0;i<n;i++) { |
| 259 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
966 | if (i < n2) { |
| 260 | 458 | theta = ((ctx->end_ang-start_ang)*i/n2 + start_ang)*2.0*PETSC_PI; | |
| 261 | #if defined(PETSC_USE_COMPLEX) | ||
| 262 | 333 | cr[i] = ctx->center + (ctx->radius+ctx->width/2.0)*PetscCMPLX(PetscCosReal(theta),ctx->vscale*PetscSinReal(theta)); | |
| 263 | #else | ||
| 264 |
1/2✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
|
125 | if (cr) cr[i] = ctx->center + (ctx->radius+ctx->width/2.0)*PetscCosReal(theta); |
| 265 |
1/2✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
|
125 | if (ci) ci[i] = (ctx->radius+ctx->width/2.0)*ctx->vscale*PetscSinReal(theta); |
| 266 | #endif | ||
| 267 | } else { | ||
| 268 | 508 | theta = ((ctx->end_ang-start_ang)*(n-i)/n2 + start_ang)*2.0*PETSC_PI; | |
| 269 | #if defined(PETSC_USE_COMPLEX) | ||
| 270 | 358 | cr[i] = ctx->center + (ctx->radius-ctx->width/2.0)*PetscCMPLX(PetscCosReal(theta),ctx->vscale*PetscSinReal(theta)); | |
| 271 | #else | ||
| 272 |
1/2✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
|
150 | if (cr) cr[i] = ctx->center + (ctx->radius-ctx->width/2.0)*PetscCosReal(theta); |
| 273 |
1/2✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
|
150 | if (ci) ci[i] = (ctx->radius-ctx->width/2.0)*ctx->vscale*PetscSinReal(theta); |
| 274 | #endif | ||
| 275 | } | ||
| 276 | } | ||
| 277 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
63 | PetscFunctionReturn(PETSC_SUCCESS); |
| 278 | } | ||
| 279 | |||
| 280 | 50 | static PetscErrorCode RGComputeBoundingBox_Ring(RG rg,PetscReal *a,PetscReal *b,PetscReal *c,PetscReal *d) | |
| 281 | { | ||
| 282 | 50 | RG_RING *ctx = (RG_RING*)rg->data; | |
| 283 | |||
| 284 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
50 | PetscFunctionBegin; |
| 285 | /* current implementation does not return a tight bounding box */ | ||
| 286 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
50 | if (a) *a = PetscRealPart(ctx->center) - (ctx->radius+ctx->width/2.0); |
| 287 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
50 | if (b) *b = PetscRealPart(ctx->center) + (ctx->radius+ctx->width/2.0); |
| 288 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
50 | if (c) *c = PetscImaginaryPart(ctx->center) - (ctx->radius+ctx->width/2.0)*ctx->vscale; |
| 289 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
50 | if (d) *d = PetscImaginaryPart(ctx->center) + (ctx->radius+ctx->width/2.0)*ctx->vscale; |
| 290 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
50 | PetscFunctionReturn(PETSC_SUCCESS); |
| 291 | } | ||
| 292 | |||
| 293 | 13 | static PetscErrorCode RGComputeQuadrature_Ring(RG rg,RGQuadRule quad,PetscInt n,PetscScalar *z,PetscScalar *zn,PetscScalar *w) | |
| 294 | { | ||
| 295 | 13 | RG_RING *ctx = (RG_RING*)rg->data; | |
| 296 | 13 | PetscReal max_w=0.0; | |
| 297 | 13 | PetscScalar tmp,tmp2; | |
| 298 | 13 | PetscInt i,j; | |
| 299 | |||
| 300 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
13 | PetscFunctionBegin; |
| 301 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 5 times.
|
13 | if (quad == RG_QUADRULE_CHEBYSHEV) { |
| 302 | #if defined(PETSC_USE_COMPLEX) | ||
| 303 | PetscReal theta; | ||
| 304 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 3 times.
|
99 | for (i=0;i<n;i++) { |
| 305 | 96 | theta = PETSC_PI*(i+0.5)/n; | |
| 306 | 96 | zn[i] = PetscCosReal(theta); | |
| 307 | 96 | w[i] = PetscCosReal((n-1)*theta)/n; | |
| 308 | 96 | theta = (ctx->start_ang*2.0+(ctx->end_ang-ctx->start_ang)*(PetscRealPart(zn[i])+1.0))*PETSC_PI; | |
| 309 | 96 | z[i] = rg->sfactor*(ctx->center + ctx->radius*PetscCMPLX(PetscCosReal(theta),ctx->vscale*PetscSinReal(theta))); | |
| 310 | } | ||
| 311 | #else | ||
| 312 | ✗ | SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP,"Integration points on a vertical line require complex arithmetic"); | |
| 313 | #endif | ||
| 314 | } else { /* RG_QUADRULE_TRAPEZOIDAL */ | ||
| 315 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
330 | for (i=0;i<n;i++) { |
| 316 | 320 | zn[i] = (z[i]-rg->sfactor*ctx->center)/(rg->sfactor*ctx->radius); | |
| 317 | 320 | tmp = 1.0; tmp2 = 1.0; | |
| 318 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
10560 | for (j=0;j<n;j++) { |
| 319 | 10240 | tmp *= z[j]; | |
| 320 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
10240 | if (i != j) tmp2 *= z[j]-z[i]; |
| 321 | } | ||
| 322 | 320 | w[i] = tmp/tmp2; | |
| 323 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
430 | max_w = PetscMax(PetscAbsScalar(w[i]),max_w); |
| 324 | } | ||
| 325 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
330 | for (i=0;i<n;i++) w[i] /= (PetscScalar)max_w; |
| 326 | } | ||
| 327 |
6/12✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
|
13 | PetscFunctionReturn(PETSC_SUCCESS); |
| 328 | } | ||
| 329 | |||
| 330 | 327 | static PetscErrorCode RGCheckInside_Ring(RG rg,PetscReal px,PetscReal py,PetscInt *inside) | |
| 331 | { | ||
| 332 | 327 | RG_RING *ctx = (RG_RING*)rg->data; | |
| 333 | 327 | PetscReal dx,dy,r; | |
| 334 | |||
| 335 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
327 | PetscFunctionBegin; |
| 336 | /* outer ellipse */ | ||
| 337 | #if defined(PETSC_USE_COMPLEX) | ||
| 338 | 277 | dx = (px-PetscRealPart(ctx->center))/(ctx->radius+ctx->width/2.0); | |
| 339 | 277 | dy = (py-PetscImaginaryPart(ctx->center))/(ctx->radius+ctx->width/2.0); | |
| 340 | #else | ||
| 341 | 50 | dx = (px-ctx->center)/(ctx->radius+ctx->width/2.0); | |
| 342 | 50 | dy = py/(ctx->radius+ctx->width/2.0); | |
| 343 | #endif | ||
| 344 | 327 | r = 1.0-dx*dx-(dy*dy)/(ctx->vscale*ctx->vscale); | |
| 345 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
327 | *inside = PetscSign(r); |
| 346 | /* inner ellipse */ | ||
| 347 | #if defined(PETSC_USE_COMPLEX) | ||
| 348 | 277 | dx = (px-PetscRealPart(ctx->center))/(ctx->radius-ctx->width/2.0); | |
| 349 | 277 | dy = (py-PetscImaginaryPart(ctx->center))/(ctx->radius-ctx->width/2.0); | |
| 350 | #else | ||
| 351 | 50 | dx = (px-ctx->center)/(ctx->radius-ctx->width/2.0); | |
| 352 | 50 | dy = py/(ctx->radius-ctx->width/2.0); | |
| 353 | #endif | ||
| 354 | 327 | r = -1.0+dx*dx+(dy*dy)/(ctx->vscale*ctx->vscale); | |
| 355 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
327 | *inside *= PetscSign(r); |
| 356 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
327 | if (*inside == 1) { /* check angles */ |
| 357 | #if defined(PETSC_USE_COMPLEX) | ||
| 358 | 192 | dx = (px-PetscRealPart(ctx->center)); | |
| 359 | 192 | dy = (py-PetscImaginaryPart(ctx->center)); | |
| 360 | #else | ||
| 361 | 20 | dx = px-ctx->center; | |
| 362 | 20 | dy = py; | |
| 363 | #endif | ||
| 364 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
212 | if (dx == 0) { |
| 365 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
10 | if (dy == 0) r = -1; |
| 366 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | else if (dy > 0) r = 0.25; |
| 367 | ✗ | else r = 0.75; | |
| 368 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
202 | } else if (dx > 0) { |
| 369 | 130 | r = PetscAtanReal((dy/ctx->vscale)/dx); | |
| 370 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
|
130 | if (dy >= 0) r /= 2*PETSC_PI; |
| 371 | 60 | else r = r/(2*PETSC_PI)+1; | |
| 372 | 72 | } else r = PetscAtanReal((dy/ctx->vscale)/dx)/(2*PETSC_PI)+0.5; | |
| 373 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
212 | if (ctx->start_ang>ctx->end_ang) { |
| 374 |
4/4✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 5 times.
|
130 | if (r>ctx->end_ang && r<ctx->start_ang) *inside = -1; |
| 375 | } else { | ||
| 376 |
3/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 10 times.
|
82 | if (r<ctx->start_ang || r>ctx->end_ang) *inside = -1; |
| 377 | } | ||
| 378 | } | ||
| 379 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
327 | PetscFunctionReturn(PETSC_SUCCESS); |
| 380 | } | ||
| 381 | |||
| 382 | 30 | static PetscErrorCode RGIsAxisymmetric_Ring(RG rg,PetscBool vertical,PetscBool *symm) | |
| 383 | { | ||
| 384 | 30 | RG_RING *ctx = (RG_RING*)rg->data; | |
| 385 | |||
| 386 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
30 | PetscFunctionBegin; |
| 387 |
6/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 5 times.
|
40 | if (vertical) *symm = (PetscRealPart(ctx->center) == 0.0 && PetscAbs(ctx->start_ang+ctx->end_ang-PetscRealConstant(1.0)) == 0.5)? PETSC_TRUE: PETSC_FALSE; |
| 388 |
3/4✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 5 times.
|
20 | else *symm = (PetscImaginaryPart(ctx->center) == 0.0 && ctx->start_ang+ctx->end_ang == 1.0)? PETSC_TRUE: PETSC_FALSE; |
| 389 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
30 | PetscFunctionReturn(PETSC_SUCCESS); |
| 390 | } | ||
| 391 | |||
| 392 | 106 | static PetscErrorCode RGSetFromOptions_Ring(RG rg,PetscOptionItems PetscOptionsObject) | |
| 393 | { | ||
| 394 | 106 | PetscScalar s; | |
| 395 | 106 | PetscReal r1,r2,r3,r4,r5; | |
| 396 | 106 | PetscBool flg1,flg2,flg3,flg4,flg5,flg6; | |
| 397 | |||
| 398 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
106 | PetscFunctionBegin; |
| 399 |
1/12✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
106 | PetscOptionsHeadBegin(PetscOptionsObject,"RG Ring Options"); |
| 400 | |||
| 401 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
106 | PetscCall(RGRingGetParameters(rg,&s,&r1,&r2,&r3,&r4,&r5)); |
| 402 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
106 | PetscCall(PetscOptionsScalar("-rg_ring_center","Center of ellipse","RGRingSetParameters",s,&s,&flg1)); |
| 403 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
106 | PetscCall(PetscOptionsReal("-rg_ring_radius","Radius of ellipse","RGRingSetParameters",r1,&r1,&flg2)); |
| 404 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
106 | PetscCall(PetscOptionsReal("-rg_ring_vscale","Vertical scale of ellipse","RGRingSetParameters",r2,&r2,&flg3)); |
| 405 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
106 | PetscCall(PetscOptionsReal("-rg_ring_startangle","Right-hand side angle","RGRingSetParameters",r3,&r3,&flg4)); |
| 406 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
106 | PetscCall(PetscOptionsReal("-rg_ring_endangle","Left-hand side angle","RGRingSetParameters",r4,&r4,&flg5)); |
| 407 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
106 | PetscCall(PetscOptionsReal("-rg_ring_width","Width of ring","RGRingSetParameters",r5,&r5,&flg6)); |
| 408 |
12/18✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 10 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 10 times.
✓ Branch 11 taken 10 times.
✓ Branch 12 taken 2 times.
✓ Branch 13 taken 8 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
|
106 | if (flg1 || flg2 || flg3 || flg4 || flg5 || flg6) PetscCall(RGRingSetParameters(rg,s,r1,r2,r3,r4,r5)); |
| 409 | |||
| 410 |
1/14✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
106 | PetscOptionsHeadEnd(); |
| 411 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
22 | PetscFunctionReturn(PETSC_SUCCESS); |
| 412 | } | ||
| 413 | |||
| 414 | 93 | static PetscErrorCode RGDestroy_Ring(RG rg) | |
| 415 | { | ||
| 416 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
93 | PetscFunctionBegin; |
| 417 |
5/8✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
93 | PetscCall(PetscFree(rg->data)); |
| 418 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
93 | PetscCall(PetscObjectComposeFunction((PetscObject)rg,"RGRingSetParameters_C",NULL)); |
| 419 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
93 | PetscCall(PetscObjectComposeFunction((PetscObject)rg,"RGRingGetParameters_C",NULL)); |
| 420 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
19 | PetscFunctionReturn(PETSC_SUCCESS); |
| 421 | } | ||
| 422 | |||
| 423 | /*MC | ||
| 424 | RGRING - RGRING = "ring" - A ring region similar to an ellipse but consisting | ||
| 425 | of a thin stripe along the ellipse with optional start and end angles. | ||
| 426 | |||
| 427 | Note: | ||
| 428 | The parameters can be set with `RGRingSetParameters()`. | ||
| 429 | The following figure shows an example of a ring region. | ||
| 430 | |||
| 431 |  | ||
| 432 | |||
| 433 | Level: beginner | ||
| 434 | |||
| 435 | .seealso: [](sec:rg), `RG`, `RGType`, `RGSetType()`, `RGRingSetParameters()` | ||
| 436 | M*/ | ||
| 437 | |||
| 438 | 93 | SLEPC_EXTERN PetscErrorCode RGCreate_Ring(RG rg) | |
| 439 | { | ||
| 440 | 93 | RG_RING *ring; | |
| 441 | |||
| 442 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
93 | PetscFunctionBegin; |
| 443 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
93 | PetscCall(PetscNew(&ring)); |
| 444 | 93 | ring->center = 0.0; | |
| 445 | 93 | ring->radius = PETSC_MAX_REAL; | |
| 446 | 93 | ring->vscale = 1.0; | |
| 447 | 93 | ring->start_ang = 0.0; | |
| 448 | 93 | ring->end_ang = 1.0; | |
| 449 | 93 | ring->width = 0.1; | |
| 450 | 93 | rg->data = (void*)ring; | |
| 451 | |||
| 452 | 93 | rg->ops->istrivial = RGIsTrivial_Ring; | |
| 453 | 93 | rg->ops->computecontour = RGComputeContour_Ring; | |
| 454 | 93 | rg->ops->computebbox = RGComputeBoundingBox_Ring; | |
| 455 | 93 | rg->ops->computequadrature = RGComputeQuadrature_Ring; | |
| 456 | 93 | rg->ops->checkinside = RGCheckInside_Ring; | |
| 457 | 93 | rg->ops->isaxisymmetric = RGIsAxisymmetric_Ring; | |
| 458 | 93 | rg->ops->setfromoptions = RGSetFromOptions_Ring; | |
| 459 | 93 | rg->ops->view = RGView_Ring; | |
| 460 | 93 | rg->ops->destroy = RGDestroy_Ring; | |
| 461 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
93 | PetscCall(PetscObjectComposeFunction((PetscObject)rg,"RGRingSetParameters_C",RGRingSetParameters_Ring)); |
| 462 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
93 | PetscCall(PetscObjectComposeFunction((PetscObject)rg,"RGRingGetParameters_C",RGRingGetParameters_Ring)); |
| 463 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
19 | PetscFunctionReturn(PETSC_SUCCESS); |
| 464 | } | ||
| 465 |