Multi-resolution 'Dolag' field with a resolution of 14.6 kpc

Gero Müller

Magnetic Field

This is a sampled version of the magnetic field extracted from constrained large-scale structure MHD simulations [1]. It consists of 55 million smooth particles and is bound to a sphere with a radius of 120 Mpc (h=0.7). The field is sampled with a resolution of 14.6 kpc (= 16384 samples per axis) and compressed into a multi-resolution grid [2] using a relative error of 0.4 and an absolute error of 1e-14, see [2] for details. The magnetic field in voids is poorly constrained, and the field in the original simulation is at the lower limit. In a post-processing step the magnetic field has been scaled according to the overdensity, leaving the micro Gauss measurements at the cores intact.

Slice of the magneitc field strength with a resolution of 14.6 kpc or 16k samples per axis. Sampled and stored with quimby. Use buttons or mouse wheel to zoom.

Positions

Since the simulation has been constrained by real measurements, it is easier to define a position for Earth:
(118.34, 117.69, 119.2) Mpc.
A matter distribution matching the size and position of Virgo has been found at:
(113.9, 138.0, 116.36) Mpc

References

Please cite the following papers:

[1] Simulation: 10.1088/1475-7516/2005/01/009

[2] Multiresolution grid: 10.1088/1475-7516/2016/08/025

Download

The .cfg files contains meta information required to use the field. The .hc2 files contains the multi-resolution data. Both files are required. See below for an example.

MHD

Model 1 (scaled version)

Python example

Please install quimby to use the field.
import crpropa as crp
import quimby as qm

qmf = qm.loadHCubeMagneticField("mhd_z-16384-0.4-1e-14.cfg", qm.ReadAhead)
bfield = crp.QuimbyMagneticField(qmf)
dck = crp.DeflectionCK(
        bfield,
        1e-4,
        0.5 * crp.kpc,
        50 * crp.kpc)

earth_position = crp.Vector3d(118.34, 117.69, 119.2) * crp.Mpc
obs = crp.Observer()
obs.add(crp.ObserverSmallSphere(earth_position, 50 * crp.kpc))
...

virgo_position = crp.Vector3d(113.9, 138.0, 116.36) * crp.Mpc
source = crp.Source()
source.add(crp.SourcePosition(virgo_position))
...