Ejemplo n.º 1
0
def test_one_layer_direct():

    ssa = 20
    wavelength = 850e-9

    alb = albedo(wavelength, ssa, dir_frac=1, theta_inc=30)

    assert abs(alb - 0.8583967584060925) < 1e-10
Ejemplo n.º 2
0
def test_diffus():

    ssa, density, thickness = get_multilayer()
    wavelength = np.arange(400, 1000, 200) * 1e-9

    alb_dir53 = albedo(wavelength, ssa, density, thickness, sza=53, dir_frac=1)
    alb_diff = albedo(wavelength, ssa, density, thickness, dir_frac=0)

    assert np.all(abs(alb_dir53 - alb_diff) < 1e-8)

    alb_halfdir53 = albedo(wavelength,
                           ssa,
                           density,
                           thickness,
                           sza=53,
                           dir_frac=0.5)

    assert np.all(abs(alb_halfdir53 - alb_diff) < 1e-8)
Ejemplo n.º 3
0
def test_one_layer_diffuse():
    ssa = 20  # in m^2/kg
    wavelength = [450e-9, 650e-9, 850e-9, 1030e-9, 1300e-9]  # in m

    alb = albedo(wavelength, ssa)

    res = numpy.array(
        (0.99614203926738309, 0.96047324904990949, 0.88128514422618554,
         0.66596004345176796, 0.42830398442634676))
    assert numpy.all(abs(alb - res) < 1e-10)
Ejemplo n.º 4
0
def test_impurities():
    ssa = 20  # in m^2/kg
    wavelength = [450e-9, 650e-9, 850e-9, 1030e-9, 1300e-9]  # in m

    alb = albedo(wavelength, ssa, impurities=100e-9)

    print(alb)
    res = np.array(
        [0.95566775, 0.94667078, 0.87767193, 0.66526393, 0.42814038])
    assert np.allclose(alb, res, atol=1e-8)
Ejemplo n.º 5
0
def test_multilayer():

    ssa, density, thickness = get_multilayer()

    wavelength = [450e-9, 650e-9, 850e-9, 1030e-9, 1300e-9]  # in m

    alb = albedo(wavelength, ssa, density, thickness)

    res = np.array(
        [0.98697191, 0.95453273, 0.87187588, 0.65985864, 0.42739316])
    assert np.all(abs(alb - res) < 1e-8)
Ejemplo n.º 6
0
def test_multilayer():

    ssa = [20, 15, 10]
    density = [200, 250, 300]
    thickness = [0.01, 0.10, 1000]

    wavelength = 650e-9

    alb = albedo(wavelength, ssa, density, thickness)

    res = numpy.array(
        (0.97861955812074553, 0.9545327263717367, 0.87187587848576675))

    assert numpy.all(abs(alb - res)) < 1e-10
Ejemplo n.º 7
0
def test_w1995():
    ssa = 20
    wavelength = 550e-9

    alb = albedo(wavelength, ssa, refrac_index="w1995")
    assert abs(alb - 0.9798191182503498) < 1e-10
import tartes
from pylab import *

ssa = [20, 15, 10]  # in m^2/kg
density = [200, 250, 300]  # in kg/m^3
thickness = [0.01, 0.10, 1000]  # thickness of each layer in meter
wavelengths = arange(300, 2500, 10) * 1e-9  # from 300 to 2500 nm

albedo_3layers = tartes.albedo(wavelengths, ssa, density, thickness)

ssa = 20  # in m^2/kg
density = 300  # in kg/m^3
albedo_semiinfinite = tartes.albedo(wavelengths, ssa, density)

# alpha controls the transparency of the curves
plot(wavelengths * 1e9, albedo_semiinfinite, alpha=0.7)
plot(wavelengths * 1e9, albedo_3layers, alpha=0.7)
show()
resultfilepath="H:/2016-6-8/albedo.txt"
savefile=codecs.open(resultfilepath,"w","utf-8")
# ssa = 20      # in m^2/kg
density = 300 # in kg/m^3
# the result should be independent of the density for a semi-infinite medium
r_opt= 5.0059E-04
# in m  optical radius (m)4.15:4.14E-04 4.16:1.14E-03 4.17:3.12E-04 4.18:5.17E-04
# wavelength = 850e-9 # in m
solar_zenith_angle= np.loadtxt('H:/2016-6-8/solar_zenith_angle.txt')
nameList = ['645e-9','858e-9','469e-9','1240e-9','2130e-9']
for m in range(len(nameList)):
    waveleng=nameList[m]
    print waveleng
    wavelength =float(waveleng)
    # solar_zenith_angle= np.loadtxt('H:/2016-6-8/solar_zenith_angle.txt')
    # solar_zenith_angle= np.loadtxt('H:/2016-6-8/Solar_elevation_angle.txt')
    print 'solar_zenith_angle=',solar_zenith_angle
    # solar_zenith_angle1=np.arry(solar_zenith_angle1)
    # solar_zenith_angle=90-solar_zenith_angle1
    # solar_zenith_angle =68.02
    for i in range(len(solar_zenith_angle)):
        angle=solar_zenith_angle[i]
        albedo = tartes.albedo(wavelength,ssa(r_opt),density,dir_frac=0.7,theta_inc=angle)
        # albedo=[]
        # albedo=np.arry(albedo)
        print 'albedo=',albedo
        # print(albedo)
        savefile.writelines(str(albedo)+"\n")
        # np.savetxt('H:/2016-6-8/albedo.txt',str(albedo),fmt='%1.4e')
    # solar_zenith_angle.close()
