Viewing fields#
In addition to using the debugger to inspect code and variables, it is often helpful to print fields to stdout or inspect where a computed field does not match the expected field. Turning on this type of output is usually done by activating debug journals via command line arguments.
Viewing a field will print the subfield metadata, the layout of the field, and the field values. See PetscSection and PetscVec for how to interpret the layout of a field.
Viewing field 'solution' Solution Field.
Subfields: # Order of subfields is given by the index, not the order listed.
Subfield displacement, index: 0, components: displacement_x displacement_y, scale: 1000, basisOrder: 1, quadOrder: 1
Subfield fluid_pressure, index: 2, components: fluid_pressure, scale: 0.1, basisOrder: 1, quadOrder: 1
Subfield velocity, index: 1, components: velocity_x velocity_y, scale: 100, basisOrder: 1, quadOrder: 1
dimensionalize flag: 0
DM Object: 1 MPI processes
type: plex
DM_0xe6a550_38 in 2 dimensions:
0-cells: 5
1-cells: 8
2-cells: 4
Labels:
boundary_bottom: 1 strata with value/size (1 (3))
boundary: 1 strata with value/size (1 (8))
material-id: 1 strata with value/size (24 (4))
depth: 3 strata with value/size (0 (5), 1 (8), 2 (4))
PetscSection Object: 1 MPI processes
type not yet set
3 fields
field 0 with 2 components # displacement vector field
Process 0:
( 0) dim 0 offset 0
( 1) dim 0 offset 0
( 2) dim 0 offset 0
( 3) dim 0 offset 0
( 4) dim 2 offset 0 constrained 1 # y degree of freedom is constrained
( 5) dim 2 offset 5 constrained 1 # y degree of freedom is constrained
( 6) dim 2 offset 10
( 7) dim 2 offset 15
( 8) dim 2 offset 20
( 9) dim 0 offset 25
( 10) dim 0 offset 25
( 11) dim 0 offset 25
( 12) dim 0 offset 25
( 13) dim 0 offset 25
( 14) dim 0 offset 25
( 15) dim 0 offset 25
( 16) dim 0 offset 25
field 1 with 2 components # velocity vector field
Process 0:
( 0) dim 0 offset 0
( 1) dim 0 offset 0
( 2) dim 0 offset 0
( 3) dim 0 offset 0
( 4) dim 2 offset 2
( 5) dim 2 offset 7
( 6) dim 2 offset 12
( 7) dim 2 offset 17
( 8) dim 2 offset 22
( 9) dim 0 offset 25
( 10) dim 0 offset 25
( 11) dim 0 offset 25
( 12) dim 0 offset 25
( 13) dim 0 offset 25
( 14) dim 0 offset 25
( 15) dim 0 offset 25
( 16) dim 0 offset 25
field 2 with 1 components # pressure scalar field
Process 0:
( 0) dim 0 offset 0
( 1) dim 0 offset 0
( 2) dim 0 offset 0
( 3) dim 0 offset 0
( 4) dim 1 offset 4
( 5) dim 1 offset 9
( 6) dim 1 offset 14
( 7) dim 1 offset 19
( 8) dim 1 offset 24
( 9) dim 0 offset 25
( 10) dim 0 offset 25
( 11) dim 0 offset 25
( 12) dim 0 offset 25
( 13) dim 0 offset 25
( 14) dim 0 offset 25
( 15) dim 0 offset 25
( 16) dim 0 offset 25
Proc 0 local vector # 5 nondimensionalized values per point: displacement (2), velocity (2), pressure (1)
Vec Object: unknown 1 MPI processes
type: seq
-0.999 # offset 0, point 4, x-displacement
-4.2 # offset 1, point 4, y-displacement
-9.99 # offset 2, point 4, x-velocity
-9.99 # offset 3, point 4, y-velocity
-9990. # offset 4, point 4, pressure
-0.999 # offset 5, point 5, x-displacement
0.6
-9.99
-9.99
-9990.
-0.999 # offset 10, point 6, x-displacement
0.
-9.99
-9.99
-9990.
-0.999 # offset 15, point 7, x-displacement
-0.6
-9.99
-9.99
-9990.
-0.999 # offset 20, point 8, x-displacement
4.2
-9.99
-9.99
-9990.
Viewing differences#
In tests in which we compare a computed field against one from an analytical solution using
DMPlexComputeL2DiffLocal()
and the fields do not agree, it is generally helpful to determine which pieces do not agree.
The DMPlex
object contains an internal switch to print the point-by-point differences while computing the norm.
This switch can be activated using the --petsc dm_plex_print_l2=1
command line argument in the C++ and MMS tests.
Cell 0 Element Solution for Field 0 # displacement vector field
| -0.999 | # Values of solution field variable at vertices of cell 0
| -4.2 |
| -0.999 |
| 0. |
| -0.999 |
| -0.6 |
elem 0 field 0 diff 0. # Differences at quadrature points with respect to field given by analytical function
elem 0 field 0 diff 6.27226e-32
elem 0 field 0 diff 2.24281e-33
elem 0 field 0 diff 8.97125e-33
elem 0 field 0 diff 0.
elem 0 field 0 diff 0.
elem 0 field 0 diff 2.24281e-33
elem 0 field 0 diff 0.
Cell 0 Element Solution for Field 1 # velocity field vector field
| -9.99 |
| -9.99 |
| -9.99 |
| -9.99 |
| -9.99 |
| -9.99 |
elem 0 field 1 diff 0.
elem 0 field 1 diff 0.
elem 0 field 1 diff 0.
elem 0 field 1 diff 0.
elem 0 field 1 diff 0.
elem 0 field 1 diff 0.
elem 0 field 1 diff 0.
elem 0 field 1 diff 0.
Cell 0 Element Solution for Field 2 # pressure scalar field
| -9990. |
| -9990. |
| -9990. |
elem 0 field 2 diff 0.
elem 0 field 2 diff 0.
elem 0 field 2 diff 0.
elem 0 field 2 diff 0.
elem 0 diff 7.61795e-32
Cell 1 Element Solution for Field 0
| -0.999 | # Values of solution field variable at vertices of cell 1
| 0.6 |
| -0.999 |
| 0. |
| -0.999 |
| -4.2 |
elem 1 field 0 diff 0.
elem 1 field 0 diff 3.92016e-33
elem 1 field 0 diff 2.24281e-33
elem 1 field 0 diff 1.4354e-31
elem 1 field 0 diff 0.
elem 1 field 0 diff 0.
elem 1 field 0 diff 2.24281e-33
elem 1 field 0 diff 0.
Cell 1 Element Solution for Field 1
| -9.99 |
| -9.99 |
| -9.99 |
| -9.99 |
| -9.99 |
| -9.99 |
elem 1 field 1 diff 0.
elem 1 field 1 diff 0.
elem 1 field 1 diff 0.
elem 1 field 1 diff 0.
elem 1 field 1 diff 0.
elem 1 field 1 diff 0.
elem 1 field 1 diff 0.
elem 1 field 1 diff 0.
Cell 1 Element Solution for Field 2
| -9990. |
| -9990. |
| -9990. |
elem 1 field 2 diff 0.
elem 1 field 2 diff 0.
elem 1 field 2 diff 0.
elem 1 field 2 diff 0.
elem 1 diff 1.51946e-31
... # Output continues for values in other cells