Changeset 671 for trunk/LMDZ.GENERIC/makegcm_g95
- Timestamp:
- May 25, 2012, 11:11:42 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/makegcm_g95
r646 r671 6 6 ######################################################################## 7 7 set dim="64x48x32" 8 set physique= mars8 set physique=std 9 9 set phys="PHYS=$physique" 10 set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I. -I$(LIBF)/aeronomars'10 set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I.' 11 11 set ntrac = 1 12 12 set filtre=filtrez 13 13 set grille=reg 14 14 set dyntype="dyn" 15 set bands="32x36" 16 set scatterers="1" 15 17 ######################################################################## 16 18 # path a changer contenant les sources et les objets du modele … … 25 27 setenv LIBOGCM $LMDGCM/libo 26 28 # NetCDF 27 # 64 bit machines 28 # setenv NCDFLIB /donnees/emlmd/netcdf64_g95/netcdf-3.6.1/lib29 # setenv NCDFINC /donnees/emlmd/netcdf64_g95/netcdf-3.6.1/include29 # 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 30 32 #else 31 33 # setenv NCDFLIB /distrib/local/netcdf/g95_32bits/lib … … 180 182 else if $LINUX then 181 183 # 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 " 184 186 # set opt_link=" -Mfree -L/usr/local/pgi/linux86/lib -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Wl,-Bstatic " 185 187 # Ehouarn: there is no /usr/local/pgi/linux86/lib, but it doesn't matter … … 241 243 242 244 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. 245 The makegcm script: 246 ------------------- 247 248 1. 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 252 2. then, makegcm compiles program prog.f located by default in 253 $LMDGCM/libf/dyn3d and makes the link with the libraries. 254 255 Environment Variables '$LMDGCM' and '$LIBOGCM' 256 must be set as environment variables or directly 257 in the makegcm file. 258 259 The 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 263 The FORTRAN libraries are stored in directory $LIBOGCM. 265 264 266 265 … … 268 267 -------- 269 268 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 269 The following options can either be defined by default by editing the 270 makegcm "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 281 278 $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: 285 285 $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 287 288 $LMDGCM/libf/grid/dimension/makdim 288 289 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: 293 296 $LMDGCM/libf/phyPHYS 294 297 295 -g grille selectionne le type de grille qu'on veut utiliser.296 L'effet de cette option est d'ecraser le fichier298 -g grille Selects the grid type. 299 This option overwrites file 297 300 $LMDGCM/libf/grid/fxyprim.h 298 avec le fichier301 with file 299 302 $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 307 309 308 310 -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. 314 315 315 316 -olddyn To compile GCM with "old dynamics" 316 317 317 -filtre filt re318 Pour choisir le filtre en longitude dans les regions polaires.319 "filt re" correspond au nom d'un repertoire se trouvant sur320 $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut321 etre utilise aussi bien pour une grille reguliere que pour une322 gri lle 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. 323 324 324 325 -link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..." 325 Pour rajouter un lien avec les librairies FORTRAN326 libfile1.a, libfile2.a ... se trouvant respectivement sur les327 repertoires dir1, dir2 ...328 Si dirn est un repertoire dont le chemin est automatique (comme329 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 332 333 eod 333 334 exit … … 346 347 set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top 347 348 349 case -s 350 set scatterers="$2" ; shift ; goto top 351 348 352 case -g 349 353 set grille="$2" ; shift ; shift ; goto top 350 354 355 case -b 356 set bands=$2 ; shift ; shift ; goto top 357 351 358 case -t 352 359 set ntrac=$2 ; shift ; shift ; goto top … … 377 384 set optim90="$optim90"" -G1 " 378 385 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" 380 390 else 381 391 echo "pas d option debug predefinie pour cette machine" … … 397 407 if ( "$physique" == 'nophys' ) then 398 408 set phys="L_PHY= LIBPHY=" 399 endif400 401 ########################################################################402 # choix du nombre de traceur par defaut si il n'a pas ete choisi,403 # suivant la physique404 ########################################################################405 406 if ( $ntrac == 0 ) then407 if ( "$physique" == 'nophys' ) then408 set ntrac=1409 else if ( "$physique" == 'lmd' ) then410 set ntrac=2411 else if ( "$physique" == 'lmd_test_li' ) then412 set ntrac=2413 else if ( "$physique" == 'ec' ) then414 set ntrac=1415 else416 set ntrac = 1417 endif418 409 endif 419 410 … … 439 430 440 431 # dimension 441 442 432 echo "dimension avant sed $dim" 443 433 if ( $IBM ) then … … 448 438 set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'` 449 439 else 450 # set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`451 # set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`452 440 set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 453 441 set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'` 454 442 endif 455 443 444 # bands 445 echo "bands avant sed $bands" 446 if ( $IBM ) then 447 set bands=`echo $bands | sed -en 's/[^0-9]/ /g'` 448 set bands_=`echo $bands | sed -en 's/[^0-9]/_/g'` 449 else 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'` 452 else 453 set bands=`echo $bands | sed -e 's/[^0-9]/ /g'` 454 set bands_=`echo $bands | sed -e 's/[^0-9]/_/g'` 455 endif 456 457 456 458 # build final name of libraries directory: 457 459 if ( "$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 461 else 462 set nomlib=${nomlib}_${dim_}_t${ntrac}_s${scatterers}_${grille} 463 endif 464 465 # Append number of bands to nomlib (new for universal model) 466 set nomlib=${nomlib}_${bands_} 462 467 463 468 # Append 'physique' type, if it is not mars, to nomlib … … 504 509 cd $libf/grid 505 510 if ( -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 514 521 else 515 522 exit … … 522 529 # echo contents of dimensions.h to standard output 523 530 cat $libf/grid/dimensions.h 531 532 # Build the appropriate 'bands.h' file 533 makbands $bands 534 # echo contents of bands.h to standard output 535 cat $libf/grid/bands.h 536 537 # Build the appropriate 'scatterers.h' file 538 cd $libf/phy$physique/scatterers 539 ./make_scatterers $scatterers 540 # echo contents of scatterers.h to standard output 541 cat $libf/phy$physique/scatterers.h 524 542 525 543 cd $LMDGCM … … 549 567 \rm fxyprim.h 550 568 cp -p fxy_${grille}.h fxyprim.h 551 endif552 553 ######################################################################554 # Traitement special pour le nouveau rayonnement de Laurent Li.555 ######################################################################556 557 if ( -f $libf/phy$physique/raddim.h ) then558 if ( -f $libf/phy$physique/raddim.$dimh.h ) then559 \rm $libf/phy$physique/raddim.h560 cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h561 echo $libf/phy$physique/raddim.$dimh.h562 cat $libf/phy$physique/raddim.$dimh.h563 cat $libf/phy$physique/raddim.h564 else565 echo On peut diminuer la taille de l executable en creant566 echo le fichier $libf/phy$physique/raddim.$dimh.h567 \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h568 endif569 569 endif 570 570 … … 680 680 endif 681 681 682 683 684 #685 # les deux test suivants sont "temporaires" pour pallier des "faiblesses" du686 # compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1687 #688 #if ($code == 'create_limit' && $SUN) then689 # set link=f77690 # set opt_link="-L$NCDFLIB -lnetcdf"691 #endif692 693 #if ($code == 'create_etat0' && $SUN) then694 # if ( ! -f $libo/libdyn3d.a ) then695 # echo "Priere de compiler gcm en premier pour des raisons d'optimisation"696 # \rm $libf/grid/dimensions.h697 # exit698 # endif699 # 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.F703 # touch $LMDGCM/libf/dyn3d/etat0_netcdf.F704 #endif705 706 #707 # Encore un test temporaire: probleme de compilation sur VPP708 # l'optimisation de startvar se passe mal709 #710 if ($code == 'create_etat0' && $VPP) then711 if ( ! -f $libo/libdyn3d.a ) then712 echo "Priere de compiler gcm en premier pour des raisons d'optimisation"713 \rm $libf/grid/dimensions.h714 exit715 endif716 set optim90="$optim90"" -X9 -w"717 set opt_link="-L$NCDFLIB -lnetcdf"718 touch $LMDGCM/libf/dyn3d/startvar.F719 touch $LMDGCM/libf/dyn3d/etat0_netcdf.F720 endif721 722 682 # 723 683 # etat0_netcdf a besoin d'info de la physique … … 815 775 PROG=$code 816 776 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
Note: See TracChangeset
for help on using the changeset viewer.