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_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.