#!/bin/csh # penser a mettre le -autopar pour le -O (optimisation) pour PARALLEL 2 setenv PARALLEL 2 # path a changer contenant les sources et les objets du modele if ( ! $?LMDGCM ) then echo You must initialize the variable LMDGCM in your environnement echo for instance: "setenv LMDGCM /usr/myself/supergcm" in .cshrc exit endif if ( ! $?LIBOGCM ) then set LIBOGCM=$LMDGCM/libo endif if ( ! $?DRSDIR ) then echo You must initialize the variable DRSDIR in your environnement echo for instance: "setenv DRSDIR /usr/myself/drs" in .cshrc exit endif set model=$LMDGCM set libo=$LIBOGCM ######################################################################## # Les differentes platformes reconnues ######################################################################## set HP=0 set IBM=0 set SUN=0 set CRAY=0 if ( `uname` == HP-UX ) then set machine=HP set HP=1 else if (`uname` == SunOS ) then set machine=SUN set SUN=1 else if ( `uname` == AIX ) then set machine=IBM set IBM=1 else if ( `hostname` == atlas || `hostname` == axis ) then set machine=CRAY set CRAY=1 else echo Vous travaillez sur une machine non prevue par le reglement exit endif if $CRAY then set libo=$WORKDIR/libo endif if ( ! -d $libo ) then mkdir $libo endif set drs=$DRSDIR ######################################################################## # options par defaut pour la commande make ######################################################################## echo model $model set dim="32x24x25" set physique=mars set phys="PHYS=mars" set include='-I$(LIBF)/grid -I$(LIBF)/dyn3d -I$(LIBF)/bibio -I. ' set ntrac = 0 set filtre=filtrez set grille=reg set cray="" set dyn= set opt_link="" set adjnt="" set opt_dep="" ######################################################################## # Optimisations par defaut suivant les machines ######################################################################## set libf=$model/libf set localdir="LOCAL_DIR=`pwd`" cd $model if $HP then set optim=" +U77 -O -K +E1 " else if $SUN then set optim=" -fast -autopar" # set optim=" -Ztha -fast -autopar" # set optim=" -C -g -Xlist" # set optim=" -fast" else if $IBM then set optim=" -O3 -qtune=pwr2 -qarch=pwr2" else set optim="" endif if ( ! $CRAY ) then set nomlib=$machine endif ######################################################################## # lecture des options de mymake ######################################################################## top: if ($#argv > 0) then switch ($1:q) case -h: ######################################################################## # Manuel en ligne ######################################################################## more <> tmp end set suf= foreach i ( `sort tmp | uniq ` ) set suf=$suf$i end if ( ! $IBM ) then set nomlib="$nomlib$suf" endif if $IBM then set dim=`echo $dim | sed -en 's/[^0-9]/ /g'` set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'` else set dim=`echo $dim | sed -e 's/[^0-9]/ /gp'` set dim_=`echo $dim | sed -e 's/[^0-9]/_/gp'` endif set nomlib=${nomlib}_${physique}_${dim_}_t${ntrac}_$grille ######################################################################## # path pour les #include ######################################################################## if $HP then set include="$include -I$drs/HP" else if $SUN then set include="$include -I$drs/SUN" else if $IBM then set include="$include -I$drs/IBM" else set include="$include -I$drs" endif echo $include ######################################################################## # on cree ou remplace le fichier des dimensions/nombre de traceur ######################################################################## cd $libf/grid/dimension makdim $ntrac $dim set dimc=`echo $dim | wc -w` cat $libf/grid/dimensions.h set libo=$libo/$nomlib if ( ! -d $libo ) then mkdir $libo cd $model endif ######################################################################## # Differentes dynamiques ######################################################################## set dimension=`echo $dim | wc -w` echo dimension $dimension if ( $dimension == 1 ) then echo pas de dynamique set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique " endif endif cd $model if ( $dimension == 3 ) then cd libf/grid \rm fxyprim.h cp -p fxy_${grille}.h fxyprim.h endif ###################################################################### # fonctions CRAY ###################################################################### if ! $CRAY then set dircray=$model/cray/libf # repertoire par defaut if $HP then if ( ` echo $optim | grep autodblpad ` != "" ) then set opt_cray="-O +autodblpad" set lib_cray=CrayHPr8 else set dircray=$model/cray/libfhp # versions optimisees pour HP set opt_cray=-O set lib_cray=CrayHP endif endif if $SUN then if ( ` echo $optim | grep r8 | wc -w ` != "0" ) then set opt_cray=-r8 set lib_cray=CraySUNr8 else set opt_cray=-O3 set lib_cray=CraySUN endif endif if $IBM then set opt_cray="-O3 -qtune=pwr2 -qarch=pwr2" set lib_cray=CrayIBM endif cd $dircray if ( ! -f makefile ) then newmake endif make OPTIM="$opt_cray" NOM_LIB=$lib_cray set cray="-L$dircray -l$lib_cray" endif ###################################################################### # execution de la commande make UNIX ###################################################################### if ( `expr $dimc \> 2` == 1 ) then set filtre="FILTRE=$filtre" else set filtre="FILTRE= L_FILTRE= " endif echo MACRO FILTRE $filtre echo $dimc ######################################################################## # Avant de lancer le make, on recree le makefile si necessaire ######################################################################## # c'est a dire dans 3 cas: # 1. si la liste des fichiers .F et .h a ete modifiee depuis la # derniere creation du makefile # 2. si le fichier contenant cette liste "liste_des_sources" # n'existe pas. # 3. Si le makefile n'existe pas. ######################################################################## cd $model ( find libf -name '*.[Fh]' -print ; grep include libf/*/*F ) >! tmp if ( `diff tmp liste_des_sources | wc -w` \ || ! -f makefile \ || ! -f liste_des_sources ) then echo les fichiers suivants ont ete crees ou detruits diff liste_des_sources tmp \cp tmp liste_des_sources echo On recree le makefile ./create_make_gcm >! tmp \mv tmp makefile echo Nouveau makefile cree. endif ######################################################################## # Execution de la comande make ######################################################################## echo PHYSIQUE $phys echo dynamique $dyn $dimension echo OPTIM="$optim" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code echo PATH pour les fichiers INCLUDE $include if $HP then set f77='fort77 +OP' set opt_link="$opt_link -lm" else set f77=f77 endif cd $model if ( $SUN || $IBM || $HP ) then make \ OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \ OPTIM="$optim" \ INCLUDE="$include" \ L_CRAY="$cray" \ $filtre \ L_DRS="-L$drs/$machine -ldrs" \ LIBO=$libo \ $dyn \ $phys \ DIM=$dimc \ L_ADJNT="$adjnt" \ $localdir \ F77="$f77" \ PROG=$code else if $CRAY then make \ OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \ INCLUDE="$include" \ L_DRS="-L$drs -ldrs" \ $filtre \ LIBO=$libo \ $dyn \ $phys \ DIM=$dimc \ L_ADJNT="$adjnt" \ $localdir \ PROG=$code endif