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