Changeset 4954 for BOL/LMDZ_Setup_amaury
- Timestamp:
- May 27, 2024, 11:33:04 AM (6 months ago)
- Location:
- BOL/LMDZ_Setup_amaury
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
BOL/LMDZ_Setup_amaury/main.sh
r4940 r4954 39 39 # Version of the tar file on https://lmdz.lmd.jussieu.fr/pub/src 40 40 # Last "testing" version, thoroughly checked by the LMDZ team : contains LMDZ rev 4729 (2023-10-22) 41 # TODO move to expert-level settings 41 # TODO move to expert-level settings ? 42 42 version="20240308.trunk" #!! DON'T CHANGE IT WITHOUT CHECKING WITH LMDZ TEAM !! 43 43 svn="" #!! DON'T CHANGE IT WITHOUT CHECKING WITH LMDZ TEAM !! … … 48 48 # Grid number of points IMxJMxLM 49 49 resol="144x142x79" 50 51 # Whether to install the model: "-install" to install the model, else ""52 install="-install"53 50 54 51 # Using XIOS for IOs: "-xios" for enabled, else "" … … 133 130 # launching setup.sh with the options defined in this main.sh. 134 131 # Remember: some other options are only available in lmdz_env.sh and setup.sh. 135 # TODO clarifier la diff entre $phys et $lmd_phys ?136 ./setup.sh -v "$version" "$svn" -d "$resol" "$install" "$cosp" "$xios" -init "$init" -climato "$climato" "$nudging" -f "$freq" -mthini "$mthini" -mthend "$mthend" -p "$lmd_phys" -name "$name"132 # shellcheck disable=SC2086 133 ./setup.sh -v "$version" -d "$resol" -mthini "$mthini" -mthend "$mthend" -init "$init" -climato "$climato" -f "$freq" -p "$lmd_phys" -name "$name" $cosp $xios $nudging $svn 137 134 else 138 135 echo "File $deffile inexistent"; exit 1 -
BOL/LMDZ_Setup_amaury/setup.sh
r4953 r4954 69 69 70 70 function load_install_lib { 71 # Fetch and source install_lmdz.sh 71 # Fetch and source install_lmdz.sh to get `myget` 72 72 if [[ ! -f "install_lmdz.sh" ]]; then 73 73 wget "http://svn.lmd.jussieu.fr/LMDZ/BOL/script_install_amaury/install_lmdz.sh" # TODO change to normal branch once ready … … 103 103 104 104 LIMIT="LIMIT" 105 106 ###################################################################### 107 # Choix du nombre de processeurs 108 # NOTES : 109 # omp=8 by default (for Jean-Zay must be a divisor of 40 procs/node), but we need 110 # omp=1 for SPLA (only MPI parallelisation) 111 # omp=2 for veget=CMIP6 beacause of a bug in ORCHIDEE/src_xml/xios_orchidee.f90 112 ###################################################################### 113 jm=$(echo "$resol" | cut -dx -f2) 114 (( mpi = ( jm + 1 ) / 2 )) 115 omp=8 116 if [[ $aerosols = "spla" ]]; then omp=1; fi 117 if [[ $veget = "CMIP6" && $xios = "y" ]]; then omp=2; fi 118 if [[ $mpi -gt $NB_MPI_MAX ]]; then mpi=$NB_MPI_MAX; fi 119 if [[ $omp -gt $NB_OMP_MAX ]]; then omp=$NB_OMP_MAX; fi 120 121 case $rad in 122 oldrad) iflag_rrtm=0; NSW=2;; 123 rrtm) iflag_rrtm=1; NSW=6;; 124 ecrad) iflag_rrtm=2; NSW=6;; 125 esac 105 126 } 106 127 … … 111 132 setup.sh can be launched/driven by main.sh; some options can only be specified in setup.sh (ex: veget, aerosols). 112 133 setup.sh [-v version] [-r svn_release] [-init INIT] [-d 96x95x79] [-f mo] [-nudging] 113 "version" like 20150828.trunk; see https://lmdz.lmd.jussieu.fr/Distrib/LISMOI.trunk (default <$version>)114 "svn_release" either the svn release number or "last" (default <$svn>)134 -v "version" like 20150828.trunk; see https://lmdz.lmd.jussieu.fr/Distrib/LISMOI.trunk (default <$version>) 135 -r "svn_release" either the svn release number or "last" (default <$svn>) 115 136 -d IMxJMxLM to run in resolution IM x JM x LM (default <$resol>) 116 137 -install pour installer et compiler le modele … … 138 159 "-mthini") mthini=$2; shift; shift;; 139 160 "-mthend") mthend=$2; shift; shift;; 140 *) $0 -h; exit161 *) echo "unexpected $1"; $0 -h; exit 141 162 esac 142 163 done … … 206 227 ./install_lmdz_options.$$.sh 207 228 mv install_lmdz.sh install_lmdz.$$.sh 208 cd - 229 cd "$local" 230 } 231 232 function setup_def { # modify various .def (+ xios xml as needed) 233 cd "$local" 234 235 # Utilisation des .def_iso pour LMDZ-ISOtopes 236 if [[ $phylmd = "lmdiso" ]]; then 237 for file_iso in $(ls DEF | grep _iso); do 238 cp DEF/"$file_iso" DEF/"${file_iso%%_iso}" 239 done 240 fi 241 242 ###################################################################### 243 # Choix de la grille verticale 244 ###################################################################### 245 lm=$(echo "$resol" | cut -dx -f3) 246 if [ ! -f "DEF/L$lm.def" ]; then 247 echo "STOP: Résolution verticale non prévue - créer un fichier DEF/L$lm.def"; exit 1 248 else 249 sed -i'' -e "s/INCLUDEDEF=L.*.def/INCLUDEDEF=L$lm.def/" DEF/run.def 250 fi 251 252 ###################################################################### 253 # Changements dans les fichiers DEF/*def 254 # (ils vont se repercuter dans les repertoires de simulation $local/$SIM et de run $WRK) 255 ###################################################################### 256 257 # Choix du fichier traceur.def coherent avec l'option "aerosols" 258 # NOTE : Le nouveau tracer.def_nospla par defaut n'inclut pas Rn-Pb; 259 # si on les veut, il faut utiliser ci-dessous; a la place, tracer_RN_PB.def 260 #--------------------------------------------------------------------- 261 # NB: Si on change de traceur.def (entre spla et nospla), il faut refaire l'etape "initialisation" (ce0l)? 262 # Normalement les traceurs absents de start* files sont initialises=0 dans le code; verifier pour spla ! 263 if [[ $aerosols = "spla" ]]; then 264 # ancien traceur pour l instant 265 cp DEF/traceur.def_spla DEF/traceur.def 266 elif [[ $phylmd = "lmdiso" ]]; then 267 # nouveau traceur , déjà copié si 'y' 268 cp DEF/tracer.def_nospla DEF/tracer.def 269 fi 270 271 # TEMPORAIREMENT pour spla on force l'utilisation de gcm.def_zNAfrica_BiJe (avec resolution 128x88x79) 272 #---------------------------------------------------------------------- 273 if [[ $aerosols = spla ]]; then cp DEF/gcm.def_zNAfrica_BiJe DEF/gcm.def; fi 274 275 # Inscription du choix ok_guide dans DEF/guide.def 276 #--------------------------------------------------------------------- 277 sed -i'' -e 's/ok_guide=.*.$/ok_guide='$ok_guide'/' DEF/guide.def 278 279 # Inscription du type de calendrier (qui est fonction de $climato) dans DEF/run.def 280 #--------------------------------------------------------------------- 281 # NB Contrairement a ce qui est ecrit dans les fichiers run.def standard, 282 # dans ce tutorial le choix earth_365d n'est pas disponible, et earth_366d s'appelle gregorian 283 if [[ $climato = 0 ]]; then calend="gregorian"; else calend="earth_360d"; fi 284 sed -i'' -e 's/calend=.*.$/calend='$calend'/' DEF/run.def 285 286 # Changements dans config.def (pre-choisi, et regle pour output si utilisation avec IOIPSL) 287 # cf options veget, aerosols, cosp, xios 288 #--------------------------------------------------------------------- 289 if [[ $veget = NONE ]]; then VEGET="n"; else VEGET="y"; fi 290 sed -i'' -e 's/VEGET=.*.$/VEGET='$VEGET'/' DEF/config.def 291 292 if [[ $aerosols = "n" ]]; then 293 # set flag_aerosols=0 and flags ok_ade&co=n 294 sed -i'' -e 's/^ok_cdnc=.*.$/ok_cdnc=n/' -e 's/^ok_ade=.*.$/ok_ade=n/' -e 's/^ok_aie=.*.$/ok_aie=n/' -e 's/^ok_alw=.*.$/ok_alw=n/' -e 's/^flag_aerosol=.*.$/flag_aerosol=0/' DEF/config.def 295 fi 296 297 # COSP : ok_cosp desactive COSP si on a compile avec; il ne l'active pas si on a compile sans 298 sed -i'' -e 's/ok_cosp.*.$/ok_cosp='$cosp'/' DEF/config.def 299 if [[ $cosp = "y" ]]; then \cp -f "$MODEL"/DefLists/cosp*.txt "$local"/DEF/; fi 300 301 # Sorties LMDZ en fonction de l'option "xios" 302 sed -i'' -e 's/ok_all_xml=.*.$/ok_all_xml='$xios'/' DEF/config.def 303 304 # Ajuster physiq.def en fonction de radiative code (default: values for rad=rrtm) 305 # Pour isotopes=y , mettre iflag_ice_thermo=0 au lieu de 1 306 #--------------------------------------------------------------------- 307 sed -i'' -e 's/iflag_rrtm=.*.$/iflag_rrtm='"$iflag_rrtm"'/' -e 's/NSW=.*.$/NSW='"$NSW"'/' DEF/physiq.def 308 sed -i'' -e 's:directory_name.*$:directory_name="'"$local"'/ecrad_data",:' DEF/namelist_ecrad 309 310 if [[ $phylmd = "lmdiso" ]]; then iflag_ice_thermo=0; else iflag_ice_thermo=1; fi 311 sed -i -e 's/iflag_ice_thermo=.*.$/iflag_ice_thermo='$iflag_ice_thermo'/' DEF/physiq.def 312 313 # Choix de orchidee.def en fonction de orchidee_rev; modification pour xios 314 # NOTE separate orchidee_pft.def file for ORCHIDEE trunk post-CMIP6 315 #--------------------------------------------------------------------- 316 orchidee_def=orchidee.def_6.1 317 orchidee_pft_def="" 318 if [[ $veget = "7983" ]]; then 319 orchidee_def=orchidee.def_6.2work 320 elif [[ $veget = "7994" ]]; then 321 orchidee_def=orchidee.def_6.4work 322 orchidee_pft_def=orchidee_pft.def_6.4work 323 if ! grep "INCLUDEDEF=orchidee_pft.def" DEF/run.def; then 324 sed -i'' -e 's/INCLUDEDEF=orchidee.def/INCLUDEDEF=orchidee.def\nINCLUDEDEF=orchidee_pft.def/' DEF/run.def; fi 325 fi 326 cp -f DEF/$orchidee_def DEF/orchidee.def 327 if [[ $orchidee_pft_def != "" ]]; then cp -f DEF/$orchidee_pft_def DEF/orchidee_pft.def; fi 328 329 # Only for veget=CMIP6 it is still possible to use IOIPSL; newer versions of orchidee.def have XIOS_ORCHIDEE_OK = y 330 sed -i'' -e 's/XIOS_ORCHIDEE_OK =.*.$/XIOS_ORCHIDEE_OK = '$xios'/' DEF/orchidee.def 331 332 ###################################################################### 333 # Si on tourne avec XIOS, mise a jour des fichiers context et field* dans XMLfilesLMDZ 334 # (ils vont se repercuter dans les repertoires de simulation $local/$SIM et de run $WRK) 335 ###################################################################### 336 if [[ $xios = y ]]; then 337 cp -f "$MODEL"/DefLists/context_lmdz.xml "$local"/DEF/XMLfilesLMDZ/. 338 cp -f "$MODEL"/DefLists/field_def_lmdz.xml "$local"/DEF/XMLfilesLMDZ/. 339 if [[ $cosp = y ]]; then cp -f "$MODEL"/DefLists/field_def_cosp1.xml "$local"/DEF/XMLfilesLMDZ/.; fi 340 fi 341 } 342 343 function setup_init { # Verification de l'existance de l'état initial et compilation eventuelle pour sa creation 344 if [[ ! -d $INIT ]]; then 345 if [[ $init = 0 ]]; then 346 echo "STOP: Récuperer les repertoires $INIT ou lancer avec option -init"; exit 1 347 else 348 # Compile ce0l 349 cd "$MODEL" 350 sed -e 's/gcm$/ce0l/' compile.sh > compile_ce0l.sh; chmod +x compile_ce0l.sh 351 echo "Compiling ce0l" 352 if ! ./compile_ce0l.sh &> ce0l.log; then echo "STOP: ce0l compilation failed, see $MODEL/ce0l.log"; exit 1; fi 353 echo "Compiled ce0l" 354 355 cd "$local" 356 fi 357 elif [[ $init = 1 ]]; then 358 echo "STOP: Vous essayez d initialiser le modele mais $INIT existe deja"; exit 1 359 fi 209 360 } 210 361 … … 223 374 ensure_correct_option_combinations 224 375 install_model 376 setup_def 377 setup_init 225 378 226 379 exit 1 … … 230 383 #------------------------------------------------------- 231 384 if [[ $rad = "ecrad" && ! -d ecrad_data ]]; then 232 cd $local; wget https://lmdz.lmd.jussieu.fr/pub/3DInputData/ecrad/ecrad_data.tar; tar xvf ecrad_data.tar; cd - 233 fi 234 235 if [ "$rad" = "ecrad" -a "$aerosols" != "n" -a "$mysvn" -lt 4489 ] ; then echo "Les aerosols tropospheriques ne sont pas pris en charge par ecrad avant LMDZ rev 4489, ici rev est $mysvn"; exit 1; fi 236 237 238 ###################################################################### 239 # Choix du nombre de processeurs 240 # NOTES : 241 # omp=8 by default (for Jean-Zay must be a divisor of 40 procs/node), but we need 242 # omp=1 for SPLA (only MPI parallelisation) 243 # omp=2 for veget=CMIP6 beacause of a bug in ORCHIDEE/src_xml/xios_orchidee.f90 244 ###################################################################### 245 246 cd "$local" 247 248 jm=$(echo "$resol" | cut -dx -f2) 249 (( mpi = ( jm + 1 ) / 2 )) 250 omp=8 251 if [[ $aerosols = "spla" ]]; then omp=1; fi 252 if [[ $veget = "CMIP6" && $xios = "y" ]]; then omp=2; fi 253 if [[ $mpi -gt $NB_MPI_MAX ]]; then mpi=$NB_MPI_MAX; fi 254 if [[ $omp -gt $NB_OMP_MAX ]]; then omp=$NB_OMP_MAX; fi 255 256 # Utilisation des .def_iso pour LMDZ-ISOtopes 257 if [[ $phylmd = "lmdiso" ]]; then 258 for file_iso in $(ls DEF | grep _iso); do 259 cp DEF/"$file_iso" DEF/"${file_iso%%_iso}" 260 done 261 fi 262 263 ###################################################################### 264 # Choix de la grille verticale 265 ###################################################################### 266 lm=$(echo "$resol" | cut -dx -f3) 267 if [ ! -f "DEF/L$lm.def" ]; then 268 echo "STOP: Résolution verticale non prévue - créer un fichier DEF/L$lm.def"; exit 1 269 else 270 sed -i'' -e "s/INCLUDEDEF=L.*.def/INCLUDEDEF=L$lm.def/" DEF/run.def 271 fi 272 273 ###################################################################### 274 # Changements dans les fichiers DEF/*def 275 # (ils vont se repercuter dans les repertoires de simulation $local/$SIM et de run $WRK) 276 ###################################################################### 277 278 # Choix du fichier traceur.def coherent avec l'option "aerosols" 279 # NOTE : Le nouveau tracer.def_nospla par defaut n'inclut pas Rn-Pb; 280 # si on les veut, il faut utiliser ci-dessous; a la place, tracer_RN_PB.def 281 #--------------------------------------------------------------------- 282 # NB: Si on change de traceur.def (entre spla et nospla), il faut refaire l'etape "initialisation" (ce0l)? 283 # Normalement les traceurs absents de start* files sont initialises=0 dans le code; verifier pour spla ! 284 if [[ $aerosols = "spla" ]]; then 285 # ancien traceur pour l instant 286 cp DEF/traceur.def_spla DEF/traceur.def 287 elif [[ $phylmd = "lmdiso" ]]; then 288 # nouveau traceur , déjà copié si 'y' 289 cp DEF/tracer.def_nospla DEF/tracer.def 290 fi 291 292 # TEMPORAIREMENT pour spla on force l'utilisation de gcm.def_zNAfrica_BiJe (avec resolution 128x88x79) 293 #---------------------------------------------------------------------- 294 if [[ $aerosols = spla ]]; then cp DEF/gcm.def_zNAfrica_BiJe DEF/gcm.def; fi 295 296 # Inscription du choix ok_guide dans DEF/guide.def 297 #--------------------------------------------------------------------- 298 sed -i -e 's/ok_guide=.*.$/ok_guide='$ok_guide'/' DEF/guide.def 299 300 # Inscription du type de calendrier (qui est fonction de $climato) dans DEF/run.def 301 #--------------------------------------------------------------------- 302 # NB Contrairement a ce qui est ecrit dans les fichiers run.def standard, 303 # dans ce tutorial le choix earth_365d n'est pas disponible, et earth_366d s'appelle gregorian 304 if [ $climato = 0 ]; then calend=gregorian; else calend=earth_360d; fi 305 sed -i -e 's/calend=.*.$/calend='$calend'/' DEF/run.def 306 307 # Changements dans config.def (pre-choisi, et regle pour output si utilisation avec IOIPSL) 308 # cf options veget, aerosols, cosp, xios 309 #--------------------------------------------------------------------- 310 if [ $veget = NONE ]; then VEGET=n; else VEGET=y; fi 311 sed -i -e 's/VEGET=.*.$/VEGET='$VEGET'/' DEF/config.def 312 313 if [ $aerosols = n ]; then 314 # set flag_aerosols=0 and flags ok_ade&co=n 315 sed -i'' -e 's/^ok_cdnc=.*.$/ok_cdnc=n/' -e 's/^ok_ade=.*.$/ok_ade=n/' -e 's/^ok_aie=.*.$/ok_aie=n/' -e 's/^ok_alw=.*.$/ok_alw=n/' -e 's/^flag_aerosol=.*.$/flag_aerosol=0/' DEF/config.def 316 fi 317 318 # COSP : ok_cosp desactive COSP si on a compile avec; il ne l'active pas si on a compile sans 319 sed -i -e 's/ok_cosp.*.$/ok_cosp='$cosp'/' DEF/config.def 320 if [ $cosp = y ]; then \cp -f $MODEL/DefLists/cosp*.txt $local/DEF/; fi 321 322 # Sorties LMDZ en fonction de l'option "xios" 323 sed -i'' -e 's/ok_all_xml=.*.$/ok_all_xml='$xios'/' DEF/config.def 324 325 # Ajuster physiq.def en fonction de radiative code (default: values for rad=rrtm) 326 # Pour isotopes=y , mettre iflag_ice_thermo=0 au lieu de 1 327 #--------------------------------------------------------------------- 328 sed -i'' -e 's/iflag_rrtm=.*.$/iflag_rrtm='$iflag_rrtm'/' -e 's/NSW=.*.$/NSW='$NSW'/' DEF/physiq.def 329 pwd 330 sed -i'' -e 's:directory_name.*$:directory_name="'$local'/ecrad_data",:' DEF/namelist_ecrad 331 332 if [ $isotopes = y ]; then iflag_ice_thermo=0; else iflag_ice_thermo=1; fi 333 sed -i -e 's/iflag_ice_thermo=.*.$/iflag_ice_thermo='$iflag_ice_thermo'/' DEF/physiq.def 334 335 # Choix de orchidee.def en fonction de orchidee_rev; modification pour xios 336 # NOTE separate orchidee_pft.def file for ORCHIDEE trunk post-CMIP6 337 #--------------------------------------------------------------------- 338 orchidee_def=orchidee.def_6.1 339 orchidee_pft_def="" 340 if [ $veget = "7983" ]; then 341 orchidee_def=orchidee.def_6.2work 342 elif [ $veget = "7994" ]; then 343 orchidee_def=orchidee.def_6.4work 344 orchidee_pft_def=orchidee_pft.def_6.4work 345 if ! grep "INCLUDEDEF=orchidee_pft.def" DEF/run.def; then 346 sed -i'' -e 's/INCLUDEDEF=orchidee.def/INCLUDEDEF=orchidee.def\nINCLUDEDEF=orchidee_pft.def/' DEF/run.def; fi 347 fi 348 \cp -f DEF/$orchidee_def DEF/orchidee.def 349 if [ "$orchidee_pft_def" != "" ]; then \cp -f DEF/$orchidee_pft_def DEF/orchidee_pft.def; fi 350 351 # Only for veget=CMIP6 it is still possible to use IOIPSL; newer versions of orchidee.def have XIOS_ORCHIDEE_OK = y 352 sed -i'' -e 's/XIOS_ORCHIDEE_OK =.*.$/XIOS_ORCHIDEE_OK = '$xios'/' DEF/orchidee.def 353 354 355 ###################################################################### 356 # Si on tourne avec XIOS, mise a jour des fichiers context et field* dans XMLfilesLMDZ 357 # (ils vont se repercuter dans les repertoires de simulation $local/$SIM et de run $WRK) 358 ###################################################################### 359 if [ $xios = y ]; then 360 \cp -f $MODEL/DefLists/context_lmdz.xml $local/DEF/XMLfilesLMDZ/. 361 \cp -f $MODEL/DefLists/field_def_lmdz.xml $local/DEF/XMLfilesLMDZ/. 362 if [ $cosp = y ]; then \cp -f $MODEL/DefLists/field_def_cosp1.xml $local/DEF/XMLfilesLMDZ/.; fi 363 fi 364 365 366 ###################################################################### 367 # Verification de l'existance de l'etat initial et compilation eventuelle 368 # pour sa creation 369 ###################################################################### 370 if [ ! -d $INIT ]; then 371 if [ $init = 0 ]; then 372 echo Recuperer les repertoires $INIT ou lancer avec option -init; exit 373 else 374 ce0l=$MODEL/bin/ce0l${suffix}.e 375 echo $ce0l 376 377 # Test if $ce0l exists (it may be the case if you use a model configuration already installed and compiled) 378 if [ ! -f $ce0l ]; then 379 echo L executable $ce0l n existe pas 380 echo il va se compiler automatiquement sur $MODEL 381 sleep 10 382 383 $local/compile.sh ce0l 384 fi 385 386 if [ ! -f $ce0l ]; then echo la compilation de $ce0l a echoue; exit; fi 387 388 cd $local 389 fi 390 elif [ $init = 1 ]; then 391 echo Vous essayez d initialiser le modele mais $INIT existe deja 392 exit 393 fi 385 cd "$local"; wget https://lmdz.lmd.jussieu.fr/pub/3DInputData/ecrad/ecrad_data.tar; tar xvf ecrad_data.tar; cd - 386 fi 387 388 if [[ $rad = "ecrad" && $aerosols != "n" && $mysvn -lt 4489 ]] ; then echo "Les aerosols tropospheriques ne sont pas pris en charge par ecrad avant LMDZ rev 4489, ici rev est $mysvn"; exit 1; fi 389 390 391 392 393 394 395 396 397 398 394 399 395 400 MAINDIR=`basename \`pwd\``
Note: See TracChangeset
for help on using the changeset viewer.