Changeset 671


Ignore:
Timestamp:
May 25, 2012, 11:11:42 AM (13 years ago)
Author:
emillour
Message:

Generic GCM:

  • Significant update on how the number of scatterers is managed: Instead of having to manualy change 'nearkind' in radinc_h.F90, the number of scatterers must now be set when compiling, using makegcm "makegcm -s 1" for one scatterer or "makegcm -s 2" for two (e.g. dust and water ice), default behaviour (ie not specifying -s #) is -s 1 Modified phystd/radinc_h.F90 , added directory phystd/scatterers with script make_scatterers , and adapted makegcm* scripts.

EM

Location:
trunk/LMDZ.GENERIC
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/README

    r651 r671  
    668668- Moved 1d water initialization from physiqu to rcm1d
    669669- All enertests in physiq written in a matricial (F90) way. The rest of physiqu should follow soon
     670
     671== 25/05/2012 == EM
     672- Significant update on how the number of scatterers is managed:
     673  Instead of having to manualy change 'nearkind' in radinc_h.F90, the
     674  number of scatterers must now be set when compiling, using makegcm
     675  "makegcm -s 1" for one scatterer or "makegcm -s 2" for two (e.g. dust
     676  and water ice), default behaviour (ie not specifying -s #) is -s 1
     677  Modified phystd/radinc_h.F90 , added directory phystd/scatterers
     678  with script make_scatterers , and adapted makegcm* scripts.
  • trunk/LMDZ.GENERIC/libf/phystd/radinc_h.F90

    r543 r671  
    55#include "dimensions.h"
    66#include "bands.h"
     7#include"scatterers.h"
    78
    89!======================================================================
     
    5051!               can in princple be anything: currently it's H2O.
    5152!
    52 !     NAERKIND  The number of radiatively active aerosol types
    53 !
     53!     NAERKIND  The number of radiatively active species
     54!               (set in scatterers.h ; built when compiling with makegcm -s #)
    5455!     NSIZEMAX  The maximum number of aerosol particle sizes
    5556!
     
    6970      integer, parameter :: L_NSPECTV = NBvisible
    7071
    71       integer, parameter :: NAERKIND  = 2
     72!      integer, parameter :: NAERKIND  = 2 ! set in scatterers.h
    7273      real,    parameter :: L_TAUMAX  = 35
    7374
  • trunk/LMDZ.GENERIC/makegcm_g95

    r646 r671  
    66########################################################################
    77set dim="64x48x32"
    8 set physique=mars
     8set physique=std
    99set phys="PHYS=$physique"
    10 set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I. -I$(LIBF)/aeronomars'
     10set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I.'
    1111set ntrac = 1
    1212set filtre=filtrez
    1313set grille=reg
    1414set dyntype="dyn"
     15set bands="32x36"
     16set scatterers="1"
    1517########################################################################
    1618# path a changer contenant les sources et les objets du modele
     
    2527setenv LIBOGCM $LMDGCM/libo
    2628# NetCDF
    27 # 64 bit machines
    28 #  setenv NCDFLIB /donnees/emlmd/netcdf64_g95/netcdf-3.6.1/lib
    29 #  setenv NCDFINC /donnees/emlmd/netcdf64_g95/netcdf-3.6.1/include
     29# 64 bit machines what is below is OK on LMD machines
     30  setenv NCDFLIB /donnees/emlmd/netcdf64-4.0.1_g95/lib
     31  setenv NCDFINC /donnees/emlmd/netcdf64-4.0.1_g95/include
    3032#else
    3133#  setenv NCDFLIB /distrib/local/netcdf/g95_32bits/lib
     
    180182else if $LINUX then
    181183# Ehouarn 'g95' compiler
    182    set optim90=" -O2 -fstatic -fzero -Wall "
    183    set optimtru90=" -O2 -fstatic -fzero -Wall "
     184   set optim90="-O3 -fstatic -funroll-loops "
     185   set optimtru90="-O3 -fstatic -funroll-loops "
    184186#   set opt_link=" -Mfree -L/usr/local/pgi/linux86/lib -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Wl,-Bstatic "
    185187# Ehouarn: there is no /usr/local/pgi/linux86/lib, but it doesn't matter
     
    241243
    242244
    243 
    244 
    245 Par default, la commande makegcm:
    246 ---------------------------------
    247 
    248 1. compile une serie de sous programmes se trouvant dans des sous-repertoires
    249 de $LMDGCM/libf.
    250 Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
    251 sur $LIBOGCM.
    252 
    253 2. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
    254 $LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
    255 
    256 La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
    257 dans la comande makegcm.
    258 
    259 La commande makegcm est faite pour permettre de gerer en parallele des
    260 versions differentes du modele, compilees avec des options de compilation
    261 et des dimensions differentes sans avoir a chaque fois a recompiler tout
    262 le modele.
    263 
    264 Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
     245The makegcm script:
     246-------------------
     247
     2481. compiles a series of subroutines located in the $LMDGCM/libf
     249 sub-directories.
     250 The objects are then stored in the libraries in $LIBOGCM.
     251
     2522. then, makegcm compiles program prog.f located by default in
     253$LMDGCM/libf/dyn3d and makes the link with the libraries.
     254
     255Environment Variables '$LMDGCM' and '$LIBOGCM'
     256 must be set as environment variables or directly
     257 in the makegcm file.
     258
     259The makegcm command is used to control the different versions of the model
     260 in parallel, compiled using the compilation options
     261 and the various dimensions, without having to recompile the whole model.
     262
     263The FORTRAN libraries are stored in directory $LIBOGCM.
    265264
    266265
     
    268267--------
    269268
    270 Les options suivantes peuvent etre definies soit par defaut en editant le
    271 "script" makegcm, soit en interactif:
    272 
    273 -d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
    274              et couches verticales.
    275 
    276 -t ntrac   selectionne le nombre de traceur advectes par la dynamique.
    277            Dans les versions courantes du modele terrestre on a par exemple
    278            ntrac=2 pour l'eau vapeur et liquide
    279 
    280              L'effet des options -d et -t est d'ecraser le fichier
     269The following options can either be defined by default by editing the
     270makegcm "script", or in interactive mode:
     271
     272-d imxjmxlm  where im, jm, and lm are the number of longitudes,
     273             latitudes and vertical layers respectively.
     274
     275-t ntrac   Selects the number of tracers present in the model
     276
     277             Options -d and -t overwrite file
    281278             $LMDGCM/libf/grid/dimensions.h
    282              qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
    283              de la grille horizontale im, jm, lm plus le nombre de traceurs
    284              advectes passivement par la dynamique ntrac, par un nouveu fichier
     279             which contains the 3 dimensions of the
     280             horizontal grid
     281             im, jm, lm plus the number of tracers passively advected
     282             by the dynamics ntrac,
     283             in 4 PARAMETER FORTRAN format
     284             with a new file:
    285285             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
    286              Si ce fichier n'existe pas encore, il est cree par le script
     286             If the file does not exist already
     287             it is created by the script
    287288             $LMDGCM/libf/grid/dimension/makdim
    288289
    289 -p PHYS    pour selectionner le jeu de parametrisations physiques avec
    290            lequel on veut compiler le modele.
    291            Le modele sera alors compile en prenant les sources des
    292            parametrisations physiques dans le repertoire:
     290-s nscat   Number of radiatively active scatterers
     291
     292-p PHYS    Selects the set of physical parameterizations
     293           you want to compile the model with.
     294           The model is then compiled using the physical
     295           parameterization sources in directory:
    293296            $LMDGCM/libf/phyPHYS
    294297
    295 -g grille  selectionne le type de grille qu'on veut utiliser.
    296            L'effet de cette option est d'ecraser le fichier
     298-g grille  Selects the grid type.
     299           This option overwrites file
    297300           $LMDGCM/libf/grid/fxyprim.h
    298            avec le fichier
     301           with file
    299302           $LMDGCM/libf/grid/fxy_grille.h
    300            grille peut prendre les valeurs:
    301            1. reg pour la grille reguliere
    302            2. sin pour avoir des points equidistants en sinus de la latitude
    303            3. new pour pouvoir zoomer sur une partie du globe
    304 
    305 -O "optimisation fortran" ou les optimisations fortran sont les options de la
    306             commande f77
     303           the grid can take the following values:
     304           1. reg - the regular grid
     305           2. sin - to obtain equidistant points in terms of sin(latitude)
     306           3. new - to zoom into a part of the globe
     307
     308-O "compilation options" set of fortran compilation options to use
    307309
    308310-include path
    309            Dans le cas ou on a dans des sous programmes des fichiers
    310            #include (cpp) qui se trouve sur des repertoires non references
    311            par defaut
    312 
    313 -adjnt     Pour compiler la l'adjoint du code dynamique
     311           Used if the subroutines contain #include files (ccp) that
     312           are located in directories that are not referenced by default.
     313
     314-adjnt     Compiles the adjoint model to the dynamical code.
    314315
    315316-olddyn    To compile GCM with "old dynamics"
    316317
    317 -filtre  filtre
    318            Pour choisir le filtre en longitude dans les regions polaires.
    319            "filtre" correspond au nom d'un repertoire se trouvant sur
    320            $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
    321            etre utilise aussi bien pour une grille reguliere que pour une
    322            grille zoomee en longitude.
     318-filtre  filter
     319           To select the longitudinal filter in the polar regions.
     320           "filter" corresponds to the name of a directory located in
     321           $LMDGCM/libf. The standard filter for the model is "filtrez"
     322           which can be used for a regular grid and for a
     323           grid with longitudinal zoom.
    323324
    324325-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
    325           Pour rajouter un lien avec les librairies FORTRAN
    326           libfile1.a, libfile2.a ... se trouvant respectivement sur les
    327           repertoires dir1, dir2 ...
    328           Si dirn est un repertoire dont le chemin est automatique (comme
    329           par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
    330 
    331 Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
     326           Adds a link to FORTRAN libraries
     327           libfile1.a, libfile2.a ...
     328           located in directories dir1, dir2 ...respectively
     329           If dirn is a directory with an automatic path
     330           (/usr/lib ... for example)
     331           there is no need to specify  -Ldirn.
     332
    332333eod
    333334exit
     
    346347        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
    347348
     349     case -s
     350        set scatterers="$2" ; shift ; goto top
     351
    348352     case -g
    349353        set grille="$2" ; shift ; shift ; goto top
    350354
     355    case -b
     356        set bands=$2 ; shift ; shift ; goto top
     357           
    351358     case -t
    352359        set ntrac=$2 ; shift ; shift ; goto top
     
    377384           set optim90="$optim90"" -G1 "
    378385        else if $LINUX then
    379            set optim90="-g -Mbounds "
     386           ## for g95
     387           set optim="-g -Wall -ftrace=full -fbounds-check"
     388           set optim90="-g -Wall -ftrace=full -fbounds-check"
     389           set optimtru90="-g -Wall -ftrace=full -fbounds-check"
    380390        else
    381391           echo "pas d option debug predefinie pour cette machine"
     
    397407if ( "$physique" == 'nophys' ) then
    398408   set phys="L_PHY= LIBPHY="
    399 endif
    400 
    401 ########################################################################
    402 # choix du nombre de traceur par defaut si il n'a pas ete choisi,
    403 # suivant la physique
    404 ########################################################################
    405 
    406 if ( $ntrac == 0  ) then
    407     if ( "$physique" == 'nophys' ) then
    408         set ntrac=1
    409     else if ( "$physique" == 'lmd' ) then
    410         set ntrac=2
    411     else if ( "$physique" == 'lmd_test_li' ) then
    412         set ntrac=2
    413     else if ( "$physique" == 'ec' ) then
    414         set ntrac=1
    415     else
    416         set ntrac = 1
    417     endif
    418409endif
    419410
     
    439430
    440431# dimension
    441 
    442432echo "dimension avant sed $dim"
    443433if ( $IBM ) then
     
    448438   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
    449439else
    450 #   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
    451 #   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
    452440     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
    453441     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
    454442endif
    455443
     444# bands
     445echo "bands avant sed $bands"
     446if ( $IBM ) then
     447   set bands=`echo $bands | sed -en 's/[^0-9]/ /g'`
     448   set bands_=`echo $bands | sed -en 's/[^0-9]/_/g'`
     449else if ( $SUN || $XNEC ) then
     450   set bands=`echo $bands | sed -e 's/[^0-9]/ /g'`
     451   set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
     452else
     453     set bands=`echo $bands | sed -e 's/[^0-9]/ /g'`
     454     set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'`
     455endif
     456
     457
    456458# build final name of libraries directory:
    457459if ( "$dyntype" == "olddyn" ) then
    458   set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
    459 else
    460   set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
    461 endif
     460  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}_olddyn
     461else
     462  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}
     463endif
     464
     465# Append number of bands to nomlib (new for universal model)
     466set nomlib=${nomlib}_${bands_}
    462467
    463468# Append 'physique' type, if it is not mars, to nomlib
     
    504509cd $libf/grid
    505510if ( -f dimensions.h ) then
    506   echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
    507   echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
    508   echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
    509   echo "vous pouvez continuer en repondant oui."
    510   echo "Voulez-vous vraiment continuer?"
    511   if ( $< == "oui" ) then
    512     #remove old dimensions.h file
    513     \rm $libf/grid/dimensions.h
     511  echo "WARNING: you are already compiling the model somewhere else"
     512  echo "Wait until the first compilation is finished before starting."
     513  echo "If you are sure that you are not compiling elsewhere, you can"
     514  echo "type [yes] to continue."
     515  echo "Do you want to continue?"
     516  if ( $< == "yes" ) then
     517    #remove old dimensions.h , bands.h and scatterers.h files
     518    \rm -f $libf/grid/dimensions.h
     519    \rm -f $libf/grid/bands.h
     520    \rm -f $libf/phy${physique}/scatterers.h
    514521  else
    515522    exit
     
    522529# echo contents of dimensions.h to standard output
    523530cat $libf/grid/dimensions.h
     531
     532# Build the appropriate 'bands.h' file
     533makbands $bands
     534# echo contents of bands.h to standard output
     535cat $libf/grid/bands.h
     536
     537# Build the appropriate 'scatterers.h' file
     538cd $libf/phy$physique/scatterers
     539./make_scatterers $scatterers
     540# echo contents of scatterers.h to standard output
     541cat $libf/phy$physique/scatterers.h
    524542
    525543cd $LMDGCM
     
    549567  \rm fxyprim.h
    550568  cp -p fxy_${grille}.h fxyprim.h
    551 endif
    552 
    553 ######################################################################
    554 #   Traitement special pour le nouveau rayonnement de Laurent Li.
    555 ######################################################################
    556 
    557 if ( -f $libf/phy$physique/raddim.h ) then
    558   if ( -f $libf/phy$physique/raddim.$dimh.h ) then
    559     \rm $libf/phy$physique/raddim.h
    560     cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
    561     echo $libf/phy$physique/raddim.$dimh.h
    562     cat $libf/phy$physique/raddim.$dimh.h
    563     cat $libf/phy$physique/raddim.h
    564   else
    565     echo On peut diminuer la taille de l executable en creant
    566     echo le fichier $libf/phy$physique/raddim.$dimh.h
    567     \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
    568   endif
    569569endif
    570570
     
    680680endif
    681681
    682 
    683 
    684 #
    685 # les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
    686 # compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
    687 #
    688 #if ($code == 'create_limit' && $SUN) then
    689 #   set link=f77
    690 #   set opt_link="-L$NCDFLIB -lnetcdf"
    691 #endif
    692 
    693 #if ($code == 'create_etat0' && $SUN) then
    694 #   if ( ! -f $libo/libdyn3d.a ) then
    695 #     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
    696 #     \rm $libf/grid/dimensions.h
    697 #     exit
    698 #   endif
    699 #   set optim90=" -dalign -fixed "
    700 #   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
    701 #   set link="$f90 $optim90"
    702 #   touch $LMDGCM/libf/dyn3d/startvar.F
    703 #   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
    704 #endif
    705 
    706 #
    707 # Encore un test temporaire: probleme de compilation sur VPP
    708 # l'optimisation de startvar se passe mal
    709 #
    710 if ($code == 'create_etat0' && $VPP) then
    711    if ( ! -f $libo/libdyn3d.a ) then
    712      echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
    713      \rm $libf/grid/dimensions.h                                             
    714      exit                       
    715    endif
    716    set optim90="$optim90"" -X9 -w"
    717    set opt_link="-L$NCDFLIB -lnetcdf"
    718    touch $LMDGCM/libf/dyn3d/startvar.F
    719    touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
    720 endif
    721 
    722682#
    723683# etat0_netcdf a besoin d'info de la physique
     
    815775PROG=$code
    816776
    817 \rm $libf/grid/dimensions.h
     777\rm -f $libf/grid/dimensions.h
     778\rm -f $libf/grid/bands.h
     779\rm -f $libf/phy$physique/scatterers.h
  • trunk/LMDZ.GENERIC/makegcm_gfortran

    r646 r671  
    1414set dyntype="dyn"
    1515set bands="32x36"
     16set scatterers="1"
    1617########################################################################
    1718# path a changer contenant les sources et les objets du modele
     
    243244
    244245
    245 
    246 
    247 Par default, la commande makegcm:
    248 ---------------------------------
    249 
    250 1. compile une serie de sous programmes se trouvant dans des sous-repertoires
    251 de $LMDGCM/libf.
    252 Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
    253 sur $LIBOGCM.
    254 
    255 2. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
    256 $LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
    257 
    258 La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
    259 dans la comande makegcm.
    260 
    261 La commande makegcm est faite pour permettre de gerer en parallele des
    262 versions differentes du modele, compilees avec des options de compilation
    263 et des dimensions differentes sans avoir a chaque fois a recompiler tout
    264 le modele.
    265 
    266 Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
     246The makegcm script:
     247-------------------
     248
     2491. compiles a series of subroutines located in the $LMDGCM/libf
     250 sub-directories.
     251 The objects are then stored in the libraries in $LIBOGCM.
     252
     2532. then, makegcm compiles program prog.f located by default in
     254$LMDGCM/libf/dyn3d and makes the link with the libraries.
     255
     256Environment Variables '$LMDGCM' and '$LIBOGCM'
     257 must be set as environment variables or directly
     258 in the makegcm file.
     259
     260The makegcm command is used to control the different versions of the model
     261 in parallel, compiled using the compilation options
     262 and the various dimensions, without having to recompile the whole model.
     263
     264The FORTRAN libraries are stored in directory $LIBOGCM.
    267265
    268266
     
    270268--------
    271269
    272 Les options suivantes peuvent etre definies soit par defaut en editant le
    273 "script" makegcm, soit en interactif:
    274 
    275 -d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
    276              et couches verticales.
    277 
    278 -t ntrac   selectionne le nombre de traceur advectes par la dynamique.
    279            Dans les versions courantes du modele terrestre on a par exemple
    280            ntrac=2 pour l'eau vapeur et liquide
    281 
    282              L'effet des options -d et -t est d'ecraser le fichier
     270The following options can either be defined by default by editing the
     271makegcm "script", or in interactive mode:
     272
     273-d imxjmxlm  where im, jm, and lm are the number of longitudes,
     274             latitudes and vertical layers respectively.
     275
     276-t ntrac   Selects the number of tracers present in the model
     277
     278             Options -d and -t overwrite file
    283279             $LMDGCM/libf/grid/dimensions.h
    284              qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
    285              de la grille horizontale im, jm, lm plus le nombre de traceurs
    286              advectes passivement par la dynamique ntrac, par un nouveu fichier
     280             which contains the 3 dimensions of the
     281             horizontal grid
     282             im, jm, lm plus the number of tracers passively advected
     283             by the dynamics ntrac,
     284             in 4 PARAMETER FORTRAN format
     285             with a new file:
    287286             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
    288              Si ce fichier n'existe pas encore, il est cree par le script
     287             If the file does not exist already
     288             it is created by the script
    289289             $LMDGCM/libf/grid/dimension/makdim
    290290
    291 -p PHYS    pour selectionner le jeu de parametrisations physiques avec
    292            lequel on veut compiler le modele.
    293            Le modele sera alors compile en prenant les sources des
    294            parametrisations physiques dans le repertoire:
     291-s nscat   Number of radiatively active scatterers
     292
     293-p PHYS    Selects the set of physical parameterizations
     294           you want to compile the model with.
     295           The model is then compiled using the physical
     296           parameterization sources in directory:
    295297            $LMDGCM/libf/phyPHYS
    296298
    297 -g grille  selectionne le type de grille qu'on veut utiliser.
    298            L'effet de cette option est d'ecraser le fichier
     299-g grille  Selects the grid type.
     300           This option overwrites file
    299301           $LMDGCM/libf/grid/fxyprim.h
    300            avec le fichier
     302           with file
    301303           $LMDGCM/libf/grid/fxy_grille.h
    302            grille peut prendre les valeurs:
    303            1. reg pour la grille reguliere
    304            2. sin pour avoir des points equidistants en sinus de la latitude
    305            3. new pour pouvoir zoomer sur une partie du globe
    306 
    307 -O "optimisation fortran" ou les optimisations fortran sont les options de la
    308             commande f77
     304           the grid can take the following values:
     305           1. reg - the regular grid
     306           2. sin - to obtain equidistant points in terms of sin(latitude)
     307           3. new - to zoom into a part of the globe
     308
     309-O "compilation options" set of fortran compilation options to use
    309310
    310311-include path
    311            Dans le cas ou on a dans des sous programmes des fichiers
    312            #include (cpp) qui se trouve sur des repertoires non references
    313            par defaut
    314 
    315 -adjnt     Pour compiler la l'adjoint du code dynamique
     312           Used if the subroutines contain #include files (ccp) that
     313           are located in directories that are not referenced by default.
     314
     315-adjnt     Compiles the adjoint model to the dynamical code.
    316316
    317317-olddyn    To compile GCM with "old dynamics"
    318318
    319 -filtre  filtre
    320            Pour choisir le filtre en longitude dans les regions polaires.
    321            "filtre" correspond au nom d'un repertoire se trouvant sur
    322            $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
    323            etre utilise aussi bien pour une grille reguliere que pour une
    324            grille zoomee en longitude.
     319-filtre  filter
     320           To select the longitudinal filter in the polar regions.
     321           "filter" corresponds to the name of a directory located in
     322           $LMDGCM/libf. The standard filter for the model is "filtrez"
     323           which can be used for a regular grid and for a
     324           grid with longitudinal zoom.
    325325
    326326-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
    327           Pour rajouter un lien avec les librairies FORTRAN
    328           libfile1.a, libfile2.a ... se trouvant respectivement sur les
    329           repertoires dir1, dir2 ...
    330           Si dirn est un repertoire dont le chemin est automatique (comme
    331           par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
    332 
    333 Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
     327           Adds a link to FORTRAN libraries
     328           libfile1.a, libfile2.a ...
     329           located in directories dir1, dir2 ...respectively
     330           If dirn is a directory with an automatic path
     331           (/usr/lib ... for example)
     332           there is no need to specify  -Ldirn.
     333
    334334eod
    335335exit
     
    347347     case -p
    348348        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
     349
     350     case -s
     351        set scatterers="$2" ; shift ; goto top
    349352
    350353     case -g
     
    408411if ( "$physique" == 'nophys' ) then
    409412   set phys="L_PHY= LIBPHY="
    410 endif
    411 
    412 ########################################################################
    413 # choix du nombre de traceur par defaut si il n'a pas ete choisi,
    414 # suivant la physique
    415 ########################################################################
    416 
    417 if ( $ntrac == 0  ) then
    418     if ( "$physique" == 'nophys' ) then
    419         set ntrac=1
    420     else if ( "$physique" == 'lmd' ) then
    421         set ntrac=2
    422     else if ( "$physique" == 'lmd_test_li' ) then
    423         set ntrac=2
    424     else if ( "$physique" == 'ec' ) then
    425         set ntrac=1
    426     else
    427         set ntrac = 1
    428     endif
    429413endif
    430414
     
    479463# build final name of libraries directory:
    480464if ( "$dyntype" == "olddyn" ) then
    481   set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
    482 else
    483   set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
     465  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}_olddyn
     466else
     467  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}
    484468endif
    485469
     
    536520  echo "Do you want to continue?"
    537521  if ( $< == "yes" ) then
    538     #remove old dimensions.h file
    539     \rm $libf/grid/dimensions.h
    540     \rm $libf/grid/bands.h
     522    #remove old dimensions.h , bands.h and scatterers.h files
     523    \rm -f $libf/grid/dimensions.h
     524    \rm -f $libf/grid/bands.h
     525    \rm -f $libf/phy${physique}/scatterers.h
    541526  else
    542527    exit
     
    554539# echo contents of bands.h to standard output
    555540cat $libf/grid/bands.h
     541
     542# Build the appropriate 'scatterers.h' file
     543cd $libf/phy$physique/scatterers
     544./make_scatterers $scatterers
     545# echo contents of scatterers.h to standard output
     546cat $libf/phy$physique/scatterers.h
    556547
    557548cd $LMDGCM
     
    582573  cp -p fxy_${grille}.h fxyprim.h
    583574endif
    584 
    585 ######################################################################
    586 #   Traitement special pour le nouveau rayonnement de Laurent Li.
    587 ######################################################################
    588 #if ( -f $libf/phy$physique/raddim.h ) then
    589 #  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
    590 #    \rm $libf/phy$physique/raddim.h
    591 #    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
    592 #    echo $libf/phy$physique/raddim.$dimh.h
    593 #    cat $libf/phy$physique/raddim.$dimh.h
    594 #    cat $libf/phy$physique/raddim.h
    595 #  else
    596 #    echo On peut diminuer la taille de l executable en creant
    597 #    echo le fichier $libf/phy$physique/raddim.$dimh.h
    598 #    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
    599 #  endif
    600 #endif
    601575
    602576######################################################################
     
    710684  set make="make RANLIB=ranlib"
    711685endif
    712 
    713 
    714 
    715 #
    716 # les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
    717 # compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
    718 #
    719 #if ($code == 'create_limit' && $SUN) then
    720 #   set link=f77
    721 #   set opt_link="-L$NCDFLIB -lnetcdf"
    722 #endif
    723 
    724 #if ($code == 'create_etat0' && $SUN) then
    725 #   if ( ! -f $libo/libdyn3d.a ) then
    726 #     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
    727 #     \rm $libf/grid/dimensions.h
    728 #     exit
    729 #   endif
    730 #   set optim90=" -dalign -fixed "
    731 #   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
    732 #   set link="$f90 $optim90"
    733 #   touch $LMDGCM/libf/dyn3d/startvar.F
    734 #   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
    735 #endif
    736 
    737 #
    738 # Encore un test temporaire: probleme de compilation sur VPP
    739 # l'optimisation de startvar se passe mal
    740 #
    741 #if ($code == 'create_etat0' && $VPP) then
    742 #   if ( ! -f $libo/libdyn3d.a ) then
    743 #     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
    744 #     \rm $libf/grid/dimensions.h                                             
    745 #     exit                       
    746 #   endif
    747 #   set optim90="$optim90"" -X9 -w"
    748 #   set opt_link="-L$NCDFLIB -lnetcdf"
    749 #   touch $LMDGCM/libf/dyn3d/startvar.F
    750 #   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
    751 #endif
    752686
    753687#
     
    854788PROG=$code
    855789
    856 \rm $libf/grid/dimensions.h
    857 \rm $libf/grid/bands.h
     790\rm -f $libf/grid/dimensions.h
     791\rm -f $libf/grid/bands.h
     792\rm -f $libf/phy$physique/scatterers.h
  • trunk/LMDZ.GENERIC/makegcm_ifort

    r646 r671  
    1414set dyntype="dyn"
    1515set bands="32x36"
     16set scatterers="1"
    1617########################################################################
    1718# path a changer contenant les sources et les objets du modele
     
    236237
    237238
    238 
    239 
    240 Par default, la commande makegcm:
    241 ---------------------------------
    242 
    243 1. compile une serie de sous programmes se trouvant dans des sous-repertoires
    244 de $LMDGCM/libf.
    245 Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
    246 sur $LIBOGCM.
    247 
    248 2. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
    249 $LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
    250 
    251 La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
    252 dans la comande makegcm.
    253 
    254 La commande makegcm est faite pour permettre de gerer en parallele des
    255 versions differentes du modele, compilees avec des options de compilation
    256 et des dimensions differentes sans avoir a chaque fois a recompiler tout
    257 le modele.
    258 
    259 Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
     239The makegcm script:
     240-------------------
     241
     2421. compiles a series of subroutines located in the $LMDGCM/libf
     243 sub-directories.
     244 The objects are then stored in the libraries in $LIBOGCM.
     245
     2462. then, makegcm compiles program prog.f located by default in
     247$LMDGCM/libf/dyn3d and makes the link with the libraries.
     248
     249Environment Variables '$LMDGCM' and '$LIBOGCM'
     250 must be set as environment variables or directly
     251 in the makegcm file.
     252
     253The makegcm command is used to control the different versions of the model
     254 in parallel, compiled using the compilation options
     255 and the various dimensions, without having to recompile the whole model.
     256
     257The FORTRAN libraries are stored in directory $LIBOGCM.
    260258
    261259
     
    263261--------
    264262
    265 Les options suivantes peuvent etre definies soit par defaut en editant le
    266 "script" makegcm, soit en interactif:
    267 
    268 -d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
    269              et couches verticales.
    270 
    271 -t ntrac   selectionne le nombre de traceur advectes par la dynamique.
    272            Dans les versions courantes du modele terrestre on a par exemple
    273            ntrac=2 pour l'eau vapeur et liquide
    274 
    275              L'effet des options -d et -t est d'ecraser le fichier
     263The following options can either be defined by default by editing the
     264makegcm "script", or in interactive mode:
     265
     266-d imxjmxlm  where im, jm, and lm are the number of longitudes,
     267             latitudes and vertical layers respectively.
     268
     269-t ntrac   Selects the number of tracers present in the model
     270
     271             Options -d and -t overwrite file
    276272             $LMDGCM/libf/grid/dimensions.h
    277              qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
    278              de la grille horizontale im, jm, lm plus le nombre de traceurs
    279              advectes passivement par la dynamique ntrac, par un nouveu fichier
     273             which contains the 3 dimensions of the
     274             horizontal grid
     275             im, jm, lm plus the number of tracers passively advected
     276             by the dynamics ntrac,
     277             in 4 PARAMETER FORTRAN format
     278             with a new file:
    280279             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
    281              Si ce fichier n'existe pas encore, il est cree par le script
     280             If the file does not exist already
     281             it is created by the script
    282282             $LMDGCM/libf/grid/dimension/makdim
    283283
    284 -p PHYS    pour selectionner le jeu de parametrisations physiques avec
    285            lequel on veut compiler le modele.
    286            Le modele sera alors compile en prenant les sources des
    287            parametrisations physiques dans le repertoire:
     284-s nscat   Number of radiatively active scatterers
     285
     286-p PHYS    Selects the set of physical parameterizations
     287           you want to compile the model with.
     288           The model is then compiled using the physical
     289           parameterization sources in directory:
    288290            $LMDGCM/libf/phyPHYS
    289291
    290 -g grille  selectionne le type de grille qu'on veut utiliser.
    291            L'effet de cette option est d'ecraser le fichier
     292-g grille  Selects the grid type.
     293           This option overwrites file
    292294           $LMDGCM/libf/grid/fxyprim.h
    293            avec le fichier
     295           with file
    294296           $LMDGCM/libf/grid/fxy_grille.h
    295            grille peut prendre les valeurs:
    296            1. reg pour la grille reguliere
    297            2. sin pour avoir des points equidistants en sinus de la latitude
    298            3. new pour pouvoir zoomer sur une partie du globe
    299 
    300 -O "optimisation fortran" ou les optimisations fortran sont les options de la
    301             commande f77
     297           the grid can take the following values:
     298           1. reg - the regular grid
     299           2. sin - to obtain equidistant points in terms of sin(latitude)
     300           3. new - to zoom into a part of the globe
     301
     302-O "compilation options" set of fortran compilation options to use
    302303
    303304-include path
    304            Dans le cas ou on a dans des sous programmes des fichiers
    305            #include (cpp) qui se trouve sur des repertoires non references
    306            par defaut
    307 
    308 -adjnt     Pour compiler la l'adjoint du code dynamique
     305           Used if the subroutines contain #include files (ccp) that
     306           are located in directories that are not referenced by default.
     307
     308-adjnt     Compiles the adjoint model to the dynamical code.
    309309
    310310-olddyn    To compile GCM with "old dynamics"
    311311
    312 -filtre  filtre
    313            Pour choisir le filtre en longitude dans les regions polaires.
    314            "filtre" correspond au nom d'un repertoire se trouvant sur
    315            $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
    316            etre utilise aussi bien pour une grille reguliere que pour une
    317            grille zoomee en longitude.
     312-filtre  filter
     313           To select the longitudinal filter in the polar regions.
     314           "filter" corresponds to the name of a directory located in
     315           $LMDGCM/libf. The standard filter for the model is "filtrez"
     316           which can be used for a regular grid and for a
     317           grid with longitudinal zoom.
    318318
    319319-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
    320           Pour rajouter un lien avec les librairies FORTRAN
    321           libfile1.a, libfile2.a ... se trouvant respectivement sur les
    322           repertoires dir1, dir2 ...
    323           Si dirn est un repertoire dont le chemin est automatique (comme
    324           par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
    325 
    326 Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
     320           Adds a link to FORTRAN libraries
     321           libfile1.a, libfile2.a ...
     322           located in directories dir1, dir2 ...respectively
     323           If dirn is a directory with an automatic path
     324           (/usr/lib ... for example)
     325           there is no need to specify  -Ldirn.
     326
    327327eod
    328328exit
     
    340340     case -p
    341341        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
     342
     343     case -s
     344        set scatterers="$2" ; shift ; goto top
    342345
    343346     case -g
     
    401404
    402405########################################################################
    403 # choix du nombre de traceur par defaut si il n'a pas ete choisi,
    404 # suivant la physique
    405 ########################################################################
    406 
    407 if ( $ntrac == 0  ) then
    408     if ( "$physique" == 'nophys' ) then
    409         set ntrac=1
    410     else if ( "$physique" == 'lmd' ) then
    411         set ntrac=2
    412     else if ( "$physique" == 'lmd_test_li' ) then
    413         set ntrac=2
    414     else if ( "$physique" == 'ec' ) then
    415         set ntrac=1
    416     else
    417         set ntrac = 1
    418     endif
    419 endif
    420 
    421 ########################################################################
    422406#subtilites sur le nom de la librairie
    423407########################################################################
     
    469453# build final name of libraries directory:
    470454if ( "$dyntype" == "olddyn" ) then
    471   set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
    472 else
    473   set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
     455  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}_olddyn
     456else
     457  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}
    474458endif
    475459
     
    525509  echo "type [yes] to continue."
    526510  echo "Do you want to continue?"
    527 #  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
    528 #  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
    529 #  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
    530 #  echo "vous pouvez continuer en repondant oui."
    531 #  echo "Voulez-vous vraiment continuer?"
    532511  if ( $< == "yes" ) then
    533     #remove old dimensions.h file
    534     \rm $libf/grid/dimensions.h
    535     \rm $libf/grid/bands.h
     512    #remove old dimensions.h , bands.h and scatterers.h files
     513    \rm -f $libf/grid/dimensions.h
     514    \rm -f $libf/grid/bands.h
     515    \rm -f $libf/phy${physique}/scatterers.h
    536516  else
    537517    exit
     
    549529# echo contents of bands.h to standard output
    550530cat $libf/grid/bands.h
     531
     532# Build the appropriate 'scatterers.h' file
     533cd $libf/phy$physique/scatterers
     534./make_scatterers $scatterers
     535# echo contents of scatterers.h to standard output
     536cat $libf/phy$physique/scatterers.h
    551537
    552538cd $LMDGCM
     
    577563  cp -p fxy_${grille}.h fxyprim.h
    578564endif
    579 
    580 ######################################################################
    581 #   Traitement special pour le nouveau rayonnement de Laurent Li.
    582 ######################################################################
    583 #if ( -f $libf/phy$physique/raddim.h ) then
    584 #  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
    585 #    \rm $libf/phy$physique/raddim.h
    586 #    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
    587 #    echo $libf/phy$physique/raddim.$dimh.h
    588 #    cat $libf/phy$physique/raddim.$dimh.h
    589 #    cat $libf/phy$physique/raddim.h
    590 #  else
    591 #    echo On peut diminuer la taille de l executable en creant
    592 #    echo le fichier $libf/phy$physique/raddim.$dimh.h
    593 #    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
    594 #  endif
    595 #endif
    596565
    597566######################################################################
     
    708677endif
    709678
    710 
    711 
    712 #
    713 # les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
    714 # compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
    715 #
    716 #if ($code == 'create_limit' && $SUN) then
    717 #   set link=f77
    718 #   set opt_link="-L$NCDFLIB -lnetcdf"
    719 #endif
    720 
    721 #if ($code == 'create_etat0' && $SUN) then
    722 #   if ( ! -f $libo/libdyn3d.a ) then
    723 #     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
    724 #     \rm $libf/grid/dimensions.h
    725 #     exit
    726 #   endif
    727 #   set optim90=" -dalign -fixed "
    728 #   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
    729 #   set link="$f90 $optim90"
    730 #   touch $LMDGCM/libf/dyn3d/startvar.F
    731 #   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
    732 #endif
    733 
    734 #
    735 # Encore un test temporaire: probleme de compilation sur VPP
    736 # l'optimisation de startvar se passe mal
    737 #
    738 #if ($code == 'create_etat0' && $VPP) then
    739 #   if ( ! -f $libo/libdyn3d.a ) then
    740 #     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
    741 #     \rm $libf/grid/dimensions.h                                             
    742 #     exit                       
    743 #   endif
    744 #   set optim90="$optim90"" -X9 -w"
    745 #   set opt_link="-L$NCDFLIB -lnetcdf"
    746 #   touch $LMDGCM/libf/dyn3d/startvar.F
    747 #   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
    748 #endif
    749 
    750679#
    751680# etat0_netcdf a besoin d'info de la physique
     
    844773PROG=$code
    845774
    846 \rm $libf/grid/dimensions.h
    847 \rm $libf/grid/bands.h
     775\rm -f $libf/grid/dimensions.h
     776\rm -f $libf/grid/bands.h
     777\rm -f $libf/phy$physique/scatterers.h
  • trunk/LMDZ.GENERIC/makegcm_pgf90

    r646 r671  
    1414set dyntype="dyn"
    1515set bands="32x36"
     16set scatterers="1"
    1617########################################################################
    1718# path a changer contenant les sources et les objets du modele
     
    240241
    241242
    242 
    243 
    244 Par default, la commande makegcm:
    245 ---------------------------------
    246 
    247 1. compile une serie de sous programmes se trouvant dans des sous-repertoires
    248 de $LMDGCM/libf.
    249 Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
    250 sur $LIBOGCM.
    251 
    252 2. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
    253 $LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
    254 
    255 La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
    256 dans la comande makegcm.
    257 
    258 La commande makegcm est faite pour permettre de gerer en parallele des
    259 versions differentes du modele, compilees avec des options de compilation
    260 et des dimensions differentes sans avoir a chaque fois a recompiler tout
    261 le modele.
    262 
    263 Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
     243The makegcm script:
     244-------------------
     245
     2461. compiles a series of subroutines located in the $LMDGCM/libf
     247 sub-directories.
     248 The objects are then stored in the libraries in $LIBOGCM.
     249
     2502. then, makegcm compiles program prog.f located by default in
     251$LMDGCM/libf/dyn3d and makes the link with the libraries.
     252
     253Environment Variables '$LMDGCM' and '$LIBOGCM'
     254 must be set as environment variables or directly
     255 in the makegcm file.
     256
     257The makegcm command is used to control the different versions of the model
     258 in parallel, compiled using the compilation options
     259 and the various dimensions, without having to recompile the whole model.
     260
     261The FORTRAN libraries are stored in directory $LIBOGCM.
    264262
    265263
     
    267265--------
    268266
    269 Les options suivantes peuvent etre definies soit par defaut en editant le
    270 "script" makegcm, soit en interactif:
    271 
    272 -d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
    273              et couches verticales.
    274 
    275 -t ntrac   selectionne le nombre de traceur advectes par la dynamique.
    276            Dans les versions courantes du modele terrestre on a par exemple
    277            ntrac=2 pour l'eau vapeur et liquide
    278 
    279              L'effet des options -d et -t est d'ecraser le fichier
     267The following options can either be defined by default by editing the
     268makegcm "script", or in interactive mode:
     269
     270-d imxjmxlm  where im, jm, and lm are the number of longitudes,
     271             latitudes and vertical layers respectively.
     272
     273-t ntrac   Selects the number of tracers present in the model
     274
     275             Options -d and -t overwrite file
    280276             $LMDGCM/libf/grid/dimensions.h
    281              qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
    282              de la grille horizontale im, jm, lm plus le nombre de traceurs
    283              advectes passivement par la dynamique ntrac, par un nouveu fichier
     277             which contains the 3 dimensions of the
     278             horizontal grid
     279             im, jm, lm plus the number of tracers passively advected
     280             by the dynamics ntrac,
     281             in 4 PARAMETER FORTRAN format
     282             with a new file:
    284283             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
    285              Si ce fichier n'existe pas encore, il est cree par le script
     284             If the file does not exist already
     285             it is created by the script
    286286             $LMDGCM/libf/grid/dimension/makdim
    287287
    288 -p PHYS    pour selectionner le jeu de parametrisations physiques avec
    289            lequel on veut compiler le modele.
    290            Le modele sera alors compile en prenant les sources des
    291            parametrisations physiques dans le repertoire:
     288-s nscat   Number of radiatively active scatterers
     289
     290-p PHYS    Selects the set of physical parameterizations
     291           you want to compile the model with.
     292           The model is then compiled using the physical
     293           parameterization sources in directory:
    292294            $LMDGCM/libf/phyPHYS
    293295
    294 -g grille  selectionne le type de grille qu'on veut utiliser.
    295            L'effet de cette option est d'ecraser le fichier
     296-g grille  Selects the grid type.
     297           This option overwrites file
    296298           $LMDGCM/libf/grid/fxyprim.h
    297            avec le fichier
     299           with file
    298300           $LMDGCM/libf/grid/fxy_grille.h
    299            grille peut prendre les valeurs:
    300            1. reg pour la grille reguliere
    301            2. sin pour avoir des points equidistants en sinus de la latitude
    302            3. new pour pouvoir zoomer sur une partie du globe
    303 
    304 -O "optimisation fortran" ou les optimisations fortran sont les options de la
    305             commande f77
     301           the grid can take the following values:
     302           1. reg - the regular grid
     303           2. sin - to obtain equidistant points in terms of sin(latitude)
     304           3. new - to zoom into a part of the globe
     305
     306-O "compilation options" set of fortran compilation options to use
    306307
    307308-include path
    308            Dans le cas ou on a dans des sous programmes des fichiers
    309            #include (cpp) qui se trouve sur des repertoires non references
    310            par defaut
    311 
    312 -adjnt     Pour compiler la l'adjoint du code dynamique
     309           Used if the subroutines contain #include files (ccp) that
     310           are located in directories that are not referenced by default.
     311
     312-adjnt     Compiles the adjoint model to the dynamical code.
    313313
    314314-olddyn    To compile GCM with "old dynamics"
    315315
    316 -filtre  filtre
    317            Pour choisir le filtre en longitude dans les regions polaires.
    318            "filtre" correspond au nom d'un repertoire se trouvant sur
    319            $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
    320            etre utilise aussi bien pour une grille reguliere que pour une
    321            grille zoomee en longitude.
     316-filtre  filter
     317           To select the longitudinal filter in the polar regions.
     318           "filter" corresponds to the name of a directory located in
     319           $LMDGCM/libf. The standard filter for the model is "filtrez"
     320           which can be used for a regular grid and for a
     321           grid with longitudinal zoom.
    322322
    323323-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
    324           Pour rajouter un lien avec les librairies FORTRAN
    325           libfile1.a, libfile2.a ... se trouvant respectivement sur les
    326           repertoires dir1, dir2 ...
    327           Si dirn est un repertoire dont le chemin est automatique (comme
    328           par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
    329 
    330 Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
     324           Adds a link to FORTRAN libraries
     325           libfile1.a, libfile2.a ...
     326           located in directories dir1, dir2 ...respectively
     327           If dirn is a directory with an automatic path
     328           (/usr/lib ... for example)
     329           there is no need to specify  -Ldirn.
     330
    331331eod
    332332exit
     
    344344     case -p
    345345        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
     346
     347     case -s
     348        set scatterers="$2" ; shift ; goto top
    346349
    347350     case -g
     
    408411
    409412########################################################################
    410 # choix du nombre de traceur par defaut si il n'a pas ete choisi,
    411 # suivant la physique
    412 ########################################################################
    413 
    414 if ( $ntrac == 0  ) then
    415     if ( "$physique" == 'nophys' ) then
    416         set ntrac=1
    417     else if ( "$physique" == 'lmd' ) then
    418         set ntrac=2
    419     else if ( "$physique" == 'lmd_test_li' ) then
    420         set ntrac=2
    421     else if ( "$physique" == 'ec' ) then
    422         set ntrac=1
    423     else
    424         set ntrac = 1
    425     endif
    426 endif
    427 
    428 ########################################################################
    429413#subtilites sur le nom de la librairie
    430414########################################################################
     
    476460# build final name of libraries directory:
    477461if ( "$dyntype" == "olddyn" ) then
    478   set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
    479 else
    480   set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
     462  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}_olddyn
     463else
     464  set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}
    481465endif
    482466
     
    532516  echo "type [yes] to continue."
    533517  echo "Do you want to continue?"
    534 #  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
    535 #  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
    536 #  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
    537 #  echo "vous pouvez continuer en repondant oui."
    538 #  echo "Voulez-vous vraiment continuer?"
    539518  if ( $< == "yes" ) then
    540     #remove old dimensions.h file
    541     \rm $libf/grid/dimensions.h
    542     \rm $libf/grid/bands.h
     519    #remove old dimensions.h , bands.h and scatterers.h files
     520    \rm -f $libf/grid/dimensions.h
     521    \rm -f $libf/grid/bands.h
     522    \rm -f $libf/phy${physique}/scatterers.h
    543523  else
    544524    exit
     
    556536# echo contents of bands.h to standard output
    557537cat $libf/grid/bands.h
     538
     539# Build the appropriate 'scatterers.h' file
     540cd $libf/phy$physique/scatterers
     541./make_scatterers $scatterers
     542# echo contents of scatterers.h to standard output
     543cat $libf/phy$physique/scatterers.h
    558544
    559545cd $LMDGCM
     
    584570  cp -p fxy_${grille}.h fxyprim.h
    585571endif
    586 
    587 ######################################################################
    588 #   Traitement special pour le nouveau rayonnement de Laurent Li.
    589 ######################################################################
    590 #if ( -f $libf/phy$physique/raddim.h ) then
    591 #  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
    592 #    \rm $libf/phy$physique/raddim.h
    593 #    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
    594 #    echo $libf/phy$physique/raddim.$dimh.h
    595 #    cat $libf/phy$physique/raddim.$dimh.h
    596 #    cat $libf/phy$physique/raddim.h
    597 #  else
    598 #    echo On peut diminuer la taille de l executable en creant
    599 #    echo le fichier $libf/phy$physique/raddim.$dimh.h
    600 #    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
    601 #  endif
    602 #endif
    603572
    604573######################################################################
     
    715684endif
    716685
    717 
    718 
    719 #
    720 # les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
    721 # compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
    722 #
    723 #if ($code == 'create_limit' && $SUN) then
    724 #   set link=f77
    725 #   set opt_link="-L$NCDFLIB -lnetcdf"
    726 #endif
    727 
    728 #if ($code == 'create_etat0' && $SUN) then
    729 #   if ( ! -f $libo/libdyn3d.a ) then
    730 #     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
    731 #     \rm $libf/grid/dimensions.h
    732 #     exit
    733 #   endif
    734 #   set optim90=" -dalign -fixed "
    735 #   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
    736 #   set link="$f90 $optim90"
    737 #   touch $LMDGCM/libf/dyn3d/startvar.F
    738 #   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
    739 #endif
    740 
    741 #
    742 # Encore un test temporaire: probleme de compilation sur VPP
    743 # l'optimisation de startvar se passe mal
    744 #
    745 #if ($code == 'create_etat0' && $VPP) then
    746 #   if ( ! -f $libo/libdyn3d.a ) then
    747 #     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
    748 #     \rm $libf/grid/dimensions.h                                             
    749 #     exit                       
    750 #   endif
    751 #   set optim90="$optim90"" -X9 -w"
    752 #   set opt_link="-L$NCDFLIB -lnetcdf"
    753 #   touch $LMDGCM/libf/dyn3d/startvar.F
    754 #   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
    755 #endif
    756 
    757686#
    758687# etat0_netcdf a besoin d'info de la physique
     
    856785PROG=$code
    857786
    858 \rm $libf/grid/dimensions.h
    859 \rm $libf/grid/bands.h
     787\rm -f $libf/grid/dimensions.h
     788\rm -f $libf/grid/bands.h
     789\rm -f $libf/phy$physique/scatterers.h
Note: See TracChangeset for help on using the changeset viewer.