HighTune 1D => 3D : tuning 3D de LMDZ contraint par le 1D
0/ Partir du tuning 1D
Lancer N vagues de tuning 1D avec des métriques 1D avec les mêmes paramètres qui seront utilisés en 1D et en 3D.
Le nombre de simulations (jeu de valeurs des paramètres) est 10*le nombre de paramètres utiles.
1/ Préparer les paramètres de la vague 3D à partir du 1D
A partir de la vague N, on introduit le 3D pour refaire le modèle réduit de la vague N et choisir les paramètres des simulations de la vague N+1 par un crible aléatoire du domaine des valeurs admissibles.
Avec par exemple N=8 et 20 paramètres :
Lancer la vague 8 en 1D : avec multi_art.sh
.
2/ préparer les physiq.def des simulations 3D avec les paramètres obtenus du 1D
Récupérer les jeux de paramètres depuis WORK/MONEXPE/WAVE8/CAS1D/REF/DEF :
il s'agit des fichiers
physiq.def_SCM_8-001 à 200.
On va les copier sur le super calculateur (ici Jean-Zay)
Le répertoire doit aussi contenir le physiq.def de la simulation de référence (physiq.def_NPv6.1)On va relancer des simulations en 3D avec ces valeurs de paramètres a partir d'une installation 3D tutorial_prod.On copie dans DEF/PHYS de l'installation tutorial_prod les 200
physiq.def_SCM_8-001 200 et physiq.def_NPv6.1. (modifié)
3/ préparer le script des simulations 3D
On modifie main.sh
pour exécuter les 201 simulations.
Dans main.sh :
resol=96x95x59 (a adapter selon sa config avec le bon L??.def pour les niveaux verticaux).Valoriser init, mthini and mthend comme voulu.mettre dans physics la simulation de reference :
physics="NPv6.1"rentrer la liste des 200 simulations dans physics :
smin=1 smax=200 for s in $(seq -f "%03g" $smin $smax) ; do physics="$physics SCM_8-$s" ; done
La boucle for suivante (dans main.sh) va parcourir les valeurs de physics et lancer les simulations.
for phys in $physics ; do sed -e 's/ifl_pbltree=1/ifl_pbltree=0/' DEF/PHYS/physiq.def_$phys >| DEF/physiq.def # name of simulation. Equal to $phys by default name=$phys ./setup.sh -d $resol -f $freq -v $version -name $name $svn $install -init $init $cosp $xios -mthini $mthini -mthend $mthend $nudging -climato $climato if [ $init = 1 ] ; then init=0 ; fi # init=1 is possible only for the first simulation done
4/ Mettre à jour le projet de calcul
modifier lmdz_env.sh
pour calculer sur le bon projet :
groupe=nfl dans jean-) pour calculer sur le projet nfl.
jean-) ARCH=X64_JEANZAY module purge compilo=19.0.4 # available 2013.0, 2017.2 module load intel-compilers/$compilo #module load intel-mpi/$compilo module load intel-mkl/$compilo module load hdf5/1.10.5-mpi module load netcdf/4.7.2-mpi module load netcdf-fortran/4.5.2-mpi module load subversion/1.9.7 module load nco module load cdo login=`whoami` ; groupe=`echo $login | cut -c2-4` groupe=nfl # Inputation de la consommation sur le groupe $groupe # changer la variable groupe pour imputer sur un autre groupe # que celui de son compte # Par exemple # groupe=lmd ...
5/ Lancer les simulations 3D
./main.sh
6/ Post traitement
Editer postseason.sh
pour lancer le post-traitement de l'ensemble de simulations.
Ici on a inclut la simulation de référence qui peut être omise dans les vagues successive de 3D :
sims="NPv6.1precliq" smin=1 smax=200 wave=8 for s in $( seq -f "%03g" $smin $smax ) ; do sims="$sims SCM_${wave}-$s" ; done for s in $sims ; do ./seasonal.sh $s ; done
7/ Transfert des fichiers sur ciclad
Dans un répertoire personnel utiliser monget.sh
pour rapatrier les fichiers du 3D :
login=rces982 main=TNAMA if [ $main = "TNAMA" ] ; then sims="NPv6.1precliq" min=1 max=200 wave=8 for nb in $( seq -f "%03g" $min $max) ; do sims="$sims SCM_${wave}-$nb" ; done elif [ ${main:0:7} = TUNE_II ] ; then wave=32 sims="NPv6.1 " sims="CTRL" for i in `seq -w 1 90` ; do sims="$sims SCM_${wave}-0$i" ; done else echo main $main non prevu ; exit fi for i in $sims ; do ./get.sh $main $i $login chmod -R a+Xr SN${main}${i}* done
monget.sh
utilise rsync en appelant le script get.sh
pour récupérer les fichiers sur jean-zay
8/ liens symbolique de SCM-8- vers SCM_8-
Pour pouvoir lancer le multi_atlas il faut remplacer _ par - dans le nom des fichiers.
On utilise le script to-.sh
#!/bin/bash
local=
pwd
wave=8
for old in SN*SCM_${wave}* ; do
new=
echo $old | sed -e 's/_/-/g'
; echo $old $new
for dir in SE TS_DA ; do
if [ -d $local/$old/ATM/Analyse/$dir ] ; then
cd $local/$old/ATM/Analyse/$dir
echo Traitement $local/$old/ATM/Analyse/$dir
mkdir -p $local/$new/ATM/Analyse/$dir
for file in *nc ; do
cd $local/$new/ATM/Analyse/$dir
ln -s $local/$old/ATM/Analyse/$dir/$file ./
echo $file | sed -e 's/'$old'/'$new'/'
done
fi
done
done
9/ Préparation du multi atlas
Créer un fichier nd.comp avec les simulations voulues pour le multiatlas et
les valeurs de paramètres correspondantes en copiant Par1D_Wave8.asc à partir de
WORK/SIMU1D/WAVE8/ dans nd.${main}_W$wave par exemple nd.TNAMA_W8
enlever les " de nd.TNAMA_W8 :
sed -i 's/"g' nd.TNAMA_W8
remplacer SCM_8 par SCM-8 pour les noms de simulation :
sed -i 's/SCM_/SCM-/' nd.TNAMA_W8
mettre OK à la fin des lignes contenant les paramètres de simulations :
sed -i '2,$ s/$/ OK/' nd.TNAMA_W8
mettre nd.TNAMA_W8 sur fabric@ciclad dans le répertoire de lancement de min.sh.
Choisir les simulations à traiter dans min.sh :
main=TNAMA
wave=8
comp=${main}_W$wave
multi=/prodigfs/ipslfs/dods/fabric/lmdz/MultiSimu/$comp
years=2011_2011
Activer dans min.sh les sorties du multiatlas :
cmor=1
atlas=1
tuning=1
zon=1
axe2=1
html=1
Lancer ./min.sh
vérifier que les atlas sont terminés :
qstat | grep fabric
une fois les atlas terminés relancer ./min.sh
10/ métriques 3D
Récupérer les fichiers 3D sur la machine des simulations 1D :
Dans un dossier 3D créer un dossier pour la vague 8 : TNAMAW8
Récupérer get.sh, to.sh post_scores.sh pp.sh et prepa.sh
Modifier get.sh :
#!/bin/bash
wave=8
main_multi=TNAMA_W${wave}
main_sims=SNTNAMA
years=2011_2011
years_ctrl=2001_2001
Lancer ./get.sh
une fois les fichiers récupérés
Calculer les métriques 3D avec to.sh :
copier nd.TNAMA_W8 et les paramètres utilisés pour le tuning 1D ici param_AMA2020 :
WDENSO 1.e-11 1.e-8 1.e-9 log
ALPBLK 0.2 0.8 0.5 linear
ALPWKK 0.01 0.5 0.25 linear
CLDLC 0.0001 0.001 0.00065 linear
CLDCV 0.5 3. 1.0 log
...
modifier to.sh :
waves=8
EXPE=TNAMA
ROOTCTRL=FHSERIE8CTRL
period=2011_2011
param_file=param_AMA2020
Lancer ./to.sh
Une fois les métriques tracées et visualisées calculer les scores.
Calculer les scores de métriques avec post_scores.sh
Copier metrics.csv et obs.csv depuis WRKLR8.
Ajouter la ligne des tolérances dans obs.csv :
VAR,0.04,25,25,25,25,100,100,25,25,100,25,0.1,0.005,0.04,0.25,0.25,0.25
(cf prepa.sh ligne 28)
Modifier post_scores.sh :
wavemin=8
wavemax=8
Lancer ./post_scores.sh
Visualiser les scores de métriques pour la vague 8 :
Modifier pp.sh pour ajouter les métriques utilisées :
xmgrace -legend load glob.rt glob.rsut etoa.rsut circAa.rlut circAa.rsut conv.rlut conv.rsut weak.rlut weak.rsut subs.rlut subs.rsut MJO ">50" AMMA PANET.pr OCEMAR.pr CONMAR.pr -log y -hardcopy -hdevice EPS -printfile tmp.eps -param param
Lancer ./pp.sh
11/ réunir les métriques 3D et 1D
récupérer htune_csv.R
modifier prepa.sh :
ORIG=TNAMA (répertoire 1D vague 8)
NEW=TNAMA1D3D_W8 (répertoire de travail)
w0=8 (vague 1D+3D)
MAIN=~/HTCINDYWK/R194/HighTune/WORK
...
echo "VAR,0.04,25,25,25,25,100,100,25,25,100,25,0.1,0.005,0.04,0.25,0.25,0.25" >> obs.csv
(vérifier la consistance avec obs.csv)
ligne 37 et ligne 55, remplacer grep $i par:
grep ${i/-/_}
our travailler sur SCM_ et pas SCM-
Lancer ./prepa.sh