Commit e0c87ef7 authored by Martin Reinecke's avatar Martin Reinecke
Browse files

enhance demo

parent 6a5dd0cf
......@@ -7,9 +7,10 @@
import pysharp
import numpy as np
from numpy.testing import assert_allclose
from time import time
# set maximum multipole moment
lmax = 4095
lmax = 2047
# maximum m. For SHTOOLS this is alway equal to lmax, if I understand correctly.
mmax = lmax
......@@ -18,7 +19,7 @@ nlat = lmax+1
# Number of pixels per ring. Must be >=2*lmax+1, but I'm choosing a larger
# number for which the FFT is faster.
nlon = 8192
nlon = 4096
# create an object which will do the SHT work
job = pysharp.sharpjob_d()
......@@ -34,13 +35,10 @@ job = pysharp.sharpjob_d()
nalm = ((mmax+1)*(mmax+2))//2 + (mmax+1)*(lmax-mmax)
# number of real-valued random numbers to draw
nalm_r = nalm*2-lmax-1
# get random numbers
alm_r = np.random.uniform(-1., 1., nalm_r)
# create the complex-valued a_lm array
alm = np.empty(nalm, dtype=np.complex128)
alm[0:lmax+1] = alm_r[0:lmax+1]
alm[lmax+1:] = np.sqrt(0.5)*(alm_r[lmax+1::2] + 1j*alm_r[lmax+2::2])
# get random a_lm
alm = np.random.uniform(-1., 1., nalm) + 1j*np.random.uniform(-1., 1., nalm)
# make a_lm with m==0 real-valued
alm[0:lmax+1].imag = 0.
# describe the a_lm array to the job
job.set_triangular_alm_info(lmax, mmax)
......@@ -48,8 +46,20 @@ job.set_triangular_alm_info(lmax, mmax)
# describe the Gauss-Legendre geometry to the job
job.set_Gauss_geometry(nlat, nlon)
# go from a_lm to map and back
alm2 = job.map2alm(job.alm2map(alm))
# go from a_lm to map
t0=time()
map = job.alm2map(alm)
print("time for map synthesis: {}s".format(time()-t0))
# map is a 1D real-valued array with (nlat*nlon) entries. It can be reshaped
# to (nlat, nlon) for plotting.
# Libsharp woks on "1D" maps because it apso supports pixelizations that varying
# number of pixels on each iso-latitude ring, which cannot be represented by 2D
# arrays (e.g. Healpix)
t0=time()
alm2 = job.map2alm(map)
print("time for map analysis: {}s".format(time()-t0))
# make sure input was recovered accurately
assert_allclose(alm, alm2)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment