Changeset 929ae37 in flexpart.git


Ignore:
Timestamp:
Dec 15, 2016, 11:35:02 PM (7 years ago)
Author:
Don Morton <Don.Morton@…>
Branches:
fp9.3.1-20161214-nc4
Children:
4f17d14
Parents:
b9970e3
Message:

Continued incremental deployment of NC4 preproc files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • flexpart_code/fpmetbinary_mod.F90

    rb9970e3 r929ae37  
    302302
    303303        INTEGER :: ncret          ! Return value from NetCDF calls
     304        INTEGER :: ncvarid          ! NetCDF variable ID
     305
    304306        INTEGER :: nxmax_dimid, nymax_dimid, nzmax_dimid, nuvzmax_dimid, nwzmax_dimid
     307
     308        INTEGER, DIMENSION(3) :: dim3dids    ! Dimension IDs for 3D arrays
    305309
    306310        ! These are used when loading in dimensions from NC file
     
    316320
    317321        CHARACTER(LEN=128) :: errmesg
     322
     323        INTEGER, PARAMETER :: DEF_LEVEL = 3
    318324
    319325        if (op == 'DUMP') THEN
     
    336342
    337343
    338 
    339 
    340344            ! Scalar values
    341345            WRITE(iounit) nx, ny, nxmin1, nymin1, nxfield
    342346            WRITE(iounit) nuvz, nwz, nz, nmixz, nlev_ec
    343347            WRITE(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst
     348
     349            ncret = nf90_def_var(ncid, 'nx', NF90_INT, ncvarid)
     350            ncret = nf90_put_var(ncid, ncvarid, nx)
     351
     352            ncret = nf90_def_var(ncid, 'ny', NF90_INT, ncvarid)
     353            ncret = nf90_put_var(ncid, ncvarid, ny)
     354
     355            ncret = nf90_def_var(ncid, 'nxmin1', NF90_INT, ncvarid)
     356            ncret = nf90_put_var(ncid, ncvarid, nxmin1)
     357
     358            ncret = nf90_def_var(ncid, 'nymin1', NF90_INT, ncvarid)
     359            ncret = nf90_put_var(ncid, ncvarid, nymin1)
     360
     361            ncret = nf90_def_var(ncid, 'nxfield', NF90_INT, ncvarid)
     362            ncret = nf90_put_var(ncid, ncvarid, nxfield)
     363
     364            ncret = nf90_def_var(ncid, 'nuvz', NF90_INT, ncvarid)
     365            ncret = nf90_put_var(ncid, ncvarid, nuvz)
     366
     367            ncret = nf90_def_var(ncid, 'nwz', NF90_INT, ncvarid)
     368            ncret = nf90_put_var(ncid, ncvarid, nwz)
     369
     370            ncret = nf90_def_var(ncid, 'nz', NF90_INT, ncvarid)
     371            ncret = nf90_put_var(ncid, ncvarid, nz)
     372
     373            ncret = nf90_def_var(ncid, 'nmixz', NF90_INT, ncvarid)
     374            ncret = nf90_put_var(ncid, ncvarid, nmixz)
     375
     376            ncret = nf90_def_var(ncid, 'nlev_', NF90_INT, ncvarid)
     377            ncret = nf90_put_var(ncid, ncvarid, nlev_ec)
     378
     379            ncret = nf90_def_var(ncid, 'dx', NF90_FLOAT, ncvarid)
     380            ncret = nf90_put_var(ncid, ncvarid, dx)
     381
     382            ncret = nf90_def_var(ncid, 'dy', NF90_FLOAT, ncvarid)
     383            ncret = nf90_put_var(ncid, ncvarid, dy)
     384
     385            ncret = nf90_def_var(ncid, 'xlon0', NF90_FLOAT, ncvarid)
     386            ncret = nf90_put_var(ncid, ncvarid, xlon0)
     387
     388            ncret = nf90_def_var(ncid, 'ylat0', NF90_FLOAT, ncvarid)
     389            ncret = nf90_put_var(ncid, ncvarid, ylat0)
     390
     391            ncret = nf90_def_var(ncid, 'dxconst', NF90_FLOAT, ncvarid)
     392            ncret = nf90_put_var(ncid, ncvarid, dxconst)
     393
     394            ncret = nf90_def_var(ncid, 'dyconst', NF90_FLOAT, ncvarid)
     395            ncret = nf90_put_var(ncid, ncvarid, dyconst)
     396
     397
    344398
    345399            ! Fixed fields, static in time
     
    362416            WRITE(iounit) clouds(:,:,:,cm_index)
    363417            WRITE(iounit) cloudsh(:,:,cm_index)
     418
     419            dim3dids = (/nxmax_dimid, nymax_dimid, nzmax_dimid/)
     420
     421            ncret = nf90_def_var(ncid, 'uu', NF90_FLOAT, &
     422&                                       dim3dids, ncvarid)
     423            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     424&                                        shuffle=0,     &
     425&                                        deflate=1,     &
     426&                                        deflate_level=DEF_LEVEL)
     427            ncret = nf90_put_var(ncid, ncvarid, &
     428&                                uu(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     429
     430            ncret = nf90_def_var(ncid, 'vv', NF90_FLOAT, &
     431&                                       dim3dids, ncvarid)
     432            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     433&                                        shuffle=0,     &
     434&                                        deflate=1,     &
     435&                                        deflate_level=DEF_LEVEL)
     436            ncret = nf90_put_var(ncid, ncvarid, &
     437&                                vv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     438
     439            ncret = nf90_def_var(ncid, 'uupol', NF90_FLOAT, &
     440&                                       dim3dids, ncvarid)
     441            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     442&                                        shuffle=0,     &
     443&                                        deflate=1,     &
     444&                                        deflate_level=DEF_LEVEL)
     445            ncret = nf90_put_var(ncid, ncvarid, &
     446&                                uupol(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     447
     448            ncret = nf90_def_var(ncid, 'vvpol', NF90_FLOAT, &
     449&                                       dim3dids, ncvarid)
     450            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     451&                                        shuffle=0,     &
     452&                                        deflate=1,     &
     453&                                        deflate_level=DEF_LEVEL)
     454            ncret = nf90_put_var(ncid, ncvarid, &
     455&                                vvpol(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     456
     457            ncret = nf90_def_var(ncid, 'ww', NF90_FLOAT, &
     458&                                       dim3dids, ncvarid)
     459            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     460&                                        shuffle=0,     &
     461&                                        deflate=1,     &
     462&                                        deflate_level=DEF_LEVEL)
     463            ncret = nf90_put_var(ncid, ncvarid, &
     464&                                ww(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     465
     466            ncret = nf90_def_var(ncid, 'tt', NF90_FLOAT, &
     467&                                       dim3dids, ncvarid)
     468            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     469&                                        shuffle=0,     &
     470&                                        deflate=1,     &
     471&                                        deflate_level=DEF_LEVEL)
     472            ncret = nf90_put_var(ncid, ncvarid, &
     473&                                tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     474
     475            ncret = nf90_def_var(ncid, 'qv', NF90_FLOAT, &
     476&                                       dim3dids, ncvarid)
     477            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     478&                                        shuffle=0,     &
     479&                                        deflate=1,     &
     480&                                        deflate_level=DEF_LEVEL)
     481            ncret = nf90_put_var(ncid, ncvarid, &
     482&                                qv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     483
     484            ncret = nf90_def_var(ncid, 'pv', NF90_FLOAT, &
     485&                                       dim3dids, ncvarid)
     486            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     487&                                        shuffle=0,     &
     488&                                        deflate=1,     &
     489&                                        deflate_level=DEF_LEVEL)
     490            ncret = nf90_put_var(ncid, ncvarid, &
     491&                                pv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     492
     493            ncret = nf90_def_var(ncid, 'rho', NF90_FLOAT, &
     494&                                       dim3dids, ncvarid)
     495            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     496&                                        shuffle=0,     &
     497&                                        deflate=1,     &
     498&                                        deflate_level=DEF_LEVEL)
     499            ncret = nf90_put_var(ncid, ncvarid, &
     500&                                rho(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     501
     502            ncret = nf90_def_var(ncid, 'drhodz', NF90_FLOAT, &
     503&                                       dim3dids, ncvarid)
     504            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     505&                                        shuffle=0,     &
     506&                                        deflate=1,     &
     507&                                        deflate_level=DEF_LEVEL)
     508            ncret = nf90_put_var(ncid, ncvarid, &
     509&                                drhodz(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
     510
     511
     512            dim3dids = (/nxmax_dimid, nymax_dimid, nuvzmax_dimid/)
     513
     514            ncret = nf90_def_var(ncid, 'tth', NF90_FLOAT, &
     515&                                       dim3dids, ncvarid)
     516            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     517&                                        shuffle=0,     &
     518&                                        deflate=1,     &
     519&                                        deflate_level=DEF_LEVEL)
     520            ncret = nf90_put_var(ncid, ncvarid, &
     521&                                tth(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index))
     522
     523            ncret = nf90_def_var(ncid, 'qvh', NF90_FLOAT, &
     524&                                       dim3dids, ncvarid)
     525            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     526&                                        shuffle=0,     &
     527&                                        deflate=1,     &
     528&                                        deflate_level=DEF_LEVEL)
     529            ncret = nf90_put_var(ncid, ncvarid, &
     530&                                qvh(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index))
     531
     532            ncret = nf90_def_var(ncid, 'pplev', NF90_FLOAT, &
     533&                                       dim3dids, ncvarid)
     534            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
     535&                                        shuffle=0,     &
     536&                                        deflate=1,     &
     537&                                        deflate_level=DEF_LEVEL)
     538            ncret = nf90_put_var(ncid, ncvarid, &
     539&                                pplev(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index))
     540
     541
     542
     543
    364544
    365545            ! 2d fields
     
    553733            READ(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst
    554734
     735
     736
     737            ! Get the varid , then read into scalar variable
     738            ncret = nf90_inq_varid(ncid, 'nx', ncvarid)
     739            ncret = nf90_get_var(ncid, ncvarid, nx)
     740
     741            ncret = nf90_inq_varid(ncid, 'ny', ncvarid)
     742            ncret = nf90_get_var(ncid, ncvarid, ny)
     743
     744            ncret = nf90_inq_varid(ncid, 'nxmin1', ncvarid)
     745            ncret = nf90_get_var(ncid, ncvarid, nxmin1)
     746
     747            ncret = nf90_inq_varid(ncid, 'nymin1', ncvarid)
     748            ncret = nf90_get_var(ncid, ncvarid, nymin1)
     749
     750            ncret = nf90_inq_varid(ncid, 'nxfield', ncvarid)
     751            ncret = nf90_get_var(ncid, ncvarid, nxfield)
     752
     753            ncret = nf90_inq_varid(ncid, 'nuvz', ncvarid)
     754            ncret = nf90_get_var(ncid, ncvarid, nuvz)
     755
     756            ncret = nf90_inq_varid(ncid, 'nwz', ncvarid)
     757            ncret = nf90_get_var(ncid, ncvarid, nwz)
     758
     759            ncret = nf90_inq_varid(ncid, 'nz', ncvarid)
     760            ncret = nf90_get_var(ncid, ncvarid, nz)
     761
     762            ncret = nf90_inq_varid(ncid, 'nmixz', ncvarid)
     763            ncret = nf90_get_var(ncid, ncvarid, nmixz)
     764
     765            ncret = nf90_inq_varid(ncid, 'nlev_ec', ncvarid)
     766            ncret = nf90_get_var(ncid, ncvarid, nlev_ec)
     767
     768            ncret = nf90_inq_varid(ncid, 'dx', ncvarid)
     769            ncret = nf90_get_var(ncid, ncvarid, dx)
     770
     771            ncret = nf90_inq_varid(ncid, 'dy', ncvarid)
     772            ncret = nf90_get_var(ncid, ncvarid, dy)
     773
     774            ncret = nf90_inq_varid(ncid, 'xlon0', ncvarid)
     775            ncret = nf90_get_var(ncid, ncvarid, xlon0)
     776
     777            ncret = nf90_inq_varid(ncid, 'ylat0', ncvarid)
     778            ncret = nf90_get_var(ncid, ncvarid, ylat0)
     779
     780            ncret = nf90_inq_varid(ncid, 'dxconst', ncvarid)
     781            ncret = nf90_get_var(ncid, ncvarid, dxconst)
     782
     783            ncret = nf90_inq_varid(ncid, 'dyconst', ncvarid)
     784            ncret = nf90_get_var(ncid, ncvarid, dyconst)
     785
     786
     787
     788
     789
     790
    555791            ! Fixed fields, static in time
    556792            READ(iounit) oro, excessoro, lsm, xlanduse, height
     
    572808            READ(iounit) clouds(:,:,:,cm_index)
    573809            READ(iounit) cloudsh(:,:,cm_index)
     810
     811
     812
     813
     814            ! Get the varid and read the variable into the array
     815            ncret = nf90_inq_varid(ncid, 'uu', ncvarid)
     816            ncret = nf90_get_var(ncid, ncvarid, uu)
     817
     818            ncret = nf90_inq_varid(ncid, 'vv', ncvarid)
     819            ncret = nf90_get_var(ncid, ncvarid, vv)
     820
     821            ncret = nf90_inq_varid(ncid, 'uupol', ncvarid)
     822            ncret = nf90_get_var(ncid, ncvarid, uupol)
     823
     824            ncret = nf90_inq_varid(ncid, 'vvpol', ncvarid)
     825            ncret = nf90_get_var(ncid, ncvarid, vvpol)
     826
     827            ncret = nf90_inq_varid(ncid, 'ww', ncvarid)
     828            ncret = nf90_get_var(ncid, ncvarid, ww)
     829
     830            ncret = nf90_inq_varid(ncid, 'tt', ncvarid)
     831            ncret = nf90_get_var(ncid, ncvarid, tt)
     832
     833            ncret = nf90_inq_varid(ncid, 'qv', ncvarid)
     834            ncret = nf90_get_var(ncid, ncvarid, qv)
     835
     836            ncret = nf90_inq_varid(ncid, 'pv', ncvarid)
     837            ncret = nf90_get_var(ncid, ncvarid, pv)
     838
     839            ncret = nf90_inq_varid(ncid, 'rho', ncvarid)
     840            ncret = nf90_get_var(ncid, ncvarid, rho)
     841
     842            ncret = nf90_inq_varid(ncid, 'drhodz', ncvarid)
     843            ncret = nf90_get_var(ncid, ncvarid, drhodz)
     844
     845            ncret = nf90_inq_varid(ncid, 'tth', ncvarid)
     846            ncret = nf90_get_var(ncid, ncvarid, tth)
     847
     848            ncret = nf90_inq_varid(ncid, 'qvh', ncvarid)
     849            ncret = nf90_get_var(ncid, ncvarid, qvh)
     850
     851            ncret = nf90_inq_varid(ncid, 'pplev', ncvarid)
     852            ncret = nf90_get_var(ncid, ncvarid, pplev)
     853
     854
     855
     856
     857
     858
     859
    574860
    575861            ! 2d fields
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG