Changeset 714 for LMDZ4/branches


Ignore:
Timestamp:
Sep 27, 2006, 12:31:36 PM (18 years ago)
Author:
Laurent Fairhead
Message:

On revient au makegcm general
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/V3_test/makegcm

    r704 r714  
    44#
    55#set verbose echo
     6########################################################################
     7# options par defaut pour la commande make
     8########################################################################
     9set dim="48x32x19"
     10set physique=lmd
     11set phys="PHYS=$physique"
     12set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I. '
     13set ntrac = 4
     14set filtre=filtrez
     15set grille=reg
     16set couple=false
     17set veget=false
     18set chimie=false
     19set psmile=false
     20set parallel=false
     21set vampir=false
     22set OPT_STACK='-Wf,-init stack=nan'
     23set OPT_STACK=' '
     24set OPTIMI='-C debug -eC '
     25set OPTIMI=' -ftrace '
     26set OPT_LINUX='-O3'
     27set io=ioipsl
     28
     29set FC_LINUX=pgf90
    630
    731########################################################################
     
    1034
    1135###### VERSION LMDZ.4
    12 
    13 set LMDGCM=$WORKDIR/LMDZ4_V3_LAURENT
    14 set NCDFLIB=/usr/local/SX6/soft/netcdf/lib
    15 set NCDFINC=/usr/local/SX6/soft/netcdf/include
    16 set IOIPSLDIR=$WORKDIR/IOIPSL_MPP/src
    17 set ORCH_LIBDIR=$WORKDIR/LSCE/ORCHIDEE_PARA/libbis
    18 #1set IOIPSLDIR=$SCRATCHDIR/MODIPSL_NEW/modipsl/lib
     36#set LMDGCM=/workdir/p86cozic/INCA_dev/LMDZ4
     37#setenv LIBOGCM $LMDGCM/libo
     38set LMDGCM="`pwd`"
     39#setenv LIBOGCM $LMDGCM/libo
     40#
     41setenv IOIPSLDIR /u/fairhead/modipsl_ioipsl_3/lib
     42setenv MODIPSLDIR /u/fairhead/modipsl_ioipsl_3/lib
     43setenv NCDFINC /distrib/local/netcdf/pgi_32bits/include
     44setenv NCDFLIB /distrib/local/netcdf/pgi_32bits/lib/
    1945
    2046setenv localdir "`pwd`"
    21 
     47set MODIPSL=0
     48echo $localdir | grep modipsl >& /dev/null
     49if ( ! $status ) then
     50  set MODIPSL=1
     51  setenv LMDGCM $localdir
     52  cd ../..
     53  setenv LIBOGCM "`pwd`/lib"
     54  setenv IOIPSLDIR $LIBOGCM
     55  setenv MODIPSLDIR $LIBOGCM
     56  cd $localdir
     57  if ( `hostname` == rhodes ) then
     58    set NCDFINC=`grep sxnec ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
     59    set NCDFLIB=`grep sxnec ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
     60  else
     61    if ( `hostname` == nymphea0 ) then
     62      set NCDFINC=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
     63      set NCDFLIB=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
     64    else if ( `hostname` == mercure ) then
     65      set NCDFINC=`grep sx6nec ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
     66      set NCDFLIB=`grep sx6nec ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
     67    else
     68      echo 'Probleme de definition des variables NCDFINC et NCDFLIB'
     69    endif
     70  endif
     71else
    2272  if ( ! $?LMDGCM ) then
    2373    echo You must initialize the variable LMDGCM in your environnement
     
    2575    exit
    2676  endif
    27 
    2877  if ( ! $?LIBOGCM ) then
    2978    set LIBOGCM=$LMDGCM/libo
    3079  endif
    31 
    3280  if ( ! $?IOIPSLDIR ) then
    3381    echo You must initialize the variable IOIPSLDIR in your environnement
    3482    echo for instance: "setenv IOIPSLDIR /usr/myself/ioipsl" in .cshrc
    3583    exit
     84  else
     85      setenv MODIPSLDIR $IOIPSLDIR
    3686  endif
    37 
    3887  if ( ! $?NCDFLIB ) then
    3988    echo You must initialize the variable NCDFLIB in your environnement
     
    4190    exit
    4291  endif
    43 
    4492  if ( ! $?NCDFINC ) then
    4593    echo You must initialize the variable NCDFINC in your environnement
     
    4896  endif
    4997endif
    50 
    5198set model=$LMDGCM
    52 set libf=$model/libf
    5399set libo=$LIBOGCM
     100
     101########################################################################
     102#  Les differentes platformes reconnues
     103########################################################################
     104
     105set HP=0
     106set IBM=0
     107set SUN=0
     108set VPP=0
     109set CRAY=0
     110set DEC=0
     111set LINUX=0
     112set NEC=0
     113set XNEC=0
     114set X6NEC=0
     115if ( `uname` == HP-UX ) then
     116   set machine=HP
     117   set HP=1
     118else if (`uname` == UNIX_System_V ) then
     119   set machine=VPP
     120   set VPP=1
     121else if (`uname` == SunOS ) then
     122   set machine=SUN
     123   set SUN=1
     124else if ( `uname` == AIX ) then
     125   set machine=IBM
     126   set IBM=1
     127else if ( `uname` == OSF1 ) then
     128   set machine=ALPHA
     129   set DEC=1
     130else if ( `uname` == Linux && `hostname` != mercure ) then
     131   set machine=LINUX
     132   set LINUX=1
     133else if ( `hostname` == atlas || `hostname` == axis  || `hostname` == etoile ) then
     134   set machine=CRAY
     135   set CRAY=1
     136else if ( `uname` == SUPER-UX ) then
     137   set machine=NEC
     138   set NEC=1
     139else if ( `hostname` == rhodes) then
     140   set machine=XNEC
     141   set XNEC=1
     142else if ( `hostname` == mercure) then
     143   set machine=X6NEC
     144   set X6NEC=1
     145else
     146   echo Vous travaillez sur une machine non prevue par le reglement
     147   exit
     148endif
     149
    54150if ( ! -d $libo )  then
    55151   mkdir $libo
    56152endif
    57153
     154
     155if $VPP then
     156set netcdf=netcdf_v
     157else
     158set netcdf=netcdf
     159endif
    58160########################################################################
    59161#  Quelques initialisations de variables du shell.
     
    64166set adjnt=""
    65167set opt_dep=""
     168set libchimie=""
    66169
    67170set optim=""
     
    70173set oplink=""
    71174
    72 
    73 ########################################################################
    74 # options du compilateur
    75 ########################################################################
    76 
    77   set machine=SX6
    78   set f77=sxf90.new
    79   set f90=sxf90.new
    80   set optim90='-C vsafe -gv -P stack -Wf,-pvctl res=whole,-A dbl4,-init stack=nan,-init heap=nan,-ptr byte -EP -ts ${GCM}/tmp_src -R5 -float0 -size_t64 -dw -Wf,"-pvctl loopcnt=999999 fullmsg noassume" -I/SX/usr/include'
    81   set optimtru90="$optim90"
    82   set optim="$optim90"
    83   set cppflags='-DNC_DOUBLE -DBLAS -DSGEMV=DGEMV -DSGEMM=DGEMM'
    84   set opt_link='-float0 -size_t64 -Wf,-A dbl4 -lblas'
    85   set mod_suffix="mod"
    86   set mod_loc_dir="./"
    87   set make="sxmake -i RANLIB=ls"
    88   set link="$f90 -Wl,-hlib_cyclic"   
    89   set ar=sxar
    90   set optim90="$optim90 -f3"
    91  
    92 ########################################################################
    93 # options par defaut pour la commande make
    94 ########################################################################
    95 
    96   set dim="96x72x19"
    97   set physique=lmd
    98   set phys="PHYS=$physique"
    99   set include='-I$(LIBF)/filtrez -I$(LIBF)/grid -I$(LIBF)/bibio -I. '
    100   set ntrac = 4
    101   set filtre=filtrez
    102   set grille=reg
    103   set couple=false
    104   set veget=false
    105   set psmile=false
    106   set io=ioipsl
    107   set inca=false
    108   set vampir=false
    109   set parallel=false
    110  
    111   if ($parallel == true) then
    112     set cppflags = " $cppflags -DCPP_PARA"
    113     set include="$include"' -I$(LIBF)/dyn3d_par'
    114   else
    115     set include="$include"' -I$(LIBF)/dyn3d'
    116   endif
    117    
    118   if ($inca == true) then
    119     set cppflags="$cppflags -DINCA -DINCA_CH4"
    120     set opt_link="$opt_link -linca"
    121   endif
    122 
    123   if ($couple == true) then
    124      set opt_link="$opt_link -L/scratchdir/p86yann/MODIPSL_NEW/modipsl/prism/SX/lib -lpsmile.MPI2 -lmpp_io"
    125      set cppflags="$cppflags -DCPP_COUPLE -DCPP_PSMILE -I/scratchdir/p86yann/MODIPSL_NEW/modipsl/prism/SX/build/lib/psmile.MPI2"
    126   endif
    127 
    128   if ($veget == true) then
    129      set opt_link="$opt_link -L $ORCH_LIBDIR -lsxparameters -lsxsechiba -lsxstomate -lsxparallel"
    130      set cppflags="$cppflags -DCPP_VEGET"
    131      set include="$include"" -I$ORCH_LIBDIR"
    132   endif
    133  
    134   if ($vampir == true) then
    135     set cppflags="$cppflags -vt -DUSE_VT"
    136     set opt_link="$opt_link -vt"
    137   else
    138     set cppflags="$cppflags -DNUSE_VT"
    139     set opt_link="$opt_link"
    140   endif
    141  
    142   set optim90=" $optim90  -I$libo $cppflags"
    143   set optimtru90=" $optimtru90 -I$libo $cppflags"
    144   set optim=" $optim  -I$libo $cppflags"
    145   set opt_link="$opt_link -L$IOIPSLDIR -lsxioipsl -L$NCDFLIB -lnetcdf"
    146  
    147 ########################################################################
    148 #  Les differentes platformes reconnues
    149 ########################################################################
    150 set X6NEC=1
    151 
     175########################################################################
     176#  Optimisations par defaut suivant les machines
     177########################################################################
     178
     179echo "Optimisations par defaut suivant les machines"
     180set libf=$model/libf
     181#setenv localdir "LOCAL_DIR=`pwd`"
     182#setenv localdir "`pwd`"
     183cd $model
     184#############
     185if $CRAY then
     186#############
     187#   set optim="-Wf'-ei' -dp -Wf'-a static'"
     188   set optimbis=" -DCRAY "
     189   set optim90="-Wp'-P' -DCRAY -p$IOIPSLDIR "'-p$(LIBO) -eiv '
     190   set optim="$optim90"
     191   set oplink="-Wl'-DSTACK=128 -f indef' -L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf "
     192   set mod_loc_dir=" "
     193   set mod_suffix=" "
     194#################
     195else if $SUN then
     196#################
     197   set optim=" -fast "
     198   set optimbis=" "
     199   set optim90=" -fast -fixed "
     200   set optimtru90=" -fast -free "
     201   set opt_link="-lf77compat -L$MODIPSLDIR -lsechiba -lparameters -lstomate -lioipsl -L$NCDFLIB -lnetcdf "
     202   set mod_loc_dir=$localdir
     203   set mod_suffix=mod
     204#################
     205else if $HP then
     206#################
     207   set optim=" +U77 -O +E1 "
     208   set optimbis=" "
     209#################
     210else if $IBM then
     211#################
     212   set optim=" -O3 -qtune=pwr2 -qarch=pwr2"
     213   set optimbis=" "
     214#################
     215else if $VPP then
     216#################
     217#   set optim="-Dasuxm  -On, -g -Ad -Potilax -Eciplume -Si"
     218#   set optimbis="  -Wv,-m3 -Wp,-DVPP -Z $LMDGCM/listage"
     219   set optimbis=" -Wp,-DNC_DOUBLE -Ad -Z $LMDGCM/listage -X9"
     220   set optim90="$optim $optimbis -X9 -w"
     221   set mod_loc_dir=$MODIPSLDIR
     222   set mod_suffix=mod
     223#################
     224else if $DEC then
     225#################
     226   set optim=" "
     227   set optimbis=" "
     228#################
     229else if $LINUX then
     230#################
     231   if ( $FC_LINUX == "pgf90" ) then
     232     set optim="-fast "
     233     set optim90=" -fast "
     234#   set optimtru90=" -fast -c -Mfree -module $MODIPSLDIR "
     235     set optimtru90=" -fast -c -Mfree "
     236   else if ( $FC_LINUX == 'g95' ) then
     237     set optim=" $OPT_LINUX -fno-second-underscore -ffixed-form -fstatic "
     238     set optim90=" $OPT_LINUX -fno-second-underscore -ffixed-form -fstatic "
     239     set optimtru90=" $OPT_LINUX -fno-second-underscore -ffree-form -fstatic "
     240   else
     241     echo 'compilateur linux non reconnu'
     242     exit
     243   endif
     244   set mod_loc_dir=$MODIPSLDIR
     245   set mod_suffix=mod
     246#################
     247else if $NEC then
     248#################
     249   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
     250   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
     251   set optim="$optim90"
     252   set optimbis=" "
     253   set opt_link=" -C hopt -float0 -ew -P static -L$MODIPSLDIR -lioipsl  $NCDFLIB -lnetcdf_i8r8_v "
     254   set mod_loc_dir="."
     255   set mod_suffix="mod"
     256#################
     257else if $XNEC then
     258#################
     259   set optdbl='-dw -Wf\"-A dbl4\"'
     260   set optim90=' -clear -float0 -f3 -Ep -DNC_DOUBLE -dw -Wf\"-A dbl4\" -R5 -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
     261   set optimtru90=' -clear -f4 -float0 -Ep -DNC_DOUBLE -dw -Wf\"-A dbl4\" -R2 -R3 -R4 -R5 -Wf,"-pvctl loopcnt=40000 fullmsg noassume"'
     262   set optim="$optim90"
     263   set optimbis=" "
     264   set mod_suffix="mod"
     265   set mod_loc_dir="./"
     266#################
     267else if $X6NEC then
     268#################
     269   set optdbl='-dw -Wf\"-A dbl4\"' 
     270   set optim90=' -clear -float0 -f3 -size_t64 -P stack -Wf "-init stack=nan -init heap=nan" -Ep -DNC_DOUBLE -dw -Wf\"-A dbl4\" -R5 -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
     271   set optimtru90=' -clear -f4 -float0 -size_t64 -P stack -Wf "-init stack=nan -init heap=nan" -Ep -DNC_DOUBLE -dw -Wf\"-A dbl4\" -R2 -R3 -R4 -R5 -Wf,"-pvctl loopcnt=40000 fullmsg noassume"'
     272   set optim="$optim90"
     273   set optimbis=" "
     274   set mod_suffix="mod"
     275   set mod_loc_dir="./"
     276else
     277   set optim=""
     278   set optimbis=" "
     279endif
     280
     281set nomlib=$machine
    152282
    153283########################################################################
     
    231361           pour selectionner le mode psmile ou non (par defaut)
    232362
     363-parallel  false|true
     364           pour selectionner le mode parallele ou non (false par defaut)
     365
    233366-v true|false
    234367           pour selectionner la vegetation (par defaut) ou non
     368
     369-chimie CH4|CH4_AER|NMHC|NMHC_AER|AER|GES|false
     370           pour selectionner ou non la chimie (par defaut sans)
    235371
    236372-g grille  selectionne le type de grille qu'on veut utiliser.
     
    298434
    299435     case -psmile
    300         set psmile="$2" ; shift ; shift ; goto top
     436        set psmile="$2"
     437        if ( "$psmile" == 'true' ) then
     438          set couple='true'
     439        endif
     440        shift ; shift ; goto top
     441
     442     case -chimie
     443        set chimie="$2" ; shift ; shift ; goto top
     444
     445     case -parallel
     446        set parallel="$2" ; shift ; shift ; goto top
    301447 
    302448     case -t
     
    317463
    318464     case -debug
    319         if $X6NEC then
     465        if $HP then
     466           set optim=" -g "
     467        else if $SUN then
     468           setenv PARALLEL 2
     469# Il faut rajouter l'option -dalign a -g pour pouvoir editer les liens
     470# avec des programmes compiles avec -fast
     471           set optim=" -g -dalign "
     472           set optim90=" -fixed -g "
     473           set optimtru90=" -free -g -C -dalign "
     474        else if $CRAY then
     475           set optim="$optim"" -g "
     476           set optim90="$optim90"" -G1 "
     477        else if $LINUX then
     478           if ( $FC_LINUX == "pgf90" ) then
     479             set optim="$optim"" -g -C -Mbounds "
     480             set optim90="$optim90"" -g -C -Mbounds "
     481             set optimtru90="$optimtru90"" -g -C -Mbounds "
     482           else if ( $FC_LINUX == 'g95' ) then
     483             set optim="$optim"" -g -fbounds-check "
     484             set optim90="$optim90"" -g -fbounds-check "
     485             set optimtru90="$optimtru90"" -g -fbounds-check "
     486           else
     487             echo 'compilateur linux non reconnu'
     488             exit
     489           endif
    320490        else
    321491           echo pas d option debug predefinie pour cette machine
     
    334504########################################################################
    335505
     506set cppflags=''
     507
    336508if ( $io == ioipsl ) then
    337    set optim="$optim -DCPP_IOIPSL"
    338    set optim90="$optim90 -DCPP_IOIPSL"
    339    set optimtru90="$optimtru90 -DCPP_IOIPSL"
     509   set cppflags="$cppflags -DCPP_IOIPSL"
    340510endif
    341511
     
    343513   set phys="L_PHY= LIBPHY="
    344514else
    345    set optim="$optim -DCPP_PHYS"
    346    set optim90="$optim90 -DCPP_PHYS"
    347    set optimtru90="$optimtru90 -DCPP_PHYS"
    348 endif
    349 
    350 #set link_veget=" "
    351 #if ( "$veget" == 'true' ) then
    352 #   set optim="$optim -DCPP_VEGET"
    353 #   set optim90="$optim90 -DCPP_VEGET"
    354 #   set optimtru90="$optimtru90 -DCPP_VEGET"
    355 #   set link_veget=" -lsechiba -lparameters -lstomate"
    356 #endif
    357 
    358 if ($parallel == 'true') then
    359   set FLAG_PARA='_par'
    360 else
    361   set FLAG_PARA=''
    362 endif
     515   set cppflags="$cppflags -DCPP_PHYS"
     516endif
     517
     518set link_veget=" "
     519if ( "$veget" == 'true' ) then
     520   set cppflags="$cppflags -DCPP_VEGET"
     521   set link_veget=" -lsechiba -lparameters -lstomate"
     522   if ( $XNEC ) then
     523      set link_veget=" -lsxsechiba -lsxparameters -lsxstomate"
     524   endif
     525endif
     526
     527if ( "$chimie" == 'CH4' ) then
     528    set cppflags="$cppflags -DINCA -DINCA_CH4 "
     529else if ( "$chimie" == 'CH4_AER' ) then
     530    set cppflags="$cppflags -DINCA -DINCA_CH4 -DINCA_AER"
     531else if ( "$chimie" == 'NMHC' ) then
     532    set cppflags="$cppflags -DINCA -DINCA_NMHC "
     533else if ( "$chimie" == 'NMHC_AER' ) then
     534    set cppflags="$cppflags -DINCA -DINCA_NMHC -DINCA_AER"
     535else if ( "$chimie" == 'AER' ) then
     536    set cppflags="$cppflags -DINCA -DINCA_AER"
     537else if ("$chimie" == 'GES' ) then
     538    set cppflags="$cppflags -DINCA"
     539endif
     540if ( "$chimie" == 'CH4' || "$chimie" == 'CH4_AER' || "$chimie" == 'NMHC' || "$chimie" == 'NMHC_AER' || "$chimie" == 'AER' || "$chimie" == 'GES' ) then
     541    set opt_dep="$opt_dep chimie"
     542    set libchimie="-lchimie"
     543    if ( $XNEC || $X6NEC ) then
     544      set libchimie="-lsxchimie"
     545    endif
     546endif
     547   
     548if ( "$couple" == 'true' ) then
     549   set cppflags="$cppflags -DCPP_COUPLE"
     550endif
     551
     552if ( "$psmile" == 'true' ) then
     553   set cppflags="$cppflags -DCPP_PSMILE"
     554endif
     555
     556set FLAG_PARA=''
     557if ( "$parallel" == 'true' ) then
     558   set cppflags="$cppflags -DCPP_PARALLEL"
     559   set FLAG_PARA='_par'
     560endif
     561
     562set optim="$optim $cppflags"
     563set optim90="$optim90 $cppflags"
     564set optimtru90="$optimtru90 $cppflags"
     565
    363566
    364567########################################################################
     
    401604   set suf=$suf$i
    402605end
    403 
     606if ( ! $IBM ) then
     607   set nomlib="$nomlib$suf"
     608endif
     609if ( $DEC ) then
     610   set nomlib=DEC
     611endif
     612if ( $IBM ) then
     613   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
     614   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
     615else if ( $SUN ) then
     616   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
     617   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
     618else
    404619   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
    405620   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
    406    set nomlib=`echo ${machine}_${dim_}_t${ntrac}`
    407 
     621endif
     622set nomlib=${nomlib}${physique}_${dim_}_t${ntrac}_$grille
     623## M-A-F nomlib trop long sur CRAY pour ar
     624if ( $CRAY ) then
     625    set nomlib=F90_${dim_}_t${ntrac}
     626endif
     627if ( $NEC || $XNEC || $X6NEC) then
     628    set nomlib=F90_${dim_}_t${ntrac}
     629endif
    408630echo calcul de la dimension
    409631set dimc=`echo $dim | wc -w`
     
    413635set dimh=$dim
    414636else
    415 set include="$include "
     637set include="$include "'-I$(LIBF)/dyn3d '
    416638set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
    417639endif
     
    422644########################################################################
    423645
     646if ( $XNEC ) then
    424647  set include="$include -I$NCDFINC -I$IOIPSLDIR"
    425   echo $include
     648else
     649  set include="$include -I$NCDFINC -I$IOIPSLDIR"
     650endif
     651echo $include
    426652
    427653########################################################################
     
    445671
    446672cd dimension
    447 makdim $ntrac $dim
     673./makdim $ntrac $dim
    448674cat $libf/grid/dimensions.h
    449675
     
    508734########################################################################
    509735if ( $couple == 'true' ) then
     736  banner couple
    510737  pwd
    511 #  if ( `diff $libf/phy$physique/oasis.F $libf/phy$physique/oasis.true | wc -w` ) then
    512 #   \cp $libf/phy$physique/oasis.F $libf/phy$physique/oasis.dummy
    513 #   \cp $libf/phy$physique/oasis.true $libf/phy$physique/oasis.F
    514 #  endif
    515    if ( -f $libf/phy$physique/oasis.F ) then
    516      rm -f $libf/phy$physique/oasis.F
    517    endif       
    518    \cp $libf/phy$physique/oasis.psmile $libf/phy$physique/oasis.F90
    519 else
    520   if ( `diff $libf/phy$physique/oasis.F $libf/phy$physique/oasis.dummy | wc -w` ) then
    521    \cp $libf/phy$physique/oasis.F $libf/phy$physique/oasis.true
    522    \cp $libf/phy$physique/oasis.dummy $libf/phy$physique/oasis.F
     738  if ( "$psmile" == 'true' ) then
     739     if ( -f $libf/phy$physique/oasis.F ) then
     740        \rm $libf/phy$physique/oasis.F
     741     endif
     742     if ( ! -f $libf/phy$physique/oasis.F90 ) then
     743       \cp $libf/phy$physique/oasis.psmile $libf/phy$physique/oasis.F90
     744     endif
     745     if ( `diff $libf/phy$physique/oasis.F90 $libf/phy$physique/oasis.psmile | wc -w` ) then
     746       \cp $libf/phy$physique/oasis.psmile $libf/phy$physique/oasis.F90
     747     endif
     748  else
     749     if ( -f $libf/phy$physique/oasis.F90 ) then
     750       \rm $libf/phy$physique/oasis.F90
     751     endif
     752     if (! -f $libf/phy$physique/oasis.F ) then
     753       \cp $libf/phy$physique/oasis.true $libf/phy$physique/oasis.F
     754     else
     755       if ( `diff $libf/phy$physique/oasis.F $libf/phy$physique/oasis.true | wc -w` ) then
     756#         \cp $libf/phy$physique/oasis.F $libf/phy$physique/oasis.dummy
     757         \cp $libf/phy$physique/oasis.true $libf/phy$physique/oasis.F
     758       endif
     759     endif
    523760  endif
    524    rm -f $libf/phy$physique/oasis.F90
     761else
     762  if ( -f $libf/phy$physique/oasis.F90 ) then
     763    \rm $libf/phy$physique/oasis.F90
     764  endif
     765  if (! -f $libf/phy$physique/oasis.F ) then
     766    \cp $libf/phy$physique/oasis.dummy $libf/phy$physique/oasis.F
     767  else
     768    if ( `diff $libf/phy$physique/oasis.F $libf/phy$physique/oasis.dummy | wc -w` ) then
     769      \cp $libf/phy$physique/oasis.F $libf/phy$physique/oasis.true
     770      \cp $libf/phy$physique/oasis.dummy $libf/phy$physique/oasis.F
     771    endif
     772  endif
    525773endif
    526774########################################################################
    527775#  Avant de lancer le make, on recree le makefile si necessaire
     776########################################################################
    528777########################################################################
    529778# c'est a dire dans 3 cas:
     
    534783# 3. Si le makefile n'existe pas.
    535784########################################################################
    536 
     785##########################################
     786# On adapte d'abord certains include à F90
     787##########################################
     788sed -e 's/^c/\!/' $libf/grid/dimensions.h >! $libf/grid/dimensions90.tmp
     789if ( ! -f $libf/grid/dimensions90.h || `diff $libf/grid/dimensions90.tmp $libf/grid/dimensions90.h | wc -w` ) then
     790      \mv $libf/grid/dimensions90.tmp $libf/grid/dimensions90.h
     791endif
     792awk 'BEGIN {} { sub ("^c","\!") ; if ($0 ~ /^     s/) {if (NR > 1) print p0," &"; sub ("     s","     \\&")} else { if (NR > 1) print p0  } p0=$0 } END { print p0}' $libf/dyn3d/paramet.h >! $libf/dyn3d/paramet90.tmp
     793# sed -n -e 's/^c/\!/' -e '1 h' -e '2,$ H' -e '$ { x ; s/\n     s/ \&\n     \& /g ; p }' $libf/dyn3d/paramet.h >! $libf/dyn3d/paramet90.tmp
     794if ( ! -f $libf/dyn3d/paramet90.h || `diff $libf/dyn3d/paramet90.tmp $libf/dyn3d/paramet90.h | wc -w` ) then
     795      \mv $libf/dyn3d/paramet90.tmp $libf/dyn3d/paramet90.h
     796endif
     797awk 'BEGIN {} { sub ("^c","\!") ; if ($0 ~ /^     \./) {if (NR > 1) print p0," &"; sub ("     \.","     \\&")} else { if (NR > 1) print p0  } p0=$0 } END { print p0}' $libf/dyn3d/control.h >! $libf/dyn3d/control.tmp
     798#sed -n -e 's/^c/\!/' -e '1 h' -e '2,$ H' -e '$ { x ; s/\n     \./ \&\n     \& /g ; p }' $libf/dyn3d/control.h >! $libf/dyn3d/control.tmp
     799if ( ! -f $libf/dyn3d/control.inc  || `diff $libf/dyn3d/control.tmp $libf/dyn3d/control.inc | wc -w` ) then
     800      \mv $libf/dyn3d/control.tmp $libf/dyn3d/control.inc
     801endif
     802awk 'BEGIN {} { sub ("^c","\!") ; if ($0 ~ /^     S/) {if (NR > 1) print p0," &"; sub ("     S","     \\&")} else { if (NR > 1) print p0  } p0=$0 } END { print p0}' $libf/phylmd/YOMCST.h >! $libf/phylmd/YOMCST.tmp
     803if ( ! -f $libf/phylmd/YOMCST.inc  || `diff $libf/phylmd/YOMCST.tmp $libf/phylmd/YOMCST.inc | wc -w` ) then
     804      \mv $libf/phylmd/YOMCST.tmp $libf/phylmd/YOMCST.inc
     805endif
     806awk 'BEGIN {} { sub ("^c","\!") ; if ($0 ~ /^     S/) {if (NR > 1) print p0," &"; sub ("     S","     \\&")} else { if (NR > 1) print p0  } p0=$0 } END { print p0}' $libf/phylmd/clesphys.h >! $libf/phylmd/clesphys.tmp
     807if ( ! -f $libf/phylmd/clesphys.inc  || `diff $libf/phylmd/clesphys.tmp $libf/phylmd/clesphys.inc | wc -w` ) then
     808      \mv $libf/phylmd/clesphys.tmp $libf/phylmd/clesphys.inc
     809endif
     810#sed -e 's/^c/\!/' $libf/dyn3dpar/paramet.h >! $libf/dyn3dpar/paramet90.h
     811##########################################
    537812cd $model
    538813find libf -name '*.[Fh]' -print >! tmp77
     
    567842echo OPLINK="$oplink"
    568843
    569 
     844#################
     845if $HP then
     846#################
     847   set f77='fort77 +OP'
     848   set f90='jensaisrien'
     849   set opt_link="$opt_link -lm"
     850#################
     851else  if $VPP then
     852#################
     853   set f77=frt
     854   set f90=$f77
     855   if ($couple == true) then
     856     set opt_link="-Wg,-c $MODIPSLDIR/liboasis2.4_mpi2.a /usr/lang/mpi2/lib64/libmpi.a /usr/lang/mpi2/lib64/libmp.a -L$MODIPSLDIR -lioipsl /usr/local/lib/lib64/libnetcdf_cc_31.a"
     857     set oplink="-Wl,-t,-P,-dy "
     858   else
     859     set opt_link="-Wg,-c -L$MODIPSLDIR -lioipsl /usr/local/lib/lib64/libnetcdf_cc_31.a"
     860     set oplink="-Wl,-t,-dy "
     861   endif
     862   if ($veget == true) then
     863     set opt_link="$opt_link $link_veget -lioipsl /usr/local/lib/lib64/libnetcdf_cc_31.a"
     864   endif
     865#################
     866else if $CRAY then
     867#################
     868   set f77=f90
     869   set f90=f90
     870#################
     871else if $LINUX then
     872#################
     873#   set f77=pgf90
     874#   set f90=pgf90
     875   set f77=$FC_LINUX
     876   set f90=$FC_LINUX
     877   if ( $FC_LINUX == 'pgf90' ) then
     878   set opt_link=" -L$MODIPSLDIR $link_veget -L$NCDFLIB -lioipsl -lnetcdf -Wl,-Bstatic -L/usr/lib/gcc-lib/i386-linux/2.95.2/"
     879   else if ($FC_LINUX == 'g95') then
     880     set opt_link="-L$MODIPSLDIR $link_veget -lioipsl -L$NCDFLIB -lnetcdf -lioipsl -lnetcdf "
     881   else
     882     set opt_link=" "
     883   endif
     884#################
     885else if $SUN then
     886#################
     887   set f77=f90
     888   set f90=f90
     889   set opt_link="-lf77compat -L$MODIPSLDIR $link_veget -lioipsl -L$NCDFLIB -lnetcdf "
     890#################
     891else if $NEC then
     892#################
     893   set f77=f90 -ftrace
     894   set f90=f90 -ftrace
     895   set opt_link="-L$MODIPSLDIR"
     896   if ($veget == true) then
     897     set opt_link="$opt_link $link_veget"
     898   endif
     899   if ($couple == true) then
     900     set opt_link="$opt_link -lioipsl -loasis2.4_mpi2 -float0 -ew -P static $NCDFLIB "
     901   else
     902     set opt_link="$opt_link -L$MODIPSLDIR -lioipsl -float0 -ew -P static $NCDFLIB "
     903   endif
     904   set mod_loc_dir="./"
     905#################
     906else if $XNEC then
     907#################
     908   set f77="sxmpif90 -ftrace"
     909   set f90="sxmpif90 -ftrace"
     910   if $MODIPSL then
     911     set opt_link="-L$MODIPSLDIR"
     912     if ($veget == true) then
     913       set opt_link="$opt_link $link_veget"
     914     endif
     915     if ($couple == true) then
     916       if ($psmile == true) then
     917       set opt_link="$opt_link -lsxioipsl -float0 $optdbl -P static $NCDFLIB "
     918       else
     919       set opt_link="$opt_link -lsxioipsl -loasis2.4_mpi2 -float0 $optdbl -P static $NCDFLIB "
     920       endif
     921     else
     922       set opt_link="$opt_link -lsxioipsl -float0 $optdbl -P static $NCDFLIB "
     923     endif
     924   else
     925     if ($couple == true) then
     926       set opt_link="-L$MODIPSLDIR"
     927       set opt_link="$opt_link $link_veget -lsxioipsl -loasis2.4_mpi2 -float0 $optdbl -P static $NCDFLIB "
     928     else
     929       set opt_link=" -C hopt -float0 $optdbl -P static -L$MODIPSLDIR $link_veget -lsxioipsl $NCDFLIB "
     930     endif
     931   endif
     932   set mod_loc_dir="./"
     933##################
     934else if $X6NEC then
     935##################
     936   set f77=sxmpif90
     937   set f90=sxmpif90
     938   if $MODIPSL then
     939     set opt_link="-L$MODIPSLDIR"
     940     if ($veget == true) then
     941       set opt_link="$opt_link -lsxsechiba -lsxparameters -lsxstomate"
     942     endif
     943     if ($couple == true) then
     944        if ($psmile == true) then
     945        set opt_link="$opt_link -lsxioipsl -float0 -size_t64 $optdbl -P static $NCDFLIB "
     946        else
     947        set opt_link="$opt_link -lsxioipsl -loasis2.4_mpi2 -float0 -size_t64 $optdbl -P static $NCDFLIB "
     948        endif
     949     else
     950       set opt_link="$opt_link -lsxioipsl -float0 -size_t64 $optdbl -P static $NCDFLIB "
     951     endif
     952   else
     953#     set opt_link=" -float0 -size_t64 $optdbl -P static -L$MODIPSLDIR -lsxsechiba -lsxparameters -lsxstomate -lsxioipsl $NCDFLIB "
     954     set opt_link=" -float0 -size_t64 $optdbl -P static -L$MODIPSLDIR -lsxioipsl $NCDFLIB "
     955
     956   endif
     957   set mod_loc_dir="./"
     958#################
     959else
     960#################
     961   set f77=f77
     962   set f90=f90
     963endif
     964
     965cd $model
     966
     967if $VPP then
     968set make="gmake RANLIB=ls"
     969else if $CRAY then
     970set make="make RANLIB=ls"
     971else if $NEC then
     972set make="make RANLIB=ls"
     973else if $LINUX then
     974set make="make -k RANLIB=ranlib"
     975else if $XNEC then
     976set make="gmake RANLIB=ls"
     977else if $X6NEC then
     978set make="gmake RANLIB=ls"
     979else
     980set make="make RANLIB=ranlib"
     981endif
     982
     983
     984
     985
     986#
     987# etat0_netcdf a besoin d'info de la physique
     988# A revoir
    570989set include="$include"' -I$(LIBF)/phy'"$physique"
     990#
     991# le programme principal create_limit a besoin de l'info du module
     992# startvar: on met donc libo dans les include pour Nec
    571993set include="$include"' -I$(LIBO)'
    572994
     
    576998#################################################################
    577999
     1000if $VPP then
     1001  set optim90=" $optim90 -Am -M$libo"
     1002  set optimtru90="$optim90"
     1003 \cp $IOIPSLDIR/*.mod $libo
     1004else if $SUN then
     1005 set optim90=" $optim90 -M$libo -M$MODIPSLDIR "
     1006 set optimtru90=" $optimtru90 -M$libo -M$MODIPSLDIR "
     1007 set optim="$optim90"
     1008 \cp $IOIPSLDIR/*.mod $libo
     1009else if $NEC then
     1010 set optim90=" $optim90 -I$libo "
     1011else if $XNEC then
     1012 set optim90=" $optim90 -I$libo "
     1013 set optimtru90=" $optimtru90 -I$libo "
     1014else if $X6NEC then
     1015 set optim90=" $optim90 -I$libo "
     1016 set optimtru90=" $optimtru90 -I$libo "
     1017else if $LINUX then
     1018 if ( $FC_LINUX == "pgf90" ) then
     1019   set optimtru90=" $optimtru90 -module $libo "
     1020   set optim90=" $optim90 -module $libo "
     1021 else if ( $FC_LINUX == 'g95' ) then
     1022   set optimtru90=" $optimtru90 -fmod=$libo  "
     1023   set optim90=" $optim90 -fmod=$libo  "
     1024 endif
     1025 set optim="$optim90"
     1026 set mod_loc_dir=$libo
     1027# \cp /d3/fairhead/sechiba/ioipsl/*.mod $libo
     1028# \cp $IOIPSLDIR/*.mod $libo
     1029endif
     1030
     1031set link="$f90 $optim90"
     1032
     1033set ar=ar
     1034
     1035if $XNEC then
     1036  set link="sxld $opt_link"
     1037  set link="$f90 "
     1038#  set ar=sxar
     1039else if $X6NEC then
     1040  set link="sxld $opt_link"
     1041  set link="$f90 "
     1042endif
    5781043
    5791044
     
    5911056$phys \
    5921057DIM=$dimc \
    593 FLAG_PARA="$FLAG_PARA"\
    5941058L_ADJNT="$adjnt" \
     1059L_CHIMIE="$libchimie" \
    5951060LOCAL_DIR="$localdir"  \
    5961061F77="$f77" \
     
    6031068AR=$ar \
    6041069PROG=$code
    605 
    6061070
    6071071$make -f $LMDGCM/makefile \
     
    6161080$phys \
    6171081DIM=$dimc \
    618 FLAG_PARA="$FLAG_PARA"\
    6191082L_ADJNT="$adjnt" \
     1083L_CHIMIE="$libchimie" \
    6201084LOCAL_DIR="$localdir"  \
    6211085F77="$f77" \
Note: See TracChangeset for help on using the changeset viewer.