def comperr(Nnu,plotfig=False): nus=np.linspace(1.e7/2700,1.e7/2100.,Nnu,dtype=np.float64) mdbCO=moldb.MdbHit('/home/kawahara/exojax/data/CO/05_hit12.par',nus) Mmol=28.010446441149536 Tref=296.0 Tfix=1000.0 Pfix=1.e-3 # #USE TIPS partition function Q296=np.array([107.25937215917970,224.38496958496091,112.61710362499998,\ 660.22969049609367,236.14433662109374,1382.8672147421873]) Q1000=np.array([382.19096582031250,802.30952197265628,402.80326733398437,\ 2357.1041210937501,847.84866308593757,4928.7215078125000]) qr=Q1000/Q296 qt=np.ones_like(mdbCO.isoid,dtype=np.float64) for idx,iso in enumerate(mdbCO.uniqiso): mask=mdbCO.isoid==iso qt[mask]=qr[idx] Sij=SijT(Tfix,mdbCO.logsij0,mdbCO.nu_lines,mdbCO.elower,qt) gammaL = gamma_hitran(Pfix,Tfix,Pfix, mdbCO.n_air, mdbCO.gamma_air, mdbCO.gamma_self) #+ gamma_natural(A) #uncomment if you inclide a natural width sigmaD=doppler_sigma(mdbCO.nu_lines,Tfix,Mmol) sigmaD_grid=set_ditgrid(sigmaD) gammaL_grid=set_ditgrid(gammaL) cnu,indexnu,dLarray=initspec.init_dit(mdbCO.nu_lines,nus) xs_dit_lp=dit_xsvector(cnu,indexnu,dLarray,sigmaD,gammaL,Sij,nus,sigmaD_grid,gammaL_grid) wls_dit = 100000000/nus #ref (direct) d=10000 ll=mdbCO.nu_lines xsv_lpf_lp=lpf_xsection(nus,ll,sigmaD,gammaL,Sij,memory_size=30) dif=xs_dit_lp/xsv_lpf_lp-1. med=np.median(dif) iju=22940. ijd=26400. limu,limd=np.searchsorted(wls_dit[::-1],[iju,ijd]) std=np.std(dif[::-1][limu:limd]) return med,std,ijd,iju,wls_dit,xs_dit_lp,xsv_lpf_lp,dif
def xs(Nc, Nline=10000): nu0 = 2000.0 nu1 = 2100.0 nus = np.logspace(np.log10(nu0), np.log10(nu1), 10000, dtype=np.float64) nu_lines = np.random.rand(Nline)*(nu1-nu0)+nu0 nsigmaD = 1.0 gammaL = np.random.rand(Nline)+0.1 cnu, indexnu, R, pmarray = initspec.init_modit(nu_lines, nus) ngammaL = gammaL/(nu_lines/R) ngammaL_grid = set_ditgrid(ngammaL, res=0.1) S = jnp.array(np.random.normal(size=Nline)) ts = time.time() a = [] for i in range(0, Nc): tsx = time.time() xsv = xsvector(cnu, indexnu, R, pmarray, nsigmaD, ngammaL, S, nus, ngammaL_grid) xsv.block_until_ready() tex = time.time() a.append(tex-tsx) te = time.time() a = np.array(a) print(Nline, ',', np.mean(a[1:]), ',', np.std(a[1:])) return (te-ts)/Nc
def xs(Nline): nu0 = 2000.0 nu1 = 2100.0 nus = np.logspace(np.log10(nu0), np.log10(nu1), 10000, dtype=np.float64) nu_lines = np.random.rand(Nline) * (nu1 - nu0) + nu0 nsigmaD = 1.0 gammaL = np.random.rand(Nline) + 0.1 cnu, indexnu, R, pmarray = initspec.init_modit(nu_lines, nus) ngammaL = gammaL / (nu_lines / R) ngammaL_grid = set_ditgrid(ngammaL, res=0.1) S = jnp.array(np.random.normal(size=Nline)) xsv = xsvector(cnu, indexnu, R, pmarray, nsigmaD, ngammaL, S, nus, ngammaL_grid) xsv.block_until_ready() return True
qt = np.ones_like(mdbCO.isoid, dtype=np.float64) for idx, iso in enumerate(mdbCO.uniqiso): mask = mdbCO.isoid == iso qt[mask] = qr[idx] Sij = SijT(Tfix, mdbCO.logsij0, mdbCO.nu_lines, mdbCO.elower, qt) gammaL = gamma_hitran(Pfix, Tfix, Pfix, mdbCO.n_air, mdbCO.gamma_air, mdbCO.gamma_self) # + gamma_natural(A) #uncomment if you inclide a natural width sigmaD = doppler_sigma(mdbCO.nu_lines, Tfix, Mmol) cnu, indexnu, R, pmarray = initspec.init_modit(mdbCO.nu_lines, nus) nsigmaD = normalized_doppler_sigma(Tfix, Mmol, R) ngammaL = gammaL / (mdbCO.nu_lines / R) ngammaL_grid = set_ditgrid(ngammaL) xs_modit_lp = modit_xsvector(cnu, indexnu, R, pmarray, nsigmaD, ngammaL, Sij, nus, ngammaL_grid) wls_modit = 100000000 / nus #ref (direct) d = 10000 ll = mdbCO.nu_lines xsv_lpf_lp = lpf_xsection(nus, ll, sigmaD, gammaL, Sij, memory_size=30) config.update('jax_enable_x64', True) xs_modit_lp_f64 = modit_xsvector(cnu, indexnu, R, pmarray, nsigmaD, ngammaL, Sij, nus, ngammaL_grid)
2357.1041210937501, 847.84866308593757, 4928.7215078125000]) qr = Q1000/Q296 qt = np.ones_like(mdbCO.isoid, dtype=np.float64) for idx, iso in enumerate(mdbCO.uniqiso): mask = mdbCO.isoid == iso qt[mask] = qr[idx] Sij = SijT(Tfix, mdbCO.logsij0, mdbCO.nu_lines, mdbCO.elower, qt) gammaL = gamma_hitran(Pfix, Tfix, Pfix, mdbCO.n_air, mdbCO.gamma_air, mdbCO.gamma_self) # + gamma_natural(A) #uncomment if you inclide a natural width sigmaD = doppler_sigma(mdbCO.nu_lines, Tfix, Mmol) cnu, indexnu, pmarray = initspec.init_dit(mdbCO.nu_lines, nus) sigmaD_grid = set_ditgrid(sigmaD, res=0.1) gammaL_grid = set_ditgrid(gammaL, res=0.1) xs_dit_lp = dit_xsvector(cnu, indexnu, pmarray, sigmaD, gammaL, Sij, nus, sigmaD_grid, gammaL_grid) wls_dit = 100000000/nus #ref (direct) d = 10000 ll = mdbCO.nu_lines xsv_lpf_lp = lpf_xsection(nus, ll, sigmaD, gammaL, Sij, memory_size=30) config.update('jax_enable_x64', True) xs_dit_lp_f64 = dit_xsvector( cnu, indexnu, pmarray, sigmaD, gammaL, Sij, nus, sigmaD_grid, gammaL_grid)