source: trunk/MESOSCALE/LMD_MM_MARS/makemeso @ 226

Last change on this file since 226 was 226, checked in by aslmd, 15 years ago

MESOSCALE/LMDZ.MARS.new
--> modified to impact last changes

MESOSCALE/LMD_MM_MARS/makemeso
MESOSCALE/LMD_MM_MARS/SRC/WRFV2/call_meso_physiq?.inc
MESOSCALE/LMD_MM_MARS/SRC/WRFV2/call_meso_inifis?.inc
MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/module_lmd_driver.F
--> modified to get rid of ecri_phys

and make changes related to meso_physiq and meso_inifis

LMDZ.MARS/libf/phymars
--> see LMDZ.MARS/README

15/07/2011 == AS

  • Modified the mesoscale part so that the previous change by EM does not imply an error in the mesoscale case. More development is needed though to get the "varying z0" capability in the mesoscale model.
  • Worked on versions of meso_physiq and meso_inifis as close as possible to physiq and inifis for more continuity in the process of impacting changes (and even possibly to reach a common version of physiq and inifis).

    The main point is to make the mesoscale significant specific parts

    coded into include files in meso_inc so that meso_physiq and meso_inifis looks very close to physiq and inifis.

    This is completely transparent for GCM users who does not need the

    contents of meso_inc.
  • Slight cosmetic changes to physiq.f and inifis.F --- some of them e.g. to prepare convergence between meso_physiq and physiq
  • Property svn:executable set to *
