Changeset 671 for trunk/LMDZ.GENERIC/makegcm_gfortran
- Timestamp:
- May 25, 2012, 11:11:42 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/makegcm_gfortran
r646 r671 14 14 set dyntype="dyn" 15 15 set bands="32x36" 16 set scatterers="1" 16 17 ######################################################################## 17 18 # path a changer contenant les sources et les objets du modele … … 243 244 244 245 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. 246 The makegcm script: 247 ------------------- 248 249 1. 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 253 2. then, makegcm compiles program prog.f located by default in 254 $LMDGCM/libf/dyn3d and makes the link with the libraries. 255 256 Environment Variables '$LMDGCM' and '$LIBOGCM' 257 must be set as environment variables or directly 258 in the makegcm file. 259 260 The 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 264 The FORTRAN libraries are stored in directory $LIBOGCM. 267 265 268 266 … … 270 268 -------- 271 269 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 270 The following options can either be defined by default by editing the 271 makegcm "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 283 279 $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: 287 286 $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 289 289 $LMDGCM/libf/grid/dimension/makdim 290 290 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: 295 297 $LMDGCM/libf/phyPHYS 296 298 297 -g grille selectionne le type de grille qu'on veut utiliser.298 L'effet de cette option est d'ecraser le fichier299 -g grille Selects the grid type. 300 This option overwrites file 299 301 $LMDGCM/libf/grid/fxyprim.h 300 avec le fichier302 with file 301 303 $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 309 310 310 311 -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. 316 316 317 317 -olddyn To compile GCM with "old dynamics" 318 318 319 -filtre filt re320 Pour choisir le filtre en longitude dans les regions polaires.321 "filt re" correspond au nom d'un repertoire se trouvant sur322 $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut323 etre utilise aussi bien pour une grille reguliere que pour une324 gri lle 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. 325 325 326 326 -link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..." 327 Pour rajouter un lien avec les librairies FORTRAN328 libfile1.a, libfile2.a ... se trouvant respectivement sur les329 repertoires dir1, dir2 ...330 Si dirn est un repertoire dont le chemin est automatique (comme331 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 334 334 eod 335 335 exit … … 347 347 case -p 348 348 set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top 349 350 case -s 351 set scatterers="$2" ; shift ; goto top 349 352 350 353 case -g … … 408 411 if ( "$physique" == 'nophys' ) then 409 412 set phys="L_PHY= LIBPHY=" 410 endif411 412 ########################################################################413 # choix du nombre de traceur par defaut si il n'a pas ete choisi,414 # suivant la physique415 ########################################################################416 417 if ( $ntrac == 0 ) then418 if ( "$physique" == 'nophys' ) then419 set ntrac=1420 else if ( "$physique" == 'lmd' ) then421 set ntrac=2422 else if ( "$physique" == 'lmd_test_li' ) then423 set ntrac=2424 else if ( "$physique" == 'ec' ) then425 set ntrac=1426 else427 set ntrac = 1428 endif429 413 endif 430 414 … … 479 463 # build final name of libraries directory: 480 464 if ( "$dyntype" == "olddyn" ) then 481 set nomlib=${nomlib}_${dim_}_t${ntrac}_ ${grille}_olddyn482 else 483 set nomlib=${nomlib}_${dim_}_t${ntrac}_ ${grille}465 set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille}_olddyn 466 else 467 set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille} 484 468 endif 485 469 … … 536 520 echo "Do you want to continue?" 537 521 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 541 526 else 542 527 exit … … 554 539 # echo contents of bands.h to standard output 555 540 cat $libf/grid/bands.h 541 542 # Build the appropriate 'scatterers.h' file 543 cd $libf/phy$physique/scatterers 544 ./make_scatterers $scatterers 545 # echo contents of scatterers.h to standard output 546 cat $libf/phy$physique/scatterers.h 556 547 557 548 cd $LMDGCM … … 582 573 cp -p fxy_${grille}.h fxyprim.h 583 574 endif 584 585 ######################################################################586 # Traitement special pour le nouveau rayonnement de Laurent Li.587 ######################################################################588 #if ( -f $libf/phy$physique/raddim.h ) then589 # if ( -f $libf/phy$physique/raddim.$dimh.h ) then590 # \rm $libf/phy$physique/raddim.h591 # cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h592 # echo $libf/phy$physique/raddim.$dimh.h593 # cat $libf/phy$physique/raddim.$dimh.h594 # cat $libf/phy$physique/raddim.h595 # else596 # echo On peut diminuer la taille de l executable en creant597 # echo le fichier $libf/phy$physique/raddim.$dimh.h598 # \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h599 # endif600 #endif601 575 602 576 ###################################################################### … … 710 684 set make="make RANLIB=ranlib" 711 685 endif 712 713 714 715 #716 # les deux test suivants sont "temporaires" pour pallier des "faiblesses" du717 # compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1718 #719 #if ($code == 'create_limit' && $SUN) then720 # set link=f77721 # set opt_link="-L$NCDFLIB -lnetcdf"722 #endif723 724 #if ($code == 'create_etat0' && $SUN) then725 # if ( ! -f $libo/libdyn3d.a ) then726 # echo "Priere de compiler gcm en premier pour des raisons d'optimisation"727 # \rm $libf/grid/dimensions.h728 # exit729 # endif730 # 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.F734 # touch $LMDGCM/libf/dyn3d/etat0_netcdf.F735 #endif736 737 #738 # Encore un test temporaire: probleme de compilation sur VPP739 # l'optimisation de startvar se passe mal740 #741 #if ($code == 'create_etat0' && $VPP) then742 # if ( ! -f $libo/libdyn3d.a ) then743 # echo "Priere de compiler gcm en premier pour des raisons d'optimisation"744 # \rm $libf/grid/dimensions.h745 # exit746 # endif747 # set optim90="$optim90"" -X9 -w"748 # set opt_link="-L$NCDFLIB -lnetcdf"749 # touch $LMDGCM/libf/dyn3d/startvar.F750 # touch $LMDGCM/libf/dyn3d/etat0_netcdf.F751 #endif752 686 753 687 # … … 854 788 PROG=$code 855 789 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.