print 'end'
Ejemplo n.º 10
0
import tartes
from tartes import ssa

r_opt = 100e-6  # in m #100e-6
density = 300  # in kg/m^3
# the result should be independent of the density for a semi-infinite medium

wavelength = 850e-9  # in m

albedo = tartes.albedo(wavelength, ssa(r_opt), density)

print(albedo)
Ejemplo n.º 11
0
import tartes
import tartes.impurities
from pylab import *

ssa = 20  # in m^2/kg
density = 300  # in kg/m^3

wavelengths = arange(300, 1000, 10) * 1e-9  # from 300 to 2500nm

# pure snow
albedo_pure = tartes.albedo(wavelengths, ssa, density)

# 50ng/g of soot. Soot is the default impurity type
albedo_soot = tartes.albedo(wavelengths, ssa, density, impurities=50e-9)

# 200ng/g of Hulis.
albedo_hulis = tartes.albedo(wavelengths,
                             ssa,
                             density,
                             impurities=200e-9,
                             impurities_type=tartes.impurities.HULIS)

plot(wavelengths * 1e9, albedo_pure, label='pure snow')
plot(wavelengths * 1e9, albedo_soot, label='snow with 50 ng/g soot')
plot(wavelengths * 1e9, albedo_hulis, label='snow with 200 ng/g HULIS')
legend(loc='best')
show()
import tartes
from pylab import *

ssa = 20  # in m^2/kg
density = 300  # in kg/m^3

wavelengths = arange(300, 2500, 10) * 1e-9  # from 300 to 2500nm

albedo = tartes.albedo(wavelengths, ssa, density)

plot(wavelengths * 1e9, albedo)
show()
import tartes
import tartes.impurities
from pylab import *

ssa = [40, 30, 20]  # in m^2/kg
density = [300, 300, 300]  # in kg/m^3
thickness = [0.02, 0.05, 1000]  # in m

wavelengths = arange(300, 1000, 10) * 1e-9  # from 300 to 2500nm

# pure snow
albedo_pure = tartes.albedo(wavelengths, ssa, density, thickness)

# with a profile of soot
albedo_soot = tartes.albedo(wavelengths,
                            ssa,
                            density,
                            thickness,
                            impurities=[10e-9, 50e-9, 0])

# A profile of mixture soot+Hulis
impurities_content = [
    [10e-9, 50e-9],  # soot and HULIS in the first layer
    [30e-9, 100e-9],  # soot and HULIS in the second layer
    [0, 10e-9]  # soot and HULIS in the last layer
]

albedo_mixture = tartes.albedo(
    wavelengths,
    ssa,
    density,
Ejemplo n.º 14
0
import tartes
from pylab import *

ssa = 20  # in m^2/kg
density = 250  # in kg/m^3

thickness = arange(5, 30, 5) * 1e-2
wavelengths = arange(300, 1100, 10) * 1e-9  # from 300 to 1100nm

for th in thickness:
    albedo = tartes.albedo(wavelengths, ssa, density, th, soilalbedo=0.2)
    plot(wavelengths * 1e9, albedo, label='%g cm' % (th * 100))

legend(loc='best')
xlabel('wavelength (nm)')
ylabel('albedo')
show()
Ejemplo n.º 15
0
import tartes

ssa = 20  # in m^2/kg
density = 300  # in kg/m^3
# the result should be independent of the density for a semi-infinite medium

wavelength = 850e-9  # in m

albedo = tartes.albedo(wavelength, ssa, density, dir_frac=1, sza=30)

print(albedo)
Ejemplo n.º 16
0
import tartes
from pylab import *

print(tartes)

nlayer = 200  # number of layers
ssa = [20] * nlayer  # nlayer layers with the same SSA... (in m^2/kg)
density = [300] * nlayer  # and the same density               (in kg/m^3)
thickness = [
    0.01
] * nlayer  # all the layer are 0.01 m thick, the snowpack is nlayer*0.01m deep

wavelengths = [400e-9, 500e-9, 600e-9, 700e-9, 800e-9, 900e-9]

for wl in wavelengths:
    z, absorption_profile = tartes.absorption_profile(wl,
                                                      ssa,
                                                      density,
                                                      thickness,
                                                      soilalbedo=0.50)
    semilogx(absorption_profile, -z, label='%g nm' % (wl * 1e9))

    albedo = tartes.albedo(wl, ssa, density, thickness, soilalbedo=0.50)
    print(1 - sum(absorption_profile), " ", albedo)

ylabel('depth(m)')
xlabel('absorbed energy (for 1W/m2 incident)')
legend(loc='best')
show()