Changeset 4954


Ignore:
Timestamp:
May 27, 2024, 11:33:04 AM (4 months ago)
Author:
abarral
Message:

(WIP) modify .def, compile ce0l

Location:
BOL/LMDZ_Setup_amaury
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • BOL/LMDZ_Setup_amaury/main.sh

    r4940 r4954  
    3939# Version of the tar file on https://lmdz.lmd.jussieu.fr/pub/src
    4040# 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 ?
    4242version="20240308.trunk" #!! DON'T CHANGE IT WITHOUT CHECKING WITH LMDZ TEAM !!
    4343svn=""                   #!! DON'T CHANGE IT WITHOUT CHECKING WITH LMDZ TEAM !!
     
    4848# Grid number of points IMxJMxLM
    4949resol="144x142x79"
    50 
    51 # Whether to install the model: "-install" to install the model, else ""
    52 install="-install"
    5350
    5451# Using XIOS for IOs: "-xios" for enabled, else ""
     
    133130    # launching setup.sh with the options defined in this main.sh.
    134131    # 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
    137134  else
    138135    echo "File $deffile inexistent"; exit 1
  • BOL/LMDZ_Setup_amaury/setup.sh

    r4953 r4954  
    6969
    7070function load_install_lib {
    71   # Fetch and source install_lmdz.sh
     71  # Fetch and source install_lmdz.sh to get `myget`
    7272  if [[ ! -f "install_lmdz.sh" ]]; then
    7373    wget "http://svn.lmd.jussieu.fr/LMDZ/BOL/script_install_amaury/install_lmdz.sh" # TODO change to normal branch once ready
     
    103103
    104104  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
    105126}
    106127
     
    111132       setup.sh can be launched/driven by main.sh; some options can only be specified in setup.sh (ex: veget, aerosols).
    112133             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>)
    115136             -d IMxJMxLM        to run in resolution IM x JM x LM (default <$resol>)
    116137             -install           pour installer et compiler le modele
     
    138159      "-mthini") mthini=$2; shift; shift;;
    139160      "-mthend") mthend=$2; shift; shift;;
    140       *) $0 -h; exit
     161      *) echo "unexpected $1"; $0 -h; exit
    141162    esac
    142163  done
     
    206227  ./install_lmdz_options.$$.sh
    207228  mv install_lmdz.sh install_lmdz.$$.sh
    208   cd -
     229  cd "$local"
     230}
     231
     232function 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
     343function 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
    209360}
    210361
     
    223374ensure_correct_option_combinations
    224375install_model
     376setup_def
     377setup_init
    225378
    226379exit 1
     
    230383#-------------------------------------------------------
    231384if [[ $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 -
     386fi
     387
     388if [[ $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
    394399
    395400MAINDIR=`basename \`pwd\``
Note: See TracChangeset for help on using the changeset viewer.