Ignore:
Timestamp:
Aug 28, 2016, 11:28:26 PM (8 years ago)
Author:
aslmd
Message:

modified makemeso and copy_model to make those compliant for coupling with other physics. thanks to Maxence Lefevre for part of the modifications to makemeso.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MESOSCALE/LMD_MM_MARS/makemeso

    r1587 r1588  
    2828donotcompile=0
    2929donotallow=0
    30 config=''
     30config='real'
    3131donotcompilephys=0
    3232justphys=0
    3333debug=0
    3434fresh_start=0
    35 phys=""
     35phys="mars_lmd"
    3636scenario=""
    3737from_scratch=0
    3838
    39 while getopts "drc:njhgpfs:xe" options; do
     39while getopts "drc:njhgp:fs:xe" options; do
    4040  case $options in
    4141   d ) donotcompile=1;;       ## just to check the compile folder
     
    4545   j ) justphys=1;;           ## just compile LMD physics
    4646   g ) debug=1;;              ## debug mode
    47    p ) phys="newphys_";;      ## with new physics
     47   p ) phys="${OPTARG}";;     ## choose physics
    4848   f ) fresh_start=1;;        ## a fresh start
    4949   e ) from_scratch=1;;       ## a fresh start with a completely new folder
     
    7272# makemeso -h                ## display options
    7373#
    74 # makemeso -p                ## with new LMD physics
     74# makemeso -p mars_lmd_new   ## choose physics
    7575#
    7676# makemeso -f                ## fresh start [clean -a]
     
    9191  echo ' LMD Mesoscale Model Compiler. Welcome.'
    9292  echo '****************************************'
    93   if [[ "${phys}" == "newphys_" ]]
    94   then
    95     echo '***********with new physics*************'
     93  if [[ "${phys}" == *"new"* ]]
     94  then
     95    echo '*********** PHYSICS: ' ${phys}
    9696    echo '****************************************'
    9797  fi
     
    130130  esac
    131131  # number of processors
    132   if [ "${phys}" == "newphys_" ] || [ "${phys}" == "nophys_" ]
     132  if [[ "${phys}" == *"new"* ]] || [[ "${phys}" == "nophys_" ]]
    133133  then
    134134   numproc=999
     
    145145  then   
    146146  # ngrid: now dynamically set in newphys 03/2014
    147    if [[ "${phys}" == "newphys_" ]]
     147   if [[ "${phys}" == *"new"* ]]
    148148   then
    149149      lon=999
     
    174174####
    175175
    176     conf_wrf="${config}${scenario}${phys}${compilo}_${machine}${single}${testflag}"
     176    conf_wrf="${phys}_${config}${scenario}_${compilo}_${machine}${single}${testflag}"
    177177
    178178    if [ ${debug} -eq 1 ]
     
    200200         else
    201201            # tracers: now dynamically set in newphys 09/2013
    202             if [[ "${phys}" == "newphys_" ]]
     202            if [[ "${phys}" == *"new"* ]]
    203203            then
    204204              tra=999
     
    218218  fi
    219219  # folder
     220
    220221  mkdir ${conf_wrf} 2> /dev/null
    221222  if [[ "$?" == 0 ]]
    222223  then
    223224    echo new folder ... link sources
    224     if [[ "${phys}" == "newphys_" ]]
    225     then
    226      \rm copy_model_tmp > /dev/null 2> /dev/null
    227         sed s+"mars_lmd"+"mars_lmd_new"+g             SRC/SCRIPTS/copy_model > copy_model_tmp
    228         if [[ "${config}" == "les" ]]
    229         then
    230          sed s+"PWD/SRC/"+"PWD/SRC/LES/"+g copy_model_tmp > yeah
    231          mv yeah copy_model_tmp
    232         fi
    233      chmod 755 copy_model_tmp
    234      ./copy_model_tmp
    235      \rm copy_model_tmp
     225    #if [[ "${phys}" == *"new"*  ]]
     226    #then
     227    # \rm copy_model_tmp > /dev/null 2> /dev/null
     228    #    sed s+"mars_lmd"+"mars_lmd_new"+g             SRC/SCRIPTS/copy_model > copy_model_tmp
     229    #    if [[ "${config}" == "les" ]]
     230    #    then
     231    #     sed s+"PWD/SRC/"+"PWD/SRC/LES/"+g copy_model_tmp > yeah
     232    #     mv yeah copy_model_tmp
     233    #    fi
     234    #chmod 755 copy_model_tmp
     235    #./copy_model_tmp
     236    #\rm copy_model_tmp
     237    ###############################################
     238     ./SRC/SCRIPTS/copy_model -p ${phys} -c ${config}
    236239     mv zeWRFV2 ${conf_wrf}/WRFV2
    237      cd ${conf_wrf}/WRFV2
    238      ln -sf mars_lmd_new mars_lmd
    239      if [[ "${phys}" == "newphys_" ]]
     240    ###############################################
     241     if [[ "${phys}" == *"new"* ]]
    240242     then
     243      cd ${conf_wrf}/WRFV2
     244      #ln -sf mars_lmd_new mars_lmd
    241245        if [[ "${config}" != "les" ]]
    242246        then
     
    245249           cp -L ../../SRC/LES/WRFV2/Registry/Registry.EM.newphys Registry/Registry.EM
    246250        fi
    247      fi
    248      cd phys
    249      ln -sf module_lmd_driver.F.new module_lmd_driver.F
    250      cd ..
     251      cd phys
     252      ln -sf module_lmd_driver.F.new module_lmd_driver.F
     253      cd ..
    251254
    252255     ## remove files adapted to parallel GCM and useless for mesoscale
     
    259262     #cd ..
    260263
    261     else
    262          if [[ "${config}" == "les" ]]
    263          then
    264            #### NB: With physics: LES folder // Without physics : LESnophys_ folder
    265            #### ---- because differences in 'modif' folder ----
    266            #sed s+"PWD/SRC/"+"PWD/SRC/LES$phys/"+g SRC/SCRIPTS/copy_model > copy_model_tmp
    267            sed s+"PWD/SRC/"+"PWD/SRC/LES/"+g SRC/SCRIPTS/copy_model > copy_model_tmp
    268          else
    269            cp SRC/SCRIPTS/copy_model copy_model_tmp
    270          fi   
    271      chmod 755 copy_model_tmp
    272      ./copy_model_tmp
    273      \rm copy_model_tmp
    274      mv zeWRFV2 ${conf_wrf}/WRFV2
    275      cd ${conf_wrf}/WRFV2
    276      cd Registry ; ./Registry.bash ; cd ..
     264     else
     265    #    if [[ "${config}" == "les" ]]
     266    #    then
     267    #      #### NB: With physics: LES folder // Without physics : LESnophys_ folder
     268    #      #### ---- because differences in 'modif' folder ----
     269    #      #sed s+"PWD/SRC/"+"PWD/SRC/LES$phys/"+g SRC/SCRIPTS/copy_model > copy_model_tmp
     270    #      sed s+"PWD/SRC/"+"PWD/SRC/LES/"+g SRC/SCRIPTS/copy_model > copy_model_tmp
     271    #    else
     272    #      cp SRC/SCRIPTS/copy_model copy_model_tmp
     273    #    fi   
     274    #chmod 755 copy_model_tmp
     275    #./copy_model_tmp
     276    #\rm copy_model_tmp
     277    #mv zeWRFV2 ${conf_wrf}/WRFV2
     278      cd ${conf_wrf}/WRFV2
     279      cd Registry ; ./Registry.bash ; cd ..
    277280     fi
    278281          #### sparadrap consequent a l'utilisation de copy_model pour les liens
     
    291294            \rm correcfft
    292295          fi
    293   else
     296  else 
    294297    cd ${conf_wrf}/WRFV2
    295298    if [ ${fresh_start} -eq 1 ]
     
    299302      clean -a > /dev/null 2> /dev/null
    300303      ### get a possibly modified registry !
    301       if [[ "${phys}" == "newphys_" ]]
     304      if [[ "${phys}" == *"new"* ]]
    302305      then
    303306          cp ../../SRC/WRFV2/Registry/Registry.EM.newphys Registry/Registry.EM
     
    339342       fi
    340343  echo you have ${dom} domains
    341   if [[ "${phys}" == "newphys_" ]]
     344  if [[ "${phys}" == *"new"* ]]
    342345  then
    343346   echo number of processors can be changed without recompiling
     
    358361  touch last
    359362  echo ${reply} >> last
    360   if [[ "${phys}" != "newphys_" ]]
     363  if [[ "${phys}" != *"new"* ]]
    361364  then
    362365    if [ "${compilo}" = "mpi" -o "${compilo}" = "mpifort" -o "${compilo}" = "mpixlf" ]
     
    369372  fi
    370373  echo ${dom} >> last
    371   if [[ "${phys}" != "newphys_" ]]
     374  if [[ "${phys}" != **"new"* ]]
    372375  then
    373376   echo ${tra} >> last
     
    401404                       \rm conf > /dev/null 2> /dev/null ; touch conf ; echo 3 >> conf ; echo 1 >> conf
    402405                       \rm configure.wrf > /dev/null 2> /dev/null ; ./configure < conf > /dev/null 2> /dev/null
    403                        sed s+"-lnetcdf"+"-lnetcdf -L../mars_lmd/libo -llmd"+g   configure.wrf > yeah ; mv -f yeah configure.wrf
     406                       sed s+"-lnetcdf"+"-lnetcdf -L../$phys/libo -llmd"+g   configure.wrf > yeah ; mv -f yeah configure.wrf
    404407                       if [[ "$(hostname)" == "ciclad1.ipsl.jussieu.fr" ]]
    405408                       then
     
    424427                       \rm conf > /dev/null 2> /dev/null ; touch conf ; echo 7 >> conf ; echo 1 >> conf
    425428                       \rm configure.wrf > /dev/null 2> /dev/null ; ./configure < conf > /dev/null 2> /dev/null
    426                        sed s+"-lnetcdf"+"-lnetcdf -L../mars_lmd/libo -llmd"+g   configure.wrf > yeah ; mv -f yeah configure.wrf
     429                       sed s+"-lnetcdf"+"-lnetcdf -L../$phys/libo -llmd"+g   configure.wrf > yeah ; mv -f yeah configure.wrf
    427430                       sed s+"mpif90"+"$WHERE_MPI/mpif90"+g                 configure.wrf > yeah ; mv -f yeah configure.wrf
    428431                       sed s+"mpicc"+"$WHERE_MPI/mpicc -DMPI2_SUPPORT"+g    configure.wrf > yeah ; mv -f yeah configure.wrf
     
    446449     gnu_64_single)    cd arch ; ln -sf ../configure.defaults.gfortran64 configure.defaults ; cd ..
    447450                       echo 15 | configure > log_compile 2> log_error
    448                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf 
    449                        sed s+"-L../mars_lmd/libo -llmd"+"-L../mars_lmd/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf ;;
     451                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf 
     452                       sed s+"-L../$phys/libo -llmd"+"-L../$phys/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf ;;
    450453#######TEST TEST
    451454                     # PGF90, 32 bits, no nesting
    452455     pgf_32_single)    echo 1 | configure > log_compile 2> log_error
    453                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
     456                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
    454457                     # PGF90, 32 bits, nesting
    455458     pgf_32_nest)      echo 2 | configure > log_compile 2> log_error
    456                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
     459                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
    457460                     # PGF90, 64 bits, no nesting
    458461     pgf_64_single)    echo 1 | configure > log_compile 2> log_error
    459462                       #### the following line is necessary because readtesassim has a line "use netcdf" in it!
    460                        #sed s+"-L../mars_lmd/libo -llmd"+"-L../mars_lmd/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf
    461                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
     463                       #sed s+"-L../$phys/libo -llmd"+"-L../$phys/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf
     464                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
    462465                     # PGF90, 64 bits, nesting
    463466     pgf_64_nest)      cd arch ; ln -sf ../configure.defaults.fix64nest configure.defaults ; cd ..
    464467                       echo 4 | configure > log_compile 2> log_error
    465                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
     468                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
    466469                     # G95, 32 bits, no nesting
    467470     g95_32_single)    echo 13 | configure > log_compile 2> log_error
    468                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
     471                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
    469472                     # G95, 64 bits, no nesting  ### we modify configure.defaults to add x86_64 next to g95 in the header comment
    470473     g95_64_single)    cd arch ; sed s/"PC Linux i486 i586 i686, g95 compiler"/"PC Linux i486 i586 i686 x86_64, g95 compiler"/g configure.defaults > yeahyeahyeah ; rm configure.defaults ; mv yeahyeahyeah configure.defaults ; cd ..
     
    472475                         ##### marche pas ....
    473476                         #sed s+"-fno-second-underscore"+""+g configure.wrf > yeah ; mv -f yeah configure.wrf
    474                          #sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf
    475                          #sed s+"-L../mars_lmd/libo -llmd"+"-L../mars_lmd/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf ;;
    476                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
     477                         #sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf
     478                         #sed s+"-L../$phys/libo -llmd"+"-L../$phys/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf ;;
     479                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
    477480                       #sed s+"=       g95"+"=       /home/physastro/aspiga/mysoft/g95/g95-install/bin/x86_64-unknown-linux-gnu-g95"+g configure.wrf > yeah ; mv -f yeah configure.wrf;;
    478481                     # IFORT, 64 bits, no nesting
     
    486489                       fi
    487490                         ## !!! NETCDF must be defined
    488                          sed s+"lio_grib_share"+"lio_grib_share -L../mars_lmd/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah
     491                         sed s+"lio_grib_share"+"lio_grib_share -L../$phys/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah
    489492                         mv -f yeah configure.wrf ;;
    490493     mpifort_64)     # MPI+IFORT, 64 bits, no nesting / nesting
    491494                       echo 9 | configure > log_compile 2> log_error
    492                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf
     495                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf
    493496                       sed s+"-f90=ifort"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf
    494497                       sed s+"-cc=icc"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf
     
    520523                         sed s+"mpicc"+"mpicc -DMPI2_SUPPORT"+g configure.wrf > yeah ; mv -f yeah configure.wrf
    521524                         ## !!! NETCDF must be defined
    522                          sed s+"-L../mars_lmd/libo -llmd"+"-L../mars_lmd/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah
     525                         sed s+"-L../$phys/libo -llmd"+"-L../$phys/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah
    523526                         mv -f yeah configure.wrf
    524527                         #### POUR LE TRAITEMENT PARTICULIERS des NESTS sur iDATAPLEX [cf. module_lmd_driver]
     
    528531     mpi_64)           cd arch ; ln -sf ../configure.defaults.fix64nest configure.defaults ; cd ..
    529532                       echo 3 | configure > log_compile 2> log_error
    530                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf
     533                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf
    531534                       ### the following line is necessary because readtesassim has a line "use netcdf" in it!
    532                        sed s+"-L../mars_lmd/libo -llmd"+"-L../mars_lmd/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf
     535                       sed s+"-L../$phys/libo -llmd"+"-L../$phys/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf
    533536                       sed s+"mpif90"+"${WHERE_MPI}/mpif90"+g configure.wrf | sed s+"mpicc"+"${WHERE_MPI}/mpicc"+g | sed s+"mpicc"+"mpicc -DMPI2_SUPPORT"+g > yeah
    534537                       #sed s+"mpif90"+"${WHERE_MPI}/mpif90"+g configure.wrf | sed s+"mpicc"+"${WHERE_MPI}/mpicc"+g | sed s+"mpicc"+"mpicc -DMPI2_SUPPORT -w -O3"+g > yeah
     
    547550     mpi_64_test)      cd arch ; ln -sf ../configure.defaults.fix64nest configure.defaults ; cd ..
    548551                       echo 2 | configure > log_compile 2> log_error
    549                        sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf
     552                       sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf
    550553                       sed s+"mpif90"+"${WHERE_MPI}/mpif90"+g configure.wrf | sed s+"mpicc"+"${WHERE_MPI}/mpicc"+g | sed s+"mpicc"+"mpicc -DMPI2_SUPPORT"+g > yeah
    551554                       mv -f yeah configure.wrf ;;
     
    553556     mpixlf_32)        cd arch ; ln -sf ../configure.defaults.fix64nest configure.defaults ; cd ..
    554557                       echo 3 | configure > log_compile 2> log_error
    555                        sed -f mars.sed configure.wrf > yeah
     558                       sed -f physics.sed configure.wrf > yeah
    556559                       mv -f yeah configure.wrf ;;
    557560                     # ANYTHING ELSE
     
    571574  ### here a case structure would be great
    572575
    573   if [[ "${phys}" == "newphys_" ]]
     576  if [[ "${phys}" == *"new"* ]]
    574577  then
    575578     if [[ "${config}" == "les" ]]  ### LES is different because of WRFV3
     
    589592          mv -f yeah configure.wrf
    590593          # precompiling flag in LMD part
    591           cd mars_lmd
     594          cd $phys
    592595          cp -Lrf makegcm_${compilo} yeah
    593596          \rm makegcm_${compilo}
     
    604607     then
    605608       sed s+"ARCH_LOCAL      =       "+"ARCH_LOCAL      =       -DNOPHYS "+g configure.wrf > yeah ; mv -f yeah configure.wrf
    606        sed s+"-L../mars_lmd/libo -llmd"+""+g configure.wrf > yeah ; mv -f yeah configure.wrf
     609       sed s+"-L../$phys/libo -llmd"+""+g configure.wrf > yeah ; mv -f yeah configure.wrf
    607610     else
    608611       ### not tested yet but should be working 
    609612       echo CAUTION CAUTION CAUTION NOT FULLY TESTED
    610613       sed s+"ARCHFLAGS       =       "+"ARCHFLAGS       =       -DNOPHYS "+g configure.wrf > yeah ; mv -f yeah configure.wrf
    611        sed s+"-L../mars_lmd/libo -llmd"+""+g configure.wrf > yeah ; mv -f yeah configure.wrf
     614       sed s+"-L../$phys/libo -llmd"+""+g configure.wrf > yeah ; mv -f yeah configure.wrf
    612615     fi
    613616  fi
     
    623626  fi
    624627
    625 
     628#exit
    626629##################################################
    627630# compile physics
     
    630633then
    631634
    632   cd mars_lmd/
    633 
    634  if [[ "${phys}" == "newphys_" ]]
     635 cd $phys/
     636
     637 if [[ "${phys}" == *"new"* ]]
    635638 then
    636639  divx=1
     
    671674  # change this if you change num_soil_layers in WRF
    672675  # -- default is 10
    673   if [[ "${phys}" == "newphys_" ]]
     676  if [[ "${phys}" == *"new"* ]]
    674677  then
    675678     soilsize=18 ## nouvelle physique. ne sert a rien ici. voir comsoil.
     
    691694#    ln -sf ../../meso_dimphys.h_ref . ## ne sert plus !!
    692695#  else
    693   if [[ "${phys}" != "newphys_" ]]
     696  if [[ "${phys}" == "mars_lmd" ]]
    694697  then
    695698    physize=$(expr ${physx} \* ${physy})
     
    755758  # finish merge
    756759  cd ..
    757 
    758   if [[ "${phys}" == "newphys_" ]]
     760  if [[ "${phys}" == *"new"* ]]
    759761  then
    760762    # include modules for interfacing
     
    812814 
    813815  # compile ...
     816  echo '>>> YOUR CONFIG IS : '${config}
    814817  case ${config} in
    815     '')         ./compile em_real > log_compile 2> log_error
     818    'real')         ./compile em_real > log_compile 2> log_error
    816819                    # save executables 
    817820                    cd main
     
    828831                    cd ..  ;;
    829832    'ideal')        #mkdir 'test/em_quarter_ss' 2> /dev/null
    830                     echo '>>> YOUR CONFIG IS : '${config}
     833                    #echo '>>> YOUR CONFIG IS : '${config}
    831834                    ./compile em_quarter_ss > log_compile 2> log_error
    832835                    # save executables 
     
    843846                    cp -f wrf.exe ../../wrf_x${lon}_y${lat}_z${level}_d${dom}_t${tra}_p${numproc}.exe
    844847                    cd ..  ;;
    845     'les')          echo '>>> YOUR CONFIG IS : '${config}
     848    'les')          #echo '>>> YOUR CONFIG IS : '${config}
    846849                    mkdir 'test/em_les' 2> /dev/null                   
    847850                    ./compile em_les > log_compile 2> log_error
     
    895898  fi
    896899
     900
Note: See TracChangeset for help on using the changeset viewer.