Ignore:
Timestamp:
Jul 12, 2012, 1:37:16 PM (12 years ago)
Author:
lguez
Message:

In "dynetat0" and "dynredem_*", replaced calls to "nf_get_var*" and
"nf_put_var*" (old NetCDF 77 interface, embedded in a test of
NC_DOUBLE) by calls to "nf90_get_var" and "nf95_put_var". This
required a change of the rank of some variables in those procedures.

Updated the NetCDF95 library, included in "bibio".

Revision tested in sequential and parallel with MPI. Identical
results.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/dyn3dpar/dynetat0.F

    r1577 r1635  
    66
    77      USE infotrac
     8      use netcdf, only: nf90_get_var
    89      IMPLICIT NONE
    910
     
    2829#include "comconst.h"
    2930#include "comvert.h"
    30 #include "comgeom.h"
     31#include "comgeom2.h"
    3132#include "ener.h"
    3233#include "netcdf.inc"
     
    4041
    4142      CHARACTER*(*) fichnom
    42       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm),teta(ip1jmp1,llm)
    43       REAL q(ip1jmp1,llm,nqtot),masse(ip1jmp1,llm)
    44       REAL ps(ip1jmp1),phis(ip1jmp1)
     43      REAL vcov(iip1, jjm,llm),ucov(iip1, jjp1,llm),teta(iip1, jjp1,llm)
     44      REAL q(iip1,jjp1,llm,nqtot),masse(iip1, jjp1,llm)
     45      REAL ps(iip1, jjp1),phis(iip1, jjp1)
    4546
    4647      REAL time
     
    7071         CALL abort
    7172      ENDIF
    72 #ifdef NC_DOUBLE
    73       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, tab_cntrl)
    74 #else
    75       ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl)
    76 #endif
     73      ierr = nf90_get_var(nid, nvarid, tab_cntrl)
    7774      IF (ierr .NE. NF_NOERR) THEN
    7875         write(lunout,*)"dynetat0: Lecture echoue pour <controle>"
     
    142139         CALL abort
    143140      ENDIF
    144 #ifdef NC_DOUBLE
    145       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlonu)
    146 #else
    147       ierr = NF_GET_VAR_REAL(nid, nvarid, rlonu)
    148 #endif
     141      ierr = nf90_get_var(nid, nvarid, rlonu)
    149142      IF (ierr .NE. NF_NOERR) THEN
    150143         write(lunout,*)"dynetat0: Lecture echouee pour <rlonu>"
     
    157150         CALL abort
    158151      ENDIF
    159 #ifdef NC_DOUBLE
    160       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlatu)
    161 #else
    162       ierr = NF_GET_VAR_REAL(nid, nvarid, rlatu)
    163 #endif
     152      ierr = nf90_get_var(nid, nvarid, rlatu)
    164153      IF (ierr .NE. NF_NOERR) THEN
    165154         write(lunout,*)"dynetat0: Lecture echouee pour <rlatu>"
     
    172161         CALL abort
    173162      ENDIF
    174 #ifdef NC_DOUBLE
    175       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlonv)
    176 #else
    177       ierr = NF_GET_VAR_REAL(nid, nvarid, rlonv)
    178 #endif
     163      ierr = nf90_get_var(nid, nvarid, rlonv)
    179164      IF (ierr .NE. NF_NOERR) THEN
    180165         write(lunout,*)"dynetat0: Lecture echouee pour <rlonv>"
     
    187172         CALL abort
    188173      ENDIF
    189 #ifdef NC_DOUBLE
    190       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, rlatv)
    191 #else
    192       ierr = NF_GET_VAR_REAL(nid, nvarid, rlatv)
    193 #endif
     174      ierr = nf90_get_var(nid, nvarid, rlatv)
    194175      IF (ierr .NE. NF_NOERR) THEN
    195176         write(lunout,*)"dynetat0: Lecture echouee pour rlatv"
     
    202183         CALL abort
    203184      ENDIF
    204 #ifdef NC_DOUBLE
    205       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, cu)
    206 #else
    207       ierr = NF_GET_VAR_REAL(nid, nvarid, cu)
    208 #endif
     185      ierr = nf90_get_var(nid, nvarid, cu)
    209186      IF (ierr .NE. NF_NOERR) THEN
    210187         write(lunout,*)"dynetat0: Lecture echouee pour <cu>"
     
    217194         CALL abort
    218195      ENDIF
    219 #ifdef NC_DOUBLE
    220       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, cv)
    221 #else
    222       ierr = NF_GET_VAR_REAL(nid, nvarid, cv)
    223 #endif
     196      ierr = nf90_get_var(nid, nvarid, cv)
    224197      IF (ierr .NE. NF_NOERR) THEN
    225198         write(lunout,*)"dynetat0: Lecture echouee pour <cv>"
     
    232205         CALL abort
    233206      ENDIF
    234 #ifdef NC_DOUBLE
    235       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, aire)
    236 #else
    237       ierr = NF_GET_VAR_REAL(nid, nvarid, aire)
    238 #endif
     207      ierr = nf90_get_var(nid, nvarid, aire)
    239208      IF (ierr .NE. NF_NOERR) THEN
    240209         write(lunout,*)"dynetat0: Lecture echouee pour <aire>"
     
    247216         CALL abort
    248217      ENDIF
    249 #ifdef NC_DOUBLE
    250       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, phis)
    251 #else
    252       ierr = NF_GET_VAR_REAL(nid, nvarid, phis)
    253 #endif
     218      ierr = nf90_get_var(nid, nvarid, phis)
    254219      IF (ierr .NE. NF_NOERR) THEN
    255220         write(lunout,*)"dynetat0: Lecture echouee pour <phisinit>"
     
    262227         CALL abort
    263228      ENDIF
    264 #ifdef NC_DOUBLE
    265       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, time)
    266 #else
    267       ierr = NF_GET_VAR_REAL(nid, nvarid, time)
    268 #endif
     229      ierr = nf90_get_var(nid, nvarid, time)
    269230      IF (ierr .NE. NF_NOERR) THEN
    270231         write(lunout,*)"dynetat0: Lecture echouee <temps>"
     
    277238         CALL abort
    278239      ENDIF
    279 #ifdef NC_DOUBLE
    280       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, ucov)
    281 #else
    282       ierr = NF_GET_VAR_REAL(nid, nvarid, ucov)
    283 #endif
     240      ierr = nf90_get_var(nid, nvarid, ucov)
    284241      IF (ierr .NE. NF_NOERR) THEN
    285242         write(lunout,*)"dynetat0: Lecture echouee pour <ucov>"
     
    292249         CALL abort
    293250      ENDIF
    294 #ifdef NC_DOUBLE
    295       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, vcov)
    296 #else
    297       ierr = NF_GET_VAR_REAL(nid, nvarid, vcov)
    298 #endif
     251      ierr = nf90_get_var(nid, nvarid, vcov)
    299252      IF (ierr .NE. NF_NOERR) THEN
    300253         write(lunout,*)"dynetat0: Lecture echouee pour <vcov>"
     
    307260         CALL abort
    308261      ENDIF
    309 #ifdef NC_DOUBLE
    310       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, teta)
    311 #else
    312       ierr = NF_GET_VAR_REAL(nid, nvarid, teta)
    313 #endif
     262      ierr = nf90_get_var(nid, nvarid, teta)
    314263      IF (ierr .NE. NF_NOERR) THEN
    315264         write(lunout,*)"dynetat0: Lecture echouee pour <teta>"
     
    325274     &                    "> est absent"
    326275           write(lunout,*)"          Il est donc initialise a zero"
    327            q(:,:,iq)=0.
     276           q(:,:,:,iq)=0.
    328277        ELSE
    329 #ifdef NC_DOUBLE
    330           ierr = NF_GET_VAR_DOUBLE(nid, nvarid, q(1,1,iq))
    331 #else
    332           ierr = NF_GET_VAR_REAL(nid, nvarid, q(1,1,iq))
    333 #endif
     278           ierr = NF90_GET_VAR(nid, nvarid, q(:,:,:,iq))
    334279          IF (ierr .NE. NF_NOERR) THEN
    335280            write(lunout,*)"dynetat0: Lecture echouee pour "//tname(iq)
     
    345290         CALL abort
    346291      ENDIF
    347 #ifdef NC_DOUBLE
    348       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, masse)
    349 #else
    350       ierr = NF_GET_VAR_REAL(nid, nvarid, masse)
    351 #endif
     292      ierr = nf90_get_var(nid, nvarid, masse)
    352293      IF (ierr .NE. NF_NOERR) THEN
    353294         write(lunout,*)"dynetat0: Lecture echouee pour <masse>"
     
    360301         CALL abort
    361302      ENDIF
    362 #ifdef NC_DOUBLE
    363       ierr = NF_GET_VAR_DOUBLE(nid, nvarid, ps)
    364 #else
    365       ierr = NF_GET_VAR_REAL(nid, nvarid, ps)
    366 #endif
     303      ierr = nf90_get_var(nid, nvarid, ps)
    367304      IF (ierr .NE. NF_NOERR) THEN
    368305         write(lunout,*)"dynetat0: Lecture echouee pour <ps>"
Note: See TracChangeset for help on using the changeset viewer.