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
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)
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)
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)
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)
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
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'
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)
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,
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()
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)
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()