import numpy as np
import imagine as img
import astropy.units as u
import os
from imagine.fields.hamx import BregLSA, CREAna, TEregYMW16, BrndES
# Creates some empty fake datasets
size = 12*32**2
sync_dset = img.observables.SynchrotronHEALPixDataset(data=np.empty(size)*u.mK,
frequency=23*u.GHz, typ='I')
# Appends them to an Observables Dictionary
fakeMeasureDict = img.observables.Measurements()
fakeMeasureDict.append(dataset=sync_dset)
# Initializes Hammurabi
simer = img.simulators.Hammurabi(measurements=fakeMeasureDict)
ensemble_size = 2
## CRE and TE models
paramlist_cre = {'alpha': 3.0, 'beta': 0.0, 'theta': 0.0,
'r0': 5.6, 'z0': 1.2,
'E0': 20.5,
'j0': 0.03}
cre_ana = CREAna(parameters=paramlist_cre, ensemble_size=ensemble_size)
fereg_ymw16 = TEregYMW16(parameters={}, ensemble_size=ensemble_size)
# Parameters for B-field
paramlist_Brnd = {'rms': 6., 'k0': 0.5, 'a0': 1.7,
'k1': 0.5, 'a1': 0.0,
'rho': 0.5, 'r0': 8., 'z0': 1.}
paramlist_Breg = {'b0': 6.0, 'psi0': 27.9, 'psi1': 1.3, 'chi0': 24.6}
# Sets Hammurabi to run on 8 cores
os.environ['OMP_NUM_THREADS']='8'
print('\n','-'*30, 'Deterministic case','-'*30, sep='\n')
for i in range(4):
# Resets numpy (legacy) random number generator
np.random.seed(42)
# Regular B-field
breg_wmap = BregLSA(parameters=paramlist_Breg, ensemble_size=ensemble_size)
print('\nRun',i+1, '\n\tensemble seeds:', *breg_wmap.ensemble_seeds)
maps = simer([breg_wmap, cre_ana, fereg_ymw16])
sync_I_data = maps[('sync', 23.0, 32, 'I')].global_data
print('\tsync_I_data (sum):', *sync_I_data.sum(axis=1))
print('\n','-'*30, 'Stochastic case','-'*30, sep='\n')
for i in range(4):
# Resets numpy (legacy) random number generator
np.random.seed(42)
# Random B-field
brnd_es = BrndES(parameters=paramlist_Brnd, ensemble_size=ensemble_size,
grid_nx=100, grid_ny=100, grid_nz=40)
print('\nRun',i+1, '\n\tensemble seeds:', *brnd_es.ensemble_seeds)
maps = simer([brnd_es, cre_ana, fereg_ymw16])
sync_I_data = maps[('sync', 23.0, 32, 'I')].global_data
print('\tsync_I_data (sum):', *sync_I_data.sum(axis=1))
# Sets Hammurabi to run on a single core
os.environ['OMP_NUM_THREADS']='1'
print('\n','-'*30, 'Stochastic case (serial Hammurabi)','-'*30, sep='\n')
for i in range(4):
# Resets numpy (legacy) random number generator
np.random.seed(42)
brnd_es = BrndES(parameters=paramlist_Brnd, ensemble_size=ensemble_size,
grid_nx=100, grid_ny=100, grid_nz=40)
print('\nRun',i+1, '\n\tensemble seeds:', *brnd_es.ensemble_seeds)
maps = simer([brnd_es, cre_ana, fereg_ymw16])
sync_I_data = maps[('sync', 23.0, 32, 'I')].global_data
print('\tsync_I_data (sum):', *sync_I_data.sum(axis=1))
------------------------------
Deterministic case
------------------------------
Run 1
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 2115.1283515418586 2115.1283515418586
Run 2
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 2115.1283515418586 2115.1283515418586
Run 3
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 2115.1283515418586 2115.1283515418586
Run 4
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 2115.1283515418586 2115.1283515418586
------------------------------
Stochastic case
------------------------------
Run 1
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 5385.946091701992 5667.601821674344
Run 2
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 5384.209698423045 5663.441694022036
Run 3
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 5391.711379836459 5675.507874895424
Run 4
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 5374.580945159507 5662.862508687077
------------------------------
Stochastic case (serial Hammurabi)
------------------------------
Run 1
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 5322.912641998637 5423.7247891422
Run 2
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 5322.912641998637 5423.7247891422
Run 3
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 5322.912641998637 5423.7247891422
Run 4
ensemble seeds: 1608637542 1273642419
sync_I_data (sum): 5322.912641998637 5423.7247891422