Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
                  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)