File size: 32.2 KB
Line 
1#! /bin/bash
2
3
4##################################
5# makemeso allows you to compile #
6# WRF with modified LMD physics  #
7##################################
8
9##############################
10# Author: A. Spiga           #
11# New version : October 2008 #
12# Last update : January 2009 #
13#               November  09 #
14#               January   11 #
15##############################
16
17###############################
18#### Type makemeso -h for help
19###############################
20
21
22
23##############################################################################################
24##############################################################################################
25##############################################################################################
26##############################################################################################
27
28donotcompile=0
29donotallow=0
30config=''
31donotcompilephys=0
32justphys=0
33debug=0
34fresh_start=0
35phys=""
36scenario=""
37while getopts "drc:njhgpfs:x" options; do
38  case $options in
39   d ) donotcompile=1;;       ## just to check the compile folder
40   r ) donotallow=1;;         ## allow only known config (useful with 'makemeso < last')
41   c ) config="${OPTARG}";;   ## idealized cases
42   n ) donotcompilephys=1;;   ## do not recompile physics
43   j ) justphys=1;;           ## just compile LMD physics
44   g ) debug=1;;              ## debug mode
45   p ) phys="newphys_";;      ## with new physics
46   f ) fresh_start=1;;        ## a fresh start
47   s ) scenario="${OPTARG}";; ## a specific scenario, you need a corresponding "mars_lmd_..."
48   x ) donotcompile=1;phys="nophys_";donotcompilephys=1;; ## a case with no LMD physics included
49   h ) echo "
50# Use:   
51#
52# makemeso                   ## basic use (real-case configuration)
53#
54# makemeso -d                ## no compilation, just check the name of the compile folder
55#
56# makemeso -c ideal          ## idealized mode (convective cell, mountain wave, etc...)
57# makemeso -c les            ## large-eddy simulations mode based on WRFV3
58#
59# makemeso -n                ## do not recompile LMD physics (must have been compiled before)
60#
61# makemeso < last            ## basic use + skip questions [! script must have been executed at least once]
62# makemeso -r < last         ## basic use + skip questions + only known config
63# makemeso -nr < last        ## basic use + skip questions + only known config + no LMD phys recompile
64#
65# makemeso -j                ## just compile the LMD physics
66#
67# makemeso -g                ## debug mode
68#
69# makemeso -h                ## display options
70#
71# makemeso -p                ## with new LMD physics
72#
73# makemeso -f                ## fresh start [clean -a]
74#
75# makemeso -s storm          ## a specific scenario, you need a corresponding mars_lmd_... (only for newphys)
76#
77# makemeso -x                ## a case with no LMD physics included
78" ; exit ;;
79  esac
80done   
81
82#--------------
83# talk w/ user
84#--------------
85  echo '****************************************'
86  echo ' LMD Mesoscale Model Compiler. Welcome.'
87  echo '****************************************'
88  if [[ "${phys}" == "newphys_" ]]
89  then
90    echo '***********with new physics*************'
91    echo '****************************************'
92  fi
93  # computer
94  uname -a | grep x86_64 > /dev/null
95  if [[ "$?" == 0 ]]
96  then
97    machine='64'
98  else
99    machine='32'
100  fi
101  # compiler
102  echo "Supported compiler options are "
103  echo "       <1> pgf90"
104  echo "       <2> g95"
105  echo "       <3> pgf90 + mpi"
106  echo "       <4> ifort"
107  echo "       <5> ifort + mpi"
108  echo "       <7> xlf + mpi (IBM AIX)"
109  echo "Your choice ?" ; read reply
110  case ${reply} in
111    1) compilo='pgf' ; numproc=1 ;;
112    2) compilo='g95' ; numproc=1 ;;
113    3) compilo='mpi'
114       if [[ "${WHERE_MPI}" = "" ]]
115       then
116         echo Please initialize the variable WHERE_MPI in your environnement
117         exit
118       fi
119       echo How many processors ? e.g. 1, 2, 4, 6, 8, 12, 16, 20, 24, 32, 64, 128 ; read numproc ;;
120    4) compilo='ifort' ; numproc=1 ;;
121    5) compilo='mpifort' ; echo How many processors ? e.g. 1, 2, 4, 6, 8, 12, 16, 20, 24, 32, 64, 128 ; read numproc ;;
122    7) compilo='mpixlf' ; echo How many processors ? e.g. 1, 2, 4, 6, 8, 12, 16, 20, 24, 32, 64, 128 ; read numproc ;;
123### for tests
12499) compilo='gnu' ; numproc=1 ;;
125    *) echo not supported by this script ; exit ;;
126  esac
127  # dimensions
128  if [ ${donotcompile} -eq 0 ]
129  then   
130  echo Grid points in longitude ? ; read lon
131  echo Grid points in latitude ? ; read lat
132  echo Number of vertical levels ? ; read level
133  fi
134  echo Number of domains ? ; read dom
135
136###PB lecture dom si < last
137
138    case ${dom} in
139       1) single='_single' ;;
140       *) single='_nest' ;;
141    esac
142      if [ "${compilo}" = "mpi" -o "${compilo}" = "mpifort" -o "${compilo}" = "mpixlf" ]
143      then
144           single=''
145      fi
146
147testflag=''
148####
149#testflag='_test'
150####
151
152    conf_wrf="${config}${scenario}${phys}${compilo}_${machine}${single}${testflag}"
153    \rm what_folder 2> /dev/null
154    echo ${conf_wrf} > what_folder
155         if [ ${donotcompile} -eq 1 ]
156         then
157            #\rm what_folder 2> /dev/null
158            #echo '**********************'
159            #echo '*** Your folder is ...'
160            #echo '**********************'
161            #echo ${conf_wrf} | tee what_folder
162            #cat what_folder
163            #echo ${conf_wrf} > what_folder
164            #echo ${reply} > what_compilo
165            #echo ${numproc} > what_numproc
166            if [[ "${phys}" != "nophys_" ]]
167            then
168              exit
169            fi
170         else
171            echo Number of tracers ? ; read tra
172            if [ ${tra} -eq 0 ]
173            then
174              tra=1     
175            fi
176            if [[ "${phys}" == "newphys_" ]]
177            then
178              echo "How many types of scatterer are you using ? 1 [dust] or 2 [dust + water ice]" ; read scat
179            else
180              scat=1 ## dummy stuff
181            fi
182         fi
183  # folder
184  mkdir ${conf_wrf} 2> /dev/null
185  if [[ "$?" == 0 ]]
186  then
187    echo new folder ... link sources
188    if [[ "${phys}" == "newphys_" ]]
189    then
190     \rm copy_model_tmp > /dev/null
191        if [[ "${scenario}" == "" ]]
192        then
193          sed s+"mars_lmd"+"mars_lmd_new"+g             SRC/SCRIPTS/copy_model > copy_model_tmp
194        else
195          echo SCENARIO ${scenario} DID YOU INCLUDE THE SPECIFIC folder ? ; read dummy
196          sed s+"mars_lmd"+"mars_lmd_new_${scenario}"+g SRC/SCRIPTS/copy_model > copy_model_tmp
197             if [[ "${config}" == "les" ]]
198             then
199              echo "NOT SUPPORTED, check options"
200              exit
201             fi
202        fi
203        if [[ "${config}" == "les" ]]
204        then
205         sed s+"PWD/SRC/"+"PWD/SRC/LES/"+g copy_model_tmp > yeah
206         mv yeah copy_model_tmp
207        fi
208     chmod 755 copy_model_tmp
209     ./copy_model_tmp
210     \rm copy_model_tmp
211     mv zeWRFV2 ${conf_wrf}/WRFV2
212     cd ${conf_wrf}/WRFV2
213        if [[ "${scenario}" == "" ]]
214        then
215          ln -sf mars_lmd_new             mars_lmd
216        else
217          ln -sf mars_lmd_new_${scenario} mars_lmd
218          cp ../../SRC/WRFV2/mars_lmd_new_${scenario}/Registry.EM mars_lmd_new_${scenario}/
219          cp ../../SRC/WRFV2/mars_lmd_new_${scenario}/*.inc mars_lmd_new_${scenario}/
220          cd Registry ; ln -sf ../mars_lmd_new_${scenario}/Registry.EM . ; cd ..
221        fi
222     #ln -sf meso_callkeys_newphys.h meso_callkeys.h
223     cd Registry ; Registry.bash ; cd ..
224    else
225         if [[ "${config}" == "les" ]]
226         then
227           ### NB: With physics: LES folder // Without physics : LESnophys_ folder
228           ### ---- because differences in 'modif' folder ----
229           sed s+"PWD/SRC/"+"PWD/SRC/LES$phys/"+g SRC/SCRIPTS/copy_model > copy_model_tmp
230         else
231           cp SRC/SCRIPTS/copy_model copy_model_tmp
232         fi   
233     chmod 755 copy_model_tmp
234     ./copy_model_tmp
235     \rm copy_model_tmp
236     mv WRFV2 ${conf_wrf}/
237     cd ${conf_wrf}/WRFV2
238     cd Registry ; Registry.bash ; cd ..
239     fi
240          #### sparadrap consequent a l'utilisation de copy_model pour les liens
241          #### -- car alors il manque fftpack
242          if [[ "${config}" == "les" ]]
243          then
244            if [[ "${phys}" == "nophys_" ]]
245            then
246              ## voir ci-dessus pour le folder
247              cp ../../SRC/LES$phys/correcfft ./
248            else
249              cp ../../SRC/LES/correcfft ./
250            fi 
251            ./correcfft
252            \rm correcfft
253          fi
254  else
255    cd ${conf_wrf}/WRFV2
256    if [ ${fresh_start} -eq 1 ]
257    then
258      echo '*** FRESH START, I clean everything'
259      clean -a > /dev/null 2> /dev/null
260      cd Registry ; mv Registry Registry.bak ; Registry.bash ; cd ..
261      answer='y' ## a voir... pas si sur
262    else
263            if [[ "${phys}" != "nophys_" ]]
264            then
265      echo Did you modify anything in the Registry or clean ? y for yes, any key for no ; read answer
266      case ${answer} in
267        y) cd Registry ; mv Registry Registry.bak ; Registry.bash ; cd .. ;;
268        *) answer='no' ;;
269      esac
270            fi
271    fi
272  fi
273
274  # summary
275  echo '**********************'
276  echo '*** Your folder is ...'
277  echo '**********************'
278  echo ${conf_wrf}
279  echo '**********************'
280  echo '****************************************'
281  echo so ...
282  echo your computer is ${machine} bits
283  echo ${compilo} is your compiler
284       if [[ "${compilo}" = "mpi" ]]
285       then
286         echo MPICH is in ${WHERE_MPI}
287       fi
288  echo you will use ${numproc} processors
289  echo you have ${lon} x points
290  echo '         '${lat} y points
291  echo '         '${level} z points
292  echo '         '${dom} domains
293  echo '         '${tra} tracers
294  if [[ "${phys}" == "newphys_" ]]
295  then
296    echo '         '${scat} scatterers
297  fi
298  echo '****************************************'
299  # save answer
300  \rm last 2> /dev/null
301  touch last
302  echo ${reply} >> last
303     if [ "${compilo}" = "mpi" -o "${compilo}" = "mpifort" -o "${compilo}" = "mpixlf" ]
304     then
305     echo ${numproc} >> last
306     fi
307  echo ${lon} >> last
308  echo ${lat} >> last
309  echo ${level} >> last
310  echo ${dom} >> last
311  echo ${tra} >> last
312  echo ${scat} >> last
313  echo ${answer} >> last
314
315#------------
316# log files
317#------------
318  \rm log_compile 2> /dev/null
319  \rm log_error 2> /dev/null
320
321#-----------------
322# configure WRF
323#-----------------
324  mv configure.wrf configure.wrf.bak 2> /dev/null
325  ########################
326  conf_wrf_forall="${compilo}_${machine}${single}${testflag}"
327
328         #### in this case options are different because for LES, WRFV3 is used
329         if [[ "${config}" == "les" ]]
330         then
331         conf_wrf_forall="${config}${compilo}_${machine}${single}${testflag}"
332         fi
333
334  case ${conf_wrf_forall} in
335
336     #######LES-specific (WRFV3-based) -- previously in 'makeles'
337     #######
338
339     lesmpi_64)        ## MPI (dm) 64 bits [PS: remplacer 3 par 4 pour openMP]
340                       \rm conf > /dev/null 2> /dev/null ; touch conf ; echo 3 >> conf ; echo 1 >> conf
341                       \rm configure.wrf > /dev/null 2> /dev/null ; ./configure < conf > /dev/null 2> /dev/null
342                       sed s+"-lnetcdf"+"-lnetcdf -L../mars_lmd/libo -llmd"+g   configure.wrf > yeah ; mv -f yeah configure.wrf
343                       if [[ "$(hostname)" == "ciclad1.ipsl.jussieu.fr" ]]
344                       then
345            echo "SPECIFIC CHANGES FOR CICLAD CLUSTER. EDIT makemeso IF YOU ENCOUNTER PROBLEMS."
346            #sed s+"mpif90 -f90=$(SFC)"+"/usr/lib64/openmpi/1.4.2-pgf/bin/mpif90"+g                      configure.wrf > yeah ; mv -f yeah configure.wrf
347            #sed s+"mpicc -cc=$(SCC)"+"/usr/lib64/openmpi/1.4.2-gfortran/bin/mpicc -DMPI2_SUPPORT"+g     configure.wrf > yeah ; mv -f yeah configure.wrf
348            sed s+"mpif90 -f90=\$(SFC)"+"/usr/lib64/openmpi/1.4.3-pgfgcc/bin/mpif90"+g                   configure.wrf > yeah ; mv -f yeah configure.wrf
349            sed s+"mpicc -cc=\$(SCC)"+"/usr/lib64/openmpi/1.4.3-pgfgcc/bin/mpicc -DMPI2_SUPPORT"+g       configure.wrf > yeah ; mv -f yeah configure.wrf
350                       else
351            sed s+"mpif90"+"$WHERE_MPI/mpif90"+g                 configure.wrf > yeah ; mv -f yeah configure.wrf
352            sed s+"mpicc"+"$WHERE_MPI/mpicc -DMPI2_SUPPORT"+g    configure.wrf > yeah ; mv -f yeah configure.wrf
353                       fi
354                       sed s+"-fastsse"+" "+g                               configure.wrf > yeah ; mv -f yeah configure.wrf
355                          ### pas forcement necessaire ici mais OK
356                          sed s+"-llmd"+"-llmd $NETCDF/lib/libnetcdf.a"+g     configure.wrf > yeah ; mv -f yeah configure.wrf
357                       \rm conf > /dev/null ;;
358
359     lesmpifort_64)    ## MPI (dm) 64 bits IFORT
360                       \rm conf > /dev/null 2> /dev/null ; touch conf ; echo 7 >> conf ; echo 1 >> conf
361                       \rm configure.wrf > /dev/null 2> /dev/null ; ./configure < conf > /dev/null 2> /dev/null
362                       sed s+"-lnetcdf"+"-lnetcdf -L../mars_lmd/libo -llmd"+g   configure.wrf > yeah ; mv -f yeah configure.wrf
363                       sed s+"mpif90"+"$WHERE_MPI/mpif90"+g                 configure.wrf > yeah ; mv -f yeah configure.wrf
364                       sed s+"mpicc"+"$WHERE_MPI/mpicc -DMPI2_SUPPORT"+g    configure.wrf > yeah ; mv -f yeah configure.wrf
365                       sed s+"-fastsse"+" "+g                               configure.wrf > yeah ; mv -f yeah configure.wrf
366                       sed s+"-llmd"+"-llmd $NETCDF/lib/libnetcdf.a"+g     configure.wrf > yeah ; mv -f yeah configure.wrf
367                       \rm conf > /dev/null ;;
368
369     #######
370     #######LES-specific (WRFV3-based) -- previously in 'makeles'   
371
372#######TEST TEST
373                     # GFORTRAN, 64 bits, no nesting     
374     gnu_64_single)    cd arch ; ln -sf ../configure.defaults.gfortran64 configure.defaults ; cd ..
375                       echo 15 | configure > log_compile 2> log_error
376                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf 
377                       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 ;;
378#######TEST TEST
379                     # PGF90, 32 bits, no nesting
380     pgf_32_single)    echo 1 | configure > log_compile 2> log_error
381                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
382                     # PGF90, 32 bits, nesting
383     pgf_32_nest)      echo 2 | configure > log_compile 2> log_error
384                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
385                     # PGF90, 64 bits, no nesting
386     pgf_64_single)    echo 1 | configure > log_compile 2> log_error
387                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
388                     # PGF90, 64 bits, nesting
389     pgf_64_nest)      cd arch ; ln -sf ../configure.defaults.fix64nest configure.defaults ; cd ..
390                       echo 4 | configure > log_compile 2> log_error
391                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
392                     # G95, 32 bits, no nesting
393     g95_32_single)    echo 13 | configure > log_compile 2> log_error
394                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
395                     # G95, 64 bits, no nesting  ### we modify configure.defaults to add x86_64 next to g95 in the header comment
396     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 ..
397                       echo 14 | configure > log_compile 2> log_error
398                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf ;;
399                       #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;;
400                     # IFORT, 64 bits, no nesting
401     ifort_64_single)  echo 5 | configure > log_compile 2> log_error
402                       sed s+"-DIFORT_KLUDGE"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf
403                         ## !!! NETCDF must be defined
404                         sed s+"lio_grib_share"+"lio_grib_share -L../mars_lmd/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah
405                         mv -f yeah configure.wrf ;;
406     mpifort_64)     # MPI+IFORT, 64 bits, no nesting / nesting
407                       echo 9 | configure > log_compile 2> log_error
408                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf
409                       sed s+"-f90=ifort"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf
410                       sed s+"-cc=icc"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf
411                       sed s+"-DIFORT_KLUDGE"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf
412                       sed s+"O3"+"O2"+g configure.wrf > yeah ; mv -f yeah configure.wrf
413                                        #sed s+"O3"+"O0"+g configure.wrf > yeah ; mv -f yeah configure.wrf  ### pour compilation rapide
414                                        #-w -ftz -align all -fno-alias -fp-model precise >>> options indiquees dans WRF3
415                                        #http://software.intel.com/en-us/articles/performance-tools-for-software-developers-building-wrf-with-the-intel-compilers/
416                            #### NB: RSL is replaced by RSL_LITE, better memory capacity, less seg fault
417                            sed s+"../external/RSL/RSL"+"../external/RSL_LITE"+g configure.wrf > yeah ; mv -f yeah configure.wrf
418                            sed s+"-DWRF_RSL_IO"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf
419                            sed s+"-DRSL"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf
420                            sed s+"librsl.a"+"librsl_lite.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf
421                            sed s+"../external/RSL/gen"+"../external/RSL_LITE/gen"+g configure.wrf > yeah ; mv -f yeah configure.wrf
422                            sed s+"../external/RSL/module"+"../external/RSL_LITE/module"+g configure.wrf > yeah ; mv -f yeah configure.wrf
423                            sed s+"-lrsl"+"-lrsl_lite"+g configure.wrf > yeah ; mv -f yeah configure.wrf
424                            sed s+"linux"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf
425                         ### necessary even if mpi-selector is used (no need in makegcm though)
426                         sed s+"mpif90"+"${WHERE_MPI}/mpif90"+g configure.wrf | sed s+"mpicc"+"${WHERE_MPI}/mpicc"+g > yeah ; mv -f yeah configure.wrf
427                         sed s+"mpicc"+"mpicc -DMPI2_SUPPORT"+g configure.wrf > yeah ; mv -f yeah configure.wrf
428                         ## !!! NETCDF must be defined
429                         sed s+"-L../mars_lmd/libo -llmd"+"-L../mars_lmd/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah
430                         mv -f yeah configure.wrf
431                         #### POUR LE TRAITEMENT PARTICULIERS des NESTS sur iDATAPLEX [cf. module_lmd_driver]
432                         sed s+"ARCHFLAGS       =       "+"ARCHFLAGS       =       -DSPECIAL_NEST_SAVE "+g configure.wrf > yeah
433                         mv -f yeah configure.wrf ;;
434                     # MPICH, 64 bits, no nesting / nesting
435     mpi_64)           cd arch ; ln -sf ../configure.defaults.fix64nest configure.defaults ; cd ..
436                       echo 3 | configure > log_compile 2> log_error
437                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf
438                       sed s+"mpif90"+"${WHERE_MPI}/mpif90"+g configure.wrf | sed s+"mpicc"+"${WHERE_MPI}/mpicc"+g | sed s+"mpicc"+"mpicc -DMPI2_SUPPORT"+g > yeah
439                                #| sed s+"fastsse"+"fast"+g > yeah
440                       mv -f yeah configure.wrf ;;
441                       #sed s+"-fastsse"+"-O2 -Munroll -Mcache_align"+g configure.wrf > yeah
442                       ##sed s+"-fastsse"+"-O2 -fpic"+g configure.wrf > yeah ## marche pas, ILM problem
443                       ##sed s+"-fastsse"+"-mcmodel=medium -Mlarge_arrays"+g configure.wrf > yeah ## marche pas, ILM problem
444                       #mv -f yeah configure.wrf ;;
445                     # MPICH, 64 bits, OK with periodic BC but no positive definite
446     mpi_64_test)      cd arch ; ln -sf ../configure.defaults.fix64nest configure.defaults ; cd ..
447                       echo 2 | configure > log_compile 2> log_error
448                       sed -f mars.sed configure.wrf > yeah ; mv -f yeah configure.wrf
449                       sed s+"mpif90"+"${WHERE_MPI}/mpif90"+g configure.wrf | sed s+"mpicc"+"${WHERE_MPI}/mpicc"+g | sed s+"mpicc"+"mpicc -DMPI2_SUPPORT"+g > yeah
450                       mv -f yeah configure.wrf ;;
451                     # XLF+MPICH on AIX machine (64 bits) with nesting, NB: the 32bits notice is not to be considered
452     mpixlf_32)        cd arch ; ln -sf ../configure.defaults.fix64nest configure.defaults ; cd ..
453                       echo 3 | configure > log_compile 2> log_error
454                       sed -f mars.sed configure.wrf > yeah
455                       mv -f yeah configure.wrf ;;
456                     # ANYTHING ELSE
457     *)                echo NO PRESETS ...
458                       if [ ${donotallow} -eq 0 ] 
459                       then
460                         configure
461                       else
462                         # problem when an input file is used
463                         echo 'please cd to '$PWD' and type ./configure' 
464                         exit   
465                       fi ;;
466  esac
467  ########################
468
469
470  ### here a case structure would be great
471
472  if [[ "${phys}" == "newphys_" ]]
473  then
474     if [[ "${config}" == "les" ]]  ### LES is different because of WRFV3
475     then
476       sed s+"ARCH_LOCAL      =       "+"ARCH_LOCAL      =       -DNEWPHYS "+g configure.wrf > yeah
477     else
478       sed s+"ARCHFLAGS       =       "+"ARCHFLAGS       =       -DNEWPHYS "+g configure.wrf > yeah
479     fi
480     mv -f yeah configure.wrf
481  fi
482
483        if [[ ! ("${scenario}" == "") ]]   ### not supported with LES for the moment
484        then
485          sed s+"ARCHFLAGS       =       "+"ARCHFLAGS       =       -D${scenario} "+g configure.wrf > yeah
486          mv -f yeah configure.wrf
487        fi
488
489  ################
490  if [[ "${phys}" == "nophys_" ]]
491  then
492     if [[ "${config}" == "les" ]]  ### LES is different because of WRFV3
493     then
494       sed s+"ARCH_LOCAL      =       "+"ARCH_LOCAL      =       -DNOPHYS "+g configure.wrf > yeah ; mv -f yeah configure.wrf
495       sed s+"-L../mars_lmd/libo -llmd"+""+g configure.wrf > yeah ; mv -f yeah configure.wrf
496     else
497       ### not tested yet but should be working 
498       echo CAUTION CAUTION CAUTION NOT FULLY TESTED
499       sed s+"ARCHFLAGS       =       "+"ARCHFLAGS       =       -DNOPHYS "+g configure.wrf > yeah ; mv -f yeah configure.wrf
500       sed s+"-L../mars_lmd/libo -llmd"+""+g configure.wrf > yeah ; mv -f yeah configure.wrf
501     fi
502  fi
503  ################
504
505  if [ ${debug} -ne 0 ]   # not working for xlf!
506  then
507    echo 'DEBUG DEBUG DEBUG DEBUG'
508    sed s+"#-g"+"-g"+g configure.wrf > yeah
509    mv -f yeah configure.wrf
510  fi
511
512
513##################################################
514# compile physics
515##################################################
516if [ ${donotcompilephys} -eq 0 ]
517then
518
519  cd mars_lmd/
520
521  # required size
522  #----------------
523  case ${numproc} in
524    1) physx=$(expr ${lon} - 1)
525       physy=$(expr ${lat} - 1)
526       physz=$(expr ${level} - 1) ;;
527    2) physx=$(expr ${lon} - 1)
528       physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 2)
529       physz=$(expr ${level} - 1) ;;
530    4) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 2)
531       physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 2)
532       physz=$(expr ${level} - 1) ;;
533    6) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 2)
534       physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 3)
535       physz=$(expr ${level} - 1) ;;
536    8) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 2)
537       physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 4)
538       physz=$(expr ${level} - 1) ;;
539    12) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 3)
540        physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 4)
541        physz=$(expr ${level} - 1) ;;
542    16) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 4)
543        physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 4)
544        physz=$(expr ${level} - 1) ;;
545    20) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 4)
546        physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 5)
547        physz=$(expr ${level} - 1) ;;
548    24) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 4)
549        physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 6)
550        physz=$(expr ${level} - 1) ;;
551    32) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 4)
552        physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 8)
553        physz=$(expr ${level} - 1) ;;
554    64) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 8)
555        physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 8)
556        physz=$(expr ${level} - 1) ;;
557    128) physx=$(expr ${lon} - 1) ; physx=$(expr ${physx} \/ 8)
558        physy=$(expr ${lat} - 1) ; physy=$(expr ${physy} \/ 16)
559        physz=$(expr ${level} - 1) ;;
560    *) echo not supported ; exit
561  esac
562
563  # change this if you change num_soil_layers in WRF
564  # -- default is 10
565  if [[ "${phys}" == "newphys_" ]]
566  then
567     soilsize=18 ## nouvelle physique
568  else
569     soilsize=10
570  fi
571
572  # GCM environment variables
573  #--------------------------
574  export LMDGCM=$PWD
575  export LIBOGCM=$PWD/libo
576
577  # generate the appropriate dimphys
578  #---------------------------------
579  cd libf/phymars
580  \rm dimphys.h 2> /dev/null
581  physize=$(expr ${physx} \* ${physy})
582  sed s/--xsize--/${physx}/g meso_inc/meso_dimphys.h_ref | sed s/--ysize--/${physy}/g | sed s/--physize--/${physize}/g | sed s/--zsize--/${physz}/g | sed s/--soilsize--/${soilsize}/g > dimphys.h
583  head -15 dimphys.h
584     ###
585     ### TEST new new phys
586     if [[ "${phys}" == "newphys_" ]]
587     then
588       #touch callkeys.h.meso 
589       #  ln -sf meso_callkeys.h callkeys.h
590       #touch dustlift.F.meso
591       #  ln -sf meso_dustlift.F dustlift.F  ## attention avec "ancienne nouvelle physique"
592       touch readtesassim.F90.meso
593         ln -sf meso_readtesassim.F90 readtesassim.F90  ## attention idem
594       touch gr_fi_dyn.F.lien
595         ln -sf ../dyn3d/gr_fi_dyn.F .  ## dommage, a corriger ## attention idem
596     ###############################
597     ###############################
598\rm scatterers.h
599cat << EOF > scatterers.h
600!-----------------------------------------------------------------------
601!   INCLUDE 'scatterers.h'
602!
603! Number of kind of tracer radiative properties
604! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
605! (ex: naerkind=1 if you use one dust mode without ice ...)
606! (ex: naerkind=2 if you use one dust mode and active ice ...)
607!-----------------------------------------------------------------------
608
609      integer, parameter :: naerkind=${scat}
610
611!-----------------------------------------------------------------------
612EOF
613     ###############################
614     ###############################
615     fi
616     ###
617     ###
618  cd ../..
619
620  # prepare for nesting
621  #---------------------
622  cd libf
623  duplicate${dom} 2> /dev/null
624  cd ..
625
626  # compile physics
627  #--------------------------
628  \rm libf/grid/dimensions.h 2> /dev/null
629  \rm -rf libo/* 2> /dev/null
630  echo 1. compiling LMD physics ...
631  echo compilation info in:
632  echo $PWD/libo/log_compile_phys
633
634  if [ ${debug} -ne 0 ]
635  then
636    echo 'DEBUG DEBUG DEBUG DEBUG'
637    nohup makegcm_${compilo} -debug -t ${tra} -p mars -d ${physz} testphys1d | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys
638  else
639    nohup makegcm_${compilo} -t ${tra} -p mars -d ${physz} testphys1d | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys
640  fi
641  echo ... done
642        # clean the duplicate routines
643        cd libf
644        duplicate1 2> /dev/null
645        cd ..
646
647  # merge LMD executables in one lib
648  #--------------------------------------
649  cd libo
650  mkdir temp
651  #cp -f LINUXfastI._${physz}_t${tra}_reg/*.a temp
652  cp -f LINUX*/*.a temp
653  cd temp
654  ar x libbibio.a
655  ar x libphymars.a
656  ar x libaeronomars.a
657  \rm *.a
658  ar r liblmd.a *
659  cp -f liblmd.a ..
660  cd ..
661  \rm -r temp
662  nm liblmd.a > liblmd_content
663  # finish merge
664  cd ..
665
666  # save a copy
667  #--------------
668  cp -f libo/liblmd.a libo/liblmd.a_${lon}_${lat}_${level}_${dom}_${tra}_${scat}
669  echo '****************************************'
670
671  # ok
672  #----
673  cd ..
674
675  # manage nest includes in module_lmd_driver.F
676  #----
677  cp call_meso_inifis$dom.inc call_meso_inifis.inc
678  cp call_meso_physiq$dom.inc call_meso_physiq.inc
679
680
681fi
682##################################################
683# END compile physics
684##################################################
685
686#------------------
687# compile WRF
688#------------------
689if [ ${justphys} -eq 0 ]
690then
691
692  echo 2. compiling WRF dynamical core ...
693
694  if [[ "${phys}" == "nophys_" ]]
695  then
696   echo 'NO LMD PHYSICS included'
697  else
698   if [[ ! ( -f "call_meso_physiq.inc" ) ]]
699   then
700    echo 'did you compile the physics ? no call_meso_physiq.inc !'
701    exit
702   fi
703  fi
704
705  # be sure to compile with the most recent physics
706  touch phys/module_lmd_driver.F
707
708  # talk to user
709  echo '>>> compiling ... this may be long ... <<<'
710  echo check progress in:
711  echo $PWD/log_compile
712  echo check possible errors in:
713  echo $PWD/log_error
714 
715  # compile ...
716  case ${config} in
717    '')         compile em_real > log_compile 2> log_error
718                    # save executables 
719                    cd main
720                      if [[ -f real.exe ]]
721                      then
722                        echo 'Looks good ! real.exe is here...'
723                      fi
724                      if [[ -f wrf.exe ]]
725                      then
726                        echo 'Looks good ! wrf.exe is here...'
727                      fi
728                    cp -f real.exe ../../real_x${lon}_y${lat}_z${level}_d${dom}_t${tra}_p${numproc}_s${scat}.exe
729                    cp -f wrf.exe ../../wrf_x${lon}_y${lat}_z${level}_d${dom}_t${tra}_p${numproc}_s${scat}.exe
730                    cd ..  ;;
731    'ideal')        #mkdir 'test/em_quarter_ss' 2> /dev/null
732                    echo '>>> YOUR CONFIG IS : '${config}
733                    compile em_quarter_ss > log_compile 2> log_error
734                    # save executables 
735                    cd main
736                      if [[ -f ideal.exe ]]
737                      then
738                        echo 'Looks good ! ideal.exe is here...'
739                      fi
740                      if [[ -f wrf.exe ]]
741                      then
742                        echo 'Looks good ! wrf.exe is here...'
743                      fi
744                    cp -f ideal.exe ../../ideal_x${lon}_y${lat}_z${level}_d${dom}_t${tra}_p${numproc}_s${scat}.exe
745                    cp -f wrf.exe ../../wrf_x${lon}_y${lat}_z${level}_d${dom}_t${tra}_p${numproc}_s${scat}.exe
746                    cd ..  ;;
747    'les')          echo '>>> YOUR CONFIG IS : '${config}
748                    mkdir 'test/em_les' 2> /dev/null                   
749                    compile em_les > log_compile 2> log_error
750                    # save executables 
751                    cd main
752                      if [[ -f ideal.exe ]]
753                      then
754                        echo 'Looks good ! ideal.exe is here...'
755                      fi
756                      if [[ -f wrf.exe ]]
757                      then
758                        echo 'Looks good ! wrf.exe is here...'
759                      fi
760                    cp -f ideal.exe ../../ideal_x${lon}_y${lat}_z${level}_d${dom}_t${tra}_p${numproc}_s${scat}.exe
761                    cp -f wrf.exe ../../wrf_x${lon}_y${lat}_z${level}_d${dom}_t${tra}_p${numproc}_s${scat}.exe
762                    cd ..  ;;
763    *)              echo not supported... please use ; echo ideal les ; exit ;;
764  esac
765  echo '*******last lines from log_error*********'
766  tail -n 20 log_error
767fi
768
769  # the end
770  echo '****************************************'
771  echo 'done.'
772  echo '****************************************'
773  cp last ../makemeso_x${lon}_y${lat}_z${level}_d${dom}_t${tra}_p${numproc}_s${scat}
774  mv last ../../
775
776  # add here specific messages
777  if [[ "${dom}" != "1" ]]
778  then
779  nest=$(expr ${lon} + 4)
780  echo NB: in namelist.input, please set:
781  echo '
782  max_dom = '$dom'
783  s_we    = 1,1,
784  e_we    = '$lon','$nest',
785  s_sn    = 1,1,
786  e_sn    = '$lat','$nest',
787  s_vert  = 1,1,
788  e_vert  = '$level','$level','
789  fi
790
Note: See TracBrowser for help on using the repository browser.