Ignore:
Timestamp:
Nov 19, 2021, 4:58:59 PM (3 years ago)
Author:
lguez
Message:

Sync latest trunk changes to Ocean_skin

Location:
LMDZ6/branches/Ocean_skin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Ocean_skin

  • LMDZ6/branches/Ocean_skin/libf/phylmd/iotd_ini.F90

    r3102 r4013  
    1       SUBROUTINE iotd_ini(fichnom,iim,jjm,llm,prlonv,prlatu,pcoordv)
     1      SUBROUTINE iotd_ini(fichnom,iim,jjm,llm,prlon,prlat,pcoordv,jour0,mois0,an0,t0,timestep,calendrier)
    22      IMPLICIT NONE
    33
     
    2323
    2424      integer iim,jjm,llm
    25       real prlonv(iim),prlatu(jjm),pcoordv(llm),timestep
     25      real prlon(iim),prlat(jjm),pcoordv(llm),timestep,t0
    2626      INTEGER id_FOCE
     27      INTEGER jour0,mois0,an0
     28      CHARACTER*(*) calendrier
    2729
    2830      integer corner(4),edges(4),ndim
    2931      real  px(1000)
    3032      character (len=10) :: nom
     33      real*4 rlon(iim),rlat(jjm),coordv(llm)
    3134
    3235!   Local:
    3336!   ------
    34       INTEGER ierr
     37      CHARACTER*3,DIMENSION(12) :: cmois=(/'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'/)
     38      CHARACTER*10 date0
     39      CHARACTER*11 date0b
     40
     41      INTEGER :: ierr
    3542
    3643      integer :: nvarid
    3744      integer, dimension(2) :: id 
    38       integer :: varid
    3945
    40       character*10 fichnom
    41       real*4 rlonv(iim),rlatu(jjm),coordv(llm)
     46      character*(*) fichnom
    4247
    4348      real pi
    4449
    45       print*,'INIIO prlonv ',prlonv
     50      iotd_ts=timestep
     51      iotd_t0=t0
     52      print*,'iotd_ini, ',timestep,iotd_ts
    4653      imax=iim
    4754      jmax=jjm
    4855      lmax=llm
    49 
    50       rlonv=prlonv
    51       rlatu=prlatu
     56      ! Utile pour passer en real*4 pour les ecritures
     57      rlon=prlon
     58      rlat=prlat
    5259      coordv=pcoordv
    5360
    54 !-----------------------------------------------------------------------
     61
     62      !-----------------------------------------------------------------------
     63      ! Possibilité de spécifier une liste de variables à sortir
     64      ! dans iotd.def
     65      ! Si iotd.def existe et est non vide,
     66      ! seules les variables faisant à la fois l'objet d'un call iotd_ecrit
     67      ! et étant spécifiées dans iotd.def sont sorties.
     68      ! Sinon, toutes les variables faisant l'objet d'un call iotd_ecrit
     69      ! sont sorties
     70      !-----------------------------------------------------------------------
     71      n_names_iotd_def=0
     72      open(99,file='iotd.def',form='formatted',status='old',iostat=ierr)
     73         if ( ierr.eq.0 ) then
     74            ierr=0
     75            do while (ierr==0)
     76               read(99,*,iostat=ierr) un_nom
     77               if (ierr==0) then
     78                  n_names_iotd_def=n_names_iotd_def+1
     79                  names_iotd_def(n_names_iotd_def)=un_nom
     80               endif
     81            enddo
     82         endif
     83         print*,n_names_iotd_def,names_iotd_def(1:n_names_iotd_def)
     84      close(99)
    5585
    5686
     
    5989! Define dimensions
    6090   
    61          ! Create the NetCDF file
    62          ierr=NF_CREATE(fichnom, NF_CLOBBER, nid)
    63          ! Define the 'Time' dimension
    64          ierr=nf_def_dim(nid,"Time",NF_UNLIMITED,dim_coord(4))
    65          ! Define the 'Time' variable
    66          ierr=NF_DEF_VAR(nid, "Time", NF_FLOAT, 1, dim_coord(4),varid)
    67 !        ! Add a long_name attribute
    68 !        ierr=NF_PUT_ATT_TEXT(nid, varid, "long_name",4,"Time")
    69 !        ! Add a units attribute
    70          ierr=NF_PUT_ATT_TEXT(nid, varid,'units',29,"days since 0000-00-0 00:00:00")
    71          ! Switch out of NetCDF Define mode
     91      ! Create the NetCDF file
     92      ierr=NF_CREATE(fichnom, NF_CLOBBER, nid)
     93      ierr=NF_DEF_DIM(nid, "lon", iim, dim_coord(1))
     94      ierr=NF_DEF_DIM(nid, "lat", jjm, dim_coord(2))
     95      ierr=NF_DEF_DIM(nid, "lev", llm, dim_coord(3))
     96      ierr=NF_DEF_DIM(nid,"time",NF_UNLIMITED,dim_coord(4))
     97      ierr = NF_PUT_ATT_TEXT(nid,NF_GLOBAL,'Conventions',6,"CF-1.1")
     98      !ierr = NF_PUT_ATT_TEXT(nid,NF_GLOBAL,'file_name',TRIM(fname))
     99      ierr=NF_ENDDEF(nid)
    72100
    73       ierr=NF_DEF_DIM(nid, "longitude", iim, dim_coord(1))
    74       ierr=NF_DEF_DIM(nid, "latitude", jjm, dim_coord(2))
    75       ierr=NF_DEF_DIM(nid, "altitude", llm, dim_coord(3))
     101      ! Switch out of NetCDF Define mode
    76102
    77103
     
    79105!
    80106!  Contol parameters for this run
    81 ! --------------------------
     107! ---- longitude -----------
    82108
    83109      ierr=NF_REDEF(nid)
    84       ierr=NF_DEF_VAR(nid,"longitude", NF_FLOAT, 1, dim_coord(1),nvarid)
    85 !     ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name", 14,
    86 !    .      "East longitude")
    87 !     ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east")
     110      ierr=NF_DEF_VAR(nid,"lon", NF_FLOAT, 1, dim_coord(1),nvarid)
     111      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'axis',1,'X')
     112      ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east")
    88113      ierr=NF_ENDDEF(nid)
    89       ierr=NF_PUT_VAR_REAL(nid,nvarid,rlonv)
     114      ierr=NF_PUT_VAR_REAL(nid,nvarid,rlon)
    90115       print*,ierr
    91116
    92 ! --------------------------
     117! ---- latitude ------------
    93118      ierr=NF_REDEF(nid)
    94       ierr=NF_DEF_VAR(nid, "latitude", NF_FLOAT, 1, dim_coord(2),nvarid)
    95 !     ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north")
    96 !     ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name", 14,"North latitude")
     119      ierr=NF_DEF_VAR(nid, "lat", NF_FLOAT, 1, dim_coord(2),nvarid)
     120      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'axis',1,'Y')
     121      ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north")
    97122      ierr=NF_ENDDEF(nid)
    98       ierr=NF_PUT_VAR_REAL(nid,nvarid,rlatu)
     123      ierr=NF_PUT_VAR_REAL(nid,nvarid,rlat)
    99124!
    100 ! --------------------------
     125! ---- vertical ------------
    101126      ierr=NF_REDEF(nid)
    102       ierr=NF_DEF_VAR(nid, "altitude", NF_FLOAT, 1,dim_coord(3),nvarid)
    103       ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"pseudo-alt")
    104 !     ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',2,"km")
    105       if ( pcoordv(2)>pcoordv(1) ) then
     127      ierr=NF_DEF_VAR(nid, "lev", NF_FLOAT, 1,dim_coord(3),nvarid)
     128      ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"vert level")
     129      if ( coordv(2)>coordv(1) ) then
    106130         ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"pseudo-alt")
    107131         ierr=NF_PUT_ATT_TEXT(nid,nvarid,'positive',2,"up")
     
    111135      endif
    112136      ierr=NF_ENDDEF(nid)
     137      ierr=NF_PUT_VAR_REAL(nid,nvarid,coordv)
    113138
    114       ierr=NF_PUT_VAR_REAL(nid,nvarid,coordv)
    115139!
     140! ---- time ----------------
     141      ierr=NF_REDEF(nid)
     142      ! Define the 'time' variable
     143      ierr=NF_DEF_VAR(nid, "time", NF_FLOAT, 1, dim_coord(4),nvarid)
     144!     ! Add attributes
     145      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'axis',1,'T')
     146      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'standard_name',4,'time')
     147      WRITE(date0,'(i4.4,"-",i2.2,"-",i2.2)') an0,mois0,jour0
     148      ierr=NF_PUT_ATT_TEXT(nid, nvarid,'units',33, &
     149     & "seconds since "//date0//" 00:00:00")
     150      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'calendar',9,calendrier)
     151      !ierr = NF_PUT_ATT_TEXT(nid,nvarid,'calendar',4,'360d')
     152      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'title',4,'Time')
     153      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'long_name',9,'Time axis')
     154      WRITE(date0b,'(i4.4,"-",a3,"-",i2.2)') an0,cmois(mois0),jour0
     155      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'time_origin',20, &
     156     &        date0b//' 00:00:00')
     157      ierr=NF_ENDDEF(nid)
     158
     159
    116160      END
Note: See TracChangeset for help on using the changeset viewer.