Ignore:
Timestamp:
Mar 29, 2023, 3:14:27 PM (22 months ago)
Author:
lguez
Message:

Sync latest trunk changes to branch LMDZ_ECRad

Location:
LMDZ6/branches/LMDZ_ECRad
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/LMDZ_ECRad

  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/bilan_dyn.F

    r2601 r4482  
    185185           WRITE(lunout,*)'dt_app=',dt_app
    186186           WRITE(lunout,*)'dt_cum=',dt_cum
    187            stop
     187           call abort_gcm('bilan_dyn','stopped',1)
    188188        endif
    189189
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/check_isotopes.F90

    r4143 r4482  
    22   USE strings_mod, ONLY: maxlen, msg, strIdx, strStack, int2str, real2str
    33   USE infotrac,    ONLY: nqtot, niso, nphas, isotope, isoCheck, iqIsoPha, isoSelect, &
    4                           ntiso, iH2O, nzone, tracers, isoName,  itZonIso, tnat
     4                          ntiso, iH2O, nzone, tracers, isoName,  itZonIso, getKey
    55   IMPLICIT NONE
    66   include "dimensions.h"
     
    1010   CHARACTER(LEN=maxlen) :: modname, msg1, nm(2)
    1111   INTEGER :: ixt, ipha, k, i, iq, iiso, izon, ieau, iqeau, iqpar
    12    INTEGER, ALLOCATABLE :: ix(:)
     12   INTEGER, ALLOCATABLE ::   ix(:)
     13   REAL,    ALLOCATABLE, SAVE :: tnat(:)
    1314   REAL    :: xtractot, xiiso, deltaD, q1, q2
    1415   REAL, PARAMETER :: borne     = 1e19,  &
     
    2829   IF(niso == 0)        RETURN                   !--- No isotopes => finished
    2930   IF(first) THEN
    30       iso_eau = strIdx(isoName,'H2[16]O')
    31       iso_HDO = strIdx(isoName,'H[2]HO')
    32       iso_O18 = strIdx(isoName,'H2[18]O')
    33       iso_O17 = strIdx(isoName,'H2[17]O')
    34       iso_HTO = strIdx(isoName,'H[3]HO')
     31      iso_eau = strIdx(isoName,'H216O')
     32      iso_HDO = strIdx(isoName,'HDO')
     33      iso_O18 = strIdx(isoName,'H218O')
     34      iso_O17 = strIdx(isoName,'H217O')
     35      iso_HTO = strIdx(isoName,'HTO')
     36      IF(getKey('tnat', tnat)) CALL abort_gcm(modname, 'missing isotopic parameter', 1)
    3537      first = .FALSE.
    3638   END IF
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/conf_gcm.F90

    r4100 r4482  
    415415        write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', &
    416416             ' est differente de celle lue sur le fichier  start '
    417         STOP
     417        CALL abort_gcm("conf_gcm","stopped",1)
    418418     ENDIF
    419419
     
    429429        write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', &
    430430             'run.def est differente de celle lue sur le fichier  start '
    431         STOP
     431        CALL abort_gcm("conf_gcm","stopped",1)
    432432     ENDIF
    433433
     
    443443        write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', &
    444444             'run.def est differente de celle lue sur le fichier  start '
    445         STOP
     445        CALL abort_gcm("conf_gcm","stopped",1)
    446446     ENDIF
    447447
     
    449449        write(lunout,*) &
    450450             'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    451         STOP
     451        CALL abort_gcm("conf_gcm","stopped",1)
    452452     ELSE
    453453        alphax = 1. - 1./ grossismx
     
    457457        write(lunout,*) &
    458458             'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
    459         STOP
     459        CALL abort_gcm("conf_gcm","stopped",1)
    460460     ELSE
    461461        alphay = 1. - 1./ grossismy
     
    479479           write(lunout,*)' *** fxyhypb lu sur le fichier start est ', &
    480480                'F alors  qu il est  T  sur  run.def  ***'
    481            STOP
     481           CALL abort_gcm("conf_gcm","stopped",1)
    482482        ENDIF
    483483     ELSE
     
    486486           write(lunout,*)' ***  fxyhypb lu sur le fichier start est ', &
    487487                'T alors  qu il est  F  sur  run.def  ****  '
    488            STOP
     488           CALL abort_gcm("conf_gcm","stopped",1)
    489489        ENDIF
    490490     ENDIF
     
    502502           write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', &
    503503                'run.def est differente de celle lue sur le fichier  start '
    504            STOP
     504           CALL abort_gcm("conf_gcm","stopped",1)
    505505        ENDIF
    506506     ENDIF
     
    518518           write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', &
    519519                'run.def est differente de celle lue sur le fichier  start '
    520            STOP
     520           CALL abort_gcm("conf_gcm","stopped",1)
    521521        ENDIF
    522522     ENDIF
     
    533533           write(lunout,*)'conf_gcm: La valeur de taux passee par ', &
    534534                'run.def est differente de celle lue sur le fichier  start '
    535            STOP
     535           CALL abort_gcm("conf_gcm","stopped",1)
    536536        ENDIF
    537537     ENDIF
     
    548548           write(lunout,*)'conf_gcm: La valeur de tauy passee par ', &
    549549                'run.def est differente de celle lue sur le fichier  start '
    550            STOP
     550           CALL abort_gcm("conf_gcm","stopped",1)
    551551        ENDIF
    552552     ENDIF
     
    569569              write(lunout,*)' *** ysinus lu sur le fichier start est F', &
    570570                   ' alors  qu il est  T  sur  run.def  ***'
    571               STOP
     571              CALL abort_gcm("conf_gcm","stopped",1)
    572572           ENDIF
    573573        ELSE
     
    576576              write(lunout,*)' *** ysinus lu sur le fichier start est T', &
    577577                   ' alors  qu il est  F  sur  run.def  ****  '
    578               STOP
     578              CALL abort_gcm("conf_gcm","stopped",1)
    579579           ENDIF
    580580        ENDIF
     
    599599     type_trac = 'lmdz'
    600600     CALL getin('type_trac',type_trac)
    601 
    602      !Config  Key  = config_inca
    603      !Config  Desc = Choix de configuration de INCA
    604      !Config  Def  = none
    605      !Config  Help = Choix de configuration de INCA :
    606      !Config         'none' = sans INCA
    607      !Config         'chem' = INCA avec calcul de chemie
    608      !Config         'aero' = INCA avec calcul des aerosols
    609      config_inca = 'none'
    610      CALL getin('config_inca',config_inca)
    611601
    612602     !Config  Key  = ok_dynzon
     
    672662     write(lunout,*)' offline = ', offline
    673663     write(lunout,*)' type_trac = ', type_trac
    674      write(lunout,*)' config_inca = ', config_inca
    675664     write(lunout,*)' ok_dynzon = ', ok_dynzon
    676665     write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
     
    712701        write(lunout,*) &
    713702             'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    714         STOP
     703        CALL abort_gcm("conf_gcm","stopped",1)
    715704     ELSE
    716705        alphax = 1. - 1./ grossismx
     
    719708     IF( grossismy.LT.1. )  THEN
    720709        write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** '
    721         STOP
     710        CALL abort_gcm("conf_gcm","stopped",1)
    722711     ELSE
    723712        alphay = 1. - 1./ grossismy
     
    795784     type_trac = 'lmdz'
    796785     CALL getin('type_trac',type_trac)
    797 
    798      !Config  Key  = config_inca
    799      !Config  Desc = Choix de configuration de INCA
    800      !Config  Def  = none
    801      !Config  Help = Choix de configuration de INCA :
    802      !Config         'none' = sans INCA
    803      !Config         'chem' = INCA avec calcul de chemie
    804      !Config         'aero' = INCA avec calcul des aerosols
    805      config_inca = 'none'
    806      CALL getin('config_inca',config_inca)
    807786
    808787     !Config  Key  = ok_dynzon
     
    912891     write(lunout,*)' offline = ', offline
    913892     write(lunout,*)' type_trac = ', type_trac
    914      write(lunout,*)' config_inca = ', config_inca
    915893     write(lunout,*)' ok_dynzon = ', ok_dynzon
    916894     write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/dynetat0.F90

    r4203 r4482  
    66! Purpose: Initial state reading.
    77!-------------------------------------------------------------------------------
    8   USE infotrac,    ONLY: nqtot, tracers, niso, iqIsoPha, tnat, alpha_ideal, iH2O
     8  USE infotrac,    ONLY: nqtot, tracers, niso, iqIsoPha, iH2O, isoName
    99  USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str
    1010  USE netcdf,      ONLY: NF90_OPEN,  NF90_NOWRITE, NF90_INQ_VARID, &
    1111                         NF90_CLOSE, NF90_GET_VAR, NF90_NoErr
    12   USE readTracFiles_mod, ONLY: new2oldName
     12  USE readTracFiles_mod, ONLY: new2oldH2O, newHNO3, oldHNO3, getKey
    1313  USE control_mod, ONLY: planet_type
    1414  USE assert_eq_m, ONLY: assert_eq
     
    4141  INTEGER, PARAMETER :: length=100
    4242  INTEGER :: iq, fID, vID, idecal, iqParent, iName, iZone, iPhase
    43   REAL    :: time, tab_cntrl(length)               !--- RUN PARAMS TABLE
     43  REAL    :: time, tnat, alpha_ideal, tab_cntrl(length)    !--- RUN PARAMS TABLE
     44  LOGICAL :: lSkip, ll
    4445!-------------------------------------------------------------------------------
    4546  modname="dynetat0"
     
    127128
    128129!--- Tracers
     130  ll=.FALSE.
     131#ifdef REPROBUS
     132  ll = NF90_INQ_VARID(fID, 'HNO3tot', vID) /= NF90_NoErr                                 !--- DETECT OLD REPRO start.nc FILE
     133#endif
    129134  DO iq=1,nqtot
    130135    var = tracers(iq)%name
    131     oldVar = new2oldName(var)
    132     !--------------------------------------------------------------------------------------------------------------------------
    133     IF(NF90_INQ_VARID(fID, var, vID) == NF90_NoErr) THEN                                 !=== REGULAR CASE
     136    oldVar = new2oldH2O(var)
     137    lSkip = ll .AND. var == 'HNO3'                                                       !--- FORCE "HNO3_g" READING FOR "HNO3"
     138#ifdef REPROBUS
     139    ix = strIdx(newHNO3, var); IF(ix /= 0) oldVar = oldHNO3(ix)                          !--- REPROBUS HNO3 exceptions
     140#endif
     141#ifdef INCA
     142    IF(var == 'O3') oldVar = 'OX'                                                        !--- DEAL WITH INCA OZONE EXCEPTION
     143#endif
     144    !--------------------------------------------------------------------------------------------------------------------------
     145    IF(NF90_INQ_VARID(fID, var, vID) == NF90_NoErr .AND. .NOT.lSkip) THEN                !=== REGULAR CASE: AVAILABLE VARIABLE
    134146      CALL err(NF90_GET_VAR(fID,vID,q(:,:,:,iq)),"get",var)
    135147    !--------------------------------------------------------------------------------------------------------------------------
    136     ELSE IF(NF90_INQ_VARID(fID, oldVar, vID) == NF90_NoErr) THEN                         !=== OLD NAME
     148    ELSE IF(NF90_INQ_VARID(fID, oldVar, vID) == NF90_NoErr) THEN                         !=== TRY WITH ALTERNATE NAME
    137149      CALL msg('Tracer <'//TRIM(var)//'> is missing => initialized to <'//TRIM(oldVar)//'>', modname)
    138150      CALL err(NF90_GET_VAR(fID,vID,q(:,:,:,iq)),"get",oldVar)
    139151    !--------------------------------------------------------------------------------------------------------------------------
    140 #ifdef INCA
    141     ELSE IF(NF90_INQ_VARID(fID, 'OX',   vID) == NF90_NoErr .AND. var == 'O3') THEN       !=== INCA: OX INSTEAD OF O3
    142       CALL msg('Tracer <O3> is missing => initialized to <OX>', modname)
    143       CALL err(NF90_GET_VAR(fID,vID,q(:,:,:,iq)),"get",'OX')
    144     !--------------------------------------------------------------------------------------------------------------------------
    145 #endif
    146152    ELSE IF(tracers(iq)%iso_iGroup == iH2O .AND. niso > 0) THEN                          !=== WATER ISOTOPES
    147153      iName    = tracers(iq)%iso_iName
     
    149155      iqParent = tracers(iq)%iqParent
    150156      IF(tracers(iq)%iso_iZone == 0) THEN
     157         IF(getKey('tnat', tnat, isoName(iName)) .OR. getKey('alpha', alpha_ideal, isoName(iName))) &
     158            CALL abort_gcm(TRIM(modname), 'missing isotopic parameters', 1)
    151159         CALL msg('Tracer <'//TRIM(var)//'> is missing => initialized with a simplified Rayleigh distillation law.', modname)
    152          q(:,:,:,iq) = q(:,:,:,iqParent)*tnat(iName)*(q(:,:,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1.)
     160         q(:,:,:,iq) = q(:,:,:,iqParent)*tnat*(q(:,:,:,iqParent)/30.e-3)**(alpha_ideal-1.)
    153161      ELSE
    154162         CALL msg('Tracer <'//TRIM(var)//'> is missing => initialized to its parent isotope concentration.', modname)
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/dynredem.F90

    r4170 r4482  
    167167!-------------------------------------------------------------------------------
    168168  USE strings_mod, ONLY: maxlen
    169   USE infotrac, ONLY: nqtot, tracers, types_trac
     169  USE infotrac, ONLY: nqtot, tracers, type_trac
    170170  USE control_mod
    171171  USE netcdf,   ONLY: NF90_OPEN,  NF90_NOWRITE, NF90_GET_VAR, NF90_INQ_VARID,  &
     
    228228!--- Tracers in file "start_trac.nc" (added by Anne)
    229229  lread_inca=.FALSE.; fil="start_trac.nc"
    230   IF(ANY(types_trac=='inca') .OR. ANY(types_trac=='inco')) INQUIRE(FILE=fil,EXIST=lread_inca)
     230  IF(ANY(type_trac == ['inca','inco'])) INQUIRE(FILE=fil,EXIST=lread_inca)
    231231  IF(lread_inca) CALL err(NF90_OPEN(fil,NF90_NOWRITE,nid_trac),"open")
    232232
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/gcm.F90

    r3579 r4482  
    2020
    2121  USE filtreg_mod
    22   USE infotrac
     22  USE infotrac, ONLY: nqtot, init_infotrac
    2323  USE control_mod
    2424  USE mod_const_mpi, ONLY: COMM_LMDZ
     
    178178#ifdef CPP_IOIPSL
    179179  if (calend == 'earth_360d') then
    180      call ioconf_calendar('360d')
     180     call ioconf_calendar('360_day')
    181181     write(lunout,*)'CALENDRIER CHOISI: Terrestre a 360 jours/an'
    182182  else if (calend == 'earth_365d') then
     
    205205  !  Choix du nombre de traceurs et du schema pour l'advection
    206206  !  dans fichier traceur.def, par default ou via INCA
    207   call infotrac_init
     207  call init_infotrac
    208208
    209209  ! Allocation de la tableau q : champs advectes   
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/groupe.F

    r2600 r4482  
    5151      if (firstcall) then
    5252         if (groupe_ok) then
    53            if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre de point'
     53            if(mod(iim,2**ngroup).ne.0)         
     54     &        CALL abort_gcm('groupe','probleme du nombre de point',1)
    5455         endif
    5556         firstcall=.false.
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/guide_mod.F90

    r3995 r4482  
    3939  REAL, PRIVATE, SAVE     :: lon_min_g,lon_max_g
    4040  REAL, PRIVATE, SAVE     :: tau_lon,tau_lat
     41
     42  REAL, PRIVATE, SAVE     :: plim_guide_BL
    4143
    4244  REAL, ALLOCATABLE, DIMENSION(:), PRIVATE, SAVE     :: alpha_u,alpha_v
     
    6769  SUBROUTINE guide_init
    6870
     71    use netcdf, only: nf90_noerr
    6972    USE control_mod, ONLY: day_step
    7073    USE serre_mod, ONLY: grossismx
     
    113116    CALL getpar('gamma4',.false.,gamma4,'Zone sans rappel elargie')
    114117    CALL getpar('guide_BL',.true.,guide_BL,'guidage dans C.Lim')
     118    CALL getpar('plim_guide_BL',85000.,plim_guide_BL,'BL top presnivs value')
     119
    115120
    116121! Sauvegarde du for�age
     
    169174       if (ncidpl.eq.-99) then
    170175          rcod=nf90_open('apbp.nc',Nf90_NOWRITe, ncidpl)
    171           if (rcod.NE.NF_NOERR) THEN
     176          if (rcod.NE.NF90_NOERR) THEN
    172177             abort_message=' Nudging error -> no file apbp.nc'
    173178             CALL abort_gcm(modname,abort_message,1)
     
    177182       if (ncidpl.EQ.-99) then
    178183          rcod=nf90_open('P.nc',Nf90_NOWRITe,ncidpl)
    179           if (rcod.NE.NF_NOERR) THEN
     184          if (rcod.NE.NF90_NOERR) THEN
    180185             abort_message=' Nudging error -> no file P.nc'
    181186             CALL abort_gcm(modname,abort_message,1)
     
    186191           if (ncidpl.eq.-99) then
    187192               rcod=nf90_open('u.nc',Nf90_NOWRITe,ncidpl)
    188                if (rcod.NE.NF_NOERR) THEN
     193               if (rcod.NE.NF90_NOERR) THEN
    189194                  CALL abort_gcm(modname, &
    190195                       ' Nudging error -> no file u.nc',1)
     
    195200           if (ncidpl.eq.-99) then
    196201               rcod=nf90_open('v.nc',nf90_nowrite,ncidpl)
    197                if (rcod.NE.NF_NOERR) THEN
     202               if (rcod.NE.NF90_NOERR) THEN
    198203                  CALL abort_gcm(modname, &
    199204                       ' Nudging error -> no file v.nc',1)
     
    203208           if (ncidpl.eq.-99) then
    204209               rcod=nf90_open('T.nc',nf90_nowrite,ncidpl)
    205                if (rcod.NE.NF_NOERR) THEN
     210               if (rcod.NE.NF90_NOERR) THEN
    206211                  CALL abort_gcm(modname, &
    207212                       ' Nudging error -> no file T.nc',1)
     
    211216           if (ncidpl.eq.-99) then
    212217               rcod=nf90_open('hur.nc',nf90_nowrite, ncidpl)
    213                if (rcod.NE.NF_NOERR) THEN
     218               if (rcod.NE.NF90_NOERR) THEN
    214219                  CALL abort_gcm(modname, &
    215220                       ' Nudging error -> no file hur.nc',1)
     
    220225    endif
    221226    error=NF_INQ_DIMID(ncidpl,'LEVEL',rid)
    222     IF (error.NE.NF_NOERR) error=NF_INQ_DIMID(ncidpl,'PRESSURE',rid)
    223     IF (error.NE.NF_NOERR) THEN
     227    IF (error.NE.NF90_NOERR) error=NF_INQ_DIMID(ncidpl,'PRESSURE',rid)
     228    IF (error.NE.NF90_NOERR) THEN
    224229        CALL abort_gcm(modname,'Nudging: error reading pressure levels',1)
    225230    ENDIF
     
    354359    INCLUDE "dimensions.h"
    355360    INCLUDE "paramet.h"
     361    INCLUDE "iniprint.h"
     362
    356363
    357364    ! Variables entree
     
    377384    INTEGER       :: l
    378385    CHARACTER(LEN=20) :: modname="guide_main"
     386    CHARACTER (len = 80)   :: abort_message
     387
    379388
    380389!-----------------------------------------------------------------------
     
    399408        else
    400409            do l=1,llm
    401                 alpha_pcor(l)=(1.+tanh((0.85-presnivs(l)/preff)/0.05))/2.
     410               alpha_pcor(l)=(1.+tanh(((plim_guide_BL-presnivs(l))/preff)/0.05))/2.
    402411            enddo
    403412        endif
     
    442451      IF (reste.EQ.0.) THEN
    443452          IF (itau_test.EQ.itau) THEN
    444             write(*,*)trim(modname)//' second pass in advreel at itau=',&
     453            write(lunout,*)trim(modname)//' second pass in advreel at itau=',&
    445454            itau
    446             stop
     455              abort_message='stopped'
     456              CALL abort_gcm(modname,abort_message,1)
    447457          ELSE
    448458              IF (guide_v) vnat1=vnat2
     
    937947    integer i,j,ilon,ilat
    938948    character(len=20),parameter :: modname="tau2alpha"
     949    CHARACTER (len = 80)   :: abort_message
    939950
    940951
     
    10331044              if (gamma.lt.1.e-5) then
    10341045                write(*,*)trim(modname)//' gamma =',gamma,'<1e-5'
    1035                 stop
     1046                abort_message='stopped'
     1047                CALL abort_gcm(modname,abort_message,1)
    10361048              endif
    10371049              gamma=log(0.5)/log(gamma)
     
    10781090  SUBROUTINE guide_read(timestep)
    10791091
     1092    use netcdf, only: NF90_GET_VAR, nf90_noerr
     1093
    10801094    IMPLICIT NONE
    10811095
    1082     include "netcdf.inc"
    10831096    include "dimensions.h"
    10841097    include "paramet.h"
     
    11031116    if (first) then
    11041117         ncidpl=-99
    1105          write(*,*),trim(modname)//': opening nudging files '
     1118         write(*,*) trim(modname)//': opening nudging files '
    11061119! Niveaux de pression si non constants
    11071120         if (guide_plevs.EQ.1) then
    1108              write(*,*),trim(modname)//' Reading nudging on model levels'
     1121             write(*,*) trim(modname)//' Reading nudging on model levels'
    11091122             rcode = nf90_open('apbp.nc', nf90_nowrite, ncidpl)
    1110              IF (rcode.NE.NF_NOERR) THEN
     1123             IF (rcode.NE.NF90_NOERR) THEN
    11111124              abort_message='Nudging: error -> no file apbp.nc'
    11121125              CALL abort_gcm(modname,abort_message,1)
    11131126             ENDIF
    11141127             rcode = nf90_inq_varid(ncidpl, 'AP', varidap)
    1115              IF (rcode.NE.NF_NOERR) THEN
     1128             IF (rcode.NE.NF90_NOERR) THEN
    11161129              abort_message='Nudging: error -> no AP variable in file apbp.nc'
    11171130              CALL abort_gcm(modname,abort_message,1)
    11181131             ENDIF
    11191132             rcode = nf90_inq_varid(ncidpl, 'BP', varidbp)
    1120              IF (rcode.NE.NF_NOERR) THEN
     1133             IF (rcode.NE.NF90_NOERR) THEN
    11211134              abort_message='Nudging: error -> no BP variable in file apbp.nc'
    11221135              CALL abort_gcm(modname,abort_message,1)
    11231136             ENDIF
    1124              write(*,*),trim(modname)//' ncidpl,varidap',ncidpl,varidap
     1137             write(*,*) trim(modname)//' ncidpl,varidap',ncidpl,varidap
    11251138         endif
    11261139
     
    11281141         if (guide_plevs.EQ.2) then
    11291142             rcode = nf90_open('P.nc', nf90_nowrite, ncidp)
    1130              IF (rcode.NE.NF_NOERR) THEN
     1143             IF (rcode.NE.NF90_NOERR) THEN
    11311144              abort_message='Nudging: error -> no file P.nc'
    11321145              CALL abort_gcm(modname,abort_message,1)
    11331146             ENDIF
    11341147             rcode = nf90_inq_varid(ncidp, 'PRES', varidp)
    1135              IF (rcode.NE.NF_NOERR) THEN
     1148             IF (rcode.NE.NF90_NOERR) THEN
    11361149              abort_message='Nudging: error -> no PRES variable in file P.nc'
    11371150              CALL abort_gcm(modname,abort_message,1)
    11381151             ENDIF
    1139              write(*,*),trim(modname)//' ncidp,varidp',ncidp,varidp
     1152             write(*,*) trim(modname)//' ncidp,varidp',ncidp,varidp
    11401153             if (ncidpl.eq.-99) ncidpl=ncidp
    11411154         endif
     
    11441157         if (guide_u) then
    11451158             rcode = nf90_open('u.nc', nf90_nowrite, ncidu)
    1146              IF (rcode.NE.NF_NOERR) THEN
     1159             IF (rcode.NE.NF90_NOERR) THEN
    11471160              abort_message='Nudging: error -> no file u.nc'
    11481161              CALL abort_gcm(modname,abort_message,1)
    11491162             ENDIF
    11501163             rcode = nf90_inq_varid(ncidu, 'UWND', varidu)
    1151              IF (rcode.NE.NF_NOERR) THEN
     1164             IF (rcode.NE.NF90_NOERR) THEN
    11521165              abort_message='Nudging: error -> no UWND variable in file u.nc'
    11531166              CALL abort_gcm(modname,abort_message,1)
    11541167             ENDIF
    1155              write(*,*),trim(modname)//' ncidu,varidu',ncidu,varidu
     1168             write(*,*) trim(modname)//' ncidu,varidu',ncidu,varidu
    11561169             if (ncidpl.eq.-99) ncidpl=ncidu
    11571170
     
    11751188         if (guide_v) then
    11761189             rcode = nf90_open('v.nc', nf90_nowrite, ncidv)
    1177              IF (rcode.NE.NF_NOERR) THEN
     1190             IF (rcode.NE.NF90_NOERR) THEN
    11781191              abort_message='Nudging: error -> no file v.nc'
    11791192              CALL abort_gcm(modname,abort_message,1)
    11801193             ENDIF
    11811194             rcode = nf90_inq_varid(ncidv, 'VWND', varidv)
    1182              IF (rcode.NE.NF_NOERR) THEN
     1195             IF (rcode.NE.NF90_NOERR) THEN
    11831196              abort_message='Nudging: error -> no VWND variable in file v.nc'
    11841197              CALL abort_gcm(modname,abort_message,1)
    11851198             ENDIF
    1186              write(*,*),trim(modname)//' ncidv,varidv',ncidv,varidv
     1199             write(*,*) trim(modname)//' ncidv,varidv',ncidv,varidv
    11871200             if (ncidpl.eq.-99) ncidpl=ncidv
    11881201             
     
    12081221         if (guide_T) then
    12091222             rcode = nf90_open('T.nc', nf90_nowrite, ncidt)
    1210              IF (rcode.NE.NF_NOERR) THEN
     1223             IF (rcode.NE.NF90_NOERR) THEN
    12111224              abort_message='Nudging: error -> no file T.nc'
    12121225              CALL abort_gcm(modname,abort_message,1)
    12131226             ENDIF
    12141227             rcode = nf90_inq_varid(ncidt, 'AIR', varidt)
    1215              IF (rcode.NE.NF_NOERR) THEN
     1228             IF (rcode.NE.NF90_NOERR) THEN
    12161229              abort_message='Nudging: error -> no AIR variable in file T.nc'
    12171230              CALL abort_gcm(modname,abort_message,1)
    12181231             ENDIF
    1219              write(*,*),trim(modname)//' ncidT,varidT',ncidt,varidt
     1232             write(*,*) trim(modname)//' ncidT,varidT',ncidt,varidt
    12201233             if (ncidpl.eq.-99) ncidpl=ncidt
    12211234
     
    12391252         if (guide_Q) then
    12401253             rcode = nf90_open('hur.nc', nf90_nowrite, ncidQ)
    1241              IF (rcode.NE.NF_NOERR) THEN
     1254             IF (rcode.NE.NF90_NOERR) THEN
    12421255              abort_message='Nudging: error -> no file hur.nc'
    12431256              CALL abort_gcm(modname,abort_message,1)
    12441257             ENDIF
    12451258             rcode = nf90_inq_varid(ncidQ, 'RH', varidQ)
    1246              IF (rcode.NE.NF_NOERR) THEN
     1259             IF (rcode.NE.NF90_NOERR) THEN
    12471260              abort_message='Nudging: error -> no RH variable in file hur.nc'
    12481261              CALL abort_gcm(modname,abort_message,1)
    12491262             ENDIF
    1250              write(*,*),trim(modname)//' ncidQ,varidQ',ncidQ,varidQ
     1263             write(*,*) trim(modname)//' ncidQ,varidQ',ncidQ,varidQ
    12511264             if (ncidpl.eq.-99) ncidpl=ncidQ
    12521265
     
    12701283         if ((guide_P).OR.(guide_modele)) then
    12711284             rcode = nf90_open('ps.nc', nf90_nowrite, ncidps)
    1272              IF (rcode.NE.NF_NOERR) THEN
     1285             IF (rcode.NE.NF90_NOERR) THEN
    12731286              abort_message='Nudging: error -> no file ps.nc'
    12741287              CALL abort_gcm(modname,abort_message,1)
    12751288             ENDIF
    12761289             rcode = nf90_inq_varid(ncidps, 'SP', varidps)
    1277              IF (rcode.NE.NF_NOERR) THEN
     1290             IF (rcode.NE.NF90_NOERR) THEN
    12781291              abort_message='Nudging: error -> no SP variable in file ps.nc'
    12791292              CALL abort_gcm(modname,abort_message,1)
    12801293             ENDIF
    1281              write(*,*),trim(modname)//' ncidps,varidps',ncidps,varidps
     1294             write(*,*) trim(modname)//' ncidps,varidps',ncidps,varidps
    12821295         endif
    12831296! Coordonnee verticale
     
    12851298              rcode = nf90_inq_varid(ncidpl, 'LEVEL', varidpl)
    12861299              IF (rcode.NE.0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl)
    1287               write(*,*),trim(modname)//' ncidpl,varidpl',ncidpl,varidpl
     1300              write(*,*) trim(modname)//' ncidpl,varidpl',ncidpl,varidpl
    12881301         endif
    12891302! Coefs ap, bp pour calcul de la pression aux differents niveaux
    12901303         if (guide_plevs.EQ.1) then
    1291 #ifdef NC_DOUBLE
    1292              status=NF_GET_VARA_DOUBLE(ncidpl,varidap,1,nlevnc,apnc)
    1293              status=NF_GET_VARA_DOUBLE(ncidpl,varidbp,1,nlevnc,bpnc)
    1294 #else
    1295              status=NF_GET_VARA_REAL(ncidpl,varidap,1,nlevnc,apnc)
    1296              status=NF_GET_VARA_REAL(ncidpl,varidbp,1,nlevnc,bpnc)
    1297 #endif
     1304             status=NF90_GET_VAR(ncidpl,varidap,apnc,[1],[nlevnc])
     1305             status=NF90_GET_VAR(ncidpl,varidbp,bpnc,[1],[nlevnc])
    12981306         ELSEIF (guide_plevs.EQ.0) THEN
    1299 #ifdef NC_DOUBLE
    1300              status=NF_GET_VARA_DOUBLE(ncidpl,varidpl,1,nlevnc,apnc)
    1301 #else
    1302              status=NF_GET_VARA_REAL(ncidpl,varidpl,1,nlevnc,apnc)
    1303 #endif
     1307             status=NF90_GET_VAR(ncidpl,varidpl,apnc,[1],[nlevnc])
    13041308!FC Pour les corrections la pression est deja en Pascals on commente la ligne ci-dessous
    13051309             IF(convert_Pa) apnc=apnc*100.! conversion en Pascals
     
    13261330! Pression
    13271331     if (guide_plevs.EQ.2) then
    1328 #ifdef NC_DOUBLE
    1329          status=NF_GET_VARA_DOUBLE(ncidp,varidp,start,count,pnat2)
    1330 #else
    1331          status=NF_GET_VARA_REAL(ncidp,varidp,start,count,pnat2)
    1332 #endif
     1332         status=NF90_GET_VAR(ncidp,varidp,pnat2,start,count)
    13331333         IF (invert_y) THEN
    13341334!           PRINT*,"Invertion impossible actuellement"
     
    13401340!  Vent zonal
    13411341     if (guide_u) then
    1342 #ifdef NC_DOUBLE
    1343          status=NF_GET_VARA_DOUBLE(ncidu,varidu,start,count,unat2)
    1344 #else
    1345          status=NF_GET_VARA_REAL(ncidu,varidu,start,count,unat2)
    1346 #endif
     1342         status=NF90_GET_VAR(ncidu,varidu,unat2,start,count)
    13471343         IF (invert_y) THEN
    13481344           CALL invert_lat(iip1,jjp1,nlevnc,unat2)
     
    13521348!  Temperature
    13531349     if (guide_T) then
    1354 #ifdef NC_DOUBLE
    1355          status=NF_GET_VARA_DOUBLE(ncidt,varidt,start,count,tnat2)
    1356 #else
    1357          status=NF_GET_VARA_REAL(ncidt,varidt,start,count,tnat2)
    1358 #endif
     1350         status=NF90_GET_VAR(ncidt,varidt,tnat2,start,count)
    13591351         IF (invert_y) THEN
    13601352           CALL invert_lat(iip1,jjp1,nlevnc,tnat2)
     
    13641356!  Humidite
    13651357     if (guide_Q) then
    1366 #ifdef NC_DOUBLE
    1367          status=NF_GET_VARA_DOUBLE(ncidQ,varidQ,start,count,qnat2)
    1368 #else
    1369          status=NF_GET_VARA_REAL(ncidQ,varidQ,start,count,qnat2)
    1370 #endif
     1358         status=NF90_GET_VAR(ncidQ,varidQ,qnat2,start,count)
    13711359         IF (invert_y) THEN
    13721360           CALL invert_lat(iip1,jjp1,nlevnc,qnat2)
     
    13781366     if (guide_v) then
    13791367         count(2)=jjm
    1380 #ifdef NC_DOUBLE
    1381          status=NF_GET_VARA_DOUBLE(ncidv,varidv,start,count,vnat2)
    1382 #else
    1383          status=NF_GET_VARA_REAL(ncidv,varidv,start,count,vnat2)
    1384 #endif
     1368         status=NF90_GET_VAR(ncidv,varidv,vnat2,start,count)
    13851369         IF (invert_y) THEN
    13861370           CALL invert_lat(iip1,jjm,nlevnc,vnat2)
     
    13951379         count(3)=1
    13961380         count(4)=0
    1397 #ifdef NC_DOUBLE
    1398          status=NF_GET_VARA_DOUBLE(ncidps,varidps,start,count,psnat2)
    1399 #else
    1400          status=NF_GET_VARA_REAL(ncidps,varidps,start,count,psnat2)
    1401 #endif
     1381         status=NF90_GET_VAR(ncidps,varidps,psnat2,start,count)
    14021382         IF (invert_y) THEN
    14031383           CALL invert_lat(iip1,jjp1,1,psnat2)
     
    14101390  SUBROUTINE guide_read2D(timestep)
    14111391
     1392    use netcdf, only: nf90_get_var, nf90_noerr
     1393
    14121394    IMPLICIT NONE
    14131395
    1414     include "netcdf.inc"
    14151396    include "dimensions.h"
    14161397    include "paramet.h"
     
    14431424           write(*,*)trim(modname)//' Reading nudging on model levels'
    14441425           rcode = nf90_open('apbp.nc', nf90_nowrite, ncidpl)
    1445            IF (rcode.NE.NF_NOERR) THEN
     1426           IF (rcode.NE.NF90_NOERR) THEN
    14461427             abort_message='Nudging: error -> no file apbp.nc'
    14471428           CALL abort_gcm(modname,abort_message,1)
    14481429           ENDIF
    14491430           rcode = nf90_inq_varid(ncidpl, 'AP', varidap)
    1450            IF (rcode.NE.NF_NOERR) THEN
     1431           IF (rcode.NE.NF90_NOERR) THEN
    14511432             abort_message='Nudging: error -> no AP variable in file apbp.nc'
    14521433           CALL abort_gcm(modname,abort_message,1)
    14531434           ENDIF
    14541435           rcode = nf90_inq_varid(ncidpl, 'BP', varidbp)
    1455            IF (rcode.NE.NF_NOERR) THEN
     1436           IF (rcode.NE.NF90_NOERR) THEN
    14561437             abort_message='Nudging: error -> no BP variable in file apbp.nc'
    14571438             CALL abort_gcm(modname,abort_message,1)
     
    14621443         if (guide_plevs.EQ.2) then
    14631444           rcode = nf90_open('P.nc', nf90_nowrite, ncidp)
    1464            IF (rcode.NE.NF_NOERR) THEN
     1445           IF (rcode.NE.NF90_NOERR) THEN
    14651446             abort_message='Nudging: error -> no file P.nc'
    14661447             CALL abort_gcm(modname,abort_message,1)
    14671448           ENDIF
    14681449           rcode = nf90_inq_varid(ncidp, 'PRES', varidp)
    1469            IF (rcode.NE.NF_NOERR) THEN
     1450           IF (rcode.NE.NF90_NOERR) THEN
    14701451             abort_message='Nudging: error -> no PRES variable in file P.nc'
    14711452             CALL abort_gcm(modname,abort_message,1)
     
    14771458         if (guide_u) then
    14781459           rcode = nf90_open('u.nc', nf90_nowrite, ncidu)
    1479            IF (rcode.NE.NF_NOERR) THEN
     1460           IF (rcode.NE.NF90_NOERR) THEN
    14801461             abort_message='Nudging: error -> no file u.nc'
    14811462             CALL abort_gcm(modname,abort_message,1)
    14821463           ENDIF
    14831464           rcode = nf90_inq_varid(ncidu, 'UWND', varidu)
    1484            IF (rcode.NE.NF_NOERR) THEN
     1465           IF (rcode.NE.NF90_NOERR) THEN
    14851466             abort_message='Nudging: error -> no UWND variable in file u.nc'
    14861467             CALL abort_gcm(modname,abort_message,1)
     
    14921473         if (guide_v) then
    14931474           rcode = nf90_open('v.nc', nf90_nowrite, ncidv)
    1494            IF (rcode.NE.NF_NOERR) THEN
     1475           IF (rcode.NE.NF90_NOERR) THEN
    14951476             abort_message='Nudging: error -> no file v.nc'
    14961477             CALL abort_gcm(modname,abort_message,1)
    14971478           ENDIF
    14981479           rcode = nf90_inq_varid(ncidv, 'VWND', varidv)
    1499            IF (rcode.NE.NF_NOERR) THEN
     1480           IF (rcode.NE.NF90_NOERR) THEN
    15001481             abort_message='Nudging: error -> no VWND variable in file v.nc'
    15011482             CALL abort_gcm(modname,abort_message,1)
     
    15071488         if (guide_T) then
    15081489           rcode = nf90_open('T.nc', nf90_nowrite, ncidt)
    1509            IF (rcode.NE.NF_NOERR) THEN
     1490           IF (rcode.NE.NF90_NOERR) THEN
    15101491             abort_message='Nudging: error -> no file T.nc'
    15111492             CALL abort_gcm(modname,abort_message,1)
    15121493           ENDIF
    15131494           rcode = nf90_inq_varid(ncidt, 'AIR', varidt)
    1514            IF (rcode.NE.NF_NOERR) THEN
     1495           IF (rcode.NE.NF90_NOERR) THEN
    15151496             abort_message='Nudging: error -> no AIR variable in file T.nc'
    15161497             CALL abort_gcm(modname,abort_message,1)
     
    15221503         if (guide_Q) then
    15231504           rcode = nf90_open('hur.nc', nf90_nowrite, ncidQ)
    1524            IF (rcode.NE.NF_NOERR) THEN
     1505           IF (rcode.NE.NF90_NOERR) THEN
    15251506             abort_message='Nudging: error -> no file hur.nc'
    15261507             CALL abort_gcm(modname,abort_message,1)
    15271508           ENDIF
    15281509           rcode = nf90_inq_varid(ncidQ, 'RH', varidQ)
    1529            IF (rcode.NE.NF_NOERR) THEN
     1510           IF (rcode.NE.NF90_NOERR) THEN
    15301511             abort_message='Nudging: error -> no RH,variable in file hur.nc'
    15311512             CALL abort_gcm(modname,abort_message,1)
     
    15371518         if ((guide_P).OR.(guide_modele)) then
    15381519           rcode = nf90_open('ps.nc', nf90_nowrite, ncidps)
    1539            IF (rcode.NE.NF_NOERR) THEN
     1520           IF (rcode.NE.NF90_NOERR) THEN
    15401521             abort_message='Nudging: error -> no file ps.nc'
    15411522             CALL abort_gcm(modname,abort_message,1)
    15421523           ENDIF
    15431524           rcode = nf90_inq_varid(ncidps, 'SP', varidps)
    1544            IF (rcode.NE.NF_NOERR) THEN
     1525           IF (rcode.NE.NF90_NOERR) THEN
    15451526             abort_message='Nudging: error -> no SP variable in file ps.nc'
    15461527             CALL abort_gcm(modname,abort_message,1)
     
    15561537! Coefs ap, bp pour calcul de la pression aux differents niveaux
    15571538         if (guide_plevs.EQ.1) then
    1558 #ifdef NC_DOUBLE
    1559              status=NF_GET_VARA_DOUBLE(ncidpl,varidap,1,nlevnc,apnc)
    1560              status=NF_GET_VARA_DOUBLE(ncidpl,varidbp,1,nlevnc,bpnc)
    1561 #else
    1562              status=NF_GET_VARA_REAL(ncidpl,varidap,1,nlevnc,apnc)
    1563              status=NF_GET_VARA_REAL(ncidpl,varidbp,1,nlevnc,bpnc)
    1564 #endif
     1539             status=NF90_GET_VAR(ncidpl,varidap,apnc,[1],[nlevnc])
     1540             status=NF90_GET_VAR(ncidpl,varidbp,bpnc,[1],[nlevnc])
    15651541         elseif (guide_plevs.EQ.0) THEN
    1566 #ifdef NC_DOUBLE
    1567              status=NF_GET_VARA_DOUBLE(ncidpl,varidpl,1,nlevnc,apnc)
    1568 #else
    1569              status=NF_GET_VARA_REAL(ncidpl,varidpl,1,nlevnc,apnc)
    1570 #endif
     1542             status=NF90_GET_VAR(ncidpl,varidpl,apnc,[1],[nlevnc])
    15711543             apnc=apnc*100.! conversion en Pascals
    15721544             bpnc(:)=0.
     
    15921564!  Pression
    15931565     if (guide_plevs.EQ.2) then
    1594 #ifdef NC_DOUBLE
    1595          status=NF_GET_VARA_DOUBLE(ncidp,varidp,start,count,zu)
    1596 #else
    1597          status=NF_GET_VARA_REAL(ncidp,varidp,start,count,zu)
    1598 #endif
     1566         status=NF90_GET_VAR(ncidp,varidp,zu,start,count)
    15991567         DO i=1,iip1
    16001568             pnat2(i,:,:)=zu(:,:)
     
    16091577!  Vent zonal
    16101578     if (guide_u) then
    1611 #ifdef NC_DOUBLE
    1612          status=NF_GET_VARA_DOUBLE(ncidu,varidu,start,count,zu)
    1613 #else
    1614          status=NF_GET_VARA_REAL(ncidu,varidu,start,count,zu)
    1615 #endif
     1579         status=NF90_GET_VAR(ncidu,varidu,zu,start,count)
    16161580         DO i=1,iip1
    16171581             unat2(i,:,:)=zu(:,:)
     
    16261590!  Temperature
    16271591     if (guide_T) then
    1628 #ifdef NC_DOUBLE
    1629          status=NF_GET_VARA_DOUBLE(ncidt,varidt,start,count,zu)
    1630 #else
    1631          status=NF_GET_VARA_REAL(ncidt,varidt,start,count,zu)
    1632 #endif
     1592         status=NF90_GET_VAR(ncidt,varidt,zu,start,count)
    16331593         DO i=1,iip1
    16341594             tnat2(i,:,:)=zu(:,:)
     
    16431603!  Humidite
    16441604     if (guide_Q) then
    1645 #ifdef NC_DOUBLE
    1646          status=NF_GET_VARA_DOUBLE(ncidQ,varidQ,start,count,zu)
    1647 #else
    1648          status=NF_GET_VARA_REAL(ncidQ,varidQ,start,count,zu)
    1649 #endif
     1605         status=NF90_GET_VAR(ncidQ,varidQ,zu,start,count)
    16501606         DO i=1,iip1
    16511607             qnat2(i,:,:)=zu(:,:)
     
    16611617     if (guide_v) then
    16621618         count(2)=jjm
    1663 #ifdef NC_DOUBLE
    1664          status=NF_GET_VARA_DOUBLE(ncidv,varidv,start,count,zv)
    1665 #else
    1666          status=NF_GET_VARA_REAL(ncidv,varidv,start,count,zv)
    1667 #endif
     1619         status=NF90_GET_VAR(ncidv,varidv,zv,start,count)
    16681620         DO i=1,iip1
    16691621             vnat2(i,:,:)=zv(:,:)
     
    16831635         count(3)=1
    16841636         count(4)=0
    1685 #ifdef NC_DOUBLE
    1686          status=NF_GET_VARA_DOUBLE(ncidps,varidps,start,count,zu(:,1))
    1687 #else
    1688          status=NF_GET_VARA_REAL(ncidps,varidps,start,count,zu(:,1))
    1689 #endif
     1637         status=NF90_GET_VAR(ncidps,varidps,zu(:,1),start,count)
    16901638         DO i=1,iip1
    16911639             psnat2(i,:)=zu(:,1)
     
    17061654    USE comvert_mod, ONLY: presnivs
    17071655    use netcdf95, only: nf95_def_var, nf95_put_var
    1708     use netcdf, only: nf90_float
     1656    use netcdf, only: nf90_float, nf90_def_var
    17091657   
    17101658    IMPLICIT NONE
     
    17481696
    17491697! Creation des variables dimensions
    1750         ierr=NF_DEF_VAR(nid,"LONU",NF_FLOAT,1,id_lonu,vid_lonu)
    1751         ierr=NF_DEF_VAR(nid,"LONV",NF_FLOAT,1,id_lonv,vid_lonv)
    1752         ierr=NF_DEF_VAR(nid,"LATU",NF_FLOAT,1,id_latu,vid_latu)
    1753         ierr=NF_DEF_VAR(nid,"LATV",NF_FLOAT,1,id_latv,vid_latv)
    1754         ierr=NF_DEF_VAR(nid,"LEVEL",NF_FLOAT,1,id_lev,vid_lev)
    1755         ierr=NF_DEF_VAR(nid,"cu",NF_FLOAT,2,(/id_lonu,id_latu/),vid_cu)
    1756         ierr=NF_DEF_VAR(nid,"cv",NF_FLOAT,2,(/id_lonv,id_latv/),vid_cv)
    1757         ierr=NF_DEF_VAR(nid,"au",NF_FLOAT,2,(/id_lonu,id_latu/),vid_au)
    1758         ierr=NF_DEF_VAR(nid,"av",NF_FLOAT,2,(/id_lonv,id_latv/),vid_av)
     1698        ierr=NF90_DEF_VAR(nid,"LONU",NF90_FLOAT,id_lonu,vid_lonu)
     1699        ierr=NF90_DEF_VAR(nid,"LONV",NF90_FLOAT,id_lonv,vid_lonv)
     1700        ierr=NF90_DEF_VAR(nid,"LATU",NF90_FLOAT,id_latu,vid_latu)
     1701        ierr=NF90_DEF_VAR(nid,"LATV",NF90_FLOAT,id_latv,vid_latv)
     1702        ierr=NF90_DEF_VAR(nid,"LEVEL",NF90_FLOAT,id_lev,vid_lev)
     1703        ierr=NF90_DEF_VAR(nid,"cu",NF90_FLOAT,(/id_lonu,id_latu/),vid_cu)
     1704        ierr=NF90_DEF_VAR(nid,"cv",NF90_FLOAT,(/id_lonv,id_latv/),vid_cv)
     1705        ierr=NF90_DEF_VAR(nid,"au",NF90_FLOAT,(/id_lonu,id_latu/),vid_au)
     1706        ierr=NF90_DEF_VAR(nid,"av",NF90_FLOAT,(/id_lonv,id_latv/),vid_av)
    17591707        call nf95_def_var(nid, "alpha_T", nf90_float, (/id_lonv, id_latu/), &
    17601708             varid_alpha_t)
     
    17941742! Pressure (GCM)
    17951743        dim4=(/id_lonv,id_latu,id_lev,id_tim/)
    1796         ierr = NF_DEF_VAR(nid,"SP",NF_FLOAT,4,dim4,varid)
     1744        ierr = NF90_DEF_VAR(nid,"SP",NF90_FLOAT,dim4,varid)
    17971745! Surface pressure (guidage)
    17981746        IF (guide_P) THEN
    17991747            dim3=(/id_lonv,id_latu,id_tim/)
    1800             ierr = NF_DEF_VAR(nid,"ps",NF_FLOAT,3,dim3,varid)
     1748            ierr = NF90_DEF_VAR(nid,"ps",NF90_FLOAT,dim3,varid)
    18011749        ENDIF
    18021750! Zonal wind
    18031751        IF (guide_u) THEN
    18041752            dim4=(/id_lonu,id_latu,id_lev,id_tim/)
    1805             ierr = NF_DEF_VAR(nid,"u",NF_FLOAT,4,dim4,varid)
    1806             ierr = NF_DEF_VAR(nid,"ua",NF_FLOAT,4,dim4,varid)
    1807             ierr = NF_DEF_VAR(nid,"ucov",NF_FLOAT,4,dim4,varid)
     1753            ierr = NF90_DEF_VAR(nid,"u",NF90_FLOAT,dim4,varid)
     1754            ierr = NF90_DEF_VAR(nid,"ua",NF90_FLOAT,dim4,varid)
     1755            ierr = NF90_DEF_VAR(nid,"ucov",NF90_FLOAT,dim4,varid)
    18081756        ENDIF
    18091757! Merid. wind
    18101758        IF (guide_v) THEN
    18111759            dim4=(/id_lonv,id_latv,id_lev,id_tim/)
    1812             ierr = NF_DEF_VAR(nid,"v",NF_FLOAT,4,dim4,varid)
    1813             ierr = NF_DEF_VAR(nid,"va",NF_FLOAT,4,dim4,varid)
    1814             ierr = NF_DEF_VAR(nid,"vcov",NF_FLOAT,4,dim4,varid)
     1760            ierr = NF90_DEF_VAR(nid,"v",NF90_FLOAT,dim4,varid)
     1761            ierr = NF90_DEF_VAR(nid,"va",NF90_FLOAT,dim4,varid)
     1762            ierr = NF90_DEF_VAR(nid,"vcov",NF90_FLOAT,dim4,varid)
    18151763        ENDIF
    18161764! Pot. Temperature
    18171765        IF (guide_T) THEN
    18181766            dim4=(/id_lonv,id_latu,id_lev,id_tim/)
    1819             ierr = NF_DEF_VAR(nid,"teta",NF_FLOAT,4,dim4,varid)
     1767            ierr = NF90_DEF_VAR(nid,"teta",NF90_FLOAT,dim4,varid)
    18201768        ENDIF
    18211769! Specific Humidity
    18221770        IF (guide_Q) THEN
    18231771            dim4=(/id_lonv,id_latu,id_lev,id_tim/)
    1824             ierr = NF_DEF_VAR(nid,"q",NF_FLOAT,4,dim4,varid)
     1772            ierr = NF90_DEF_VAR(nid,"q",NF90_FLOAT,dim4,varid)
    18251773        ENDIF
    18261774       
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/iniacademic.F90

    r4143 r4482  
    55
    66  USE filtreg_mod, ONLY: inifilr
    7   USE infotrac,    ONLY: nqtot, niso, tnat, alpha_ideal, iqIsoPha, tracers
     7  USE infotrac,    ONLY: nqtot, niso, iqIsoPha, tracers, getKey, isoName
    88  USE control_mod, ONLY: day_step,planet_type
    99  use exner_hyb_m, only: exner_hyb
     
    1818  USE comconst_mod, ONLY: cpp, kappa, g, daysec, dtvr, pi, im, jm
    1919  USE logic_mod, ONLY: iflag_phys, read_start
    20   USE comvert_mod, ONLY: ap, bp, preff, presnivs, pressure_exner
     20  USE comvert_mod, ONLY: ap, bp, preff, pa, presnivs, pressure_exner
    2121  USE temps_mod, ONLY: annee_ref, day_ini, day_ref
    2222  USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0
    2323  USE readTracFiles_mod, ONLY: addPhase
     24  use netcdf, only : NF90_NOWRITE,NF90_OPEN,NF90_NOERR,NF90_INQ_VARID
     25  use netcdf, only : NF90_CLOSE, NF90_GET_VAR
     26
    2427
    2528  !   Author:    Frederic Hourdin      original: 15/01/93
     
    6467  INTEGER i,j,l,lsup,ij, iq, iName, iPhase, iqParent
    6568
     69  integer :: nid_relief,varid,ierr
     70  real, dimension(iip1,jjp1) :: relief
     71
    6672  REAL teta0,ttp,delt_y,delt_z,eps ! Constantes pour profil de T
    6773  REAL k_f,k_c_a,k_c_s         ! Constantes de rappel
     
    7379  integer idum
    7480
    75   REAL zdtvr
     81  REAL zdtvr, tnat, alpha_ideal
    7682 
    7783  character(len=*),parameter :: modname="iniacademic"
     
    118124  CALL inifilr
    119125
     126
     127  !------------------------------------------------------------------
    120128  ! Initialize pressure and mass field if read_start=.false.
     129  !------------------------------------------------------------------
     130
    121131  IF (.NOT. read_start) THEN
    122      ! surface pressure
    123      if (iflag_phys>2) then
    124         ! specific value for CMIP5 aqua/terra planets
    125         ! "Specify the initial dry mass to be equivalent to
    126         !  a global mean surface pressure (101325 minus 245) Pa."
    127         ps(:)=101080. 
    128      else
    129         ! use reference surface pressure
    130         ps(:)=preff
     132
     133     !------------------------------------------------------------------
     134     ! Lecture eventuelle d'un fichier de relief interpollee sur la grille
     135     ! du modele.
     136     ! On suppose que le fichier relief_in.nc est stoké sur une grille
     137     ! iim*jjp1
     138     ! Facile a créer à partir de la commande
     139     ! cdo remapcon,fichier_output_phys.nc Relief.nc relief_in.nc
     140     !------------------------------------------------------------------
     141
     142     relief=0.
     143     ierr = NF90_OPEN ('relief_in.nc', NF90_NOWRITE,nid_relief)
     144     if (ierr.EQ.NF90_NOERR) THEN
     145         ierr=NF90_INQ_VARID(nid_relief,'RELIEF',varid)
     146         if (ierr==NF90_NOERR) THEN
     147              ierr=NF90_GET_VAR(nid_relief,varid,relief(1:iim,1:jjp1))
     148              relief(iip1,:)=relief(1,:)
     149         else
     150              CALL abort_gcm ('iniacademic','variable RELIEF pas la',1)
     151         endif
    131152     endif
     153     ierr = NF90_CLOSE (nid_relief)
     154
     155     !------------------------------------------------------------------
     156     ! Initialisation du geopotentiel au sol et de la pression
     157     !------------------------------------------------------------------
     158
     159     print*,'relief=',minval(relief),maxval(relief),'g=',g
     160     do j=1,jjp1
     161        do i=1,iip1
     162           phis((j-1)*iip1+i)=g*relief(i,j)
     163        enddo
     164     enddo
     165     print*,'phis=',minval(phis),maxval(phis),'g=',g
    132166
    133167     ! ground geopotential
    134      phis(:)=0.
     168     !phis(:)=0.
     169     ps(:)=preff
    135170     CALL pression ( ip1jmp1, ap, bp, ps, p       )
    136171
     
    286321              iqParent = tracers(iq)%iqParent
    287322              IF(tracers(iq)%iso_iZone == 0) THEN
    288                  q(:,:,iq) = q(:,:,iqParent)*tnat(iName)*(q(:,:,iqParent)/30.e-3)**(alpha_ideal(iName)-1.)
     323                 IF(getKey('tnat', tnat, isoName(iName)) .OR. getKey('alpha', alpha_ideal, isoName(iName))) &
     324                    CALL abort_gcm(TRIM(modname), 'missing isotopic parameters', 1)
     325                 q(:,:,iq) = q(:,:,iqParent)*tnat*(q(:,:,iqParent)/30.e-3)**(alpha_ideal-1.)
    289326              ELSE
    290327                 q(:,:,iq) = q(:,:,iqIsoPha(iName,iPhase))
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/replay3d.F90

    r4113 r4482  
    170170
    171171CALL suphel
    172 open(82,file='dump_param.bin',form='unformatted',status='old')
     172!open(82,file='dump_param.bin',form='unformatted',status='old')
    173173
    174174
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/vlsplt.F

    r4143 r4482  
    184184            DO ij=iip2,ip1jm-1
    185185               dxqu(ij)=q(ij+1,l,iq)-q(ij,l,iq)
    186 c              IF(u_m(ij,l).lt.0.) stop'limx n admet pas les U<0'
    187 c              sigu(ij)=u_m(ij,l)/masse(ij,l,iq)
    188186            ENDDO
    189187            DO ij=iip1+iip1,ip1jm,iip1
     
    310308      ENDDO
    311309#endif
    312 c       stop
    313310
    314311c       go to 9999
     
    437434        enddo
    438435      enddo
    439       do ifils=1,tracers(iq)%nqChilds
     436      do ifils=1,tracers(iq)%nqChildren
    440437        iq2=tracers(iq)%iqDescen(ifils)
    441438        call vlx(Ratio,pente_max,masseq,u_mq,iq2)
     
    969966! CRisi: appel récursif de l'advection sur les fils.
    970967! Il faut faire ça avant d'avoir mis à jour q et masse
    971       !write(*,*) 'vlsplt 942: iq,nqChilds(iq)=',iq,nqChilds(iq)
     968      !write(*,*) 'vlsplt 942: iq,nqChildren(iq)=',iq,nqChildren(iq)
    972969      do ifils=1,tracers(iq)%nqDescen
    973970        iq2=tracers(iq)%iqDescen(ifils)
     
    987984      enddo
    988985       
    989       do ifils=1,tracers(iq)%nqChilds
     986      do ifils=1,tracers(iq)%nqChildren
    990987        iq2=tracers(iq)%iqDescen(ifils)
    991988        call vlz(Ratio,pente_max,masseq,wq,iq2)
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/vlspltqs.F

    r4052 r4482  
    248248            DO ij=iip2,ip1jm-1
    249249               dxqu(ij)=q(ij+1,l,iq)-q(ij,l,iq)
    250 c              IF(u_m(ij,l).lt.0.) stop'limx n admet pas les U<0'
    251 c              sigu(ij)=u_m(ij,l)/masse(ij,l,iq)
    252250            ENDDO
    253251            DO ij=iip1+iip1,ip1jm,iip1
     
    479477! CRisi: appel récursif de l'advection sur les fils.
    480478! Il faut faire ça avant d'avoir mis à jour q et masse
    481       !write(*,*) 'vlspltqs 326: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds
     479      !write(*,*) 'vlspltqs 326: iq,nqChildren(iq)=',iq,
     480!     &                 tracers(iq)%nqChildren
    482481     
    483482      do ifils=1,tracers(iq)%nqDescen
     
    491490        enddo
    492491      enddo
    493       do ifils=1,tracers(iq)%nqChilds
     492      do ifils=1,tracers(iq)%nqChildren
    494493        iq2=tracers(iq)%iqDescen(ifils)
    495494        call vlx(Ratio,pente_max,masseq,u_mq,iq2)
     
    786785! CRisi: appel récursif de l'advection sur les fils.
    787786! Il faut faire ça avant d'avoir mis à jour q et masse
    788       !write(*,*) 'vlyqs 689: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds
     787      !write(*,*) 'vlyqs 689: iq,nqChildren(iq)=',iq,
     788!     &              tracers(iq)%nqChildren
    789789   
    790790      do ifils=1,tracers(iq)%nqDescen
     
    797797        enddo
    798798      enddo
    799       do ifils=1,tracers(iq)%nqChilds
     799      do ifils=1,tracers(iq)%nqChildren
    800800        iq2=tracers(iq)%iqDescen(ifils)
    801801        !write(*,*) 'vlyqs 783: appel rec de vly, iq2=',iq2
  • LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/wrgrads.F

    r1907 r4482  
    8080           print*,'nvar  ',nvar(if)
    8181           print*,'vars ',(var(iv,if),iv=1,nvar(if))
    82 
    83            stop
     82           CALL abort_gcm("wrgrads","problem",1)
    8483         endif
    8584      endif
Note: See TracChangeset for help on using the changeset viewer.