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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.