# Improved visualization of discontinuous fields

The visualization of the results obtained from MagnetoDynamicsCalcFields, and other discontinuous fields, have been somewhat suboptimal until recently. Particularly with the adoption of quadratic edge elements the old options were no longer satisfactory. This mail summarizes the recent changes related to the optimal visualization. I hope that with these new features the excellent 2nd order edge elements can show their full potential, but also the 1st order edge elements will benefit from these. The text is related to the current devel version.

The CalcFields solver can basically compute nodal quantities and elemental quantities. For fields known to be continuous the nodal quantities are good as such. However, for quantities having potential jumps between element interfaces (such as current density) the elemental fields are much more suitable. The elemental fields are actually standard nodal fields with the degrees of freedom being independent in each element (as in the Discontinuous Galerkin method). This makes the amount of data potentially quite huge. One may choose between three different ways to save the results in VTU output:

- Constant (averaged Cell data) within each element (default)
- “Discontinuous Galerkin” data where all nodes are different in each elements
- “Discontinuous Bodies” data where nodes are made different only at the interfaces.

The preferred method of choice for visualization is usually the 3rd one. It also automatically averages the different shared instances of the DG fields to one single value. Unfortunately for quadratic elements there seems to be a problem. It seems that the rendering in Paraview cannot handle discontinuities well in conjunction with quadratic elements. To overcome that problem there is a possibility to save the result in linear basis even though having quadratic mesh. Actually this may make sense since the derived fields are still often just linear in accuracy.

Below is an example of a sif file that seems to provide nice visualizations for a number of cases both in serial and parallel

Solver 3 Exec Solver = after timestep Equation = "ResultOutput" Procedure = "ResultOutputSolve" "ResultOutputSolver" Output File Name = f Vtu format = True Discontinuous Bodies = True ! bloated alternative for the above maintaining all discontinuities ! Discontinuous Galerkin = True Save Geometry Ids = True ! use this only in conjunction with quadratic mesh Save Linear Elements = True ! Save Bulk Only = True ! Save Boundaries Only = True End

Unfortunately there is some loss of information when performing these

operations and line plotting in Paraview is not optimal. The alternative

is to save the data directly using SaveLine. Previously this routine had

problems with discontinuous fields also since it only saves data at the

intersection of faces, and assumes value in between to be linear. If the

face values are not unique this does not work. Now there is a remedy to

give number of divisions for each line. When using the “Polyline

Divisions” to specify the points also the DG fields are considered

correctly, for example

Solver 4 Exec Solver = after timestep Equation = SaveLine Procedure = "SaveData" "SaveLine" Filename = g.dat Polyline Coordinates(8,3) = 0 -0.05 -0.07 0 -0.05 0.115 \ 0.0 0.05 -0.07 0.0 0.05 0.115 \ -0.05 0.0 -0.07 -0.05 0.0 0.115 \ 0.05 0.0 -0.07 0.05 0.0 0.115 Polyline Divisions(4) = 100 100 100 100 End

Note that if one chooses “Discontinuous Bodies” in the VTU output it

averages the data. Hence if you want the original discontinuous (linear or

quadratic) data give this solver a smaller Id number than for the

ResultOutputSolver.

Finally there is a possibility to also use SaveGridData solver would you

want to save the data in a uniform grid. This also now works with DG

fields and can therefore capture the true results from CalcFields. This is

probably not that useful, but an example is provided here for

completeness.

Solver 5 Equation = SaveGridData Procedure = "SaveGridData" "SaveGridData" Grid dx = Real 0.05 Grid dy = Real 0.05 Grid dz = Real 0.00005 ! Reduce the box where the points are saved in Min Coordinate 1 = Real -0.07 Max Coordinate 1 = Real 0.07 Min Coordinate 2 = Real -0.07 Max Coordinate 2 = Real 0.07 ! If nodes are exactly at the interface eliminate redundant ones Check For Duplicates = Logical True Binary Output = Logical True Single Precision = Logical True Filename Prefix = h ! save in vtu format in paraview (use glyphs) Vtu Format = Logical True ! save in ascii format for Matlab etc. Table Format = Logical True End

I hope people using the great MagnetodDynamics solver will find these instructions useful.