wiki:TuningMixte

Version 7 (modified by Sebastien Nguyen, 4 years ago) (diff)

--

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 rappatrier 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

Mon get utilise rsync par le script get.sh pour récupérer les fichier 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

12/ générer l'émulateur et la prochaine vague