# Generate scattering profiles for different observatory sites

  • Sylvie Dagoret-Campagne

  • affliliation : IJCLAB/IN2P3/CNRS

  • creation date : 23 October 2023

  • Last verification : August 27th 2024


[ ]:
%load_ext autoreload
%autoreload 2
[ ]:
import matplotlib.pyplot as plt
%matplotlib inline
import sys
import os
import numpy as np
[ ]:
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx
import seaborn as sns
[ ]:
matplotlib.rcParams.update({'font.size': 15, 'lines.linewidth': 2, 'lines.markersize': 15})
matplotlib.rcParams["axes.labelsize"]="small"
matplotlib.rcParams["axes.linewidth"]=2.0
matplotlib.rcParams["xtick.major.size"]=8
matplotlib.rcParams["ytick.major.size"]=8
matplotlib.rcParams["ytick.minor.size"]=5
matplotlib.rcParams["xtick.labelsize"]="large"
matplotlib.rcParams["ytick.labelsize"]="large"
matplotlib.rcParams["figure.figsize"]=(12,6)
matplotlib.rcParams['axes.titlesize'] = 15
matplotlib.rcParams['axes.titleweight'] = 'bold'
#matplotlib.rcParams['axes.facecolor'] = 'blue'
matplotlib.rcParams['xtick.direction'] = 'out'
matplotlib.rcParams['ytick.direction'] = 'out'
matplotlib.rcParams['lines.markeredgewidth'] = 0.3 # the line width around the marker symbol
matplotlib.rcParams['lines.markersize'] = 10  # markersize, in points
matplotlib.rcParams['grid.alpha'] = 1. # transparency, between 0.0 and 1.0
matplotlib.rcParams['grid.linestyle'] = '-' # simple line
matplotlib.rcParams['grid.linewidth'] = 0.4 # in points
[ ]:
os.getenv('LIBRADTRANDIR')
[ ]:
from libradtranpy import libsimulateVisible
[ ]:
from libradtranpy.libsimulateVisible import Dict_Of_sitesPressures
[ ]:
List_Of_All_sites = list(Dict_Of_sitesPressures.keys())
List_Of_All_sites
[ ]:
NSites = len(List_Of_All_sites)
[ ]:
hls_colors = sns.color_palette("hls", NSites)
sns.palplot(hls_colors)
[ ]:
import sys
sys.path

Choose the parameters of the simulation

[ ]:
am= 1
pressure = 0. # use default value
pwv=4       # turn on or of the pwv
aer=0
ozone=0.    # turn on or of the ozone
cloudext=0

Simulation

[ ]:
all_trans = []
all_obs = []
for index, site in enumerate(List_Of_All_sites):
    all_obs.append(site)
    wl,atm=libsimulateVisible.ProcessSimulation(am,pwv,ozone,pressure,aer_num=aer,
                                                      prof_str='us',proc_str='sc',cloudext=cloudext,altitude=site)
    all_trans.append(atm)

Plot

[ ]:
for index in np.arange(NSites):
    plt.semilogy(wl,all_trans[index],'-',color=hls_colors[index],label=all_obs[index])
plt.xlim(300,1000)
plt.grid()
plt.title(f"Rayleigh scattering atmospheric transmission for airmass in {am}")
plt.xlabel("$\\lambda$ (nm)")
plt.ylabel("transmission")
plt.ylim(0.2,1.1)
plt.legend()
figname="multisitesscatttransmissionvssite_log.png"
plt.savefig(figname)
[ ]:
for index in np.arange(NSites):
    plt.plot(wl,all_trans[index],'-',color=hls_colors[index],label=all_obs[index])
plt.xlim(300,1200)
plt.grid()
plt.title(f"Rayleigh scattering atmospheric transmission for airmass = {am}")

plt.xlabel("$\\lambda$ (nm)")
plt.ylabel("transmission")
plt.ylim(0.,1.1)
plt.legend()
figname="multisitesscatttransmission_vssitelin.png"
plt.savefig(figname)

Compare libradtran with standard pressure and libradtran with P=743

[ ]:
wl1,atm1=libsimulateVisible.ProcessSimulation(am,pwv,ozone,pressure,aer_num=aer,
                                                      prof_str='us',proc_str='sc',cloudext=cloudext,altitude='LSST')
Pstand = Dict_Of_sitesPressures['LSST']
label1 = f"LSST site with P = {Pstand:.2f} hPa"


Ptest = 743.0
wl2,atm2=libsimulateVisible.ProcessSimulation(am,pwv,ozone,Ptest,aer_num=aer,
                                                      prof_str='us',proc_str='sc',cloudext=cloudext,altitude='LSST')
label2 = f"LSST site with P = {Ptest:.2f} hPa"


[ ]:

plt.plot(wl1,atm1,'-r',label=label1) plt.plot(wl2,atm2,'-b',label=label2) plt.xlim(300,1200) plt.grid() plt.title(f"Rayleigh scattering atmospheric transmission for airmass = {am} and 2 pressures") plt.xlabel("$\\lambda$ (nm)") plt.ylabel("transmission") plt.ylim(0.4,1.05) plt.legend() figname="comparepressurescatttransmission_lsst_lin.png" plt.savefig(figname)
[ ]:
the_leg = f"Rayleigh transmission ratio T(P = {Ptest:.1f} hPa)/T(P={Pstand:.1f} hPa)"
plt.plot(wl1,atm2/atm1,'-r',label=the_leg)

plt.xlim(300,1200)
plt.grid()
plt.title(f"Rayleigh scattering atmospheric transmission ratio for airmass = {am}")

plt.xlabel("$\\lambda$ (nm)")
plt.ylabel("transmission")
plt.ylim(0.95,1.05)
plt.legend()
figname="comparepressurescatttransmissionratio_lsst_lin.png"
plt.savefig(figname)
[ ]: