TP3 : sensibilité des flux aux paramètres physiques du système
Conditions de réalisation
Nous supposerons que le TP est réalisé par un utilisateur travaillant depuis le système d'exploitation EDIX.
TP3 - Partie 1 : environnement de travail
Partie 1.1 : les débuts dans EDIX
Référez vous à la partie 1.1 du TP1.
Partie 1.2 : préparation de l'environnement de TP
S'il n'existe pas encore, on crée un sous-répertoire dédié au tp htrdr-atmosphere et on va dedans
mkdir tp_htrdr-atmosphere
cd tp_htrdr-atmosphere
On crée un lien symbolique (un raccourci) vers le fichier profile définissant l'environnement du TP :
ln -sf /home/lafrier/environnement_tp_htrdr-atmosphere/etc/profile profile
Pour pouvoir exécuter htrdr-atmosphere, il faudra réaliser l'opération suivante à chaque fois qu'un nouveau terminal sera ouvert :
source ~/mon_nom/tp_htrdr-atmosphere/profile
Elements techniques de compréhension
Afficher le fichier pour voir que des variables vont être modifiées.
Ces variables sont enrichies avec les chemins vers le dossier d'installation de htrdr-atmosphere :
etudiant:~/mon_nom/tp_htrdr-atmosphere$ cat \
~/mon_nom/tp_htrdr-atmosphere/profileou, de manière équivalente :
etudiant:~/mon_nom/tp_htrdr-atmosphere$ cat \
/home/lafrier/star-build/local/etc/htrdr-atmosphere.profileVérifier que les variables d'environnement ont bien été mises à jour :
etudiant:~/mon_nom/tp_htrdr-atmosphere$ echo ${CPATH}
On copie le répertoire dédié au TP3
cp -r "${TP_HTRDR_ATMOSPHERE}"/TP3/ .
et on y va
cd TP3
TP3 - Partie 2 :
Regardons les données disponibles pour le TP :
ls data
On commence par parcourir le fichier clear_sky_opt_prop_SMLSATM.txt, la
description de l'atmosphère considérée, correspondant à une atmosphère
standard de moyenne latitude en été (Standard Mid-Latitude Summer ATMosphere)
more data/clear_sky_opt_prop_SMLSATM.txt
Aide shell
La commande more ouvre un pagineur
Pour monter et descendre, utiliser les flèches haut et bas
Pour sortir appuyer sur la touche q (pour quit)
On voit que cette atmosphère est constituée de 31 niveaux verticaux, définissant des interfaces entre 30 couches de gaz. La pression [Pa], la température [K], l'altitude [m] sont données aux interfaces entre couches. La concentration molaire de vapeur d'eau x(H20) [mol h2o / mol air ] est donnée au sein des couches. Les concentrations des autres gaz (CO2, O2, CH4 etc) ne sont pas écrites dans ce fichier mais elles ont bien été prises en compte pour calculer les propriétés radiatives des couches (absorption et diffusion du mélange de gaz atmosphérique). Ces propriétés sont données plus bas dans le fichier. On peut dans un premier temps ignorer les blocs commençant par "x(H2O) ... for point index ... ". A la suite de ces blocs, les bandes spectrales sont décrites (16 bandes pour le LW, 14 bandes pour le SW) par leurs bornes (nombre d'ondes min et max en cm-1), le nombre de points de quadrature inclu dans la bande et leurs poids respectifs. Enfin, les propriétés radiatives sont données pour chaque point de quadrature (g-point) de chaque bande (interval). Pour l'instant, ignorons tous les blocs qui ne sont pas "Nominal".
Note : La température du sol écrite dans ce fichier n'est pas utilisée dans le calcul, ni les LW emissivity et SW emissivity.
Note : Pour les bandes "LW", htrdr néglige la diffusion donc seuls les coefficients d'absorption sont donnés dans le fichier. Pour les bandes "SW", les coefficients d'absorption et de diffusion sont donnés.
On peut également examiner les données de sol. Les fichiers de géométrie
plane*.obj décrivent des sols plans constitués de deux triangles, et donnent
le matériaux associé au sol via la clé ground*. Les différents matériaux
ground* sont listés dans grounds.mtls. Ils correspondent à des matériaux
idéalisés, d'albedo constant sur le spectre solaire. Les propriétés radiatives
de ces matériaux sont données dans les fichiers albedo*.mrumtl. En pratique,
on utilisera plane0.obj pour imposer une surface noire, plane4.obj pour
imposer une surface réfléchissante à 40%, etc.
htrdr-atmosphere -vf \
-a data/clear_sky_opt_prop_SMLSATM.txt \
-s sw=200,4000 \
-R -g data/plane0.obj \
-M data/grounds.mtls \
-p pos=0.,0.,0.:sz=10,10 \
-o flux_clear_sky.ht
Avec l'option -s on a activé les sources solaires, et l'intégrale spectrale va de 200 à 4000 nm
Avec l'option -p on a choisi que la grandeur radiative simulée soit un flux hémisphérique descendant sur le capteur (en W/m2), pour un capteur positionné en 0,0,0 et de taille 10x10 m^2
A la fin, on observe la valeur moyenne du flux et sa barre d'erreur associée.
Pour un calcul de flux (option -p pour un calcul de flux au lieu de -C pour une image) dans le solaire, seule la première et la dernière paires de colonnes seront remplies : la première paire de colonnes pour le flux estimé, et la dernière paire pour le temps de calcul par réalisation.
Pour l'instant, on va uniquement regarder le flux moyen, qui est écrit dans le terminal. On redirigera la sortie standard de htrdr vers un fichier pour pouvoir post-traiter l'information par la suite.
htrdr-atmosphere -vf \
-a data/clear_sky_opt_prop_SMLSATM.txt \
-s sw=200,4000 \
-Rg data/plane0.obj \
-M data/grounds.mtls \
-p pos=0.,0.,0.:sz=10,10 \
-i spp=128 \
-o flux_clear_sky_128spp.ht \
2>&1|tee log_htrdr.out
./print_flux.sh log_htrdr.out
Partie 2.2 : influence du nombre de réalisation sur les estimations
Si on veut examiner comment la modification d'un paramètre du calcul modifie le flux estimé, on peut faire une boucle comme suit :
for nreal in 1 5 10 50 100 500 1000
do
echo ${nreal} >> nreals.dat
htrdr-atmosphere -vf \
-a data/clear_sky_opt_prop_SMLSATM.txt \
-s sw=200,4000 \
-Rg data/plane0.obj \
-M data/grounds.mtls \
-p pos=0.,0.,0.:sz=10,10 \
-i spp=${nreal} \
-o flux_clear_sky_${nreal}spp.ht \
2>&1|tee log_htrdr_${nreal}.out
./print_flux.sh log_htrdr_${nreal}.out >> fluxes.dat
done
paste nreals.dat fluxes.dat > resultats.dat
Le fichier resultats.dat contient alors trois colonnes : nombre de réalisations, estimation et écart type, pour des calculs ayant de plus en plus de réalisations. On peut afficher ces résultats
cat resultats.dat
Et on peut également les représenter sous forme graphique
gnuplot < plot_resultats.gp
On voit que la barre d'erreur diminue au fur et à mesure qu'on augmente le nombre de réalisations. On voit que pour diviser par dix la barre d'erreur, il faut multiplier par cent le nombre de réalisations. On voit que les estimations qui sont associées à une trop grande barre d'erreur ne sont pas fiables.
Partie 2.3 : influence des paramètres sur les flux et temps de calcul
Le script loop_htrdr.sh assemble les commandes ci-dessus. Il peut être
modifié et exécuté pour répondre aux questions qui suivent.
bash loop_htrdr.sh
Pour répondre aux questions suivantes, aidez vous du manuel pour comprendre quelles options il faut modifier et comment :
man htrdr-atmosphere
Bonus : vous pouvez équiper le script loop_htrdr.sh pour étudier, en plus
du flux estimé, le temps de calcul par réalisation. La commande print_time.sh
peut être utilisée en sus de la commande print_flux.sh qui est déjà dans le
script. Vous pouvez ajouter des colonnes au fichier resultats.dat et modifier
le script gnuplot en conséquence, ou créer un autre fichier times.dat et un
autre script plot_times.gp en vous inspirant de ce qui a été fait pour les
flux.
Aide shell
Par défaut, les scripts écrivent toujours dans les mêmes fichiers :
resultats.dat et figure.png. Si vous voulez sauvegarder votre travail au fur
et à mesure, vous devrez renommer ces fichiers après chaque exercice afin
qu'ils ne soient pas écrasés à la prochaine exécution. Pour renommer un
fichier :etudiant:~/mon_nom/tp_htrdr-atmosphere/TP1$ mv resultats.dat Q1_resultats.dat
etudiant:~/mon_nom/tp_htrdr-atmosphere/TP1$ mv figure.png Q1_figure.pngVous pouvez éventuellement ranger vos fichiers dans un répertoire spécifique
etudiant:~/mon_nom/tp_htrdr-atmosphere/TP1$ mkdir ciel_clair
etudiant:~/mon_nom/tp_htrdr-atmosphere/TP1$ mv *.png *.dat *.ht *.out ciel_clair
Question 1 : Comment évolue le flux de surface avec l'angle solaire ?
=> copier le script loop_htrdr.sh en Q1_loop_htrdr.sh et le modifier pour
faire des calculs avec des angles solaires allant de 10 degrés au dessus de
l'horizon, jusqu'à 90 degrés (soleil au zenith) et tracer la courbe de flux en
fonction de l'angle solaire.
Question 2 : Comment est distribué le flux solaire spectralement ?
=> copier le script loop_htrdr.sh en Q2_loop_htrdr.sh et le modifier pour
faire des calculs sur différentes bandes spectrales et tracer la courbe de flux
en fonction des bandes spectrales.
Question 3 : Comment évolue le flux de surface avec l'albedo de la surface ?
=> copier le script loop_htrdr.sh en Q3_loop_htrdr.sh et le modifier pour
faire des calculs avec les différentes surfaces disponibles dans data/ et
tracer la courbe de flux en fonction de l'albedo de surface.
TP3 - Partie 3 : run htrdr-atmosphere en ciel nuageux
Partie 3.0 : description des fichiers de données nuages
On va ajouter des nuages aux simulations précédentes. En regardant de nouveau
dans le répertoire data, on trouve des fichiers *.nc et *.htcp. Le fichier
.htcp est écrit dans un format propre à htrdr. Il contient la donnée
décrivant les champ 3D de concentration en eau nuageuse (gouttelettes en
suspension) et en vapeur d'eau, ainsi que de température et pression, dans la
partie nuageuse du domaine. Le fichier *.nc qui porte le même nom contient
ces mêmes données dans un fichier netCDF. Le fichier Mie_LUT_Clouds.nc
contient les propriétés radiatives des gouttelettes nuageuses issues de
précalculs de Mie et tabulées dans un fichier netCDF.
netCDF
Le format netCDF est un format standard de la communauté des géosciences.
https://www.unidata.ucar.edu/software/netcdf
Il existe des interfaces de programmation en C et divers langages, ainsi que
des utilitaires en ligne de commande, commencdumpetncgenqui
permettent de convertir du format netCDF en ascii et vice-versa, ouncap2
qui permet de faire des calculs sur les champs du fichier.
On peut afficher les métadonnées du fichier data/Mie_LUT_Clouds.nc :
ncdump -h data/Mie_LUT_Clouds.nc
et les valeurs de la variable lambda c'est à dire les longueurs d'ondes pour lesquelles on dispose des données de Mie tabulées :
ncdump -v lambda data/Mie_LUT_Clouds.nc
On peut également étudier le fichier décrivant les nuages
ncdump data/cubic_cloud.nc
Les variables S_N_direction et W_E_direction donnent les coordonnées des
centres de mailles sur l'horizontale, en kilomètre : 1, 3 et 5. Par convention,
le maillage horizontal est régulier. On a donc un domaine de 6 km de côté,
composé de 3 x 3 colonnes. Les coordonnées verticales sont décrites par
vertical_levels. Le maillage vertical peut être irrégulier mais dans notre
cas, il est régulier, avec les milieux de couches à 0.5, 1.5, 2.5 et 3.5 km,
soit un domaine de 4 km de haut avec des couches de 1 km d'épaisseur. La
variable RCT donne la concentration en eau nuageuse : on a une seule maille
nuageuse dans le domaine, au milieu de la deuxième couche. On a donc un nuage
cubique de 2x2x1 km^3, ce qui est environ la taille caractéristique d'un gros
cumulus.
Remarque
Ici on a directement fourni le fichier au format
htcpqui est celui attendu
parhtrdr-atmosphere. Pour créer un fichierhtcpà partir d'un fichier
netCDFon peut utiliser l'utilitaireles2htcpfourni avechtrdr:
etudiant:~$ les2htcp -m 1000 -o clouds.htcp -i clouds.nc
Partie 3.1 : premiers calculs de flux avec nuages
On reprend la commande htrdr-atmosphere de la partie 2, en ajoutant les
options permettant d'ajouter les nuages à la description du système physique
simulé : l'option -c suivie du nom du fichier htcp et l'option -m suivie du
nom du fichier de Mie. On place le capteur (option -p) en surface au milieu du
domaine (pos=3000,3000,0) et on vise vers le haut (tgt=3000,3000,1), et on
intègre sur tout la surface du domaine (sz=6000,6000).
htrdr-atmosphere -vf \
-a data/clear_sky_opt_prop_SMLSATM.txt \
-c data/cubic_cloud.htcp \
-m data/Mie_LUT_Clouds.nc \
-s sw=200,4000 \
-Rg data/plane0.obj \
-M data/grounds.mtls \
-p pos=3000,3000,0:tgt=3000,3000,1:sz=6000,6000 \
-i spp=128 \
-o flux_one_cloud_128spp.ht \
2>&1|tee log_htrdr.out
Comparer la valeur de flux obtenu par rapport au calcul réalisé précédemment en ciel clair et expliquer.
Remarque :
Comme dans la partie 2, le système était 1D (variations uniquement sur la
verticale), la position et l'extension horizontale du capteur n'avaient pas
d'effet sur le résultat. On peut donc reprendre les résultats de la partie
précédente et les comparer directement avec les résultats en ciel nuageux,
même si on a changé les propriétés du capteur. Pour s'en convaincre, refaire
un calcul en ciel clair pour un capteur plus petit (sz=1,1) et comparer aux
résultats obtenus à la partie 2.
On va reprendre le calcul précédent en ajoutant l'option -r qui permet de
répéter le motif nuageux sur l'horizontale. On a ainsi construit l'équivalent
d'un champ de cumulus à partir d'un seul nuage cubique.
htrdr-atmosphere -vf \
-a data/clear_sky_opt_prop_SMLSATM.txt \
-r -c data/cubic_cloud.htcp \
-m data/Mie_LUT_Clouds.nc \
-s sw=200,4000 \
-Rg data/plane0.obj \
-M data/grounds.mtls \
-p pos=3000,3000,0:tgt=3000,3000,1:sz=6000,6000 \
-i spp=128 \
-o flux_cloudy_sky_128spp.ht \
2>&1|tee log_htrdr.out
Comparer les temps de calcul et les flux estimés par rapport au calcul réalisé précédemment avec un seul nuage non répété et expliquer.
Partie 3.2 : expériences de sensibilité avec nuages
Reprendre les expériences de sensibilités effectuées en ciel clair (Q1, Q2, Q3 de la partie 2) et les refaire en présence de nuages. Comparer la sensibilité des flux aux différents paramètres en ciel clair vs. en présence de nuages.