Ignore:
Timestamp:
Oct 16, 2012, 2:41:50 PM (12 years ago)
Author:
Laurent Fairhead
Message:

Version testing basée sur la r1668

http://lmdz.lmd.jussieu.fr/utilisateurs/distribution-du-modele/versions-intermediaires


Testing release based on r1668

Location:
LMDZ5/branches/testing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/dyn3d/dynetat0.F

    r1665 r1669  
    66
    77      USE infotrac
     8      use netcdf, only: nf90_get_var
     9
     10      use control_mod, only : planet_type
     11
    812      IMPLICIT NONE
    913
     
    2832#include "comconst.h"
    2933#include "comvert.h"
    30 #include "comgeom.h"
     34#include "comgeom2.h"
    3135#include "ener.h"
    3236#include "netcdf.inc"
     
    4044
    4145      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)
     46      REAL vcov(iip1, jjm,llm),ucov(iip1, jjp1,llm),teta(iip1, jjp1,llm)
     47      REAL q(iip1,jjp1,llm,nqtot),masse(iip1, jjp1,llm)
     48      REAL ps(iip1, jjp1),phis(iip1, jjp1)
    4549
    4650      REAL time
     
    5256      REAL tab_cntrl(length) ! tableau des parametres du run
    5357      INTEGER ierr, nid, nvarid
     58
     59      INTEGER idecal
    5460
    5561c-----------------------------------------------------------------------
     
    7076         CALL abort
    7177      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
     78      ierr = nf90_get_var(nid, nvarid, tab_cntrl)
    7779      IF (ierr .NE. NF_NOERR) THEN
    7880         write(lunout,*)"dynetat0: Lecture echoue pour <controle>"
    7981         CALL abort
    8082      ENDIF
     83
     84      !!! AS: idecal is a hack to be able to read planeto starts...
     85      !!!     .... while keeping everything OK for LMDZ EARTH
     86      if (planet_type.eq."generic") then
     87          print*,'NOTE NOTE NOTE : Planeto-like start files'
     88          idecal = 4
     89          annee_ref  = 2000
     90      else
     91          print*,'NOTE NOTE NOTE : Earth-like start files'
     92          idecal = 5
     93          annee_ref  = tab_cntrl(5)
     94      endif
     95
    8196
    8297      im         = tab_cntrl(1)
     
    8499      lllm       = tab_cntrl(3)
    85100      day_ref    = tab_cntrl(4)
    86       annee_ref  = tab_cntrl(5)
    87       rad        = tab_cntrl(6)
    88       omeg       = tab_cntrl(7)
    89       g          = tab_cntrl(8)
    90       cpp        = tab_cntrl(9)
    91       kappa      = tab_cntrl(10)
    92       daysec     = tab_cntrl(11)
    93       dtvr       = tab_cntrl(12)
    94       etot0      = tab_cntrl(13)
    95       ptot0      = tab_cntrl(14)
    96       ztot0      = tab_cntrl(15)
    97       stot0      = tab_cntrl(16)
    98       ang0       = tab_cntrl(17)
    99       pa         = tab_cntrl(18)
    100       preff      = tab_cntrl(19)
    101 c
    102       clon       = tab_cntrl(20)
    103       clat       = tab_cntrl(21)
    104       grossismx  = tab_cntrl(22)
    105       grossismy  = tab_cntrl(23)
    106 c
    107       IF ( tab_cntrl(24).EQ.1. )  THEN
     101      rad        = tab_cntrl(idecal+1)
     102      omeg       = tab_cntrl(idecal+2)
     103      g          = tab_cntrl(idecal+3)
     104      cpp        = tab_cntrl(idecal+4)
     105      kappa      = tab_cntrl(idecal+5)
     106      daysec     = tab_cntrl(idecal+6)
     107      dtvr       = tab_cntrl(idecal+7)
     108      etot0      = tab_cntrl(idecal+8)
     109      ptot0      = tab_cntrl(idecal+9)
     110      ztot0      = tab_cntrl(idecal+10)
     111      stot0      = tab_cntrl(idecal+11)
     112      ang0       = tab_cntrl(idecal+12)
     113      pa         = tab_cntrl(idecal+13)
     114      preff      = tab_cntrl(idecal+14)
     115c
     116      clon       = tab_cntrl(idecal+15)
     117      clat       = tab_cntrl(idecal+16)
     118      grossismx  = tab_cntrl(idecal+17)
     119      grossismy  = tab_cntrl(idecal+18)
     120c
     121      IF ( tab_cntrl(idecal+19).EQ.1. )  THEN
    108122        fxyhypb  = . TRUE .
    109123c        dzoomx   = tab_cntrl(25)
     
    114128        fxyhypb = . FALSE .
    115129        ysinus  = . FALSE .
    116         IF( tab_cntrl(27).EQ.1. ) ysinus = . TRUE.
     130        IF( tab_cntrl(idecal+22).EQ.1. ) ysinus = . TRUE.
    117131      ENDIF
    118132
     
    142156         CALL abort
    143157      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
     158      ierr = nf90_get_var(nid, nvarid, rlonu)
    149159      IF (ierr .NE. NF_NOERR) THEN
    150160         write(lunout,*)"dynetat0: Lecture echouee pour <rlonu>"
     
    157167         CALL abort
    158168      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
     169      ierr = nf90_get_var(nid, nvarid, rlatu)
    164170      IF (ierr .NE. NF_NOERR) THEN
    165171         write(lunout,*)"dynetat0: Lecture echouee pour <rlatu>"
     
    172178         CALL abort
    173179      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
     180      ierr = nf90_get_var(nid, nvarid, rlonv)
    179181      IF (ierr .NE. NF_NOERR) THEN
    180182         write(lunout,*)"dynetat0: Lecture echouee pour <rlonv>"
     
    187189         CALL abort
    188190      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
     191      ierr = nf90_get_var(nid, nvarid, rlatv)
    194192      IF (ierr .NE. NF_NOERR) THEN
    195193         write(lunout,*)"dynetat0: Lecture echouee pour rlatv"
     
    202200         CALL abort
    203201      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
     202      ierr = nf90_get_var(nid, nvarid, cu)
    209203      IF (ierr .NE. NF_NOERR) THEN
    210204         write(lunout,*)"dynetat0: Lecture echouee pour <cu>"
     
    217211         CALL abort
    218212      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
     213      ierr = nf90_get_var(nid, nvarid, cv)
    224214      IF (ierr .NE. NF_NOERR) THEN
    225215         write(lunout,*)"dynetat0: Lecture echouee pour <cv>"
     
    232222         CALL abort
    233223      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
     224      ierr = nf90_get_var(nid, nvarid, aire)
    239225      IF (ierr .NE. NF_NOERR) THEN
    240226         write(lunout,*)"dynetat0: Lecture echouee pour <aire>"
     
    247233         CALL abort
    248234      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
     235      ierr = nf90_get_var(nid, nvarid, phis)
    254236      IF (ierr .NE. NF_NOERR) THEN
    255237         write(lunout,*)"dynetat0: Lecture echouee pour <phisinit>"
     
    260242      IF (ierr .NE. NF_NOERR) THEN
    261243         write(lunout,*)"dynetat0: Le champ <temps> est absent"
    262          CALL abort
    263       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
     244         write(lunout,*)"dynetat0: J essaie <Time>"
     245         ierr = NF_INQ_VARID (nid, "Time", nvarid)
     246         IF (ierr .NE. NF_NOERR) THEN
     247            write(lunout,*)"dynetat0: Le champ <Time> est absent"
     248            CALL abort
     249         ENDIF
     250      ENDIF
     251      ierr = nf90_get_var(nid, nvarid, time)
    269252      IF (ierr .NE. NF_NOERR) THEN
    270253         write(lunout,*)"dynetat0: Lecture echouee <temps>"
     
    277260         CALL abort
    278261      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
     262      ierr = nf90_get_var(nid, nvarid, ucov)
    284263      IF (ierr .NE. NF_NOERR) THEN
    285264         write(lunout,*)"dynetat0: Lecture echouee pour <ucov>"
     
    292271         CALL abort
    293272      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
     273      ierr = nf90_get_var(nid, nvarid, vcov)
    299274      IF (ierr .NE. NF_NOERR) THEN
    300275         write(lunout,*)"dynetat0: Lecture echouee pour <vcov>"
     
    307282         CALL abort
    308283      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
     284      ierr = nf90_get_var(nid, nvarid, teta)
    314285      IF (ierr .NE. NF_NOERR) THEN
    315286         write(lunout,*)"dynetat0: Lecture echouee pour <teta>"
     
    325296     &                    "> est absent"
    326297           write(lunout,*)"          Il est donc initialise a zero"
    327            q(:,:,iq)=0.
     298           q(:,:,:,iq)=0.
    328299        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
     300           ierr = NF90_GET_VAR(nid, nvarid, q(:,:,:,iq))
    334301          IF (ierr .NE. NF_NOERR) THEN
    335302            write(lunout,*)"dynetat0: Lecture echouee pour "//tname(iq)
     
    345312         CALL abort
    346313      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
     314      ierr = nf90_get_var(nid, nvarid, masse)
    352315      IF (ierr .NE. NF_NOERR) THEN
    353316         write(lunout,*)"dynetat0: Lecture echouee pour <masse>"
     
    360323         CALL abort
    361324      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
     325      ierr = nf90_get_var(nid, nvarid, ps)
    367326      IF (ierr .NE. NF_NOERR) THEN
    368327         write(lunout,*)"dynetat0: Lecture echouee pour <ps>"
Note: See TracChangeset for help on using the changeset viewer.