Pressure tensor

Author Update time

This demo shows how to plot the pressure tensor from one snapshot.

using Vlasiator, VlasiatorPyPlot, LaTeXStrings, Printf

function main()
   file = "bulk.0001582.vlsv"

   axisunit = EARTH
   colorscale = Linear
   cmap = matplotlib.cm.turbo

   vars = ["proton/vg_ptensor_diagonal", "proton/vg_ptensor_offdiagonal"]

   #####
   meta = load(file)

   pArgs1 = Vlasiator.set_args(meta, vars[1], axisunit; normal=:none)
   pArgs2 = Vlasiator.set_args(meta, vars[2], axisunit; normal=:none)

   x, y = Vlasiator.get_axis(pArgs1)
   # [nPa]
   pxx = Vlasiator.prep2d(meta, vars[1], :x)' .* 1e9
   pyy = Vlasiator.prep2d(meta, vars[1], :y)' .* 1e9
   pzz = Vlasiator.prep2d(meta, vars[1], :z)' .* 1e9
   pyz = Vlasiator.prep2d(meta, vars[2], :1)' .* 1e9
   pxz = Vlasiator.prep2d(meta, vars[2], :2)' .* 1e9
   pxy = Vlasiator.prep2d(meta, vars[2], :3)' .* 1e9

   P = (pxx, pyy, pzz, pyz, pxz, pxy)
   P_str = ("Pxx", "Pyy", "Pzz", "Pyz", "Pxz", "Pxy")

   vmin = minimum(minimum.(P))
   vmax = maximum(maximum.(P))

   cnorm1, cticks1 = set_colorbar(colorscale, vmin, vmax)

   fig, axs = subplots(3,2,
      figsize=(6, 12), sharex=true, sharey=true, constrained_layout=true)

   c1 = axs[1].pcolormesh(x, y, pxx; norm=cnorm1, cmap)

   for i in eachindex(axs)[2:end]
      axs[i].pcolormesh(x, y, P[i]; norm=cnorm1, cmap)
   end

   for (i, ax) in enumerate(axs)
      ax.set_aspect("equal")
      ax.xaxis.set_minor_locator(matplotlib.ticker.AutoMinorLocator())
      ax.yaxis.set_minor_locator(matplotlib.ticker.AutoMinorLocator())
      ax.set_title(P_str[i])
   end

   for ax in axs[3,:]
      ax.set_xlabel(L"x [$R_E$]")
   end

   for ax in axs[:,1]
      ax.set_ylabel(L"y [$R_E$]")
   end

   # One colorbar for all subplots
   cb1 = colorbar(c1; ax=axs, ticks=cticks1, fraction=0.046, pad=0.04)
   cb1.ax.set_ylabel("[nPa]")
   cb1.outline.set_linewidth(1.0)

   str_title = @sprintf "Pressure Tensor at t = %4.1fs" meta.time

   fig.suptitle(str_title, fontsize="xx-large")

   savefig("ptensor.png", bbox_inches="tight")
end

main()

This page was generated using DemoCards.jl.