Changeset 259 for LMDZ.3.3/trunk


Ignore:
Timestamp:
Jul 19, 2001, 2:57:21 PM (23 years ago)
Author:
lmdz
Message:

Nouveaux programmes pour la creation des etats initiaux et des conditions aux limites. Levan
LF

Location:
LMDZ.3.3/trunk/libf/dyn3d
Files:
11 added
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ.3.3/trunk/libf/dyn3d/etat0_netcdf.F

    r70 r259  
    1       SUBROUTINE etat0_netcdf
     1C
     2C $Header$
     3C
     4      SUBROUTINE etat0_netcdf ( interbar )
    25   
    36      USE startvar
     
    1720#include "comconst.h"
    1821      !
     22      LOGICAL interbar
    1923      REAL :: latfi(klon), lonfi(klon)
    2024      REAL :: orog(iip1,jjp1), rugo(iip1,jjp1), masque(iip1,jjp1),
     
    3438      CHARACTER*80 :: varname
    3539      !
    36       INTEGER :: i,j, ig, l
     40      INTEGER :: i,j, ig, l,ii1,ii2
    3741      REAL :: xpi
    3842      !
     
    6569      REAL ::phystep,co2_ppm,solaire
    6670      INTEGER :: radpas
     71       real zrel(iip1*jjp1),chmin,chmax
    6772
    6873      CHARACTER*80 :: visu_file
     
    122127      ! This line needs to be replaced by a call to restget to get the values in the restart file
    123128      orog(:,:) = 0.0
    124        CALL startget(varname, iip1, jjp1, rlonv, rlatu, orog, 0.0)
     129       CALL startget(varname, iip1, jjp1, rlonv, rlatu, orog, 0.0 ,
     130     , jjm ,rlonu,rlatv , interbar )
    125131      !
    126132      WRITE(*,*) 'OUT OF GET VARIABLE : Relief'
     
    130136      ! This line needs to be replaced by a call to restget to get the values in the restart file
    131137      rugo(:,:) = 0.0
    132        CALL startget(varname, iip1, jjp1, rlonv, rlatu, rugo, 0.0)
     138       CALL startget(varname, iip1, jjp1, rlonv, rlatu, rugo, 0.0 ,
     139     , jjm, rlonu,rlatv , interbar )
    133140      !
    134141      WRITE(*,*) 'OUT OF GET VARIABLE : Rugosite'
     
    138145      ! This line needs to be replaced by a call to restget to get the values in the restart file
    139146      masque(:,:) = 0.0
    140        CALL startget(varname, iip1, jjp1, rlonv, rlatu, masque, 0.0)
    141       !
    142       WRITE(*,*) 'MASQUE construit : Masque'
    143       WRITE(*,'(49I1)') INT(masque(:,:))
     147       CALL startget(varname, iip1, jjp1, rlonv, rlatu, masque, 0.0,
     148     , jjm ,rlonu,rlatv , interbar )
     149      !
     150c      WRITE(*,*) 'MASQUE construit : Masque'
     151c      WRITE(*,'(49I1)') INT(masque(:,:))
    144152      !
    145153      !
    146154      varname = 'psol'
    147155      psol(:,:) = 0.0
    148       CALL startget(varname, iip1, jjp1, rlonv, rlatu, psol, 0.0)
     156      CALL startget(varname, iip1, jjp1, rlonv, rlatu, psol, 0.0 ,
     157     , jjm ,rlonu,rlatv , interbar )
    149158      !
    150159      !  Compute here the pressure on the intermediate levels. One would expect that this is available in the GCM
     
    174183      varname = 'surfgeo'
    175184      phis(:,:) = 0.0
    176       CALL startget(varname, iip1, jjp1, rlonv, rlatu, phis, 0.0)
     185      CALL startget(varname, iip1, jjp1, rlonv, rlatu, phis, 0.0 ,
     186     , jjm ,rlonu,rlatv, interbar )
    177187      !
    178188      varname = 'u'
    179189      uvent(:,:,:) = 0.0
    180190      CALL startget(varname, iip1, jjp1, rlonu, rlatu, llm, pls,
    181      . workvar, uvent, 0.0)
     191     . workvar, uvent, 0.0, jjm ,rlonv, rlatv, interbar )
    182192      ! 
    183193      varname = 'v'
    184194      vvent(:,:,:) = 0.0
    185195      CALL startget(varname, iip1, jjm, rlonv, rlatv, llm, pls,
    186      . workvar, vvent, 0.0)
     196     . workvar, vvent, 0.0, jjp1, rlonu, rlatu, interbar )
    187197      !
    188198      varname = 't'
    189199      t3d(:,:,:) = 0.0
    190200      CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
    191      . workvar, t3d, 0.0)
     201     . workvar, t3d, 0.0 , jjm, rlonu, rlatv , interbar )
    192202      !
    193203      WRITE(*,*) 'T3D min,max:',minval(t3d(:,:,:)),
     
    196206      tpot(:,:,:) = 0.0
    197207      CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
    198      . pk, tpot, 0.0)
     208     . pk, tpot, 0.0 , jjm, rlonu, rlatv , interbar )
    199209      !
    200210      WRITE(*,*) 'T3D min,max:',minval(t3d(:,:,:)),
     
    221231     .                           maxval(qsat(:,:,:))
    222232      CALL startget(varname, iip1, jjp1, rlonv, rlatu, llm, pls,
    223      . qsat, qd, 0.0)
     233     . qsat, qd, 0.0, jjm, rlonu, rlatv , interbar )
    224234      q3d(:,:,:,1) = qd(:,:,:)
    225235      !
     
    227237      ! This line needs to be replaced by a call to restget to get the values in the restart file
    228238      tsol(:) = 0.0
    229       CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, tsol, 0.0)
     239      CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, tsol, 0.0,
     240     .    jjm, rlonu, rlatv , interbar )
    230241      !
    231242      WRITE(*,*) 'TSOL construit :'
     
    234245      varname = 'qsol'
    235246      qsol(:) = 0.0
    236       CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, qsol, 0.0)
     247      CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, qsol, 0.0,
     248     .   jjm, rlonu, rlatv , interbar )
    237249      !
    238250      varname = 'snow'
    239251      sn(:) = 0.0
    240       CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, sn, 0.0)
     252      CALL startget(varname, iip1, jjp1, rlonv, rlatu, klon, sn, 0.0,
     253     .    jjm, rlonu, rlatv , interbar )
    241254      !
    242255      varname = 'rads'
    243256      radsol(:) = 0.0
    244       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,radsol,0.0)
     257      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,radsol,0.0,
     258     .    jjm, rlonu, rlatv , interbar )
    245259      !
    246260      varname = 'deltat'
    247261      deltat(:) = 0.0
    248       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,deltat,0.0)
     262      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,deltat,0.0,
     263     .     jjm, rlonu, rlatv , interbar )
    249264      !
    250265      varname = 'rugmer'
    251266      rugmer(:) = 0.0
    252       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,rugmer,0.0)
     267      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,rugmer,0.0,
     268     .     jjm, rlonu, rlatv , interbar )
    253269      !
    254270      varname = 'agsno'
    255271      agesno(:) = 0.0
    256       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,agesno,0.0)
     272      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,agesno,0.0,
     273     .     jjm, rlonu, rlatv , interbar )
    257274
    258275      varname = 'zmea'
    259276      zmea(:) = 0.0
    260       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zmea,0.0)
     277      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zmea,0.0,
     278     .     jjm, rlonu, rlatv , interbar )
     279
    261280      varname = 'zstd'
    262281      zstd(:) = 0.0
    263       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zstd,0.0)
     282      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zstd,0.0,
     283     .     jjm, rlonu, rlatv , interbar )
    264284      varname = 'zsig'
    265285      zsig(:) = 0.0
    266       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zsig,0.0)
     286      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zsig,0.0,
     287     .     jjm, rlonu, rlatv , interbar )
    267288      varname = 'zgam'
    268289      zgam(:) = 0.0
    269       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zgam,0.0)
     290      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zgam,0.0,
     291     .     jjm, rlonu, rlatv , interbar )
    270292      varname = 'zthe'
    271293      zthe(:) = 0.0
    272       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zthe,0.0)
     294      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zthe,0.0,
     295     .     jjm, rlonu, rlatv , interbar )
    273296      varname = 'zpic'
    274297      zpic(:) = 0.0
    275       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zpic,0.0)
     298      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zpic,0.0,
     299     .     jjm, rlonu, rlatv , interbar )
    276300      varname = 'zval'
    277301      zval(:) = 0.0
    278       CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zval,0.0)
     302      CALL startget(varname,iip1,jjp1,rlonv,rlatu,klon,zval,0.0,
     303     .     jjm, rlonu, rlatv , interbar )
     304c
    279305      rugsrel(:) = 0.0
    280 C Calcul intermediaire
     306      IF(ok_orodr)  THEN
     307        DO i = 1, iip1* jjp1
     308         rugsrel(i) = MAX( 1.e-05, zstd(i)* zsig(i) /2. )
     309        ENDDO
     310
     311      WRITE(*,*) 'OUT OF GET VARIABLE : Rugosite  rugsrel'
     312      WRITE(*,'(49I1)') INT(rugsrel(:)*10)
     313
     314      ENDIF
     315c
     316c  Calcul intermediaire
    281317c
    282318      CALL massdair( p3d, masse  )
    283319c
    284 
    285       print *,' ALPHAX ',alphax
    286320
    287321      DO  l = 1, llm
     
    305339      CALL inidissip( lstardis, nitergdiv, nitergrot, niterh   ,
    306340     *                tetagdiv, tetagrot , tetatemp              )
    307       print*,'sortie inidissip'
    308341      itau = 0
    309342      iday = dayref +itau/day_step
     
    315348      ENDIF
    316349      CALL geopot  ( ip1jmp1, tpot  , pk , pks,  phis  , phi   )
    317       print*,'sortie geopot'
    318350     
    319351      CALL caldyn0 ( itau,uvent,vvent,tpot,psol,masse,pk,phis ,
    320352     *                phi,w, pbaru,pbarv,time+iday-dayref   )
    321        print*,'sortie caldyn0'     
     353      print*,'sortie caldyn0'     
    322354      CALL dynredem0("start.nc",dayref,anneeref,phis,nqmx)
    323355      print*,'sortie dynredem0'
     
    339371     .                   zgam, zthe, zpic, zval,
    340372     .                   rugsrel)
     373cc
    341374
    342375C     Sortie Visu pour les champs dynamiques
  • LMDZ.3.3/trunk/libf/dyn3d/startvar.F

    r24 r259  
     1C
     2C $Header$
     3C
    14      MODULE startvar
    25    !
     
    1013    !
    1114    !        - A 2D variable on the dynamical grid :
    12     !           CALL startget(varname, iml, jml, lon_in, lat_in, champ, val_ex)
    13     !           
     15    !           CALL startget(varname, iml, jml, lon_in, lat_in, champ, val_ex, jml2, lon_in2, lat_in2, interbar )             
    1416    !
    1517    !        - A 1D variable on the physical grid :
    16     !            CALL startget(varname, iml, jml, lon_in, lat_in, nbindex, champ, val_exp)
     18    !            CALL startget(varname, iml, jml, lon_in, lat_in, nbindex, champ, val_exp, jml2, lon_in2, lat_in2, interbar )
    1719    !
    1820    !
    1921    !         - A 3D variable on the dynamical grid :
    20     !            CALL startget(varname, iml, jml, lon_in, lat_in, lml, pls, workvar, champ, val_exp)
     22    !            CALL startget(varname, iml, jml, lon_in, lat_in, lml, pls, workvar, champ, val_exp, jml2, lon_in2, lat_in2, interbar )
    2123    !
    2224    !
     
    5759      REAL, ALLOCATABLE, SAVE, DIMENSION (:,:)  :: lat_phys, lat_rug,
    5860     . lat_alb, lat_rel, lat_dyn
    59       REAL, ALLOCATABLE, SAVE, DIMENSION (:)  :: lev_dyn
     61      REAL, ALLOCATABLE, SAVE, DIMENSION (:)  :: levdyn_ini
    6062      REAL, ALLOCATABLE, SAVE, DIMENSION (:,:)  :: relief, zstd, zsig,
    6163     . zgam, zthe, zpic, zval
     
    7072    !
    7173      SUBROUTINE startget_phys2d(varname, iml, jml, lon_in, lat_in,
    72      . champ, val_exp)
     74     . champ, val_exp, jml2, lon_in2, lat_in2 , interbar )
    7375    !
    7476    !    There is a big mess with the size in logitude, should it be iml or iml+1.
     
    7981    !
    8082      CHARACTER*(*), INTENT(in) :: varname
    81       INTEGER, INTENT(in) :: iml, jml
     83      INTEGER, INTENT(in) :: iml, jml ,jml2
    8284      REAL, INTENT(in) :: lon_in(iml), lat_in(jml)
     85      REAL, INTENT(in) :: lon_in2(iml), lat_in2(jml2)
    8386      REAL, INTENT(inout) :: champ(iml,jml)
    8487      REAL, INTENT(in) :: val_exp
     88      LOGICAL interbar
    8589    !
    8690    !   This routine only works if the variable does not exist or is constant
     
    97101                  IF ( .NOT.ALLOCATED(relief)) THEN
    98102                      !
    99                       CALL start_init_orog( iml, jml, lon_in, lat_in)
     103                      CALL start_init_orog( iml, jml, lon_in, lat_in,
     104     .                    jml2,lon_in2,lat_in2, interbar )
    100105                      !
    101106                  ENDIF
     
    117122                  IF ( .NOT.ALLOCATED(rugo)) THEN
    118123                      !
    119                       CALL start_init_orog( iml, jml, lon_in, lat_in)
     124                      CALL start_init_orog( iml, jml, lon_in, lat_in,
     125     .                    jml2,lon_in2,lat_in2 , interbar )
    120126                      !
    121127                  ENDIF
     
    137143                  IF ( .NOT.ALLOCATED(masque)) THEN
    138144                      !
    139                       CALL start_init_orog( iml, jml, lon_in, lat_in)
     145                      CALL start_init_orog( iml, jml, lon_in, lat_in,
     146     .                     jml2,lon_in2,lat_in2 , interbar )
    140147                      !
    141148                  ENDIF
     
    157164                  IF ( .NOT.ALLOCATED(phis)) THEN
    158165                      !
    159                       CALL start_init_orog( iml, jml, lon_in, lat_in)
     166                      CALL start_init_orog( iml, jml, lon_in, lat_in,
     167     .                   jml2,lon_in2, lat_in2 , interbar )
    160168                      !
    161169                  ENDIF
     
    177185                  IF ( .NOT.ALLOCATED(psol_dyn)) THEN
    178186                      !
    179                       CALL start_init_dyn( iml, jml, lon_in, lat_in)
     187                      CALL start_init_dyn( iml, jml, lon_in, lat_in,
     188     .                   jml2,lon_in2, lat_in2 , interbar )
    180189                      !
    181190                  ENDIF
     
    231240    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    232241    !
    233       SUBROUTINE start_init_orog( iml, jml, lon_in, lat_in)
    234     !
    235       INTEGER, INTENT(in) :: iml, jml
     242      SUBROUTINE start_init_orog ( iml,jml,lon_in, lat_in,jml2,lon_in2 ,
     243     ,   lat_in2 , interbar )
     244    !
     245      INTEGER, INTENT(in) :: iml, jml, jml2
    236246      REAL, INTENT(in) :: lon_in(iml), lat_in(jml)
     247      REAL, INTENT(in) :: lon_in2(iml), lat_in2(jml2)
     248      LOGICAL interbar
    237249    !
    238250    !  LOCAL
    239251    !
    240       REAL :: lev(1), date, dt
     252      LOGICAL interbar2
     253      REAL :: lev(1), date, dt,chmin,chmax
    241254      INTEGER :: itau(1), fid
    242255      INTEGER ::  llm_tmp, ttm_tmp
    243256      INTEGER :: i, j
    244257      INTEGER :: iret
     258      CHARACTER*25 title
    245259      REAL, ALLOCATABLE :: relief_hi(:,:)
    246260      REAL, ALLOCATABLE :: lon_rad(:), lat_rad(:)
     261      REAL, ALLOCATABLE :: lon_ini(:), lat_ini(:)
    247262      REAL, ALLOCATABLE :: tmp_var(:,:)
    248263      INTEGER, ALLOCATABLE :: tmp_int(:,:)
     
    274289    !
    275290      ALLOCATE(lon_rad(iml_rel))
     291      ALLOCATE(lon_ini(iml_rel))
     292
    276293      IF ( MAXVAL(lon_rel(:,:)) .GT. 2.0 * ASIN(1.0) ) THEN
    277           lon_rad(:) = lon_rel(:,1) * 2.0 * ASIN(1.0) / 180.0
    278       ELSE
    279           lon_rad(:) = lon_rel(:,1)
    280       ENDIF
     294          lon_ini(:) = lon_rel(:,1) * 2.0 * ASIN(1.0) / 180.0
     295      ELSE
     296          lon_ini(:) = lon_rel(:,1)
     297      ENDIF
     298
    281299      ALLOCATE(lat_rad(jml_rel))
     300      ALLOCATE(lat_ini(jml_rel))
     301
    282302      IF ( MAXVAL(lat_rel(:,:)) .GT. 2.0 * ASIN(1.0) ) THEN
    283           lat_rad(:) = lat_rel(1,:) * 2.0 * ASIN(1.0) / 180.0
    284       ELSE
    285           lat_rad(:) = lat_rel(1,:)
    286       ENDIF
    287     !
    288     !
     303          lat_ini(:) = lat_rel(1,:) * 2.0 * ASIN(1.0) / 180.0
     304      ELSE
     305          lat_ini(:) = lat_rel(1,:)
     306      ENDIF
     307    !
     308    !
     309
     310      title='RELIEF'
     311
     312      interbar2 = .FALSE.
     313      CALL conf_dat2d(title,iml_rel, jml_rel, lon_ini, lat_ini,
     314     . lon_rad, lat_rad, relief_hi , interbar2  )
     315
    289316      IF ( check ) WRITE(*,*) 'Computes all the parameters needed',
    290317     .' for the gravity wave drag code'
     
    337364        rugo(iml,j) = tmp_var(1,j)
    338365      ENDDO
     366c
     367cc   ***   rugo  n'est pas utilise pour l'instant  ******
    339368    !
    340369    !   Build land-sea mask
     
    348377    !
    349378      SUBROUTINE startget_phys1d(varname, iml, jml, lon_in,
    350      .lat_in, nbindex, champ, val_exp)
     379     .lat_in, nbindex, champ, val_exp ,jml2, lon_in2, lat_in2,interbar)
    351380    !
    352381      CHARACTER*(*), INTENT(in) :: varname
    353       INTEGER, INTENT(in) :: iml, jml, nbindex
     382      INTEGER, INTENT(in) :: iml, jml, nbindex, jml2
    354383      REAL, INTENT(in) :: lon_in(iml), lat_in(jml)
     384      REAL, INTENT(in) :: lon_in2(iml), lat_in2(jml2)
    355385      REAL, INTENT(inout) :: champ(nbindex)
    356386      REAL, INTENT(in) :: val_exp
     387      LOGICAL interbar
    357388    !
    358389    !
     
    364395            CASE ('tsol')
    365396              IF ( .NOT.ALLOCATED(tsol)) THEN
    366                 CALL start_init_phys( iml, jml, lon_in, lat_in)
     397                CALL start_init_phys( iml, jml, lon_in, lat_in,
     398     .              jml2, lon_in2, lat_in2, interbar )
    367399              ENDIF
    368400              IF ( SIZE(tsol) .NE. SIZE(lon_in)*SIZE(lat_in) ) THEN
     
    374406            CASE ('qsol')
    375407              IF ( .NOT.ALLOCATED(qsol)) THEN
    376                 CALL start_init_phys( iml, jml, lon_in, lat_in)
     408                CALL start_init_phys( iml, jml, lon_in, lat_in,
     409     .              jml2, lon_in2,lat_in2 , interbar )
    377410              ENDIF
    378411              IF ( SIZE(qsol) .NE. SIZE(lon_in)*SIZE(lat_in) ) THEN
     
    384417            CASE ('psol')
    385418              IF ( .NOT.ALLOCATED(psol_dyn)) THEN
    386                 CALL start_init_dyn( iml, jml, lon_in, lat_in)
     419                CALL start_init_dyn( iml, jml, lon_in, lat_in,
     420     .              jml2, lon_in2,lat_in2 , interbar )
    387421              ENDIF
    388422              IF (SIZE(psol_dyn) .NE. SIZE(lon_in)*SIZE(lat_in)) THEN
     
    394428            CASE ('zmea')
    395429              IF ( .NOT.ALLOCATED(relief)) THEN
    396                 CALL start_init_orog( iml, jml, lon_in, lat_in)
     430                CALL start_init_orog( iml, jml, lon_in, lat_in,
     431     .            jml2, lon_in2,lat_in2 , interbar )
    397432              ENDIF
    398433              IF ( SIZE(relief) .NE. SIZE(lon_in)*SIZE(lat_in) ) THEN
     
    404439            CASE ('zstd')
    405440              IF ( .NOT.ALLOCATED(zstd)) THEN
    406                 CALL start_init_orog( iml, jml, lon_in, lat_in)
     441                CALL start_init_orog( iml, jml, lon_in, lat_in,
     442     .              jml2, lon_in2,lat_in2 , interbar )
    407443              ENDIF
    408444              IF ( SIZE(zstd) .NE. SIZE(lon_in)*SIZE(lat_in) ) THEN
     
    414450            CASE ('zsig')
    415451              IF ( .NOT.ALLOCATED(zsig)) THEN
    416                 CALL start_init_orog( iml, jml, lon_in, lat_in)
     452                CALL start_init_orog( iml, jml, lon_in, lat_in,
     453     .               jml2, lon_in2,lat_in2 , interbar )
    417454              ENDIF
    418455              IF ( SIZE(zsig) .NE. SIZE(lon_in)*SIZE(lat_in) ) THEN
     
    424461            CASE ('zgam')
    425462              IF ( .NOT.ALLOCATED(zgam)) THEN
    426                 CALL start_init_orog( iml, jml, lon_in, lat_in)
     463                CALL start_init_orog( iml, jml, lon_in, lat_in,
     464     .            jml2, lon_in2,lat_in2 , interbar )
    427465              ENDIF
    428466              IF ( SIZE(zgam) .NE. SIZE(lon_in)*SIZE(lat_in) ) THEN
     
    434472            CASE ('zthe')
    435473              IF ( .NOT.ALLOCATED(zthe)) THEN
    436                 CALL start_init_orog( iml, jml, lon_in, lat_in)
     474                CALL start_init_orog( iml, jml, lon_in, lat_in,
     475     .            jml2, lon_in2,lat_in2 , interbar )
    437476              ENDIF
    438477              IF ( SIZE(zthe) .NE. SIZE(lon_in)*SIZE(lat_in) ) THEN
     
    444483            CASE ('zpic')
    445484              IF ( .NOT.ALLOCATED(zpic)) THEN
    446                 CALL start_init_orog( iml, jml, lon_in, lat_in)
     485                CALL start_init_orog( iml, jml, lon_in, lat_in,
     486     .            jml2, lon_in2,lat_in2 , interbar )
    447487              ENDIF
    448488              IF ( SIZE(zpic) .NE. SIZE(lon_in)*SIZE(lat_in) ) THEN
     
    454494            CASE ('zval')
    455495              IF ( .NOT.ALLOCATED(zval)) THEN
    456                 CALL start_init_orog( iml, jml, lon_in, lat_in)
     496                CALL start_init_orog( iml, jml, lon_in, lat_in,
     497     .            jml2, lon_in2,lat_in2 , interbar )
    457498              ENDIF
    458499              IF ( SIZE(zval) .NE. SIZE(lon_in)*SIZE(lat_in) ) THEN
     
    462503              ENDIF
    463504              CALL gr_dyn_fi(1, iml, jml, nbindex,zval, champ)
    464              CASE ('rads')
     505            CASE ('rads')
    465506                  champ(:) = 0.0
    466507            CASE ('snow')
     
    493534    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    494535    !
    495       SUBROUTINE start_init_phys( iml, jml, lon_in, lat_in)
    496     !
    497       INTEGER, INTENT(in) :: iml, jml
     536      SUBROUTINE start_init_phys( iml, jml, lon_in, lat_in, jml2,
     537     .                 lon_in2, lat_in2 , interbar )
     538    !
     539      INTEGER, INTENT(in) :: iml, jml ,jml2
    498540      REAL, INTENT(in) :: lon_in(iml), lat_in(jml)
     541      REAL, INTENT(in) :: lon_in2(iml), lat_in2(jml2)
     542      LOGICAL interbar
    499543    !
    500544    !  LOCAL
     
    505549      INTEGER :: i, j
    506550    !
     551      CHARACTER*25 title
    507552      CHARACTER*120 :: physfname
    508553      LOGICAL :: check=.TRUE.
    509554    !
    510555      REAL, ALLOCATABLE :: lon_rad(:), lat_rad(:)
     556      REAL, ALLOCATABLE :: lon_ini(:), lat_ini(:)
    511557      REAL, ALLOCATABLE :: var_ana(:,:), tmp_var(:,:)
    512558    !
     
    533579    !
    534580      ALLOCATE(lon_rad(iml_phys))
     581      ALLOCATE(lon_ini(iml_phys))
     582
    535583      IF ( MAXVAL(lon_phys(:,:)) .GT. 2.0 * ASIN(1.0) ) THEN
    536           lon_rad(:) = lon_phys(:,1) * 2.0 * ASIN(1.0) / 180.0
    537       ELSE
    538           lon_rad(:) = lon_phys(:,1)
    539       ENDIF
     584          lon_ini(:) = lon_phys(:,1) * 2.0 * ASIN(1.0) / 180.0
     585      ELSE
     586          lon_ini(:) = lon_phys(:,1)
     587      ENDIF
     588
    540589      ALLOCATE(lat_rad(jml_phys))
     590      ALLOCATE(lat_ini(jml_phys))
     591
    541592      IF ( MAXVAL(lat_phys(:,:)) .GT. 2.0 * ASIN(1.0) ) THEN
    542           lat_rad(:) = lat_phys(1,:) * 2.0 * ASIN(1.0) / 180.0
    543       ELSE
    544           lat_rad(:) = lat_phys(1,:)
    545       ENDIF
     593          lat_ini(:) = lat_phys(1,:) * 2.0 * ASIN(1.0) / 180.0
     594      ELSE
     595          lat_ini(:) = lat_phys(1,:)
     596      ENDIF
     597
     598
    546599    !
    547600    !   We get the two standard varibales
     
    552605    !
    553606    !
     607
    554608      CALL flinget(fid_phys, 'ST', iml_phys, jml_phys,
    555609     .llm_tmp, ttm_tmp, 1, 1, var_ana)
    556       CALL grille_m(iml_phys, jml_phys, lon_rad, lat_rad,
    557      . var_ana, iml-1, jml, lon_in, lat_in, tmp_var)
     610
     611      title='ST'
     612      CALL conf_dat2d(title,iml_phys, jml_phys, lon_ini, lat_ini,
     613     . lon_rad, lat_rad, var_ana , interbar  )
     614
     615      IF ( interbar )   THEN
     616        WRITE(6,*) '-------------------------------------------------',
     617     ,'--------------'
     618        WRITE(6,*) '$$$ Utilisation de l interpolation barycentrique ',
     619     , ' pour  ST $$$ '
     620        WRITE(6,*) '-------------------------------------------------',
     621     ,'--------------'
     622        CALL inter_barxy ( iml_phys,jml_phys -1,lon_rad,lat_rad ,
     623     ,   var_ana, iml-1, jml-1, lon_in2, lat_in2, jml, tmp_var   )
     624      ELSE
     625        CALL grille_m(iml_phys, jml_phys, lon_rad, lat_rad,
     626     .    var_ana, iml-1, jml, lon_in, lat_in, tmp_var     )
     627      ENDIF
     628
    558629      CALL gr_int_dyn(tmp_var, tsol, iml-1, jml)
    559630    !
     
    563634      CALL flinget(fid_phys, 'CDSW', iml_phys, jml_phys,
    564635     . llm_tmp, ttm_tmp, 1, 1, var_ana)
    565       CALL grille_m(iml_phys, jml_phys, lon_rad, lat_rad,
    566      . var_ana, iml-1, jml, lon_in, lat_in, tmp_var)
    567       CALL gr_int_dyn(tmp_var, qsol, iml-1, jml)
    568     !
    569       CALL flinclo(fid_phys)
     636
     637      title='CDSW'
     638      CALL conf_dat2d(title,iml_phys, jml_phys, lon_ini, lat_ini,
     639     . lon_rad, lat_rad, var_ana, interbar  )
     640
     641      IF ( interbar )   THEN
     642        WRITE(6,*) '-------------------------------------------------',
     643     ,'--------------'
     644        WRITE(6,*) '$$$ Utilisation de l interpolation barycentrique ',
     645     , ' pour  CDSW $$$ '
     646        WRITE(6,*) '-------------------------------------------------',
     647     ,'--------------'
     648        CALL inter_barxy ( iml_phys,jml_phys -1,lon_rad,lat_rad ,
     649     ,   var_ana, iml-1, jml-1, lon_in2, lat_in2, jml, tmp_var  )
     650      ELSE
     651        CALL grille_m(iml_phys, jml_phys, lon_rad, lat_rad,
     652     .    var_ana, iml-1, jml, lon_in, lat_in, tmp_var     )
     653      ENDIF
     654c
     655        CALL gr_int_dyn(tmp_var, qsol, iml-1, jml)
     656    !
     657       CALL flinclo(fid_phys)
    570658    !
    571659      END SUBROUTINE start_init_phys
     
    576664    !
    577665      SUBROUTINE startget_dyn(varname, iml, jml, lon_in, lat_in,
    578      . lml, pls, workvar, champ, val_exp)
     666     . lml, pls, workvar, champ, val_exp,jml2, lon_in2, lat_in2 ,
     667     ,  interbar )
    579668    !
    580669    !   ARGUMENTS
    581670    !
    582671      CHARACTER*(*), INTENT(in) :: varname
    583       INTEGER, INTENT(in) :: iml, jml, lml
     672      INTEGER, INTENT(in) :: iml, jml, lml, jml2
    584673      REAL, INTENT(in) :: lon_in(iml), lat_in(jml)
     674      REAL, INTENT(in) :: lon_in2(iml), lat_in2(jml2)
    585675      REAL, INTENT(in) :: pls(iml, jml, lml)
    586676      REAL, INTENT(in) :: workvar(iml, jml, lml)
    587677      REAL, INTENT(inout) :: champ(iml, jml, lml)
    588678      REAL, INTENT(in) :: val_exp
     679      LOGICAL interbar
    589680    !
    590681    !    LOCAL
     
    592683      INTEGER :: il, ij, ii
    593684      REAL :: xppn, xpps
    594     !
    595     !   C'est vraiment une galere de devoir rajouter tant de commons just pour avoir les aires.
    596     !   Il faudrait mettre une structure plus flexible et moins dangereuse.
    597685    !
    598686#include "dimensions.h"
     
    609697          CASE ('u')
    610698            IF ( .NOT.ALLOCATED(psol_dyn)) THEN
    611               CALL start_init_dyn( iml, jml, lon_in, lat_in)
     699              CALL start_init_dyn( iml, jml, lon_in, lat_in, jml2 ,
     700     .          lon_in2,lat_in2 , interbar )
    612701            ENDIF
    613702            CALL start_inter_3d('U', iml, jml, lml, lon_in,
    614      .                           lat_in, pls, champ)
     703     .       lat_in, jml2, lon_in2, lat_in2,  pls, champ,interbar )
    615704            DO il=1,lml
    616705              DO ij=1,jml
     
    623712          CASE ('v')
    624713            IF ( .NOT.ALLOCATED(psol_dyn)) THEN
    625               CALL start_init_dyn( iml, jml, lon_in, lat_in)
     714              CALL start_init_dyn( iml, jml, lon_in, lat_in , jml2,
     715     .           lon_in2, lat_in2 , interbar )
    626716            ENDIF
    627             CALL start_inter_3d('V', iml, jml, lml, lon_in,
    628      .                          lat_in, pls, champ)
     717            CALL start_inter_3d('V', iml, jml, lml, lon_in, 
     718     .       lat_in, jml2, lon_in2, lat_in2,  pls, champ, interbar )
    629719            DO il=1,lml
    630720              DO ij=1,jml
     
    637727          CASE ('t')
    638728            IF ( .NOT.ALLOCATED(psol_dyn)) THEN
    639               CALL start_init_dyn( iml, jml, lon_in, lat_in)
     729              CALL start_init_dyn( iml, jml, lon_in, lat_in, jml2 ,
     730     .           lon_in2, lat_in2 ,interbar )
    640731            ENDIF
    641732            CALL start_inter_3d('TEMP', iml, jml, lml, lon_in,
    642      .                           lat_in, pls, champ)
     733     .       lat_in, jml2, lon_in2, lat_in2,  pls, champ, interbar )
    643734 
    644735          CASE ('tpot')
    645736            IF ( .NOT.ALLOCATED(psol_dyn)) THEN
    646               CALL start_init_dyn( iml, jml, lon_in, lat_in)
     737              CALL start_init_dyn( iml, jml, lon_in, lat_in , jml2 ,
     738     .            lon_in2, lat_in2 , interbar )
    647739            ENDIF
    648740            CALL start_inter_3d('TEMP', iml, jml, lml, lon_in,
    649      .                           lat_in, pls, champ)
     741     .       lat_in, jml2, lon_in2, lat_in2,  pls, champ, interbar )
    650742            IF ( MINVAL(workvar(:,:,:)) .NE. MAXVAL(workvar(:,:,:)) )
    651743     .                                    THEN
     
    672764          CASE ('q')
    673765            IF ( .NOT.ALLOCATED(psol_dyn)) THEN
    674               CALL start_init_dyn( iml, jml, lon_in, lat_in)
     766              CALL start_init_dyn( iml, jml, lon_in, lat_in, jml2 ,
     767     .           lon_in2, lat_in2 , interbar )
    675768            ENDIF
    676769            CALL start_inter_3d('R', iml, jml, lml, lon_in, lat_in,
    677      .                           pls, champ)
     770     .        jml2, lon_in2, lat_in2,  pls, champ, interbar )
    678771            IF ( MINVAL(workvar(:,:,:)) .NE. MAXVAL(workvar(:,:,:)) )
    679772     .                                     THEN
     
    710803    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    711804    !
    712       SUBROUTINE start_init_dyn( iml, jml, lon_in, lat_in)
    713     !
    714       INTEGER, INTENT(in) :: iml, jml
     805      SUBROUTINE start_init_dyn( iml, jml, lon_in, lat_in,jml2,lon_in2 ,
     806     ,             lat_in2 , interbar )
     807    !
     808      INTEGER, INTENT(in) :: iml, jml, jml2
    715809      REAL, INTENT(in) :: lon_in(iml), lat_in(jml)
     810      REAL, INTENT(in) :: lon_in2(iml), lat_in2(jml2)
     811      LOGICAL interbar
    716812    !
    717813    !  LOCAL
     
    726822    !
    727823      REAL, ALLOCATABLE :: lon_rad(:), lat_rad(:)
     824      REAL, ALLOCATABLE :: lon_ini(:), lat_ini(:)
    728825      REAL, ALLOCATABLE :: var_ana(:,:), tmp_var(:,:), z(:,:)
    729826      REAL, ALLOCATABLE :: xppn(:), xpps(:)
    730827      LOGICAL :: allo
    731828    !
    732     !   Ce n'est pas tres pratique d'avoir a charger 3 include pour avoir la grille du modele
    733829    !
    734830#include "dimensions.h"
    735831#include "paramet.h"
    736832#include "comgeom2.h"
     833
     834      CHARACTER*25 title
     835
    737836    !
    738837      physfname = 'ECDYN.nc'
     
    747846      ALLOCATE (lat_dyn(iml_dyn,jml_dyn), stat=iret)
    748847      ALLOCATE (lon_dyn(iml_dyn,jml_dyn), stat=iret)
    749       ALLOCATE (lev_dyn(llm_dyn), stat=iret)
     848      ALLOCATE (levdyn_ini(llm_dyn), stat=iret)
    750849    !
    751850      CALL flinopen(physfname, .FALSE., iml_dyn, jml_dyn, llm_dyn,
    752      . lon_dyn, lat_dyn, lev_dyn, ttm_dyn,
     851     . lon_dyn, lat_dyn, levdyn_ini, ttm_dyn,
    753852     . itau, date, dt, fid_dyn)
    754853    !
     
    764863        DEALLOCATE(lon_rad, stat=iret)
    765864      endif
    766         ALLOCATE(lon_rad(iml_dyn), stat=iret)
     865
     866      ALLOCATE(lon_rad(iml_dyn), stat=iret)
     867      ALLOCATE(lon_ini(iml_dyn))
    767868       
    768869      IF ( MAXVAL(lon_dyn(:,:)) .GT. 2.0 * ASIN(1.0) ) THEN
    769           lon_rad(:) = lon_dyn(:,1) * 2.0 * ASIN(1.0) / 180.0
    770       ELSE
    771           lon_rad(:) = lon_dyn(:,1)
    772       ENDIF
     870          lon_ini(:) = lon_dyn(:,1) * 2.0 * ASIN(1.0) / 180.0
     871      ELSE
     872          lon_ini(:) = lon_dyn(:,1)
     873      ENDIF
     874
    773875      ALLOCATE(lat_rad(jml_dyn))
     876      ALLOCATE(lat_ini(jml_dyn))
     877
    774878      IF ( MAXVAL(lat_dyn(:,:)) .GT. 2.0 * ASIN(1.0) ) THEN
    775           lat_rad(:) = lat_dyn(1,:) * 2.0 * ASIN(1.0) / 180.0
    776       ELSE
    777           lat_rad(:) = lat_dyn(1,:)
    778       ENDIF
    779     !
     879          lat_ini(:) = lat_dyn(1,:) * 2.0 * ASIN(1.0) / 180.0
     880      ELSE
     881          lat_ini(:) = lat_dyn(1,:)
     882      ENDIF
     883    !
     884
     885
    780886      ALLOCATE(z(iml, jml))
    781887      ALLOCATE(tmp_var(iml-1,jml))
     
    783889      CALL flinget(fid_dyn, 'Z', iml_dyn, jml_dyn, 0, ttm_dyn,
    784890     .              1, 1, var_ana)
    785       CALL grille_m(iml_dyn, jml_dyn , lon_rad, lat_rad, var_ana,
     891c
     892      title='Z'
     893      CALL conf_dat2d( title,iml_dyn, jml_dyn,lon_ini, lat_ini,
     894     . lon_rad, lat_rad, var_ana, interbar  )
     895c
     896      IF ( interbar )   THEN
     897        WRITE(6,*) '-------------------------------------------------',
     898     ,'--------------'
     899        WRITE(6,*) '$$$ Utilisation de l interpolation barycentrique ',
     900     , ' pour  Z  $$$ '
     901        WRITE(6,*) '-------------------------------------------------',
     902     ,'--------------'
     903        CALL inter_barxy ( iml_dyn,jml_dyn -1,lon_rad,lat_rad ,
     904     ,    var_ana, iml-1, jml-1, lon_in2, lat_in2, jml, tmp_var)
     905      ELSE
     906        CALL grille_m(iml_dyn, jml_dyn , lon_rad, lat_rad, var_ana,
    786907     .               iml-1, jml, lon_in, lat_in, tmp_var)
     908      ENDIF
     909
    787910      CALL gr_int_dyn(tmp_var, z, iml-1, jml)
    788911    !
     
    791914      CALL flinget(fid_dyn, 'SP', iml_dyn, jml_dyn, 0, ttm_dyn,
    792915     .              1, 1, var_ana)
    793       CALL grille_m(iml_dyn, jml_dyn , lon_rad, lat_rad, var_ana,
    794      .               iml-1, jml, lon_in, lat_in, tmp_var)
     916
     917       title='SP'
     918      CALL conf_dat2d( title,iml_dyn, jml_dyn,lon_ini, lat_ini,
     919     . lon_rad, lat_rad, var_ana, interbar  )
     920
     921      IF ( interbar )   THEN
     922        WRITE(6,*) '-------------------------------------------------',
     923     ,'--------------'
     924        WRITE(6,*) '$$$ Utilisation de l interpolation barycentrique ',
     925     , ' pour  SP  $$$ '
     926        WRITE(6,*) '-------------------------------------------------',
     927     ,'--------------'
     928        CALL inter_barxy ( iml_dyn,jml_dyn -1,lon_rad,lat_rad ,
     929     ,    var_ana, iml-1, jml-1, lon_in2, lat_in2, jml, tmp_var)
     930      ELSE
     931        CALL grille_m(iml_dyn, jml_dyn , lon_rad, lat_rad, var_ana,
     932     .             iml-1, jml, lon_in, lat_in, tmp_var  )
     933      ENDIF
     934
    795935      CALL gr_int_dyn(tmp_var, psol_dyn, iml-1, jml)
    796936    !
     
    800940    !   coming out of the restart file. In case we dor have it we will initialize it.
    801941    !
    802         CALL start_init_phys( iml, jml, lon_in, lat_in)
     942        CALL start_init_phys( iml, jml, lon_in, lat_in,jml2,lon_in2,
     943     .                 lat_in2 , interbar )
    803944      ELSE
    804945        IF ( SIZE(tsol) .NE. SIZE(psol_dyn) ) THEN
     
    814955            !     coming out of the restart file. In case we dor have it we will initialize it.
    815956            !
    816           CALL start_init_orog( iml, jml, lon_in, lat_in)
     957        CALL start_init_orog( iml, jml, lon_in, lat_in, jml2, lon_in2 ,
     958     .      lat_in2 , interbar )
    817959            !
    818960      ELSE
     
    8601002    !
    8611003      SUBROUTINE start_inter_3d(varname, iml, jml, lml, lon_in,
    862      .                           lat_in, pls_in, var3d)
     1004     .      lat_in, jml2, lon_in2, lat_in2, pls_in, var3d, interbar )
    8631005    !
    8641006    !    This subroutine gets a variables from a 3D file and does the interpolations needed
     
    8681010    !
    8691011      CHARACTER*(*) :: varname
    870       INTEGER :: iml, jml, lml
     1012      INTEGER :: iml, jml, lml, jml2
    8711013      REAL :: lon_in(iml), lat_in(jml), pls_in(iml, jml, lml)
     1014      REAL :: lon_in2(iml) , lat_in2(jml2)
    8721015      REAL :: var3d(iml, jml, lml)
     1016      LOGICAL interbar
     1017      real chmin,chmax
    8731018    !
    8741019    !  LOCAL
    8751020    !
    876       INTEGER :: ii, ij, il
     1021      CHARACTER*25 title
     1022      INTEGER :: ii, ij, il, jsort,i,j,l
    8771023      REAL :: bx, by
    8781024      REAL, ALLOCATABLE :: lon_rad(:), lat_rad(:)
     1025      REAL, ALLOCATABLE :: lon_ini(:), lat_ini(:) , lev_dyn(:)
    8791026      REAL, ALLOCATABLE :: var_tmp2d(:,:), var_tmp3d(:,:,:)
    8801027      REAL, ALLOCATABLE :: ax(:), ay(:), yder(:)
     1028       REAL, ALLOCATABLE :: varrr(:,:,:)
    8811029      INTEGER, ALLOCATABLE :: lind(:)
    8821030    !
     
    8861034          ALLOCATE(var_ana3d(iml_dyn, jml_dyn, llm_dyn))
    8871035      ENDIF
     1036          ALLOCATE(varrr(iml_dyn, jml_dyn, llm_dyn))
    8881037    !
    8891038    !
     
    9001049    !
    9011050      ALLOCATE(lon_rad(iml_dyn))
     1051      ALLOCATE(lon_ini(iml_dyn))
     1052
    9021053      IF ( MAXVAL(lon_dyn(:,:)) .GT. 2.0 * ASIN(1.0) ) THEN
    903           lon_rad(:) = lon_dyn(:,1) * 2.0 * ASIN(1.0) / 180.0
    904       ELSE
    905           lon_rad(:) = lon_dyn(:,1)
    906       ENDIF
     1054          lon_ini(:) = lon_dyn(:,1) * 2.0 * ASIN(1.0) / 180.0
     1055      ELSE
     1056          lon_ini(:) = lon_dyn(:,1)
     1057      ENDIF
     1058
    9071059      ALLOCATE(lat_rad(jml_dyn))
     1060      ALLOCATE(lat_ini(jml_dyn))
     1061
     1062      ALLOCATE(lev_dyn(llm_dyn))
     1063
    9081064      IF ( MAXVAL(lat_dyn(:,:)) .GT. 2.0 * ASIN(1.0) ) THEN
    909           lat_rad(:) = lat_dyn(1,:) * 2.0 * ASIN(1.0) / 180.0
    910       ELSE
    911           lat_rad(:) = lat_dyn(1,:)
    912       ENDIF
    913     !
     1065          lat_ini(:) = lat_dyn(1,:) * 2.0 * ASIN(1.0) / 180.0
     1066      ELSE
     1067          lat_ini(:) = lat_dyn(1,:)
     1068      ENDIF
     1069    !
     1070
     1071      CALL conf_dat3d ( varname,iml_dyn, jml_dyn, llm_dyn, lon_ini,
     1072     . lat_ini, levdyn_ini, lon_rad, lat_rad, lev_dyn, var_ana3d  ,
     1073     ,  interbar                                                   )
     1074
    9141075      ALLOCATE(var_tmp2d(iml-1, jml))
    9151076      ALLOCATE(var_tmp3d(iml, jml, llm_dyn))
     
    9191080      ALLOCATE(lind(llm_dyn))
    9201081    !
     1082 
    9211083      DO il=1,llm_dyn
    9221084        !
    923         CALL grille_m(iml_dyn, jml_dyn, lon_rad, lat_rad,
    924      .var_ana3d(:,:,il), iml-1, jml, lon_in, lat_in, var_tmp2d)
     1085      IF( interbar )  THEN
     1086       IF( il.EQ.1 )  THEN
     1087        WRITE(6,*) '-------------------------------------------------',
     1088     ,'--------------'
     1089        WRITE(6,*) '$$$ Utilisation de l interpolation barycentrique ',
     1090     , ' pour ', varname
     1091        WRITE(6,*) '-------------------------------------------------',
     1092     ,'--------------'
     1093       ENDIF
     1094       CALL inter_barxy ( iml_dyn, jml_dyn -1,lon_rad, lat_rad,
     1095     , var_ana3d(:,:,il),iml-1, jml2, lon_in2, lat_in2,jml,var_tmp2d )
     1096      ELSE
     1097       CALL grille_m(iml_dyn, jml_dyn, lon_rad, lat_rad,
     1098     .  var_ana3d(:,:,il), iml-1, jml, lon_in, lat_in, var_tmp2d )
     1099      ENDIF
    9251100        !
    9261101        CALL gr_int_dyn(var_tmp2d, var_tmp3d(:,:,il), iml-1, jml)
     
    9281103       ENDDO
    9291104       !
    930        !  IF needed we return the vertical axis. The spline interpolation
    931        !  Requires the coordinate to be in increasing order.
    932     !
    933       IF ( lev_dyn(1) .LT. lev_dyn(llm_dyn)) THEN
    934           DO il=1,llm_dyn
    935             lind(il) = il
    936           ENDDO       
    937       ELSE
    9381105          DO il=1,llm_dyn
    9391106            lind(il) = llm_dyn-il+1
    9401107          ENDDO
    941       ENDIF
    942     !
     1108    !
     1109c
     1110c  ... Pour l'interpolation verticale ,on interpole du haut de l'atmosphere
     1111c                    vers  le  sol  ...
     1112c
    9431113      DO ij=1,jml
    9441114        DO ii=1,iml-1
    9451115          !
    946           ax(:) = lev_dyn(lind(:)) * 100
     1116          ax(:) = lev_dyn(lind(:))
    9471117          ay(:) = var_tmp3d(ii, ij, lind(:))
    9481118          !
     1119         
    9491120          CALL SPLINE(ax, ay, llm_dyn, 1.e30, 1.e30, yder)
    9501121          !
     
    9591130      ENDDO
    9601131
     1132      do il=1,lml
     1133        call minmax(iml*jml,var3d(1,1,il),chmin,chmax)
     1134      SELECTCASE(varname)
     1135       CASE('U')
     1136          WRITE(*,*) ' U  min max l ',il,chmin,chmax
     1137       CASE('V')
     1138          WRITE(*,*) ' V  min max l ',il,chmin,chmax
     1139       CASE('TEMP')
     1140          WRITE(*,*) ' TEMP  min max l ',il,chmin,chmax
     1141       CASE('R')
     1142          WRITE(*,*) ' R  min max l ',il,chmin,chmax
     1143      END SELECT
     1144           enddo
     1145
    9611146      DEALLOCATE(lon_rad)
    9621147      DEALLOCATE(lat_rad)
Note: See TracChangeset for help on using the changeset viewer.