source: flexpart.git/flexpart_code/fpmetbinary_mod.F90 @ 030e3c1

fp9.3.1-20161214-nc4
Last change on this file since 030e3c1 was 030e3c1, checked in by Don Morton <Don.Morton@…>, 7 years ago

Incremental backup for branch fp9.3.1-20161214-nc4

  • Property mode set to 100644
File size: 143.4 KB
RevLine 
[496c607]1MODULE fpmetbinary_mod
2
3  !*****************************************************************************
4  !                                                                            *
5  !     Contains data and routines for dumping and loading processed met       *
6  !     fields.                                                                *
7  !     Authors Don Morton (Don.Morton@borealscicomp.com)                      *
8  !             Delia Arnold (deliona.arnold@gmail.com)                        *
9  !                                                                            *
[5cef1eb]10  !     07 Oct 2016                                                            *
[496c607]11  !                                                                            *
12  !     Most of the data structures from com_mod.f90 that are dumped and       *
13  !     loaded have a final dimension of size two, so that they may hold data  *
14  !     from two met files.  When we dump the contents into a .fp file, we     *
15  !     need to specify which of the two to dump.  Likewise, when we load      *
16  !     from a .fp file, we need to specify which of the two possible indices  *
17  !     to load into.                                                          *
18  !                                                                            *
19  !     Note that these routines need more robustness.  For example, what      *
20  !     what happens if the filename can't be read or written.  Or, what       *
21  !     happens if a read or write fails in any way.  Right now, it's crash    *
22  !     city.                                                                  *
23  !                                                                            *
[5cef1eb]24  !     Recent enhancements (07 Oct 2016) DJM:                                 *
25  !                                                                            *
26  !     - file format changed so that compiled dimensions are output, and      *
27  !       during input these same dimensions are compared with the dimensions  *
28  !       compiled into the flexpart that is reading it.  A discrepancy        *
29  !       causes abort, so that time isn't wasted reading an incompatible      *
30  !       file.                                                                *
31  !                                                                            *
32  !     - file format changed so that first item is an 8-character string      *
33  !       depicting the version of the preprocessed file format.               *
34  !       An inconsistency between a detected and expected string results      *
35  !       in program abort.                                                    *
36  !                                                                            *
37  !       *** IMPORTANT *** - when the format of the preprocessed output is    *
38  !       modified in any way, be sure to change the version string below,     *
39  !       PREPROC_FORMAT_VERSION_STR, so that attempts to read the output      *
40  !       with a different format version will cause an abort.                 *
41  !                                                                            *
[496c607]42  !*****************************************************************************
43
44    USE com_mod
45    USE conv_mod
[41a2981]46    USE par_mod, ONLY : nxmax, nymax, nzmax, nuvzmax, nwzmax, numclass, maxspec, &
47&                       maxnests, nxmaxn, nymaxn
[496c607]48
[5b3cc42]49    USE netcdf
50
[496c607]51    IMPLICIT NONE
52
53    ! Users may want to change these IO Unit values if they conflict with other parts
54    ! of code
55    INTEGER, PARAMETER :: IOUNIT_DUMP = 33, IOUNIT_LOAD = 34, &
56                          IOUNIT_TEXTOUT = 35
[5cef1eb]57
58    ! When a change is made to the format of the preprocessed file, such that
59    ! this routine will not be able to read a previous version, this version
60    ! string should be modified
[57a9cce]61    CHARACTER(LEN=12), PARAMETER :: PREPROC_FORMAT_VERSION_STR = 'FP_p-9.3.1'//char(0)
[5cef1eb]62
63    PRIVATE IOUNIT_DUMP, IOUNIT_LOAD, IOUNIT_TEXTOUT, fpio,    &
64&           PREPROC_FORMAT_VERSION_STR
[496c607]65
66
67CONTAINS
68
69  !*****************************************************************************
70  !                                                                            *
71  !    Subroutines fpmetbinary_dump() and fpmetbinary_load() provide the       *
72  !    public interface to                                                     *
73  !    this module functionality.  I created the PRIVATE fpio() because I      *
74  !    wanted all interactions with variables to be in one place.  The read    *
75  !    and write operations need to be done in exactly the same sequence, so   *
76  !    I felt like keeping them in the same routine would at least allow for   *
77  !    coders to more easily compare the two sequences than if they were       *
78  !    separate.                                                               *
79  !                                                                            *
80  !    As mentioned above, the dumps and loads will, for most variables,       *
81  !    need to refer to one of two index values for the last dimension of      *
82  !    the array.                                                              *
83  !                                                                            *
84  !*****************************************************************************
85
86
87    SUBROUTINE fpmetbinary_dump(filename, cm_index)
88        CHARACTER(LEN=*), INTENT(IN) :: filename  ! Full path for file
89        INTEGER, INTENT(IN) :: cm_index           ! Index of last dimension in
90                                                  ! most com_mod variables.
91                                                  ! Should be 1 or 2
92
93        INTEGER millisecs_start, millisecs_stop, count_rate, count_max
94
[b9970e3]95        INTEGER :: ncretval, ncid          ! NetCDF func return value, file id
[5b3cc42]96
[496c607]97        CALL SYSTEM_CLOCK(millisecs_start, count_rate, count_max)
[5b3cc42]98
99        ! Create and open NC4 file for writing
100        PRINT *, 'Opening NC4 file...'
101        ncretval = nf90_create(filename // ".nc4", &
102&                              OR(NF90_CLOBBER, NF90_HDF5), &
103&                              ncid)
104
[496c607]105        OPEN(IOUNIT_DUMP, file=filename, action='WRITE', status='REPLACE', form="unformatted", access="stream")
[5b3cc42]106
107
108
109
110
111
[b9970e3]112        CALL fpio(IOUNIT_DUMP, ncid, 'DUMP', cm_index)
[496c607]113        CLOSE(IOUNIT_DUMP)
[5b3cc42]114
115        PRINT *, 'Closing NC4 file...'
116        ncretval = nf90_close(ncid)
117
[496c607]118        CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max)
119
120        !PRINT *, 'Dump walltime secs: ', (millisecs_stop-millisecs_start)/1000.0
121    END SUBROUTINE fpmetbinary_dump
122
123    SUBROUTINE fpmetbinary_load(filename, cm_index)
124        CHARACTER(LEN=*), INTENT(IN) :: filename  ! Full path for file
125        INTEGER, INTENT(IN) :: cm_index           ! Index of last dimension in
126                                                  ! most com_mod variables.
127                                                  ! Should be 1 or 2
128
[b9970e3]129        INTEGER :: ncretval, ncid          ! NetCDF func return value, file id
130
[496c607]131        INTEGER millisecs_start, millisecs_stop, count_rate, count_max
132
133        CALL SYSTEM_CLOCK(millisecs_start, count_rate, count_max)
[b9970e3]134
135        print *, "Opening nc file for reading"
136        ncretval = nf90_open(filename // ".nc4", NF90_NOWRITE, ncid)
137
138
139
[496c607]140        OPEN(IOUNIT_LOAD, file=filename, action='READ', status='OLD', form="unformatted", access="stream")
[b9970e3]141        CALL fpio(IOUNIT_LOAD, ncid, 'LOAD', cm_index)
[496c607]142        CLOSE(IOUNIT_LOAD)
143        CALL SYSTEM_CLOCK(millisecs_stop, count_rate, count_max)
144        !PRINT *, 'Load walltime secs: ', (millisecs_stop-millisecs_start)/1000.0
145    END SUBROUTINE fpmetbinary_load
146
147    SUBROUTINE fpmetbinary_zero(cm_index)
148        INTEGER, INTENT(IN) :: cm_index           ! Index of last dimension in
149                                                  ! most com_mod variables.
150                                                  ! Should be 1 or 2
151
152
153        ! Zeroes out, in local datastructures, the values dumped/loaded
154        ! This was written primarily as a testing mechanism.
[1d9681b]155        ! DJM -- 17 February 2017 -- I don't think this routine has been used
156        ! for anything in recent past.  Might want to consider 86'ing it.
[496c607]157        ! The lines here correspond to READ and WRITE in the dump/load routines
158
159        ! Scalar values
160        nx=0.0; ny=0.0; nxmin1=0.0; nymin1=0.0; nxfield=0.0
161        nuvz=0.0; nwz=0.0; nz=0.0; nmixz=0.0; nlev_ec=0.0
162        dx=0.0; dy=0.0; xlon0=0.0; ylat0=0.0; dxconst=0.0; dyconst=0.0
163
164        ! Fixed fields, static in time
165        oro=0.0; excessoro=0.0; lsm=0.0; xlanduse=0.0; height=0.0
166
167        ! 3d fields
168        uu(:,:,:,cm_index) = 0.0
169        vv(:,:,:,cm_index) = 0.0
170        uupol(:,:,:,cm_index) = 0.0
171        vvpol(:,:,:,cm_index) = 0.0
172        ww(:,:,:,cm_index) = 0.0
173        tt(:,:,:,cm_index) = 0.0
174        qv(:,:,:,cm_index) = 0.0
175        pv(:,:,:,cm_index) = 0.0
176        rho(:,:,:,cm_index) = 0.0
177        drhodz(:,:,:,cm_index) = 0.0
178        tth(:,:,:,cm_index) = 0.0
179        qvh(:,:,:,cm_index) = 0.0
180        pplev(:,:,:,cm_index) = 0.0
181        clouds(:,:,:,cm_index) = 0.0
182        cloudsh(:,:,cm_index) = 0.0
183
184        ! 2d fields
185        ps(:,:,:,cm_index) = 0.0
186        sd(:,:,:,cm_index) = 0.0
187        msl(:,:,:,cm_index) = 0.0
188        tcc(:,:,:,cm_index) = 0.0
189        u10(:,:,:,cm_index) = 0.0
190        v10(:,:,:,cm_index) = 0.0
191        tt2(:,:,:,cm_index) = 0.0
192        td2(:,:,:,cm_index) = 0.0
193        lsprec(:,:,:,cm_index) = 0.0
194        convprec(:,:,:,cm_index) = 0.0
195        sshf(:,:,:,cm_index) = 0.0
196        ssr(:,:,:,cm_index) = 0.0
197        surfstr(:,:,:,cm_index) = 0.0
198        ustar(:,:,:,cm_index) = 0.0
199        wstar(:,:,:,cm_index) = 0.0
200        hmix(:,:,:,cm_index) = 0.0
201        tropopause(:,:,:,cm_index) = 0.0
202        oli(:,:,:,cm_index) = 0.0
203        diffk(:,:,:,cm_index) = 0.0
204        vdep(:,:,:,cm_index) = 0.0
205
206        ! 1d fields
207        z0(:) = 0.0
208        akm(:) = 0.0
209        bkm(:) = 0.0
210        akz(:) = 0.0
211        bkz(:) = 0.0
212        aknew(:) = 0.0
213        bknew(:) = 0.0
214
215        ! Nested, scalar values (for each nest)
216        nxn(:) = 0.0
217        nyn(:) = 0.0
218        dxn(:) = 0.0
219        dyn(:) = 0.0
220        xlon0n(:) = 0.0
221        ylat0n(:) = 0.0
222
223        ! Nested fields, static in time
224        oron=0.0; excessoron=0.0; lsmn=0.0; xlandusen=0.0
225
226        ! 3d nested fields
227        uun(:,:,:,cm_index,:) = 0.0
228        wwn(:,:,:,cm_index,:) = 0.0
229        ttn(:,:,:,cm_index,:) = 0.0
230        qvn(:,:,:,cm_index,:) = 0.0
231        pvn(:,:,:,cm_index,:) = 0.0
232        cloudsn(:,:,:,cm_index,:) = 0.0
233        cloudsnh(:,:,cm_index,:) = 0.0
234        rhon(:,:,:,cm_index,:) = 0.0
235        drhodzn(:,:,:,cm_index,:) = 0.0
236        tthn(:,:,:,cm_index,:) = 0.0
237        qvhn(:,:,:,cm_index,:) = 0.0
238
239        ! 2d nested fields
240        psn(:,:,:,cm_index,:) = 0.0
241        sdn(:,:,:,cm_index,:) = 0.0
242        msln(:,:,:,cm_index,:) = 0.0
243        tccn(:,:,:,cm_index,:) = 0.0
244        u10n(:,:,:,cm_index,:) = 0.0
245        v10n(:,:,:,cm_index,:) = 0.0
246        tt2n(:,:,:,cm_index,:) = 0.0
247        td2n(:,:,:,cm_index,:) = 0.0
248        lsprecn(:,:,:,cm_index,:) = 0.0
249        convprecn(:,:,:,cm_index,:) = 0.0
250        sshfn(:,:,:,cm_index,:) = 0.0
251        ssrn(:,:,:,cm_index,:) = 0.0
252        surfstrn(:,:,:,cm_index,:) = 0.0
253        ustarn(:,:,:,cm_index,:) = 0.0
254        wstarn(:,:,:,cm_index,:) = 0.0
255        hmixn(:,:,:,cm_index,:) = 0.0
256        tropopausen(:,:,:,cm_index,:) = 0.0
257        olin(:,:,:,cm_index,:) = 0.0
258        diffkn(:,:,:,cm_index,:) = 0.0
259        vdepn(:,:,:,cm_index,:) = 0.0
260
261        ! Auxiliary variables for nests
262        xresoln(:) = 0.0
263        yresoln(:) = 0.0
264        xln(:) = 0.0
265        yln(:) = 0.0
266        xrn(:) = 0.0
267        yrn(:) = 0.0
268
269        ! Variables for polar stereographic projection
270        xglobal=.FALSE.; sglobal=.FALSE.; nglobal=.FALSE.
271        switchnorthg=0.0; switchsouthg=0.0
272        southpolemap(:) = 0.0
273        northpolemap(:) = 0.0
274
275        ! Variables declared in conv_mod (convection)
276        pconv(:) = 0.0
277        phconv(:) = 0.0
278        dpr(:) = 0.0
279        pconv_hpa(:) = 0.0
280        phconv_hpa(:) = 0.0
281        ft(:) = 0.0
282        fq(:) = 0.0
283        fmass(:,:) = 0.0
284        sub(:) = 0.0
285        fmassfrac(:,:) = 0.0
286        cbaseflux(:,:) = 0.0
287        cbasefluxn(:,:,:) = 0.0
288        tconv(:) = 0.0
289        qconv(:) = 0.0
290        qsconv(:) = 0.0
291        psconv=0.0; tt2conv=0.0; td2conv=0.0
292        nconvlev=0.0; nconvtop=0.0
293
294    END SUBROUTINE fpmetbinary_zero
295
[b9970e3]296    SUBROUTINE fpio(iounit, ncid, op, cm_index)
[496c607]297        IMPLICIT NONE
[b9970e3]298        INTEGER, INTENT(IN) :: ncid               ! NetCDF file id
[496c607]299        INTEGER, INTENT(IN) :: iounit
300        CHARACTER(LEN=4), INTENT(IN) :: op        ! Operation - DUMP or LOAD
301        INTEGER, INTENT(IN) :: cm_index           ! Index of last dimension in
302                                                  ! most com_mod variables.
303                                                  ! Should be 1 or 2
[9cdf8bd]304
[b9970e3]305
[030e3c1]306        ! Helper functions (in this module)
307        !INTEGER :: logical2integer
308        !LOGICAL :: integer2logical
309
310        INTEGER :: temp_integer   ! temporary value
[b9970e3]311        INTEGER :: ncret          ! Return value from NetCDF calls
[929ae37]312        INTEGER :: ncvarid          ! NetCDF variable ID
313
[41a2981]314        INTEGER :: nxmax_dimid, nymax_dimid, nzmax_dimid, nuvzmax_dimid, nwzmax_dimid, &
[8413bc9]315&                  maxspec_dimid, numclass_dimid, maxnests_dimid, nxmaxn_dimid, nymaxn_dimid, &
[030e3c1]316&                  zero_to_nzmax_dimid, zero_to_maxnests_dimid, polemap_dimid, &
317&                  nconvlevmax_dimid, na_dimid
[8413bc9]318
[b9970e3]319
[70ecaa0]320        INTEGER, DIMENSION(1) :: dim1dids    ! Dimension IDs for 1D arrays
321        INTEGER, DIMENSION(2) :: dim2dids    ! Dimension IDs for 2D arrays
[929ae37]322        INTEGER, DIMENSION(3) :: dim3dids    ! Dimension IDs for 3D arrays
[8651603]323        INTEGER, DIMENSION(4) :: dim4dids    ! Dimension IDs for 4D arrays
[8413bc9]324        INTEGER, DIMENSION(5) :: dim5dids    ! Dimension IDs for 5D arrays
325
326
[8651603]327
[929ae37]328
[b9970e3]329        ! These are used when loading in dimensions from NC file
330        CHARACTER(LEN=NF90_MAX_NAME) :: nxmax_dimname, nymax_dimname, nzmax_dimname, &
[41a2981]331&                                       nuvzmax_dimname, nwzmax_dimname,&
[8651603]332&                                       maxspec_dimname, numclass_dimname,&
[8413bc9]333&                                       maxnests_dimname, nxmaxn_dimname, nymaxn_dimname, &
[ee13a7b]334&                                       zero_to_nzmax_dimname, zero_to_maxnests_dimname, &
[030e3c1]335&                                       polemap_dimname, nconvlevmax_dimname, na_dimname
[b9970e3]336
[9cdf8bd]337        ! These are temporary variables, used in the LOAD option, for
338        ! comparing against the current values in FLEXPART of nxmax, nymax, ...
339        INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, &
[41a2981]340&                  temp_nuvzmax, temp_nwzmax, &
[8651603]341&                  temp_maxspec, temp_numclass,&
342&                  temp_maxnests, temp_nxmaxn, temp_nymaxn
[9cdf8bd]343
[57a9cce]344        CHARACTER(LEN=12) :: temp_preproc_format_version_str
[5cef1eb]345
[496c607]346        CHARACTER(LEN=128) :: errmesg
347
[d2d8a96]348        INTEGER, PARAMETER :: DEF_LEVEL = 3
[929ae37]349
[496c607]350        if (op == 'DUMP') THEN
351
[5cef1eb]352
353            ! Write the preprocessing format version string
354            WRITE (iounit) PREPROC_FORMAT_VERSION_STR
355
[9cdf8bd]356            ! Write the compiled max dimensions from par_mod - these are
357            ! not meant to be reassigned during a LOAD, but used as "header"
358            ! information to provide the structure of arrays
359            WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax
360
[b9970e3]361            ncret = nf90_def_dim(ncid, 'nxmax', nxmax, nxmax_dimid)
[8413bc9]362            call handle_nf90_err(ncret)
[b9970e3]363            ncret = nf90_def_dim(ncid, 'nymax', nymax, nymax_dimid)
[8413bc9]364            call handle_nf90_err(ncret)
[b9970e3]365            ncret = nf90_def_dim(ncid, 'nzmax', nzmax, nzmax_dimid)
[8413bc9]366            call handle_nf90_err(ncret)
[b9970e3]367            ncret = nf90_def_dim(ncid, 'nuvzmax', nuvzmax, nuvzmax_dimid)
[8413bc9]368            call handle_nf90_err(ncret)
[b9970e3]369            ncret = nf90_def_dim(ncid, 'nwzmax', nwzmax, nwzmax_dimid)
[8413bc9]370            call handle_nf90_err(ncret)
[8651603]371            ncret = nf90_def_dim(ncid, 'maxspec', maxspec, maxspec_dimid)
[8413bc9]372            call handle_nf90_err(ncret)
[8651603]373            ncret = nf90_def_dim(ncid, 'numclass', numclass, numclass_dimid)
[8413bc9]374            call handle_nf90_err(ncret)
[030e3c1]375
376            ! There are a handful of variables indexed from 0 to n, rather than 0 to n-1,
377            ! so these dimensions handle that.  What a pain.
[8413bc9]378            ncret = nf90_def_dim(ncid, 'zero_to_nzmax', nzmax+1, zero_to_nzmax_dimid)
379            call handle_nf90_err(ncret)
[ee13a7b]380            ncret = nf90_def_dim(ncid, 'zero_to_maxnests', maxnests+1, zero_to_maxnests_dimid)
381            call handle_nf90_err(ncret)
[030e3c1]382
383            ! This is for a couple of small arrays that store polar stereographic stuff
[ee13a7b]384            ncret = nf90_def_dim(ncid, 'polemap_dim', 9, polemap_dimid)
385            call handle_nf90_err(ncret)
[b9970e3]386
[030e3c1]387            ! These two values come from conv_mod
388            ncret = nf90_def_dim(ncid, 'nconvlevmax_dim', nconvlevmax, nconvlevmax_dimid)
389            call handle_nf90_err(ncret)
390            ncret = nf90_def_dim(ncid, 'na_dim', na, na_dimid)
391            call handle_nf90_err(ncret)
392
[496c607]393            ! Scalar values
394            WRITE(iounit) nx, ny, nxmin1, nymin1, nxfield
395            WRITE(iounit) nuvz, nwz, nz, nmixz, nlev_ec
396            WRITE(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst
397
[929ae37]398            ncret = nf90_def_var(ncid, 'nx', NF90_INT, ncvarid)
[8413bc9]399            call handle_nf90_err(ncret)
[929ae37]400            ncret = nf90_put_var(ncid, ncvarid, nx)
[8413bc9]401            call handle_nf90_err(ncret)
[929ae37]402
403            ncret = nf90_def_var(ncid, 'ny', NF90_INT, ncvarid)
[8413bc9]404            call handle_nf90_err(ncret)
[929ae37]405            ncret = nf90_put_var(ncid, ncvarid, ny)
[8413bc9]406            call handle_nf90_err(ncret)
[929ae37]407
408            ncret = nf90_def_var(ncid, 'nxmin1', NF90_INT, ncvarid)
[8413bc9]409            call handle_nf90_err(ncret)
[929ae37]410            ncret = nf90_put_var(ncid, ncvarid, nxmin1)
[8413bc9]411            call handle_nf90_err(ncret)
[929ae37]412
413            ncret = nf90_def_var(ncid, 'nymin1', NF90_INT, ncvarid)
[8413bc9]414            call handle_nf90_err(ncret)
[929ae37]415            ncret = nf90_put_var(ncid, ncvarid, nymin1)
[8413bc9]416            call handle_nf90_err(ncret)
[929ae37]417
418            ncret = nf90_def_var(ncid, 'nxfield', NF90_INT, ncvarid)
[8413bc9]419            call handle_nf90_err(ncret)
[929ae37]420            ncret = nf90_put_var(ncid, ncvarid, nxfield)
[8413bc9]421            call handle_nf90_err(ncret)
[929ae37]422
423            ncret = nf90_def_var(ncid, 'nuvz', NF90_INT, ncvarid)
[8413bc9]424            call handle_nf90_err(ncret)
[929ae37]425            ncret = nf90_put_var(ncid, ncvarid, nuvz)
[8413bc9]426            call handle_nf90_err(ncret)
[929ae37]427
428            ncret = nf90_def_var(ncid, 'nwz', NF90_INT, ncvarid)
[8413bc9]429            call handle_nf90_err(ncret)
[929ae37]430            ncret = nf90_put_var(ncid, ncvarid, nwz)
[8413bc9]431            call handle_nf90_err(ncret)
[929ae37]432
433            ncret = nf90_def_var(ncid, 'nz', NF90_INT, ncvarid)
[8413bc9]434            call handle_nf90_err(ncret)
[929ae37]435            ncret = nf90_put_var(ncid, ncvarid, nz)
[8413bc9]436            call handle_nf90_err(ncret)
[929ae37]437
438            ncret = nf90_def_var(ncid, 'nmixz', NF90_INT, ncvarid)
[8413bc9]439            call handle_nf90_err(ncret)
[929ae37]440            ncret = nf90_put_var(ncid, ncvarid, nmixz)
[8413bc9]441            call handle_nf90_err(ncret)
[929ae37]442
[8651603]443            ncret = nf90_def_var(ncid, 'nlev_ec', NF90_INT, ncvarid)
[8413bc9]444            call handle_nf90_err(ncret)
[929ae37]445            ncret = nf90_put_var(ncid, ncvarid, nlev_ec)
[8413bc9]446            call handle_nf90_err(ncret)
[929ae37]447
448            ncret = nf90_def_var(ncid, 'dx', NF90_FLOAT, ncvarid)
[8413bc9]449            call handle_nf90_err(ncret)
[929ae37]450            ncret = nf90_put_var(ncid, ncvarid, dx)
[8413bc9]451            call handle_nf90_err(ncret)
[929ae37]452
453            ncret = nf90_def_var(ncid, 'dy', NF90_FLOAT, ncvarid)
[8413bc9]454            call handle_nf90_err(ncret)
[929ae37]455            ncret = nf90_put_var(ncid, ncvarid, dy)
[8413bc9]456            call handle_nf90_err(ncret)
[929ae37]457
458            ncret = nf90_def_var(ncid, 'xlon0', NF90_FLOAT, ncvarid)
[8413bc9]459            call handle_nf90_err(ncret)
[929ae37]460            ncret = nf90_put_var(ncid, ncvarid, xlon0)
[8413bc9]461            call handle_nf90_err(ncret)
[929ae37]462
463            ncret = nf90_def_var(ncid, 'ylat0', NF90_FLOAT, ncvarid)
[8413bc9]464            call handle_nf90_err(ncret)
[929ae37]465            ncret = nf90_put_var(ncid, ncvarid, ylat0)
[8413bc9]466            call handle_nf90_err(ncret)
[929ae37]467
468            ncret = nf90_def_var(ncid, 'dxconst', NF90_FLOAT, ncvarid)
[8413bc9]469            call handle_nf90_err(ncret)
[929ae37]470            ncret = nf90_put_var(ncid, ncvarid, dxconst)
[8413bc9]471            call handle_nf90_err(ncret)
[929ae37]472
473            ncret = nf90_def_var(ncid, 'dyconst', NF90_FLOAT, ncvarid)
[8413bc9]474            call handle_nf90_err(ncret)
[929ae37]475            ncret = nf90_put_var(ncid, ncvarid, dyconst)
[8413bc9]476            call handle_nf90_err(ncret)
[929ae37]477
478
479
[496c607]480            ! Fixed fields, static in time
481            WRITE(iounit) oro, excessoro, lsm, xlanduse, height
482
[70ecaa0]483            dim2dids = (/nxmax_dimid, nymax_dimid/)
484
485            ncret = nf90_def_var(ncid, 'oro', NF90_FLOAT, &
486&                                       dim2dids, ncvarid)
[8413bc9]487            call handle_nf90_err(ncret)
[70ecaa0]488            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
489&                                        shuffle=0,     &
490&                                        deflate=1,     &
491&                                        deflate_level=DEF_LEVEL)
[8413bc9]492            call handle_nf90_err(ncret)
[70ecaa0]493            ncret = nf90_put_var(ncid, ncvarid, &
494&                                oro(0:nxmax-1, 0:nymax-1))
[8413bc9]495            call handle_nf90_err(ncret)
[70ecaa0]496
497            ncret = nf90_def_var(ncid, 'excessoro', NF90_FLOAT, &
498&                                       dim2dids, ncvarid)
[8413bc9]499            call handle_nf90_err(ncret)
[70ecaa0]500            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
501&                                        shuffle=0,     &
502&                                        deflate=1,     &
503&                                        deflate_level=DEF_LEVEL)
[8413bc9]504            call handle_nf90_err(ncret)
[70ecaa0]505            ncret = nf90_put_var(ncid, ncvarid, &
506&                                excessoro(0:nxmax-1, 0:nymax-1))
[8413bc9]507            call handle_nf90_err(ncret)
[70ecaa0]508
509            ncret = nf90_def_var(ncid, 'lsm', NF90_FLOAT, &
510&                                       dim2dids, ncvarid)
[8413bc9]511            call handle_nf90_err(ncret)
[70ecaa0]512            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
513&                                        shuffle=0,     &
514&                                        deflate=1,     &
515&                                        deflate_level=DEF_LEVEL)
[8413bc9]516            call handle_nf90_err(ncret)
[70ecaa0]517            ncret = nf90_put_var(ncid, ncvarid, &
518&                                lsm(0:nxmax-1, 0:nymax-1))
[8413bc9]519            call handle_nf90_err(ncret)
[70ecaa0]520
[8651603]521            dim3dids = (/nxmax_dimid, nymax_dimid, numclass_dimid/)
[70ecaa0]522            ! numclass comes from par_mod - number of land use classes
523            ncret = nf90_def_var(ncid, 'xlanduse', NF90_FLOAT, &
524&                                       dim3dids, ncvarid)
[8413bc9]525            call handle_nf90_err(ncret)
[70ecaa0]526            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
527&                                        shuffle=0,     &
528&                                        deflate=1,     &
529&                                        deflate_level=DEF_LEVEL)
[8413bc9]530            call handle_nf90_err(ncret)
[70ecaa0]531            ncret = nf90_put_var(ncid, ncvarid, &
532&                                xlanduse(0:nxmax-1, 0:nymax-1, 1:numclass))
[8413bc9]533            call handle_nf90_err(ncret)
[70ecaa0]534
535            dim1dids = (/nzmax_dimid/)
536            ncret = nf90_def_var(ncid, 'height', NF90_FLOAT, &
537&                                       dim1dids, ncvarid)
[8413bc9]538            call handle_nf90_err(ncret)
[70ecaa0]539            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
540&                                        shuffle=0,     &
541&                                        deflate=1,     &
542&                                        deflate_level=DEF_LEVEL)
[8413bc9]543            call handle_nf90_err(ncret)
[70ecaa0]544            ncret = nf90_put_var(ncid, ncvarid, &
545&                                height(1:nzmax))
[8413bc9]546            call handle_nf90_err(ncret)
[70ecaa0]547
548
549
550
[496c607]551            ! 3d fields
552            WRITE(iounit) uu(:,:,:,cm_index)
553            WRITE(iounit) vv(:,:,:,cm_index)
554            WRITE(iounit) uupol(:,:,:,cm_index)
555            WRITE(iounit) vvpol(:,:,:,cm_index)
556            WRITE(iounit) ww(:,:,:,cm_index)
557            WRITE(iounit) tt(:,:,:,cm_index)
558            WRITE(iounit) qv(:,:,:,cm_index)
559            WRITE(iounit) pv(:,:,:,cm_index)
560            WRITE(iounit) rho(:,:,:,cm_index)
561            WRITE(iounit) drhodz(:,:,:,cm_index)
562            WRITE(iounit) tth(:,:,:,cm_index)
563            WRITE(iounit) qvh(:,:,:,cm_index)
564            WRITE(iounit) pplev(:,:,:,cm_index)
565            WRITE(iounit) clouds(:,:,:,cm_index)
566            WRITE(iounit) cloudsh(:,:,cm_index)
567
[929ae37]568            dim3dids = (/nxmax_dimid, nymax_dimid, nzmax_dimid/)
569
570            ncret = nf90_def_var(ncid, 'uu', NF90_FLOAT, &
571&                                       dim3dids, ncvarid)
[8413bc9]572            call handle_nf90_err(ncret)
[929ae37]573            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
574&                                        shuffle=0,     &
575&                                        deflate=1,     &
576&                                        deflate_level=DEF_LEVEL)
[8413bc9]577            call handle_nf90_err(ncret)
[929ae37]578            ncret = nf90_put_var(ncid, ncvarid, &
579&                                uu(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]580            call handle_nf90_err(ncret)
[929ae37]581
582            ncret = nf90_def_var(ncid, 'vv', NF90_FLOAT, &
583&                                       dim3dids, ncvarid)
[8413bc9]584            call handle_nf90_err(ncret)
[929ae37]585            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
586&                                        shuffle=0,     &
587&                                        deflate=1,     &
588&                                        deflate_level=DEF_LEVEL)
[8413bc9]589            call handle_nf90_err(ncret)
[929ae37]590            ncret = nf90_put_var(ncid, ncvarid, &
591&                                vv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]592            call handle_nf90_err(ncret)
[929ae37]593
594            ncret = nf90_def_var(ncid, 'uupol', NF90_FLOAT, &
595&                                       dim3dids, ncvarid)
[8413bc9]596            call handle_nf90_err(ncret)
[929ae37]597            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
598&                                        shuffle=0,     &
599&                                        deflate=1,     &
600&                                        deflate_level=DEF_LEVEL)
[8413bc9]601            call handle_nf90_err(ncret)
[929ae37]602            ncret = nf90_put_var(ncid, ncvarid, &
603&                                uupol(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]604            call handle_nf90_err(ncret)
[929ae37]605
606            ncret = nf90_def_var(ncid, 'vvpol', NF90_FLOAT, &
607&                                       dim3dids, ncvarid)
[8413bc9]608            call handle_nf90_err(ncret)
[929ae37]609            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
610&                                        shuffle=0,     &
611&                                        deflate=1,     &
612&                                        deflate_level=DEF_LEVEL)
[8413bc9]613            call handle_nf90_err(ncret)
[929ae37]614            ncret = nf90_put_var(ncid, ncvarid, &
615&                                vvpol(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]616            call handle_nf90_err(ncret)
[929ae37]617
618            ncret = nf90_def_var(ncid, 'ww', NF90_FLOAT, &
619&                                       dim3dids, ncvarid)
[8413bc9]620            call handle_nf90_err(ncret)
[929ae37]621            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
622&                                        shuffle=0,     &
623&                                        deflate=1,     &
624&                                        deflate_level=DEF_LEVEL)
[8413bc9]625            call handle_nf90_err(ncret)
[929ae37]626            ncret = nf90_put_var(ncid, ncvarid, &
627&                                ww(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]628            call handle_nf90_err(ncret)
[929ae37]629
630            ncret = nf90_def_var(ncid, 'tt', NF90_FLOAT, &
631&                                       dim3dids, ncvarid)
[8413bc9]632            call handle_nf90_err(ncret)
[929ae37]633            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
634&                                        shuffle=0,     &
635&                                        deflate=1,     &
636&                                        deflate_level=DEF_LEVEL)
[8413bc9]637            call handle_nf90_err(ncret)
[929ae37]638            ncret = nf90_put_var(ncid, ncvarid, &
639&                                tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]640            call handle_nf90_err(ncret)
[929ae37]641
642            ncret = nf90_def_var(ncid, 'qv', NF90_FLOAT, &
643&                                       dim3dids, ncvarid)
[8413bc9]644            call handle_nf90_err(ncret)
[929ae37]645            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
646&                                        shuffle=0,     &
647&                                        deflate=1,     &
648&                                        deflate_level=DEF_LEVEL)
[8413bc9]649            call handle_nf90_err(ncret)
[929ae37]650            ncret = nf90_put_var(ncid, ncvarid, &
651&                                qv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]652            call handle_nf90_err(ncret)
[929ae37]653
654            ncret = nf90_def_var(ncid, 'pv', NF90_FLOAT, &
655&                                       dim3dids, ncvarid)
[8413bc9]656            call handle_nf90_err(ncret)
[929ae37]657            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
658&                                        shuffle=0,     &
659&                                        deflate=1,     &
660&                                        deflate_level=DEF_LEVEL)
[8413bc9]661            call handle_nf90_err(ncret)
[929ae37]662            ncret = nf90_put_var(ncid, ncvarid, &
663&                                pv(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]664            call handle_nf90_err(ncret)
[929ae37]665
666            ncret = nf90_def_var(ncid, 'rho', NF90_FLOAT, &
667&                                       dim3dids, ncvarid)
[8413bc9]668            call handle_nf90_err(ncret)
[929ae37]669            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
670&                                        shuffle=0,     &
671&                                        deflate=1,     &
672&                                        deflate_level=DEF_LEVEL)
[8413bc9]673            call handle_nf90_err(ncret)
[929ae37]674            ncret = nf90_put_var(ncid, ncvarid, &
675&                                rho(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]676            call handle_nf90_err(ncret)
[929ae37]677
678            ncret = nf90_def_var(ncid, 'drhodz', NF90_FLOAT, &
679&                                       dim3dids, ncvarid)
[8413bc9]680            call handle_nf90_err(ncret)
[929ae37]681            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
682&                                        shuffle=0,     &
683&                                        deflate=1,     &
684&                                        deflate_level=DEF_LEVEL)
[8413bc9]685            call handle_nf90_err(ncret)
[929ae37]686            ncret = nf90_put_var(ncid, ncvarid, &
687&                                drhodz(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]688            call handle_nf90_err(ncret)
[929ae37]689
[70ecaa0]690            ncret = nf90_def_var(ncid, 'clouds', NF90_BYTE, &
691&                                       dim3dids, ncvarid)
[8413bc9]692            call handle_nf90_err(ncret)
[70ecaa0]693            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
694&                                        shuffle=0,     &
695&                                        deflate=1,     &
696&                                        deflate_level=DEF_LEVEL)
[8413bc9]697            call handle_nf90_err(ncret)
[70ecaa0]698            ncret = nf90_put_var(ncid, ncvarid, &
699&                                clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index))
[8413bc9]700            call handle_nf90_err(ncret)
[70ecaa0]701
702
[929ae37]703
[70ecaa0]704            ! Note the change in z dimension for the following
[929ae37]705            dim3dids = (/nxmax_dimid, nymax_dimid, nuvzmax_dimid/)
706
707            ncret = nf90_def_var(ncid, 'tth', NF90_FLOAT, &
708&                                       dim3dids, ncvarid)
[8413bc9]709            call handle_nf90_err(ncret)
[929ae37]710            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
711&                                        shuffle=0,     &
712&                                        deflate=1,     &
713&                                        deflate_level=DEF_LEVEL)
[8413bc9]714            call handle_nf90_err(ncret)
[929ae37]715            ncret = nf90_put_var(ncid, ncvarid, &
716&                                tth(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index))
[8413bc9]717            call handle_nf90_err(ncret)
[929ae37]718
719            ncret = nf90_def_var(ncid, 'qvh', NF90_FLOAT, &
720&                                       dim3dids, ncvarid)
[8413bc9]721            call handle_nf90_err(ncret)
[929ae37]722            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
723&                                        shuffle=0,     &
724&                                        deflate=1,     &
725&                                        deflate_level=DEF_LEVEL)
[8413bc9]726            call handle_nf90_err(ncret)
[929ae37]727            ncret = nf90_put_var(ncid, ncvarid, &
728&                                qvh(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index))
[8413bc9]729            call handle_nf90_err(ncret)
[929ae37]730
731            ncret = nf90_def_var(ncid, 'pplev', NF90_FLOAT, &
732&                                       dim3dids, ncvarid)
[8413bc9]733            call handle_nf90_err(ncret)
[929ae37]734            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
735&                                        shuffle=0,     &
736&                                        deflate=1,     &
737&                                        deflate_level=DEF_LEVEL)
[8413bc9]738            call handle_nf90_err(ncret)
[929ae37]739            ncret = nf90_put_var(ncid, ncvarid, &
740&                                pplev(0:nxmax-1, 0:nymax-1, 1:nuvzmax, cm_index))
[8413bc9]741            call handle_nf90_err(ncret)
[929ae37]742
[70ecaa0]743
744            dim2dids = (/nxmax_dimid, nymax_dimid/)
745            ncret = nf90_def_var(ncid, 'cloudsh', NF90_INT, &
746&                                       dim2dids, ncvarid)
[8413bc9]747            call handle_nf90_err(ncret)
[70ecaa0]748            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
749&                                        shuffle=0,     &
750&                                        deflate=1,     &
751&                                        deflate_level=DEF_LEVEL)
[8413bc9]752            call handle_nf90_err(ncret)
[70ecaa0]753            ncret = nf90_put_var(ncid, ncvarid, &
754&                                cloudsh(0:nxmax-1, 0:nymax-1, cm_index))
[8413bc9]755            call handle_nf90_err(ncret)
[70ecaa0]756
757
758
[4f17d14]759            PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', &
760&                                        SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index))
[929ae37]761
[70ecaa0]762            PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', &
763&                                        SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index))
764
765
[929ae37]766
[496c607]767            ! 2d fields
768            WRITE(iounit) ps(:,:,:,cm_index)
769            WRITE(iounit) sd(:,:,:,cm_index)
770            WRITE(iounit) msl(:,:,:,cm_index)
771            WRITE(iounit) tcc(:,:,:,cm_index)
772            WRITE(iounit) u10(:,:,:,cm_index)
773            WRITE(iounit) v10(:,:,:,cm_index)
774            WRITE(iounit) tt2(:,:,:,cm_index)
775            WRITE(iounit) td2(:,:,:,cm_index)
776            WRITE(iounit) lsprec(:,:,:,cm_index)
777            WRITE(iounit) convprec(:,:,:,cm_index)
778            WRITE(iounit) sshf(:,:,:,cm_index)
779            WRITE(iounit) ssr(:,:,:,cm_index)
780            WRITE(iounit) surfstr(:,:,:,cm_index)
781            WRITE(iounit) ustar(:,:,:,cm_index)
782            WRITE(iounit) wstar(:,:,:,cm_index)
783            WRITE(iounit) hmix(:,:,:,cm_index)
784            WRITE(iounit) tropopause(:,:,:,cm_index)
785            WRITE(iounit) oli(:,:,:,cm_index)
786            WRITE(iounit) diffk(:,:,:,cm_index)
787            WRITE(iounit) vdep(:,:,:,cm_index)
788
[d2d8a96]789            dim2dids = (/nxmax_dimid, nymax_dimid/)
790
791            ncret = nf90_def_var(ncid, 'ps', NF90_FLOAT, &
792&                                       dim2dids, ncvarid)
[8413bc9]793            call handle_nf90_err(ncret)
[d2d8a96]794            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
795&                                        shuffle=0,     &
796&                                        deflate=1,     &
797&                                        deflate_level=DEF_LEVEL)
[8413bc9]798            call handle_nf90_err(ncret)
[d2d8a96]799            ncret = nf90_put_var(ncid, ncvarid, &
800&                                ps(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]801            call handle_nf90_err(ncret)
[d2d8a96]802
803            ncret = nf90_def_var(ncid, 'sd', NF90_FLOAT, &
804&                                       dim2dids, ncvarid)
[8413bc9]805            call handle_nf90_err(ncret)
[d2d8a96]806            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
807&                                        shuffle=0,     &
808&                                        deflate=1,     &
809&                                        deflate_level=DEF_LEVEL)
[8413bc9]810            call handle_nf90_err(ncret)
[d2d8a96]811            ncret = nf90_put_var(ncid, ncvarid, &
812&                                sd(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]813            call handle_nf90_err(ncret)
[d2d8a96]814
815            ncret = nf90_def_var(ncid, 'msl', NF90_FLOAT, &
816&                                       dim2dids, ncvarid)
[8413bc9]817            call handle_nf90_err(ncret)
[d2d8a96]818            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
819&                                        shuffle=0,     &
820&                                        deflate=1,     &
821&                                        deflate_level=DEF_LEVEL)
[8413bc9]822            call handle_nf90_err(ncret)
[d2d8a96]823            ncret = nf90_put_var(ncid, ncvarid, &
824&                                msl(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]825            call handle_nf90_err(ncret)
[d2d8a96]826
827            ncret = nf90_def_var(ncid, 'tcc', NF90_FLOAT, &
828&                                       dim2dids, ncvarid)
[8413bc9]829            call handle_nf90_err(ncret)
[d2d8a96]830            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
831&                                        shuffle=0,     &
832&                                        deflate=1,     &
833&                                        deflate_level=DEF_LEVEL)
[8413bc9]834            call handle_nf90_err(ncret)
[d2d8a96]835            ncret = nf90_put_var(ncid, ncvarid, &
836&                                tcc(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]837            call handle_nf90_err(ncret)
[d2d8a96]838
839            ncret = nf90_def_var(ncid, 'u10', NF90_FLOAT, &
840&                                       dim2dids, ncvarid)
[8413bc9]841            call handle_nf90_err(ncret)
[d2d8a96]842            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
843&                                        shuffle=0,     &
844&                                        deflate=1,     &
845&                                        deflate_level=DEF_LEVEL)
[8413bc9]846            call handle_nf90_err(ncret)
[d2d8a96]847            ncret = nf90_put_var(ncid, ncvarid, &
848&                                u10(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]849            call handle_nf90_err(ncret)
[d2d8a96]850
851            ncret = nf90_def_var(ncid, 'v10', NF90_FLOAT, &
852&                                       dim2dids, ncvarid)
[8413bc9]853            call handle_nf90_err(ncret)
[d2d8a96]854            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
855&                                        shuffle=0,     &
856&                                        deflate=1,     &
857&                                        deflate_level=DEF_LEVEL)
[8413bc9]858            call handle_nf90_err(ncret)
[d2d8a96]859            ncret = nf90_put_var(ncid, ncvarid, &
860&                                v10(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]861            call handle_nf90_err(ncret)
[d2d8a96]862
863            ncret = nf90_def_var(ncid, 'tt2', NF90_FLOAT, &
864&                                       dim2dids, ncvarid)
[8413bc9]865            call handle_nf90_err(ncret)
[d2d8a96]866            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
867&                                        shuffle=0,     &
868&                                        deflate=1,     &
869&                                        deflate_level=DEF_LEVEL)
[8413bc9]870            call handle_nf90_err(ncret)
[d2d8a96]871            ncret = nf90_put_var(ncid, ncvarid, &
872&                                tt2(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]873            call handle_nf90_err(ncret)
[d2d8a96]874
875            ncret = nf90_def_var(ncid, 'td2', NF90_FLOAT, &
876&                                       dim2dids, ncvarid)
[8413bc9]877            call handle_nf90_err(ncret)
[d2d8a96]878            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
879&                                        shuffle=0,     &
880&                                        deflate=1,     &
881&                                        deflate_level=DEF_LEVEL)
[8413bc9]882            call handle_nf90_err(ncret)
[d2d8a96]883            ncret = nf90_put_var(ncid, ncvarid, &
884&                                td2(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]885            call handle_nf90_err(ncret)
[d2d8a96]886
887            ncret = nf90_def_var(ncid, 'lsprec', NF90_FLOAT, &
888&                                       dim2dids, ncvarid)
[8413bc9]889            call handle_nf90_err(ncret)
[d2d8a96]890            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
891&                                        shuffle=0,     &
892&                                        deflate=1,     &
893&                                        deflate_level=DEF_LEVEL)
[8413bc9]894            call handle_nf90_err(ncret)
[d2d8a96]895            ncret = nf90_put_var(ncid, ncvarid, &
896&                                lsprec(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]897            call handle_nf90_err(ncret)
[d2d8a96]898
899            ncret = nf90_def_var(ncid, 'convprec', NF90_FLOAT, &
900&                                       dim2dids, ncvarid)
[8413bc9]901            call handle_nf90_err(ncret)
[d2d8a96]902            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
903&                                        shuffle=0,     &
904&                                        deflate=1,     &
905&                                        deflate_level=DEF_LEVEL)
[8413bc9]906            call handle_nf90_err(ncret)
[d2d8a96]907            ncret = nf90_put_var(ncid, ncvarid, &
908&                                convprec(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]909            call handle_nf90_err(ncret)
[d2d8a96]910
911            ncret = nf90_def_var(ncid, 'sshf', NF90_FLOAT, &
912&                                       dim2dids, ncvarid)
[8413bc9]913            call handle_nf90_err(ncret)
[d2d8a96]914            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
915&                                        shuffle=0,     &
916&                                        deflate=1,     &
917&                                        deflate_level=DEF_LEVEL)
[8413bc9]918            call handle_nf90_err(ncret)
[d2d8a96]919            ncret = nf90_put_var(ncid, ncvarid, &
920&                                sshf(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]921            call handle_nf90_err(ncret)
[d2d8a96]922
923            ncret = nf90_def_var(ncid, 'ssr', NF90_FLOAT, &
924&                                       dim2dids, ncvarid)
[8413bc9]925            call handle_nf90_err(ncret)
[d2d8a96]926            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
927&                                        shuffle=0,     &
928&                                        deflate=1,     &
929&                                        deflate_level=DEF_LEVEL)
[8413bc9]930            call handle_nf90_err(ncret)
[d2d8a96]931            ncret = nf90_put_var(ncid, ncvarid, &
932&                                ssr(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]933            call handle_nf90_err(ncret)
[d2d8a96]934
935            ncret = nf90_def_var(ncid, 'surfstr', NF90_FLOAT, &
936&                                       dim2dids, ncvarid)
[8413bc9]937            call handle_nf90_err(ncret)
[d2d8a96]938            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
939&                                        shuffle=0,     &
940&                                        deflate=1,     &
941&                                        deflate_level=DEF_LEVEL)
[8413bc9]942            call handle_nf90_err(ncret)
[d2d8a96]943            ncret = nf90_put_var(ncid, ncvarid, &
944&                                surfstr(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]945            call handle_nf90_err(ncret)
[d2d8a96]946
947            ncret = nf90_def_var(ncid, 'ustar', NF90_FLOAT, &
948&                                       dim2dids, ncvarid)
[8413bc9]949            call handle_nf90_err(ncret)
[d2d8a96]950            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
951&                                        shuffle=0,     &
952&                                        deflate=1,     &
953&                                        deflate_level=DEF_LEVEL)
[8413bc9]954            call handle_nf90_err(ncret)
[d2d8a96]955            ncret = nf90_put_var(ncid, ncvarid, &
956&                                ustar(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]957            call handle_nf90_err(ncret)
[d2d8a96]958
959            ncret = nf90_def_var(ncid, 'wstar', NF90_FLOAT, &
960&                                       dim2dids, ncvarid)
[8413bc9]961            call handle_nf90_err(ncret)
[d2d8a96]962            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
963&                                        shuffle=0,     &
964&                                        deflate=1,     &
965&                                        deflate_level=DEF_LEVEL)
[8413bc9]966            call handle_nf90_err(ncret)
[d2d8a96]967            ncret = nf90_put_var(ncid, ncvarid, &
968&                                wstar(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]969            call handle_nf90_err(ncret)
[d2d8a96]970
971            ncret = nf90_def_var(ncid, 'hmix', NF90_FLOAT, &
972&                                       dim2dids, ncvarid)
[8413bc9]973            call handle_nf90_err(ncret)
[d2d8a96]974            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
975&                                        shuffle=0,     &
976&                                        deflate=1,     &
977&                                        deflate_level=DEF_LEVEL)
[8413bc9]978            call handle_nf90_err(ncret)
[d2d8a96]979            ncret = nf90_put_var(ncid, ncvarid, &
980&                                hmix(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]981            call handle_nf90_err(ncret)
[d2d8a96]982
983            ncret = nf90_def_var(ncid, 'tropopause', NF90_FLOAT, &
984&                                       dim2dids, ncvarid)
[8413bc9]985            call handle_nf90_err(ncret)
[d2d8a96]986            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
987&                                        shuffle=0,     &
988&                                        deflate=1,     &
989&                                        deflate_level=DEF_LEVEL)
[8413bc9]990            call handle_nf90_err(ncret)
[d2d8a96]991            ncret = nf90_put_var(ncid, ncvarid, &
992&                                tropopause(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]993            call handle_nf90_err(ncret)
[d2d8a96]994
995            ncret = nf90_def_var(ncid, 'oli', NF90_FLOAT, &
996&                                       dim2dids, ncvarid)
[8413bc9]997            call handle_nf90_err(ncret)
[d2d8a96]998            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
999&                                        shuffle=0,     &
1000&                                        deflate=1,     &
1001&                                        deflate_level=DEF_LEVEL)
[8413bc9]1002            call handle_nf90_err(ncret)
[d2d8a96]1003            ncret = nf90_put_var(ncid, ncvarid, &
1004&                                oli(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]1005            call handle_nf90_err(ncret)
[d2d8a96]1006
1007            ncret = nf90_def_var(ncid, 'diffk', NF90_FLOAT, &
1008&                                       dim2dids, ncvarid)
[8413bc9]1009            call handle_nf90_err(ncret)
[d2d8a96]1010            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1011&                                        shuffle=0,     &
1012&                                        deflate=1,     &
1013&                                        deflate_level=DEF_LEVEL)
[8413bc9]1014            call handle_nf90_err(ncret)
[d2d8a96]1015            ncret = nf90_put_var(ncid, ncvarid, &
1016&                                diffk(0:nxmax-1, 0:nymax-1, 1, cm_index))
[8413bc9]1017            call handle_nf90_err(ncret)
[d2d8a96]1018
1019
1020
1021            PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', &
1022&                                        SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index))
1023
1024            PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', &
1025&                                        SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index))
1026
1027
[8651603]1028            dim3dids = (/nxmax_dimid, nymax_dimid, maxspec_dimid/)
[1d9681b]1029
1030            ncret = nf90_def_var(ncid, 'vdep', NF90_FLOAT, &
1031&                                       dim3dids, ncvarid)
[8413bc9]1032            call handle_nf90_err(ncret)
[1d9681b]1033            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1034&                                        shuffle=0,     &
1035&                                        deflate=1,     &
1036&                                        deflate_level=DEF_LEVEL)
[8413bc9]1037            call handle_nf90_err(ncret)
[1d9681b]1038            ncret = nf90_put_var(ncid, ncvarid, &
1039&                                vdep(0:nxmax-1, 0:nymax-1, 1:maxspec, cm_index))
[8413bc9]1040            call handle_nf90_err(ncret)
[d2d8a96]1041
1042
1043
[496c607]1044            ! 1d fields
1045            WRITE(iounit) z0(:)
1046            WRITE(iounit) akm(:)
1047            WRITE(iounit) bkm(:)
1048            WRITE(iounit) akz(:)
1049            WRITE(iounit) bkz(:)
1050            WRITE(iounit) aknew(:)
1051            WRITE(iounit) bknew(:)
1052
[8651603]1053            dim1dids = (/numclass_dimid/)
[1d9681b]1054
1055            ncret = nf90_def_var(ncid, 'z0', NF90_FLOAT, &
1056&                                       dim1dids, ncvarid)
1057            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1058&                                        shuffle=0,     &
1059&                                        deflate=1,     &
1060&                                        deflate_level=DEF_LEVEL)
1061            ncret = nf90_put_var(ncid, ncvarid, &
1062&                                z0(1:numclass))
1063
1064
[8651603]1065            dim1dids = (/nwzmax_dimid/)
[1d9681b]1066
1067            ncret = nf90_def_var(ncid, 'akm', NF90_FLOAT, &
1068&                                       dim1dids, ncvarid)
[8413bc9]1069            call handle_nf90_err(ncret)
[1d9681b]1070            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1071&                                        shuffle=0,     &
1072&                                        deflate=1,     &
1073&                                        deflate_level=DEF_LEVEL)
[8413bc9]1074            call handle_nf90_err(ncret)
[1d9681b]1075            ncret = nf90_put_var(ncid, ncvarid, &
1076&                                akm(1:nwzmax))
[8413bc9]1077            call handle_nf90_err(ncret)
[1d9681b]1078
1079            ncret = nf90_def_var(ncid, 'bkm', NF90_FLOAT, &
1080&                                       dim1dids, ncvarid)
[8413bc9]1081            call handle_nf90_err(ncret)
[1d9681b]1082            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1083&                                        shuffle=0,     &
1084&                                        deflate=1,     &
1085&                                        deflate_level=DEF_LEVEL)
[8413bc9]1086            call handle_nf90_err(ncret)
[1d9681b]1087            ncret = nf90_put_var(ncid, ncvarid, &
1088&                                bkm(1:nwzmax))
[8413bc9]1089            call handle_nf90_err(ncret)
[1d9681b]1090
1091
[8651603]1092            dim1dids = (/nuvzmax_dimid/)
[1d9681b]1093
1094            ncret = nf90_def_var(ncid, 'akz', NF90_FLOAT, &
1095&                                       dim1dids, ncvarid)
[8413bc9]1096            call handle_nf90_err(ncret)
[1d9681b]1097            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1098&                                        shuffle=0,     &
1099&                                        deflate=1,     &
1100&                                        deflate_level=DEF_LEVEL)
[8413bc9]1101            call handle_nf90_err(ncret)
[1d9681b]1102            ncret = nf90_put_var(ncid, ncvarid, &
1103&                                akz(1:nuvzmax))
[8413bc9]1104            call handle_nf90_err(ncret)
[1d9681b]1105
1106            ncret = nf90_def_var(ncid, 'bkz', NF90_FLOAT, &
1107&                                       dim1dids, ncvarid)
[8413bc9]1108            call handle_nf90_err(ncret)
[1d9681b]1109            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1110&                                        shuffle=0,     &
1111&                                        deflate=1,     &
1112&                                        deflate_level=DEF_LEVEL)
[8413bc9]1113            call handle_nf90_err(ncret)
[1d9681b]1114            ncret = nf90_put_var(ncid, ncvarid, &
1115&                                bkz(1:nuvzmax))
[8413bc9]1116            call handle_nf90_err(ncret)
[1d9681b]1117
1118
[8651603]1119            dim1dids = (/nzmax_dimid/)
[1d9681b]1120
1121            ncret = nf90_def_var(ncid, 'aknew', NF90_FLOAT, &
1122&                                       dim1dids, ncvarid)
[8413bc9]1123            call handle_nf90_err(ncret)
[1d9681b]1124            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1125&                                        shuffle=0,     &
1126&                                        deflate=1,     &
1127&                                        deflate_level=DEF_LEVEL)
[8413bc9]1128            call handle_nf90_err(ncret)
[1d9681b]1129            ncret = nf90_put_var(ncid, ncvarid, &
1130&                                aknew(1:nzmax))
[8413bc9]1131            call handle_nf90_err(ncret)
[1d9681b]1132
1133            ncret = nf90_def_var(ncid, 'bknew', NF90_FLOAT, &
1134&                                       dim1dids, ncvarid)
[8413bc9]1135            call handle_nf90_err(ncret)
[1d9681b]1136            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1137&                                        shuffle=0,     &
1138&                                        deflate=1,     &
1139&                                        deflate_level=DEF_LEVEL)
[8413bc9]1140            call handle_nf90_err(ncret)
[1d9681b]1141            ncret = nf90_put_var(ncid, ncvarid, &
1142&                                bknew(1:nzmax))
[8413bc9]1143            call handle_nf90_err(ncret)
[1d9681b]1144
1145
1146            PRINT *, 'SUM(bknew(1:nzmax)): ', &
1147&                                        SUM(bknew(1:nzmax))
1148
1149
1150
[7e5f1dc]1151            ! Getting ready to add in nested code
[1d9681b]1152
[41a2981]1153            ! These are compiled max dimensions from par_mod - these are
1154            ! not meant to be reassigned during a LOAD, but used as "header"
1155            ! information to provide the structure of arrays
1156            ncret = nf90_def_dim(ncid, 'maxnests', maxnests, maxnests_dimid)
[8413bc9]1157            call handle_nf90_err(ncret)
[41a2981]1158            ncret = nf90_def_dim(ncid, 'nxmaxn', nxmaxn, nxmaxn_dimid)
[8413bc9]1159            call handle_nf90_err(ncret)
[41a2981]1160            ncret = nf90_def_dim(ncid, 'nymaxn', nymaxn, nymaxn_dimid)
[8413bc9]1161            call handle_nf90_err(ncret)
[41a2981]1162
[496c607]1163            WRITE(iounit) nxn(:)
1164            WRITE(iounit) nyn(:)
1165            WRITE(iounit) dxn(:)
1166            WRITE(iounit) dyn(:)
1167            WRITE(iounit) xlon0n(:)
1168            WRITE(iounit) ylat0n(:)
1169
[8651603]1170            ! Nested, scalar values (for each nest)
1171
1172            dim1dids = (/maxnests_dimid/)
1173
1174            ncret = nf90_def_var(ncid, 'nxn', NF90_INT, &
1175&                                       dim1dids, ncvarid)
[8413bc9]1176            call handle_nf90_err(ncret)
[8651603]1177            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1178&                                        shuffle=0,     &
1179&                                        deflate=1,     &
1180&                                        deflate_level=DEF_LEVEL)
[8413bc9]1181            call handle_nf90_err(ncret)
[8651603]1182            ncret = nf90_put_var(ncid, ncvarid, &
1183&                                nxn(1:maxnests))
[8413bc9]1184            call handle_nf90_err(ncret)
[8651603]1185
1186            ncret = nf90_def_var(ncid, 'nyn', NF90_INT, &
1187&                                       dim1dids, ncvarid)
[8413bc9]1188            call handle_nf90_err(ncret)
[8651603]1189            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1190&                                        shuffle=0,     &
1191&                                        deflate=1,     &
1192&                                        deflate_level=DEF_LEVEL)
[8413bc9]1193            call handle_nf90_err(ncret)
[8651603]1194            ncret = nf90_put_var(ncid, ncvarid, &
1195&                                nyn(1:maxnests))
[8413bc9]1196            call handle_nf90_err(ncret)
[8651603]1197
1198            ncret = nf90_def_var(ncid, 'dxn', NF90_FLOAT, &
1199&                                       dim1dids, ncvarid)
[8413bc9]1200            call handle_nf90_err(ncret)
[8651603]1201            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1202&                                        shuffle=0,     &
1203&                                        deflate=1,     &
1204&                                        deflate_level=DEF_LEVEL)
[8413bc9]1205            call handle_nf90_err(ncret)
[8651603]1206            ncret = nf90_put_var(ncid, ncvarid, &
1207&                                dxn(1:maxnests))
[8413bc9]1208            call handle_nf90_err(ncret)
[8651603]1209
1210            ncret = nf90_def_var(ncid, 'dyn', NF90_FLOAT, &
1211&                                       dim1dids, ncvarid)
[8413bc9]1212            call handle_nf90_err(ncret)
[8651603]1213            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1214&                                        shuffle=0,     &
1215&                                        deflate=1,     &
1216&                                        deflate_level=DEF_LEVEL)
[8413bc9]1217            call handle_nf90_err(ncret)
[8651603]1218            ncret = nf90_put_var(ncid, ncvarid, &
1219&                                dyn(1:maxnests))
[8413bc9]1220            call handle_nf90_err(ncret)
[8651603]1221
1222            ncret = nf90_def_var(ncid, 'xlon0n', NF90_FLOAT, &
1223&                                       dim1dids, ncvarid)
[8413bc9]1224            call handle_nf90_err(ncret)
[8651603]1225            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1226&                                        shuffle=0,     &
1227&                                        deflate=1,     &
1228&                                        deflate_level=DEF_LEVEL)
[8413bc9]1229            call handle_nf90_err(ncret)
[8651603]1230            ncret = nf90_put_var(ncid, ncvarid, &
1231&                                xlon0n(1:maxnests))
[8413bc9]1232            call handle_nf90_err(ncret)
[8651603]1233
1234            ncret = nf90_def_var(ncid, 'ylat0n', NF90_FLOAT, &
1235&                                       dim1dids, ncvarid)
[8413bc9]1236            call handle_nf90_err(ncret)
[8651603]1237            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1238&                                        shuffle=0,     &
1239&                                        deflate=1,     &
1240&                                        deflate_level=DEF_LEVEL)
[8413bc9]1241            call handle_nf90_err(ncret)
[8651603]1242            ncret = nf90_put_var(ncid, ncvarid, &
1243&                                ylat0n(1:maxnests))
[8413bc9]1244            call handle_nf90_err(ncret)
[8651603]1245
1246
1247
1248
[496c607]1249            ! Nested fields, static over time
1250            WRITE(iounit) oron, excessoron, lsmn, xlandusen
1251
[8651603]1252            dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/)
1253
1254            ncret = nf90_def_var(ncid, 'oron', NF90_FLOAT, &
1255&                                       dim3dids, ncvarid)
[8413bc9]1256            call handle_nf90_err(ncret)
[8651603]1257            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1258&                                        shuffle=0,     &
1259&                                        deflate=1,     &
1260&                                        deflate_level=DEF_LEVEL)
[8413bc9]1261            call handle_nf90_err(ncret)
[8651603]1262            ncret = nf90_put_var(ncid, ncvarid, &
1263&                                oron(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests))
[8413bc9]1264            call handle_nf90_err(ncret)
[8651603]1265
1266            ncret = nf90_def_var(ncid, 'excessoron', NF90_FLOAT, &
1267&                                       dim3dids, ncvarid)
[8413bc9]1268            call handle_nf90_err(ncret)
[8651603]1269            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1270&                                        shuffle=0,     &
1271&                                        deflate=1,     &
1272&                                        deflate_level=DEF_LEVEL)
[8413bc9]1273            call handle_nf90_err(ncret)
[8651603]1274            ncret = nf90_put_var(ncid, ncvarid, &
1275&                                excessoron(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests))
[8413bc9]1276            call handle_nf90_err(ncret)
[8651603]1277
1278            ncret = nf90_def_var(ncid, 'lsmn', NF90_FLOAT, &
1279&                                       dim3dids, ncvarid)
[8413bc9]1280            call handle_nf90_err(ncret)
[8651603]1281            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1282&                                        shuffle=0,     &
1283&                                        deflate=1,     &
1284&                                        deflate_level=DEF_LEVEL)
[8413bc9]1285            call handle_nf90_err(ncret)
[8651603]1286            ncret = nf90_put_var(ncid, ncvarid, &
1287&                                lsmn(0:nxmaxn-1, 0:nymaxn-1, 1:maxnests))
[8413bc9]1288            call handle_nf90_err(ncret)
[8651603]1289
1290            dim4dids = (/nxmaxn_dimid, nymaxn_dimid, numclass_dimid, maxnests_dimid/)
1291
1292            ncret = nf90_def_var(ncid, 'xlandusen', NF90_FLOAT, &
1293&                                       dim4dids, ncvarid)
[8413bc9]1294            call handle_nf90_err(ncret)
[8651603]1295            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1296&                                        shuffle=0,     &
1297&                                        deflate=1,     &
1298&                                        deflate_level=DEF_LEVEL)
[8413bc9]1299            call handle_nf90_err(ncret)
[8651603]1300            ncret = nf90_put_var(ncid, ncvarid, &
1301&                                xlandusen(0:nxmaxn-1, 0:nymaxn-1, 1:numclass, 1:maxnests))
[8413bc9]1302            call handle_nf90_err(ncret)
[8651603]1303
[8413bc9]1304            PRINT *, 'SUM(oron): ', SUM(oron)
[8651603]1305
1306
1307
[496c607]1308            ! 3d nested fields
1309            WRITE(iounit) uun(:,:,:,cm_index,:)
1310            WRITE(iounit) vvn(:,:,:,cm_index,:)
1311            WRITE(iounit) wwn(:,:,:,cm_index,:)
1312            WRITE(iounit) ttn(:,:,:,cm_index,:)
1313            WRITE(iounit) qvn(:,:,:,cm_index,:)
1314            WRITE(iounit) pvn(:,:,:,cm_index,:)
1315            WRITE(iounit) cloudsn(:,:,:,cm_index,:)
1316            WRITE(iounit) cloudsnh(:,:,cm_index,:)
1317            WRITE(iounit) rhon(:,:,:,cm_index,:)
1318            WRITE(iounit) drhodzn(:,:,:,cm_index,:)
1319            WRITE(iounit) tthn(:,:,:,cm_index,:)
1320            WRITE(iounit) qvhn(:,:,:,cm_index,:)
1321
[8413bc9]1322
1323            dim4dids = (/nxmaxn_dimid, nymaxn_dimid, nzmax_dimid, maxnests_dimid/)
1324
1325            ncret = nf90_def_var(ncid, 'uun', NF90_FLOAT, &
1326&                                       dim4dids, ncvarid)
1327            call handle_nf90_err(ncret)
1328            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1329&                                        shuffle=0,     &
1330&                                        deflate=1,     &
1331&                                        deflate_level=DEF_LEVEL)
1332            call handle_nf90_err(ncret)
1333            ncret = nf90_put_var(ncid, ncvarid, &
1334&                                uun(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests))
1335            call handle_nf90_err(ncret)
1336
1337            ncret = nf90_def_var(ncid, 'vvn', NF90_FLOAT, &
1338&                                       dim4dids, ncvarid)
1339            call handle_nf90_err(ncret)
1340            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1341&                                        shuffle=0,     &
1342&                                        deflate=1,     &
1343&                                        deflate_level=DEF_LEVEL)
1344            call handle_nf90_err(ncret)
1345            ncret = nf90_put_var(ncid, ncvarid, &
1346&                                vvn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests))
1347            call handle_nf90_err(ncret)
1348
1349            ncret = nf90_def_var(ncid, 'wwn', NF90_FLOAT, &
1350&                                       dim4dids, ncvarid)
1351            call handle_nf90_err(ncret)
1352            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1353&                                        shuffle=0,     &
1354&                                        deflate=1,     &
1355&                                        deflate_level=DEF_LEVEL)
1356            call handle_nf90_err(ncret)
1357            ncret = nf90_put_var(ncid, ncvarid, &
1358&                                wwn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests))
1359            call handle_nf90_err(ncret)
1360
1361            ncret = nf90_def_var(ncid, 'ttn', NF90_FLOAT, &
1362&                                       dim4dids, ncvarid)
1363            call handle_nf90_err(ncret)
1364            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1365&                                        shuffle=0,     &
1366&                                        deflate=1,     &
1367&                                        deflate_level=DEF_LEVEL)
1368            call handle_nf90_err(ncret)
1369            ncret = nf90_put_var(ncid, ncvarid, &
1370&                                ttn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests))
1371            call handle_nf90_err(ncret)
1372
1373            ncret = nf90_def_var(ncid, 'qvn', NF90_FLOAT, &
1374&                                       dim4dids, ncvarid)
1375            call handle_nf90_err(ncret)
1376            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1377&                                        shuffle=0,     &
1378&                                        deflate=1,     &
1379&                                        deflate_level=DEF_LEVEL)
1380            call handle_nf90_err(ncret)
1381            ncret = nf90_put_var(ncid, ncvarid, &
1382&                                qvn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests))
1383            call handle_nf90_err(ncret)
1384
1385            ncret = nf90_def_var(ncid, 'pvn', NF90_FLOAT, &
1386&                                       dim4dids, ncvarid)
1387            call handle_nf90_err(ncret)
1388            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1389&                                        shuffle=0,     &
1390&                                        deflate=1,     &
1391&                                        deflate_level=DEF_LEVEL)
1392            call handle_nf90_err(ncret)
1393            ncret = nf90_put_var(ncid, ncvarid, &
1394&                                pvn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests))
1395            call handle_nf90_err(ncret)
1396
1397            ncret = nf90_def_var(ncid, 'rhon', NF90_FLOAT, &
1398&                                       dim4dids, ncvarid)
1399            call handle_nf90_err(ncret)
1400            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1401&                                        shuffle=0,     &
1402&                                        deflate=1,     &
1403&                                        deflate_level=DEF_LEVEL)
1404            call handle_nf90_err(ncret)
1405            ncret = nf90_put_var(ncid, ncvarid, &
1406&                                rhon(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests))
1407            call handle_nf90_err(ncret)
1408
1409            ncret = nf90_def_var(ncid, 'drhodzn', NF90_FLOAT, &
1410&                                       dim4dids, ncvarid)
1411            call handle_nf90_err(ncret)
1412            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1413&                                        shuffle=0,     &
1414&                                        deflate=1,     &
1415&                                        deflate_level=DEF_LEVEL)
1416            call handle_nf90_err(ncret)
1417            ncret = nf90_put_var(ncid, ncvarid, &
1418&                                drhodzn(0:nxmaxn-1, 0:nymaxn-1, 1:nzmax, cm_index, 1:maxnests))
1419            call handle_nf90_err(ncret)
1420
1421
1422            ! Note the new dimensions
1423            dim4dids = (/nxmaxn_dimid, nymaxn_dimid, nuvzmax_dimid, maxnests_dimid/)
1424
1425            ncret = nf90_def_var(ncid, 'tthn', NF90_FLOAT, &
1426&                                       dim4dids, ncvarid)
1427            call handle_nf90_err(ncret)
1428            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1429&                                        shuffle=0,     &
1430&                                        deflate=1,     &
1431&                                        deflate_level=DEF_LEVEL)
1432            call handle_nf90_err(ncret)
1433            ncret = nf90_put_var(ncid, ncvarid, &
1434&                                tthn(0:nxmaxn-1, 0:nymaxn-1, 1:nuvzmax, cm_index, 1:maxnests))
1435            call handle_nf90_err(ncret)
1436
1437            ncret = nf90_def_var(ncid, 'qvhn', NF90_FLOAT, &
1438&                                       dim4dids, ncvarid)
1439            call handle_nf90_err(ncret)
1440            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1441&                                        shuffle=0,     &
1442&                                        deflate=1,     &
1443&                                        deflate_level=DEF_LEVEL)
1444            call handle_nf90_err(ncret)
1445            ncret = nf90_put_var(ncid, ncvarid, &
1446&                                qvhn(0:nxmaxn-1, 0:nymaxn-1, 1:nuvzmax, cm_index, 1:maxnests))
1447            call handle_nf90_err(ncret)
1448
1449            ! Note the new dimensions
1450            dim4dids = (/nxmaxn_dimid, nymaxn_dimid, zero_to_nzmax_dimid, maxnests_dimid/)
1451
1452            ncret = nf90_def_var(ncid, 'cloudsn', NF90_INT, &
1453&                                       dim4dids, ncvarid)
1454            call handle_nf90_err(ncret)
1455            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1456&                                        shuffle=0,     &
1457&                                        deflate=1,     &
1458&                                        deflate_level=DEF_LEVEL)
1459            call handle_nf90_err(ncret)
1460            ncret = nf90_put_var(ncid, ncvarid, &
1461&                                cloudsn(0:nxmaxn-1, 0:nymaxn-1, 0:nzmax, cm_index, 1:maxnests))
1462            call handle_nf90_err(ncret)
1463
1464            ! Note the new dimensions
1465            dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/)
1466
1467            ncret = nf90_def_var(ncid, 'cloudsnh', NF90_INT, &
1468&                                       dim3dids, ncvarid)
1469            call handle_nf90_err(ncret)
1470            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1471&                                        shuffle=0,     &
1472&                                        deflate=1,     &
1473&                                        deflate_level=DEF_LEVEL)
1474            call handle_nf90_err(ncret)
1475            ncret = nf90_put_var(ncid, ncvarid, &
1476&                                cloudsnh(0:nxmaxn-1, 0:nymaxn-1, cm_index, 1:maxnests))
1477            call handle_nf90_err(ncret)
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487            PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:))
1488            PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:))
1489            PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:))
1490
1491
1492
[496c607]1493            ! 2d nested fields
1494            WRITE(iounit) psn(:,:,:,cm_index,:)
1495            WRITE(iounit) sdn(:,:,:,cm_index,:)
1496            WRITE(iounit) msln(:,:,:,cm_index,:)
1497            WRITE(iounit) tccn(:,:,:,cm_index,:)
1498            WRITE(iounit) u10n(:,:,:,cm_index,:)
1499            WRITE(iounit) v10n(:,:,:,cm_index,:)
1500            WRITE(iounit) tt2n(:,:,:,cm_index,:)
1501            WRITE(iounit) td2n(:,:,:,cm_index,:)
1502            WRITE(iounit) lsprecn(:,:,:,cm_index,:)
1503            WRITE(iounit) convprecn(:,:,:,cm_index,:)
1504            WRITE(iounit) sshfn(:,:,:,cm_index,:)
1505            WRITE(iounit) ssrn(:,:,:,cm_index,:)
1506            WRITE(iounit) surfstrn(:,:,:,cm_index,:)
1507            WRITE(iounit) ustarn(:,:,:,cm_index,:)
1508            WRITE(iounit) wstarn(:,:,:,cm_index,:)
1509            WRITE(iounit) hmixn(:,:,:,cm_index,:)
1510            WRITE(iounit) tropopausen(:,:,:,cm_index,:)
1511            WRITE(iounit) olin(:,:,:,cm_index,:)
1512            WRITE(iounit) diffkn(:,:,:,cm_index,:)
1513            WRITE(iounit) vdepn(:,:,:,cm_index,:)
1514
[ee13a7b]1515            dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/)
[8413bc9]1516
1517            ncret = nf90_def_var(ncid, 'psn', NF90_FLOAT, &
1518&                                       dim3dids, ncvarid)
1519            call handle_nf90_err(ncret)
1520            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1521&                                        shuffle=0,     &
1522&                                        deflate=1,     &
1523&                                        deflate_level=DEF_LEVEL)
1524            call handle_nf90_err(ncret)
1525            ncret = nf90_put_var(ncid, ncvarid, &
1526&                                psn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1527            call handle_nf90_err(ncret)
1528
[ee13a7b]1529            ncret = nf90_def_var(ncid, 'sdn', NF90_FLOAT, &
1530&                                       dim3dids, ncvarid)
1531            call handle_nf90_err(ncret)
1532            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1533&                                        shuffle=0,     &
1534&                                        deflate=1,     &
1535&                                        deflate_level=DEF_LEVEL)
1536            call handle_nf90_err(ncret)
1537            ncret = nf90_put_var(ncid, ncvarid, &
1538&                                sdn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1539            call handle_nf90_err(ncret)
[8413bc9]1540
[ee13a7b]1541            ncret = nf90_def_var(ncid, 'msln', NF90_FLOAT, &
1542&                                       dim3dids, ncvarid)
1543            call handle_nf90_err(ncret)
1544            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1545&                                        shuffle=0,     &
1546&                                        deflate=1,     &
1547&                                        deflate_level=DEF_LEVEL)
1548            call handle_nf90_err(ncret)
1549            ncret = nf90_put_var(ncid, ncvarid, &
1550&                                msln(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1551            call handle_nf90_err(ncret)
[8413bc9]1552
[ee13a7b]1553            ncret = nf90_def_var(ncid, 'tccn', NF90_FLOAT, &
1554&                                       dim3dids, ncvarid)
1555            call handle_nf90_err(ncret)
1556            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1557&                                        shuffle=0,     &
1558&                                        deflate=1,     &
1559&                                        deflate_level=DEF_LEVEL)
1560            call handle_nf90_err(ncret)
1561            ncret = nf90_put_var(ncid, ncvarid, &
1562&                                tccn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1563            call handle_nf90_err(ncret)
[8413bc9]1564
[ee13a7b]1565            ncret = nf90_def_var(ncid, 'u10n', NF90_FLOAT, &
1566&                                       dim3dids, ncvarid)
1567            call handle_nf90_err(ncret)
1568            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1569&                                        shuffle=0,     &
1570&                                        deflate=1,     &
1571&                                        deflate_level=DEF_LEVEL)
1572            call handle_nf90_err(ncret)
1573            ncret = nf90_put_var(ncid, ncvarid, &
1574&                                u10n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1575            call handle_nf90_err(ncret)
[8413bc9]1576
[ee13a7b]1577            ncret = nf90_def_var(ncid, 'v10n', NF90_FLOAT, &
1578&                                       dim3dids, ncvarid)
1579            call handle_nf90_err(ncret)
1580            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1581&                                        shuffle=0,     &
1582&                                        deflate=1,     &
1583&                                        deflate_level=DEF_LEVEL)
1584            call handle_nf90_err(ncret)
1585            ncret = nf90_put_var(ncid, ncvarid, &
1586&                                v10n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1587            call handle_nf90_err(ncret)
[8413bc9]1588
[ee13a7b]1589            ncret = nf90_def_var(ncid, 'tt2n', NF90_FLOAT, &
1590&                                       dim3dids, ncvarid)
1591            call handle_nf90_err(ncret)
1592            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1593&                                        shuffle=0,     &
1594&                                        deflate=1,     &
1595&                                        deflate_level=DEF_LEVEL)
1596            call handle_nf90_err(ncret)
1597            ncret = nf90_put_var(ncid, ncvarid, &
1598&                                tt2n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1599            call handle_nf90_err(ncret)
1600
1601            ncret = nf90_def_var(ncid, 'td2n', NF90_FLOAT, &
1602&                                       dim3dids, ncvarid)
1603            call handle_nf90_err(ncret)
1604            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1605&                                        shuffle=0,     &
1606&                                        deflate=1,     &
1607&                                        deflate_level=DEF_LEVEL)
1608            call handle_nf90_err(ncret)
1609            ncret = nf90_put_var(ncid, ncvarid, &
1610&                                td2n(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1611            call handle_nf90_err(ncret)
1612
1613            ncret = nf90_def_var(ncid, 'lsprecn', NF90_FLOAT, &
1614&                                       dim3dids, ncvarid)
1615            call handle_nf90_err(ncret)
1616            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1617&                                        shuffle=0,     &
1618&                                        deflate=1,     &
1619&                                        deflate_level=DEF_LEVEL)
1620            call handle_nf90_err(ncret)
1621            ncret = nf90_put_var(ncid, ncvarid, &
1622&                                lsprecn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1623            call handle_nf90_err(ncret)
1624
1625            ncret = nf90_def_var(ncid, 'convprecn', NF90_FLOAT, &
1626&                                       dim3dids, ncvarid)
1627            call handle_nf90_err(ncret)
1628            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1629&                                        shuffle=0,     &
1630&                                        deflate=1,     &
1631&                                        deflate_level=DEF_LEVEL)
1632            call handle_nf90_err(ncret)
1633            ncret = nf90_put_var(ncid, ncvarid, &
1634&                                convprecn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1635            call handle_nf90_err(ncret)
1636
1637            ncret = nf90_def_var(ncid, 'sshfn', NF90_FLOAT, &
1638&                                       dim3dids, ncvarid)
1639            call handle_nf90_err(ncret)
1640            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1641&                                        shuffle=0,     &
1642&                                        deflate=1,     &
1643&                                        deflate_level=DEF_LEVEL)
1644            call handle_nf90_err(ncret)
1645            ncret = nf90_put_var(ncid, ncvarid, &
1646&                                sshfn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1647            call handle_nf90_err(ncret)
1648
1649            ncret = nf90_def_var(ncid, 'ssrn', NF90_FLOAT, &
1650&                                       dim3dids, ncvarid)
1651            call handle_nf90_err(ncret)
1652            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1653&                                        shuffle=0,     &
1654&                                        deflate=1,     &
1655&                                        deflate_level=DEF_LEVEL)
1656            call handle_nf90_err(ncret)
1657            ncret = nf90_put_var(ncid, ncvarid, &
1658&                                ssrn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1659            call handle_nf90_err(ncret)
1660
1661            ncret = nf90_def_var(ncid, 'surfstrn', NF90_FLOAT, &
1662&                                       dim3dids, ncvarid)
1663            call handle_nf90_err(ncret)
1664            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1665&                                        shuffle=0,     &
1666&                                        deflate=1,     &
1667&                                        deflate_level=DEF_LEVEL)
1668            call handle_nf90_err(ncret)
1669            ncret = nf90_put_var(ncid, ncvarid, &
1670&                                surfstrn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1671            call handle_nf90_err(ncret)
1672
1673            ncret = nf90_def_var(ncid, 'ustarn', NF90_FLOAT, &
1674&                                       dim3dids, ncvarid)
1675            call handle_nf90_err(ncret)
1676            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1677&                                        shuffle=0,     &
1678&                                        deflate=1,     &
1679&                                        deflate_level=DEF_LEVEL)
1680            call handle_nf90_err(ncret)
1681            ncret = nf90_put_var(ncid, ncvarid, &
1682&                                ustarn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1683            call handle_nf90_err(ncret)
1684
1685            ncret = nf90_def_var(ncid, 'wstarn', NF90_FLOAT, &
1686&                                       dim3dids, ncvarid)
1687            call handle_nf90_err(ncret)
1688            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1689&                                        shuffle=0,     &
1690&                                        deflate=1,     &
1691&                                        deflate_level=DEF_LEVEL)
1692            call handle_nf90_err(ncret)
1693            ncret = nf90_put_var(ncid, ncvarid, &
1694&                                wstarn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1695            call handle_nf90_err(ncret)
1696
1697            ncret = nf90_def_var(ncid, 'hmixn', NF90_FLOAT, &
1698&                                       dim3dids, ncvarid)
1699            call handle_nf90_err(ncret)
1700            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1701&                                        shuffle=0,     &
1702&                                        deflate=1,     &
1703&                                        deflate_level=DEF_LEVEL)
1704            call handle_nf90_err(ncret)
1705            ncret = nf90_put_var(ncid, ncvarid, &
1706&                                hmixn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1707            call handle_nf90_err(ncret)
1708
1709            ncret = nf90_def_var(ncid, 'tropopausen', NF90_FLOAT, &
1710&                                       dim3dids, ncvarid)
1711            call handle_nf90_err(ncret)
1712            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1713&                                        shuffle=0,     &
1714&                                        deflate=1,     &
1715&                                        deflate_level=DEF_LEVEL)
1716            call handle_nf90_err(ncret)
1717            ncret = nf90_put_var(ncid, ncvarid, &
1718&                                tropopausen(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1719            call handle_nf90_err(ncret)
[8413bc9]1720
[ee13a7b]1721            ncret = nf90_def_var(ncid, 'olin', NF90_FLOAT, &
1722&                                       dim3dids, ncvarid)
1723            call handle_nf90_err(ncret)
1724            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1725&                                        shuffle=0,     &
1726&                                        deflate=1,     &
1727&                                        deflate_level=DEF_LEVEL)
1728            call handle_nf90_err(ncret)
1729            ncret = nf90_put_var(ncid, ncvarid, &
1730&                                olin(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1731            call handle_nf90_err(ncret)
[8413bc9]1732
[ee13a7b]1733            ncret = nf90_def_var(ncid, 'diffkn', NF90_FLOAT, &
1734&                                       dim3dids, ncvarid)
1735            call handle_nf90_err(ncret)
1736            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1737&                                        shuffle=0,     &
1738&                                        deflate=1,     &
1739&                                        deflate_level=DEF_LEVEL)
1740            call handle_nf90_err(ncret)
1741            ncret = nf90_put_var(ncid, ncvarid, &
1742&                                diffkn(0:nxmaxn-1, 0:nymaxn-1, 1, cm_index, 1:maxnests))
1743            call handle_nf90_err(ncret)
1744
1745            dim4dids = (/nxmaxn_dimid, nymaxn_dimid, maxspec_dimid, maxnests_dimid/)
1746
1747
1748
1749            ncret = nf90_def_var(ncid, 'vdepn', NF90_FLOAT, &
1750&                                       dim4dids, ncvarid)
1751            call handle_nf90_err(ncret)
1752            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1753&                                        shuffle=0,     &
1754&                                        deflate=1,     &
1755&                                        deflate_level=DEF_LEVEL)
1756            call handle_nf90_err(ncret)
1757            ncret = nf90_put_var(ncid, ncvarid, &
1758&                                vdepn(0:nxmaxn-1, 0:nymaxn-1, 1:maxspec, cm_index, 1:maxnests))
1759            call handle_nf90_err(ncret)
1760
1761
1762
1763
1764            PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:))
1765            PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:))
1766            PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:))
[8413bc9]1767
1768
1769
1770
1771
[496c607]1772            ! Auxiliary variables for nests
1773            WRITE(iounit) xresoln(:)
1774            WRITE(iounit) yresoln(:)
1775            WRITE(iounit) xln(:)
1776            WRITE(iounit) yln(:)
1777            WRITE(iounit) xrn(:)
1778            WRITE(iounit) yrn(:)
1779
[ee13a7b]1780            dim1dids = (/zero_to_maxnests_dimid/)
1781
1782            ncret = nf90_def_var(ncid, 'xresoln', NF90_FLOAT, &
1783&                                       dim1dids, ncvarid)
1784            call handle_nf90_err(ncret)
1785            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1786&                                        shuffle=0,     &
1787&                                        deflate=1,     &
1788&                                        deflate_level=DEF_LEVEL)
1789            call handle_nf90_err(ncret)
1790            ncret = nf90_put_var(ncid, ncvarid, &
1791&                                xresoln(0:maxnests))
1792            call handle_nf90_err(ncret)
1793
1794            ncret = nf90_def_var(ncid, 'yresoln', NF90_FLOAT, &
1795&                                       dim1dids, ncvarid)
1796            call handle_nf90_err(ncret)
1797            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1798&                                        shuffle=0,     &
1799&                                        deflate=1,     &
1800&                                        deflate_level=DEF_LEVEL)
1801            call handle_nf90_err(ncret)
1802            ncret = nf90_put_var(ncid, ncvarid, &
1803&                                yresoln(0:maxnests))
1804            call handle_nf90_err(ncret)
1805
1806            dim1dids = (/maxnests_dimid/)
1807
1808            ncret = nf90_def_var(ncid, 'xln', NF90_FLOAT, &
1809&                                       dim1dids, ncvarid)
1810            call handle_nf90_err(ncret)
1811            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1812&                                        shuffle=0,     &
1813&                                        deflate=1,     &
1814&                                        deflate_level=DEF_LEVEL)
1815            call handle_nf90_err(ncret)
1816            ncret = nf90_put_var(ncid, ncvarid, &
1817&                                xln(1:maxnests))
1818            call handle_nf90_err(ncret)
1819
1820            ncret = nf90_def_var(ncid, 'yln', NF90_FLOAT, &
1821&                                       dim1dids, ncvarid)
1822            call handle_nf90_err(ncret)
1823            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1824&                                        shuffle=0,     &
1825&                                        deflate=1,     &
1826&                                        deflate_level=DEF_LEVEL)
1827            call handle_nf90_err(ncret)
1828            ncret = nf90_put_var(ncid, ncvarid, &
1829&                                yln(1:maxnests))
1830            call handle_nf90_err(ncret)
1831
1832            ncret = nf90_def_var(ncid, 'xrn', NF90_FLOAT, &
1833&                                       dim1dids, ncvarid)
1834            call handle_nf90_err(ncret)
1835            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1836&                                        shuffle=0,     &
1837&                                        deflate=1,     &
1838&                                        deflate_level=DEF_LEVEL)
1839            call handle_nf90_err(ncret)
1840            ncret = nf90_put_var(ncid, ncvarid, &
1841&                                xrn(1:maxnests))
1842            call handle_nf90_err(ncret)
1843
1844            ncret = nf90_def_var(ncid, 'yrn', NF90_FLOAT, &
1845&                                       dim1dids, ncvarid)
1846            call handle_nf90_err(ncret)
1847            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1848&                                        shuffle=0,     &
1849&                                        deflate=1,     &
1850&                                        deflate_level=DEF_LEVEL)
1851            call handle_nf90_err(ncret)
1852            ncret = nf90_put_var(ncid, ncvarid, &
1853&                                yrn(1:maxnests))
1854            call handle_nf90_err(ncret)
1855
1856            PRINT *, 'SUM(yresoln): ', SUM(yresoln)
1857            PRINT *, 'SUM(xrn): ', SUM(xrn)
1858
1859
1860
[496c607]1861            ! Variables for polar stereographic projection
1862            WRITE(iounit) xglobal, sglobal, nglobal
1863            WRITE(iounit) switchnorthg, switchsouthg
1864            WRITE(iounit) southpolemap(:)
1865            WRITE(iounit) northpolemap(:)
1866
[ee13a7b]1867
1868
1869            dim1dids = (/polemap_dimid/)
1870
1871            ncret = nf90_def_var(ncid, 'southpolemap', NF90_FLOAT, &
1872&                                       dim1dids, ncvarid)
1873            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1874&                                        shuffle=0,     &
1875&                                        deflate=1,     &
1876&                                        deflate_level=DEF_LEVEL)
1877            ncret = nf90_put_var(ncid, ncvarid, &
1878&                                southpolemap(:))
1879
1880            ncret = nf90_def_var(ncid, 'northpolemap', NF90_FLOAT, &
1881&                                       dim1dids, ncvarid)
1882            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1883&                                        shuffle=0,     &
1884&                                        deflate=1,     &
1885&                                        deflate_level=DEF_LEVEL)
1886            ncret = nf90_put_var(ncid, ncvarid, &
1887&                                northpolemap(:))
1888
1889
1890
[030e3c1]1891            ! xglobal, sglobal, nglobal are LOGICAL vars, and need to be converted
1892            ! to INTEGER for NetCDF storage
[ee13a7b]1893            ncret = nf90_def_var(ncid, 'xglobal', NF90_INT, ncvarid)
1894            call handle_nf90_err(ncret)
[030e3c1]1895            ncret = nf90_put_var(ncid, ncvarid, logical2integer(xglobal))
[ee13a7b]1896            call handle_nf90_err(ncret)
1897
1898            ncret = nf90_def_var(ncid, 'sglobal', NF90_INT, ncvarid)
1899            call handle_nf90_err(ncret)
[030e3c1]1900            ncret = nf90_put_var(ncid, ncvarid, logical2integer(sglobal))
[ee13a7b]1901            call handle_nf90_err(ncret)
1902
1903            ncret = nf90_def_var(ncid, 'nglobal', NF90_INT, ncvarid)
1904            call handle_nf90_err(ncret)
[030e3c1]1905            ncret = nf90_put_var(ncid, ncvarid, logical2integer(nglobal))
[ee13a7b]1906            call handle_nf90_err(ncret)
1907
1908            ncret = nf90_def_var(ncid, 'switchnorthg', NF90_FLOAT, ncvarid)
1909            call handle_nf90_err(ncret)
1910            ncret = nf90_put_var(ncid, ncvarid, switchnorthg)
1911            call handle_nf90_err(ncret)
1912
1913            ncret = nf90_def_var(ncid, 'switchsouthg', NF90_FLOAT, ncvarid)
1914            call handle_nf90_err(ncret)
1915            ncret = nf90_put_var(ncid, ncvarid, switchsouthg)
1916            call handle_nf90_err(ncret)
1917
1918
1919
1920            PRINT *, 'SUM(northpolemap): ', SUM(northpolemap)
1921            PRINT *, 'xglobal: ', xglobal
1922            PRINT *, 'sglobal: ', sglobal
1923            PRINT *, 'nglobal: ', nglobal
1924            PRINT *, 'switchsouthg: ', switchsouthg
1925
[496c607]1926            ! Variables declared in conv_mod (convection)
1927            WRITE(iounit) pconv(:)
1928            WRITE(iounit) phconv(:)
1929            WRITE(iounit) dpr(:)
1930            WRITE(iounit) pconv_hpa(:)
1931            WRITE(iounit) phconv_hpa(:)
1932            WRITE(iounit) ft(:)
1933            WRITE(iounit) fq(:)
1934            WRITE(iounit) fmass(:,:)
1935            WRITE(iounit) sub(:)
1936            WRITE(iounit) fmassfrac(:,:)
1937            WRITE(iounit) cbaseflux(:,:)
1938            WRITE(iounit) cbasefluxn(:,:,:)
1939            WRITE(iounit) tconv(:)
1940            WRITE(iounit) qconv(:)
1941            WRITE(iounit) qsconv(:)
1942            WRITE(iounit) psconv, tt2conv, td2conv
1943            WRITE(iounit) nconvlev, nconvtop
1944
[030e3c1]1945
1946            dim1dids = (/nconvlevmax_dimid/)
1947
1948            ncret = nf90_def_var(ncid, 'pconv', NF90_FLOAT, &
1949&                                       dim1dids, ncvarid)
1950            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1951&                                        shuffle=0,     &
1952&                                        deflate=1,     &
1953&                                        deflate_level=DEF_LEVEL)
1954            ncret = nf90_put_var(ncid, ncvarid, &
1955&                                pconv(:))
1956
1957            ncret = nf90_def_var(ncid, 'dpr', NF90_FLOAT, &
1958&                                       dim1dids, ncvarid)
1959            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1960&                                        shuffle=0,     &
1961&                                        deflate=1,     &
1962&                                        deflate_level=DEF_LEVEL)
1963            ncret = nf90_put_var(ncid, ncvarid, &
1964&                                dpr(:))
1965
1966            ncret = nf90_def_var(ncid, 'pconv_hpa', NF90_FLOAT, &
1967&                                       dim1dids, ncvarid)
1968            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1969&                                        shuffle=0,     &
1970&                                        deflate=1,     &
1971&                                        deflate_level=DEF_LEVEL)
1972            ncret = nf90_put_var(ncid, ncvarid, &
1973&                                pconv_hpa(:))
1974
1975            ncret = nf90_def_var(ncid, 'ft', NF90_FLOAT, &
1976&                                       dim1dids, ncvarid)
1977            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1978&                                        shuffle=0,     &
1979&                                        deflate=1,     &
1980&                                        deflate_level=DEF_LEVEL)
1981            ncret = nf90_put_var(ncid, ncvarid, &
1982&                                ft(:))
1983
1984            ncret = nf90_def_var(ncid, 'fq', NF90_FLOAT, &
1985&                                       dim1dids, ncvarid)
1986            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1987&                                        shuffle=0,     &
1988&                                        deflate=1,     &
1989&                                        deflate_level=DEF_LEVEL)
1990            ncret = nf90_put_var(ncid, ncvarid, &
1991&                                fq(:))
1992
1993            ncret = nf90_def_var(ncid, 'sub', NF90_FLOAT, &
1994&                                       dim1dids, ncvarid)
1995            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
1996&                                        shuffle=0,     &
1997&                                        deflate=1,     &
1998&                                        deflate_level=DEF_LEVEL)
1999            ncret = nf90_put_var(ncid, ncvarid, &
2000&                                sub(:))
2001
2002            dim1dids = (/na_dimid/)
2003
2004            ncret = nf90_def_var(ncid, 'phconv', NF90_FLOAT, &
2005&                                       dim1dids, ncvarid)
2006            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
2007&                                        shuffle=0,     &
2008&                                        deflate=1,     &
2009&                                        deflate_level=DEF_LEVEL)
2010            ncret = nf90_put_var(ncid, ncvarid, &
2011&                                phconv(:))
2012
2013            ncret = nf90_def_var(ncid, 'phconv_hpa', NF90_FLOAT, &
2014&                                       dim1dids, ncvarid)
2015            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
2016&                                        shuffle=0,     &
2017&                                        deflate=1,     &
2018&                                        deflate_level=DEF_LEVEL)
2019            ncret = nf90_put_var(ncid, ncvarid, &
2020&                                phconv_hpa(:))
2021
2022            ncret = nf90_def_var(ncid, 'tconv', NF90_FLOAT, &
2023&                                       dim1dids, ncvarid)
2024            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
2025&                                        shuffle=0,     &
2026&                                        deflate=1,     &
2027&                                        deflate_level=DEF_LEVEL)
2028            ncret = nf90_put_var(ncid, ncvarid, &
2029&                                tconv(:))
2030
2031            ncret = nf90_def_var(ncid, 'qconv', NF90_FLOAT, &
2032&                                       dim1dids, ncvarid)
2033            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
2034&                                        shuffle=0,     &
2035&                                        deflate=1,     &
2036&                                        deflate_level=DEF_LEVEL)
2037            ncret = nf90_put_var(ncid, ncvarid, &
2038&                                qconv(:))
2039
2040            ncret = nf90_def_var(ncid, 'qsconv', NF90_FLOAT, &
2041&                                       dim1dids, ncvarid)
2042            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
2043&                                        shuffle=0,     &
2044&                                        deflate=1,     &
2045&                                        deflate_level=DEF_LEVEL)
2046            ncret = nf90_put_var(ncid, ncvarid, &
2047&                                qsconv(:))
2048
2049            ! New dimensions
2050            dim2dids = (/nconvlevmax_dimid, nconvlevmax_dimid/)
2051
2052            ncret = nf90_def_var(ncid, 'fmass', NF90_FLOAT, &
2053&                                       dim2dids, ncvarid)
2054            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
2055&                                        shuffle=0,     &
2056&                                        deflate=1,     &
2057&                                        deflate_level=DEF_LEVEL)
2058            ncret = nf90_put_var(ncid, ncvarid, &
2059&                                fmass(:,:))
2060
2061            ncret = nf90_def_var(ncid, 'fmassfrac', NF90_FLOAT, &
2062&                                       dim2dids, ncvarid)
2063            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
2064&                                        shuffle=0,     &
2065&                                        deflate=1,     &
2066&                                        deflate_level=DEF_LEVEL)
2067            ncret = nf90_put_var(ncid, ncvarid, &
2068&                                fmassfrac(:,:))
2069
2070
2071            ! New dimensions
2072            dim2dids = (/nxmax_dimid, nymax_dimid/)
2073
2074            ncret = nf90_def_var(ncid, 'cbaseflux', NF90_FLOAT, &
2075&                                       dim2dids, ncvarid)
2076            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
2077&                                        shuffle=0,     &
2078&                                        deflate=1,     &
2079&                                        deflate_level=DEF_LEVEL)
2080            ncret = nf90_put_var(ncid, ncvarid, &
2081&                                cbaseflux(0:nxmax-1,0:nymax-1))
2082
2083            ! New dimensions
2084            dim3dids = (/nxmaxn_dimid, nymaxn_dimid, maxnests_dimid/)
2085
2086            ncret = nf90_def_var(ncid, 'cbasefluxn', NF90_FLOAT, &
2087&                                       dim3dids, ncvarid)
2088            ncret = nf90_def_var_deflate(ncid, ncvarid,   &
2089&                                        shuffle=0,     &
2090&                                        deflate=1,     &
2091&                                        deflate_level=DEF_LEVEL)
2092            ncret = nf90_put_var(ncid, ncvarid, &
2093&                                cbasefluxn(0:nxmaxn-1,0:nymaxn-1,1:maxnests))
2094
2095
2096            ! Scalars
2097            ncret = nf90_def_var(ncid, 'psconv', NF90_FLOAT, ncvarid)
2098            call handle_nf90_err(ncret)
2099            ncret = nf90_put_var(ncid, ncvarid, psconv)
2100            call handle_nf90_err(ncret)
2101
2102            ncret = nf90_def_var(ncid, 'tt2conv', NF90_FLOAT, ncvarid)
2103            call handle_nf90_err(ncret)
2104            ncret = nf90_put_var(ncid, ncvarid, tt2conv)
2105            call handle_nf90_err(ncret)
2106
2107            ncret = nf90_def_var(ncid, 'td2conv', NF90_FLOAT, ncvarid)
2108            call handle_nf90_err(ncret)
2109            ncret = nf90_put_var(ncid, ncvarid, td2conv)
2110            call handle_nf90_err(ncret)
2111
2112            ncret = nf90_def_var(ncid, 'nconvlev', NF90_INT, ncvarid)
2113            call handle_nf90_err(ncret)
2114            ncret = nf90_put_var(ncid, ncvarid, nconvlev)
2115            call handle_nf90_err(ncret)
2116
2117            ncret = nf90_def_var(ncid, 'nconvtop', NF90_INT, ncvarid)
2118            call handle_nf90_err(ncret)
2119            ncret = nf90_put_var(ncid, ncvarid, nconvtop)
2120            call handle_nf90_err(ncret)
2121
2122            PRINT *, 'SUM(pconv): ', SUM(pconv)
2123            PRINT *, 'SUM(qconv): ', SUM(qconv)
2124            PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac)
2125            PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn)
2126            PRINT *, 'tt2conv: ', tt2conv
2127            PRINT *, 'nconvlev: ', nconvlev
2128
2129
2130
[496c607]2131        ELSE IF (op == 'LOAD') THEN
2132
[5cef1eb]2133            ! Read the preprocessed format version string and insure it
2134            ! matches this version
2135            READ (iounit) temp_preproc_format_version_str
2136            PRINT *, 'Reading preprocessed file format version: ', &
2137&                    temp_preproc_format_version_str
2138
2139            IF (TRIM(temp_preproc_format_version_str) == &
2140&                                        TRIM(PREPROC_FORMAT_VERSION_STR)) THEN
2141                CONTINUE
2142            ELSE
[64c820a]2143                ! PRINT *, ''  GK: causes relocation truncated to fit: R_X86_64_32
[5cef1eb]2144                PRINT *, 'Inconsistent preprocessing format version'
2145                PRINT *, 'Expected Version: ', PREPROC_FORMAT_VERSION_STR
2146                PRINT *, 'Detected Version: ', temp_preproc_format_version_str
[64c820a]2147                ! PRINT *, ''
[5cef1eb]2148                STOP
2149            END IF
2150
[9cdf8bd]2151            ! Read the compiled max dimensions that were dumped from par_mod
2152            ! when creating the fp file, so that we can compare against
2153            ! current FLEXPART dimensions - they need to be the same, or else
2154            ! we abort.
2155            READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, &
2156&                         temp_nuvzmax, temp_nwzmax
2157
[b9970e3]2158            ! Get dimensions
2159            ncret = nf90_inq_dimid(ncid, 'nxmax', nxmax_dimid)
[8413bc9]2160            call handle_nf90_err(ncret)
[b9970e3]2161            ncret = nf90_inquire_dimension(ncid, nxmax_dimid, nxmax_dimname, &
2162&                                                temp_nxmax)
[8413bc9]2163            call handle_nf90_err(ncret)
[b9970e3]2164            PRINT *, 'temp_nxmax: ', temp_nxmax
2165
2166            ncret = nf90_inq_dimid(ncid, 'nymax', nymax_dimid)
[8413bc9]2167            call handle_nf90_err(ncret)
[b9970e3]2168            ncret = nf90_inquire_dimension(ncid, nymax_dimid, nymax_dimname, &
2169&                                                temp_nymax)
[8413bc9]2170            call handle_nf90_err(ncret)
[b9970e3]2171            PRINT *, 'temp_nymax: ', temp_nymax
2172
2173            ncret = nf90_inq_dimid(ncid, 'nzmax', nzmax_dimid)
[8413bc9]2174            call handle_nf90_err(ncret)
[b9970e3]2175            ncret = nf90_inquire_dimension(ncid, nzmax_dimid, nzmax_dimname, &
2176&                                                temp_nzmax)
[8413bc9]2177            call handle_nf90_err(ncret)
[b9970e3]2178            PRINT *, 'temp_nzmax: ', temp_nzmax
2179
2180            ncret = nf90_inq_dimid(ncid, 'nuvzmax', nuvzmax_dimid)
[8413bc9]2181            call handle_nf90_err(ncret)
[b9970e3]2182            ncret = nf90_inquire_dimension(ncid, nuvzmax_dimid, nuvzmax_dimname, &
2183&                                                temp_nuvzmax)
[8413bc9]2184            call handle_nf90_err(ncret)
[b9970e3]2185            PRINT *, 'temp_nuvzmax: ', temp_nuvzmax
2186
2187            ncret = nf90_inq_dimid(ncid, 'nwzmax', nwzmax_dimid)
[8413bc9]2188            call handle_nf90_err(ncret)
[b9970e3]2189            ncret = nf90_inquire_dimension(ncid, nwzmax_dimid, nwzmax_dimname, &
2190&                                                temp_nwzmax)
[8413bc9]2191            call handle_nf90_err(ncret)
[b9970e3]2192            PRINT *, 'temp_nwzmax: ', temp_nwzmax
2193
[8651603]2194            ncret = nf90_inq_dimid(ncid, 'numclass', numclass_dimid)
[8413bc9]2195            call handle_nf90_err(ncret)
[8651603]2196            ncret = nf90_inquire_dimension(ncid, numclass_dimid, numclass_dimname, &
2197&                                                temp_numclass)
[8413bc9]2198            call handle_nf90_err(ncret)
[8651603]2199            PRINT *, 'temp_numclass: ', temp_numclass
2200
2201            ncret = nf90_inq_dimid(ncid, 'maxspec', maxspec_dimid)
[8413bc9]2202            call handle_nf90_err(ncret)
[8651603]2203            ncret = nf90_inquire_dimension(ncid, maxspec_dimid, maxspec_dimname, &
2204&                                                temp_maxspec)
[8413bc9]2205            call handle_nf90_err(ncret)
[8651603]2206            PRINT *, 'temp_maxspec: ', temp_maxspec
2207
[b9970e3]2208
[9cdf8bd]2209
2210            IF ( (temp_nxmax == nxmax) .AND. (temp_nymax == nymax) .AND. &
2211&                   (temp_nzmax == nzmax) .AND. &
2212&                   (temp_nuvzmax == nuvzmax) .AND. &
[8651603]2213&                   (temp_nwzmax == nwzmax) .AND. &
2214&                   (temp_numclass == numclass) .AND. &
2215&                   (temp_maxspec == maxspec) ) THEN
[9cdf8bd]2216                CONTINUE
2217            ELSE
2218                PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!'
[64c820a]2219                ! PRINT *, ''
[9cdf8bd]2220                PRINT *, '                  FP file     Compiled FP'
2221                PRINT *, 'nxmax:     ', temp_nxmax, '    ', nxmax
2222                PRINT *, 'nymax:     ', temp_nymax, '    ', nymax
2223                PRINT *, 'nzmax:     ', temp_nzmax, '    ', nzmax
2224                PRINT *, 'nuvzmax:     ', temp_nuvzmax, '    ', nuvzmax
[8651603]2225                PRINT *, 'nwzmax:     ', temp_nwzmax, '    ', nwzmax
2226                PRINT *, 'numclass:     ', temp_numclass, '    ', numclass
2227                PRINT *, 'maxspec:     ', temp_maxspec, '    ', maxspec
[64c820a]2228                ! PRINT *, ''
[9cdf8bd]2229                STOP
2230            END IF
2231
2232
[41a2981]2233
2234
[496c607]2235            ! Scalar values
2236            READ(iounit) nx, ny, nxmin1, nymin1, nxfield
2237            READ(iounit) nuvz, nwz, nz, nmixz, nlev_ec
2238            READ(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst
2239
[929ae37]2240
2241
2242            ! Get the varid , then read into scalar variable
2243            ncret = nf90_inq_varid(ncid, 'nx', ncvarid)
[8413bc9]2244            call handle_nf90_err(ncret)
[929ae37]2245            ncret = nf90_get_var(ncid, ncvarid, nx)
[8413bc9]2246            call handle_nf90_err(ncret)
[929ae37]2247
2248            ncret = nf90_inq_varid(ncid, 'ny', ncvarid)
[8413bc9]2249            call handle_nf90_err(ncret)
[929ae37]2250            ncret = nf90_get_var(ncid, ncvarid, ny)
[8413bc9]2251            call handle_nf90_err(ncret)
[929ae37]2252
2253            ncret = nf90_inq_varid(ncid, 'nxmin1', ncvarid)
[8413bc9]2254            call handle_nf90_err(ncret)
[929ae37]2255            ncret = nf90_get_var(ncid, ncvarid, nxmin1)
[8413bc9]2256            call handle_nf90_err(ncret)
[929ae37]2257
2258            ncret = nf90_inq_varid(ncid, 'nymin1', ncvarid)
[8413bc9]2259            call handle_nf90_err(ncret)
[929ae37]2260            ncret = nf90_get_var(ncid, ncvarid, nymin1)
[8413bc9]2261            call handle_nf90_err(ncret)
[929ae37]2262
2263            ncret = nf90_inq_varid(ncid, 'nxfield', ncvarid)
[8413bc9]2264            call handle_nf90_err(ncret)
[929ae37]2265            ncret = nf90_get_var(ncid, ncvarid, nxfield)
[8413bc9]2266            call handle_nf90_err(ncret)
[929ae37]2267
2268            ncret = nf90_inq_varid(ncid, 'nuvz', ncvarid)
[8413bc9]2269            call handle_nf90_err(ncret)
[929ae37]2270            ncret = nf90_get_var(ncid, ncvarid, nuvz)
[8413bc9]2271            call handle_nf90_err(ncret)
[929ae37]2272
2273            ncret = nf90_inq_varid(ncid, 'nwz', ncvarid)
[8413bc9]2274            call handle_nf90_err(ncret)
[929ae37]2275            ncret = nf90_get_var(ncid, ncvarid, nwz)
[8413bc9]2276            call handle_nf90_err(ncret)
[929ae37]2277
2278            ncret = nf90_inq_varid(ncid, 'nz', ncvarid)
[8413bc9]2279            call handle_nf90_err(ncret)
[929ae37]2280            ncret = nf90_get_var(ncid, ncvarid, nz)
[8413bc9]2281            call handle_nf90_err(ncret)
[929ae37]2282
2283            ncret = nf90_inq_varid(ncid, 'nmixz', ncvarid)
[8413bc9]2284            call handle_nf90_err(ncret)
[929ae37]2285            ncret = nf90_get_var(ncid, ncvarid, nmixz)
[8413bc9]2286            call handle_nf90_err(ncret)
[929ae37]2287
2288            ncret = nf90_inq_varid(ncid, 'nlev_ec', ncvarid)
[8413bc9]2289            call handle_nf90_err(ncret)
[929ae37]2290            ncret = nf90_get_var(ncid, ncvarid, nlev_ec)
[8413bc9]2291            call handle_nf90_err(ncret)
[929ae37]2292
2293            ncret = nf90_inq_varid(ncid, 'dx', ncvarid)
[8413bc9]2294            call handle_nf90_err(ncret)
[929ae37]2295            ncret = nf90_get_var(ncid, ncvarid, dx)
[8413bc9]2296            call handle_nf90_err(ncret)
[929ae37]2297
2298            ncret = nf90_inq_varid(ncid, 'dy', ncvarid)
[8413bc9]2299            call handle_nf90_err(ncret)
[929ae37]2300            ncret = nf90_get_var(ncid, ncvarid, dy)
[8413bc9]2301            call handle_nf90_err(ncret)
[929ae37]2302
2303            ncret = nf90_inq_varid(ncid, 'xlon0', ncvarid)
[8413bc9]2304            call handle_nf90_err(ncret)
[929ae37]2305            ncret = nf90_get_var(ncid, ncvarid, xlon0)
[8413bc9]2306            call handle_nf90_err(ncret)
[929ae37]2307
2308            ncret = nf90_inq_varid(ncid, 'ylat0', ncvarid)
[8413bc9]2309            call handle_nf90_err(ncret)
[929ae37]2310            ncret = nf90_get_var(ncid, ncvarid, ylat0)
[8413bc9]2311            call handle_nf90_err(ncret)
[929ae37]2312
2313            ncret = nf90_inq_varid(ncid, 'dxconst', ncvarid)
[8413bc9]2314            call handle_nf90_err(ncret)
[929ae37]2315            ncret = nf90_get_var(ncid, ncvarid, dxconst)
[8413bc9]2316            call handle_nf90_err(ncret)
[929ae37]2317
2318            ncret = nf90_inq_varid(ncid, 'dyconst', ncvarid)
[8413bc9]2319            call handle_nf90_err(ncret)
[929ae37]2320            ncret = nf90_get_var(ncid, ncvarid, dyconst)
[8413bc9]2321            call handle_nf90_err(ncret)
[929ae37]2322
2323
2324
2325
2326
2327
[496c607]2328            ! Fixed fields, static in time
2329            READ(iounit) oro, excessoro, lsm, xlanduse, height
2330
[70ecaa0]2331            ncret = nf90_inq_varid(ncid, 'oro', ncvarid)
[8413bc9]2332            call handle_nf90_err(ncret)
[70ecaa0]2333            ncret = nf90_get_var(ncid, ncvarid, oro(0:nxmax-1,0:nymax-1))
[8413bc9]2334            call handle_nf90_err(ncret)
[70ecaa0]2335
2336            ncret = nf90_inq_varid(ncid, 'excessoro', ncvarid)
[8413bc9]2337            call handle_nf90_err(ncret)
[70ecaa0]2338            ncret = nf90_get_var(ncid, ncvarid, excessoro(0:nxmax-1,0:nymax-1))
[8413bc9]2339            call handle_nf90_err(ncret)
[70ecaa0]2340
2341            ncret = nf90_inq_varid(ncid, 'lsm', ncvarid)
[8413bc9]2342            call handle_nf90_err(ncret)
[70ecaa0]2343            ncret = nf90_get_var(ncid, ncvarid, lsm(0:nxmax-1,0:nymax-1))
[8413bc9]2344            call handle_nf90_err(ncret)
[70ecaa0]2345
2346            ncret = nf90_inq_varid(ncid, 'xlanduse', ncvarid)
[8413bc9]2347            call handle_nf90_err(ncret)
[70ecaa0]2348            ncret = nf90_get_var(ncid, ncvarid, xlanduse(0:nxmax-1,0:nymax-1, 1:numclass))
[8413bc9]2349            call handle_nf90_err(ncret)
[70ecaa0]2350
2351            ncret = nf90_inq_varid(ncid, 'height', ncvarid)
[8413bc9]2352            call handle_nf90_err(ncret)
[70ecaa0]2353            ncret = nf90_get_var(ncid, ncvarid, height(1:nzmax))
[8413bc9]2354            call handle_nf90_err(ncret)
[70ecaa0]2355
2356
2357
2358
[496c607]2359            ! 3d fields
2360            READ(iounit) uu(:,:,:,cm_index)
2361            READ(iounit) vv(:,:,:,cm_index)
2362            READ(iounit) uupol(:,:,:,cm_index)
2363            READ(iounit) vvpol(:,:,:,cm_index)
2364            READ(iounit) ww(:,:,:,cm_index)
2365            READ(iounit) tt(:,:,:,cm_index)
2366            READ(iounit) qv(:,:,:,cm_index)
2367            READ(iounit) pv(:,:,:,cm_index)
2368            READ(iounit) rho(:,:,:,cm_index)
2369            READ(iounit) drhodz(:,:,:,cm_index)
2370            READ(iounit) tth(:,:,:,cm_index)
2371            READ(iounit) qvh(:,:,:,cm_index)
2372            READ(iounit) pplev(:,:,:,cm_index)
2373            READ(iounit) clouds(:,:,:,cm_index)
2374            READ(iounit) cloudsh(:,:,cm_index)
2375
[929ae37]2376
2377
2378
2379            ! Get the varid and read the variable into the array
2380            ncret = nf90_inq_varid(ncid, 'uu', ncvarid)
[8413bc9]2381            call handle_nf90_err(ncret)
[70ecaa0]2382            ncret = nf90_get_var(ncid, ncvarid, uu(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2383            call handle_nf90_err(ncret)
[929ae37]2384
2385            ncret = nf90_inq_varid(ncid, 'vv', ncvarid)
[8413bc9]2386            call handle_nf90_err(ncret)
[70ecaa0]2387            ncret = nf90_get_var(ncid, ncvarid, vv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2388            call handle_nf90_err(ncret)
[929ae37]2389
2390            ncret = nf90_inq_varid(ncid, 'uupol', ncvarid)
[8413bc9]2391            call handle_nf90_err(ncret)
[70ecaa0]2392            ncret = nf90_get_var(ncid, ncvarid, uupol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2393            call handle_nf90_err(ncret)
[929ae37]2394
2395            ncret = nf90_inq_varid(ncid, 'vvpol', ncvarid)
[8413bc9]2396            call handle_nf90_err(ncret)
[70ecaa0]2397            ncret = nf90_get_var(ncid, ncvarid, vvpol(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2398            call handle_nf90_err(ncret)
[929ae37]2399
2400            ncret = nf90_inq_varid(ncid, 'ww', ncvarid)
[8413bc9]2401            call handle_nf90_err(ncret)
[70ecaa0]2402            ncret = nf90_get_var(ncid, ncvarid, ww(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2403            call handle_nf90_err(ncret)
[929ae37]2404
2405            ncret = nf90_inq_varid(ncid, 'tt', ncvarid)
[8413bc9]2406            call handle_nf90_err(ncret)
[70ecaa0]2407            ncret = nf90_get_var(ncid, ncvarid, tt(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2408            call handle_nf90_err(ncret)
[929ae37]2409
2410            ncret = nf90_inq_varid(ncid, 'qv', ncvarid)
[8413bc9]2411            call handle_nf90_err(ncret)
[70ecaa0]2412            ncret = nf90_get_var(ncid, ncvarid, qv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2413            call handle_nf90_err(ncret)
[929ae37]2414
2415            ncret = nf90_inq_varid(ncid, 'pv', ncvarid)
[8413bc9]2416            call handle_nf90_err(ncret)
[70ecaa0]2417            ncret = nf90_get_var(ncid, ncvarid, pv(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2418            call handle_nf90_err(ncret)
[929ae37]2419
2420            ncret = nf90_inq_varid(ncid, 'rho', ncvarid)
[8413bc9]2421            call handle_nf90_err(ncret)
[70ecaa0]2422            ncret = nf90_get_var(ncid, ncvarid, rho(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2423            call handle_nf90_err(ncret)
[929ae37]2424
2425            ncret = nf90_inq_varid(ncid, 'drhodz', ncvarid)
[8413bc9]2426            call handle_nf90_err(ncret)
[70ecaa0]2427            ncret = nf90_get_var(ncid, ncvarid, drhodz(0:nxmax-1,0:nymax-1,1:nzmax,cm_index))
[8413bc9]2428            call handle_nf90_err(ncret)
[70ecaa0]2429
2430            ncret = nf90_inq_varid(ncid, 'clouds', ncvarid)
[8413bc9]2431            call handle_nf90_err(ncret)
[70ecaa0]2432            ncret = nf90_get_var(ncid, ncvarid, clouds(0:nxmax-1,0:nzmax-1,1:nzmax,cm_index))
[8413bc9]2433            call handle_nf90_err(ncret)
[929ae37]2434
2435            ncret = nf90_inq_varid(ncid, 'tth', ncvarid)
[8413bc9]2436            call handle_nf90_err(ncret)
[70ecaa0]2437            ncret = nf90_get_var(ncid, ncvarid, tth(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index))
[8413bc9]2438            call handle_nf90_err(ncret)
[929ae37]2439
2440            ncret = nf90_inq_varid(ncid, 'qvh', ncvarid)
[8413bc9]2441            call handle_nf90_err(ncret)
[70ecaa0]2442            ncret = nf90_get_var(ncid, ncvarid, qvh(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index))
[8413bc9]2443            call handle_nf90_err(ncret)
[929ae37]2444
2445            ncret = nf90_inq_varid(ncid, 'pplev', ncvarid)
[8413bc9]2446            call handle_nf90_err(ncret)
[70ecaa0]2447            ncret = nf90_get_var(ncid, ncvarid, pplev(0:nxmax-1,0:nymax-1,1:nuvzmax,cm_index))
[8413bc9]2448            call handle_nf90_err(ncret)
[70ecaa0]2449
2450            ncret = nf90_inq_varid(ncid, 'cloudsh', ncvarid)
[8413bc9]2451            call handle_nf90_err(ncret)
[70ecaa0]2452            ncret = nf90_get_var(ncid, ncvarid, cloudsh(0:nxmax-1,0:nymax-1,cm_index))
[8413bc9]2453            call handle_nf90_err(ncret)
[70ecaa0]2454
2455
2456
[929ae37]2457
[4f17d14]2458            PRINT *, 'SUM(tt(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', &
2459&                                        SUM(tt(0:nxmax-1,0:nymax-1,1:nzmax, cm_index))
[929ae37]2460
2461
[70ecaa0]2462            PRINT *, 'SUM(clouds(0:nxmax-1, 0:nymax-1, 1:nzmax, cm_index)): ', &
2463&                                        SUM(clouds(0:nxmax-1,0:nymax-1,1:nzmax, cm_index))
2464
[929ae37]2465
2466
[496c607]2467            ! 2d fields
2468            READ(iounit) ps(:,:,:,cm_index)
2469            READ(iounit) sd(:,:,:,cm_index)
2470            READ(iounit) msl(:,:,:,cm_index)
2471            READ(iounit) tcc(:,:,:,cm_index)
2472            READ(iounit) u10(:,:,:,cm_index)
2473            READ(iounit) v10(:,:,:,cm_index)
2474            READ(iounit) tt2(:,:,:,cm_index)
2475            READ(iounit) td2(:,:,:,cm_index)
2476            READ(iounit) lsprec(:,:,:,cm_index)
2477            READ(iounit) convprec(:,:,:,cm_index)
2478            READ(iounit) sshf(:,:,:,cm_index)
2479            READ(iounit) ssr(:,:,:,cm_index)
2480            READ(iounit) surfstr(:,:,:,cm_index)
2481            READ(iounit) ustar(:,:,:,cm_index)
2482            READ(iounit) wstar(:,:,:,cm_index)
2483            READ(iounit) hmix(:,:,:,cm_index)
2484            READ(iounit) tropopause(:,:,:,cm_index)
2485            READ(iounit) oli(:,:,:,cm_index)
2486            READ(iounit) diffk(:,:,:,cm_index)
2487            READ(iounit) vdep(:,:,:,cm_index)
2488
[d2d8a96]2489            ! Get the varid and read the variable into the array
2490            ncret = nf90_inq_varid(ncid, 'ps', ncvarid)
[8413bc9]2491            call handle_nf90_err(ncret)
[d2d8a96]2492            ncret = nf90_get_var(ncid, ncvarid, ps(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2493            call handle_nf90_err(ncret)
[d2d8a96]2494
2495            ncret = nf90_inq_varid(ncid, 'sd', ncvarid)
[8413bc9]2496            call handle_nf90_err(ncret)
[d2d8a96]2497            ncret = nf90_get_var(ncid, ncvarid, sd(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2498            call handle_nf90_err(ncret)
[d2d8a96]2499
2500            ncret = nf90_inq_varid(ncid, 'msl', ncvarid)
[8413bc9]2501            call handle_nf90_err(ncret)
[d2d8a96]2502            ncret = nf90_get_var(ncid, ncvarid, msl(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2503            call handle_nf90_err(ncret)
[d2d8a96]2504
2505            ncret = nf90_inq_varid(ncid, 'tcc', ncvarid)
[8413bc9]2506            call handle_nf90_err(ncret)
[d2d8a96]2507            ncret = nf90_get_var(ncid, ncvarid, tcc(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2508            call handle_nf90_err(ncret)
[d2d8a96]2509
2510            ncret = nf90_inq_varid(ncid, 'u10', ncvarid)
[8413bc9]2511            call handle_nf90_err(ncret)
[d2d8a96]2512            ncret = nf90_get_var(ncid, ncvarid, u10(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2513            call handle_nf90_err(ncret)
[d2d8a96]2514
2515            ncret = nf90_inq_varid(ncid, 'v10', ncvarid)
[8413bc9]2516            call handle_nf90_err(ncret)
[d2d8a96]2517            ncret = nf90_get_var(ncid, ncvarid, v10(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2518            call handle_nf90_err(ncret)
[d2d8a96]2519
2520            ncret = nf90_inq_varid(ncid, 'tt2', ncvarid)
[8413bc9]2521            call handle_nf90_err(ncret)
[d2d8a96]2522            ncret = nf90_get_var(ncid, ncvarid, tt2(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2523            call handle_nf90_err(ncret)
[d2d8a96]2524
2525            ncret = nf90_inq_varid(ncid, 'td2', ncvarid)
[8413bc9]2526            call handle_nf90_err(ncret)
[d2d8a96]2527            ncret = nf90_get_var(ncid, ncvarid, td2(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2528            call handle_nf90_err(ncret)
[d2d8a96]2529
2530            ncret = nf90_inq_varid(ncid, 'lsprec', ncvarid)
[8413bc9]2531            call handle_nf90_err(ncret)
[d2d8a96]2532            ncret = nf90_get_var(ncid, ncvarid, lsprec(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2533            call handle_nf90_err(ncret)
[d2d8a96]2534
2535            ncret = nf90_inq_varid(ncid, 'convprec', ncvarid)
[8413bc9]2536            call handle_nf90_err(ncret)
[d2d8a96]2537            ncret = nf90_get_var(ncid, ncvarid, convprec(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2538            call handle_nf90_err(ncret)
[d2d8a96]2539
2540            ncret = nf90_inq_varid(ncid, 'sshf', ncvarid)
[8413bc9]2541            call handle_nf90_err(ncret)
[d2d8a96]2542            ncret = nf90_get_var(ncid, ncvarid, sshf(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2543            call handle_nf90_err(ncret)
[d2d8a96]2544
2545            ncret = nf90_inq_varid(ncid, 'ssr', ncvarid)
[8413bc9]2546            call handle_nf90_err(ncret)
[d2d8a96]2547            ncret = nf90_get_var(ncid, ncvarid, ssr(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2548            call handle_nf90_err(ncret)
[d2d8a96]2549
2550            ncret = nf90_inq_varid(ncid, 'surfstr', ncvarid)
[8413bc9]2551            call handle_nf90_err(ncret)
[d2d8a96]2552            ncret = nf90_get_var(ncid, ncvarid, surfstr(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2553            call handle_nf90_err(ncret)
[d2d8a96]2554
2555            ncret = nf90_inq_varid(ncid, 'ustar', ncvarid)
[8413bc9]2556            call handle_nf90_err(ncret)
[d2d8a96]2557            ncret = nf90_get_var(ncid, ncvarid, ustar(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2558            call handle_nf90_err(ncret)
[d2d8a96]2559
2560            ncret = nf90_inq_varid(ncid, 'wstar', ncvarid)
[8413bc9]2561            call handle_nf90_err(ncret)
[d2d8a96]2562            ncret = nf90_get_var(ncid, ncvarid, wstar(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2563            call handle_nf90_err(ncret)
[d2d8a96]2564
2565            ncret = nf90_inq_varid(ncid, 'hmix', ncvarid)
[8413bc9]2566            call handle_nf90_err(ncret)
[d2d8a96]2567            ncret = nf90_get_var(ncid, ncvarid, hmix(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2568            call handle_nf90_err(ncret)
[d2d8a96]2569
2570            ncret = nf90_inq_varid(ncid, 'tropopause', ncvarid)
[8413bc9]2571            call handle_nf90_err(ncret)
[d2d8a96]2572            ncret = nf90_get_var(ncid, ncvarid, tropopause(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2573            call handle_nf90_err(ncret)
[d2d8a96]2574
2575            ncret = nf90_inq_varid(ncid, 'oli', ncvarid)
[8413bc9]2576            call handle_nf90_err(ncret)
[d2d8a96]2577            ncret = nf90_get_var(ncid, ncvarid, oli(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2578            call handle_nf90_err(ncret)
[d2d8a96]2579
2580            ncret = nf90_inq_varid(ncid, 'diffk', ncvarid)
[8413bc9]2581            call handle_nf90_err(ncret)
[d2d8a96]2582            ncret = nf90_get_var(ncid, ncvarid, diffk(0:nxmax-1,0:nymax-1,1,cm_index))
[8413bc9]2583            call handle_nf90_err(ncret)
[d2d8a96]2584
2585
2586
2587
2588            PRINT *, 'SUM(ps(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', &
2589&                                        SUM(ps(0:nxmax-1,0:nymax-1,1, cm_index))
2590
2591            PRINT *, 'SUM(wstar(0:nxmax-1, 0:nymax-1, 1, cm_index)): ', &
2592&                                        SUM(wstar(0:nxmax-1,0:nymax-1,1, cm_index))
2593
2594
[1d9681b]2595            ncret = nf90_inq_varid(ncid, 'vdep', ncvarid)
[8413bc9]2596            call handle_nf90_err(ncret)
[1d9681b]2597            ncret = nf90_get_var(ncid, ncvarid, vdep(0:nxmax-1,0:nymax-1,1:maxspec, cm_index))
[8413bc9]2598            call handle_nf90_err(ncret)
[1d9681b]2599
[d2d8a96]2600
2601
2602
2603
[496c607]2604            ! 1d fields
2605            READ(iounit) z0(:)
2606            READ(iounit) akm(:)
2607            READ(iounit) bkm(:)
2608            READ(iounit) akz(:)
2609            READ(iounit) bkz(:)
2610            READ(iounit) aknew(:)
2611            READ(iounit) bknew(:)
2612
2613
[1d9681b]2614            ncret = nf90_inq_varid(ncid, 'z0', ncvarid)
[8413bc9]2615            call handle_nf90_err(ncret)
[1d9681b]2616            ncret = nf90_get_var(ncid, ncvarid, z0(1:numclass))
[8413bc9]2617            call handle_nf90_err(ncret)
[1d9681b]2618
2619            ncret = nf90_inq_varid(ncid, 'akm', ncvarid)
[8413bc9]2620            call handle_nf90_err(ncret)
[1d9681b]2621            ncret = nf90_get_var(ncid, ncvarid, akm(1:nwzmax))
[8413bc9]2622            call handle_nf90_err(ncret)
[1d9681b]2623
2624            ncret = nf90_inq_varid(ncid, 'bkm', ncvarid)
[8413bc9]2625            call handle_nf90_err(ncret)
[1d9681b]2626            ncret = nf90_get_var(ncid, ncvarid, bkm(1:nwzmax))
[8413bc9]2627            call handle_nf90_err(ncret)
[1d9681b]2628
2629            ncret = nf90_inq_varid(ncid, 'akz', ncvarid)
[8413bc9]2630            call handle_nf90_err(ncret)
[1d9681b]2631            ncret = nf90_get_var(ncid, ncvarid, akz(1:nuvzmax))
[8413bc9]2632            call handle_nf90_err(ncret)
[1d9681b]2633
2634            ncret = nf90_inq_varid(ncid, 'bkz', ncvarid)
[8413bc9]2635            call handle_nf90_err(ncret)
[1d9681b]2636            ncret = nf90_get_var(ncid, ncvarid, bkz(1:nuvzmax))
[8413bc9]2637            call handle_nf90_err(ncret)
[1d9681b]2638
2639            ncret = nf90_inq_varid(ncid, 'aknew', ncvarid)
[8413bc9]2640            call handle_nf90_err(ncret)
[1d9681b]2641            ncret = nf90_get_var(ncid, ncvarid, aknew(1:nzmax))
[8413bc9]2642            call handle_nf90_err(ncret)
[1d9681b]2643
2644            ncret = nf90_inq_varid(ncid, 'bknew', ncvarid)
[8413bc9]2645            call handle_nf90_err(ncret)
[1d9681b]2646            ncret = nf90_get_var(ncid, ncvarid, bknew(1:nzmax))
[8413bc9]2647            call handle_nf90_err(ncret)
[1d9681b]2648
2649
2650
2651            PRINT *, 'SUM(bknew(1:nzmax)): ', &
2652&                                        SUM(bknew(1:nzmax))
2653
2654
2655
2656
[41a2981]2657            ! Now the nested input grid variables
2658            ! Get the compiled values that were written into the FP file, and
2659            ! make sure they are equal to the current compiled values, to make
2660            ! sure we are working with consistent arrays
2661            ncret = nf90_inq_dimid(ncid, 'maxnests', maxnests_dimid)
[8413bc9]2662            call handle_nf90_err(ncret)
[41a2981]2663            ncret = nf90_inquire_dimension(ncid, maxnests_dimid, maxnests_dimname, &
2664&                                                temp_maxnests)
[8413bc9]2665            call handle_nf90_err(ncret)
[41a2981]2666            PRINT *, 'temp_maxnests: ', temp_maxnests
2667
2668            ncret = nf90_inq_dimid(ncid, 'nxmaxn', nxmaxn_dimid)
[8413bc9]2669            call handle_nf90_err(ncret)
[41a2981]2670            ncret = nf90_inquire_dimension(ncid, nxmaxn_dimid, nxmaxn_dimname, &
2671&                                                temp_nxmaxn)
[8413bc9]2672            call handle_nf90_err(ncret)
[41a2981]2673            PRINT *, 'temp_nxmaxn: ', temp_nxmaxn
2674
2675            ncret = nf90_inq_dimid(ncid, 'nymaxn', nymaxn_dimid)
[8413bc9]2676            call handle_nf90_err(ncret)
[41a2981]2677            ncret = nf90_inquire_dimension(ncid, nymaxn_dimid, nymaxn_dimname, &
2678&                                                temp_nymaxn)
[8413bc9]2679            call handle_nf90_err(ncret)
[41a2981]2680            PRINT *, 'temp_nymaxn: ', temp_nymaxn
2681
[8651603]2682            ! Note that maxspec_dimid and numclass_dimid were checked above
2683
2684
2685
[41a2981]2686
2687            IF ( (temp_nxmaxn == nxmaxn) .AND. (temp_nymaxn == nymaxn) .AND. &
2688&                   (temp_maxnests == maxnests) ) THEN
2689                CONTINUE
2690            ELSE
2691                PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!'
2692                ! PRINT *, ''
2693                PRINT *, '                  FP file     Compiled FP'
2694                PRINT *, 'nxmaxn:     ', temp_nxmaxn, '    ', nxmaxn
2695                PRINT *, 'nymaxn:     ', temp_nymaxn, '    ', nymaxn
2696                PRINT *, 'maxnests:     ', temp_maxnests, '    ', maxnests
2697                STOP
2698            END IF
2699
2700
[1d9681b]2701
[496c607]2702            ! Nested, scalar values (for each nest)
2703            READ(iounit) nxn(:)
2704            READ(iounit) nyn(:)
2705            READ(iounit) dxn(:)
2706            READ(iounit) dyn(:)
2707            READ(iounit) xlon0n(:)
2708            READ(iounit) ylat0n(:)
2709
2710
[8651603]2711            ncret = nf90_inq_varid(ncid, 'nxn', ncvarid)
[8413bc9]2712            call handle_nf90_err(ncret)
[8651603]2713            ncret = nf90_get_var(ncid, ncvarid, nxn(1:maxnests))
[8413bc9]2714            call handle_nf90_err(ncret)
[8651603]2715
2716            ncret = nf90_inq_varid(ncid, 'nyn', ncvarid)
[8413bc9]2717            call handle_nf90_err(ncret)
[8651603]2718            ncret = nf90_get_var(ncid, ncvarid, nyn(1:maxnests))
[8413bc9]2719            call handle_nf90_err(ncret)
[8651603]2720
2721            ncret = nf90_inq_varid(ncid, 'dxn', ncvarid)
[8413bc9]2722            call handle_nf90_err(ncret)
[8651603]2723            ncret = nf90_get_var(ncid, ncvarid, dxn(1:maxnests))
[8413bc9]2724            call handle_nf90_err(ncret)
[8651603]2725
2726            ncret = nf90_inq_varid(ncid, 'dyn', ncvarid)
[8413bc9]2727            call handle_nf90_err(ncret)
[8651603]2728            ncret = nf90_get_var(ncid, ncvarid, dyn(1:maxnests))
[8413bc9]2729            call handle_nf90_err(ncret)
[8651603]2730
2731            ncret = nf90_inq_varid(ncid, 'xlon0n', ncvarid)
[8413bc9]2732            call handle_nf90_err(ncret)
[8651603]2733            ncret = nf90_get_var(ncid, ncvarid, xlon0n(1:maxnests))
[8413bc9]2734            call handle_nf90_err(ncret)
[8651603]2735
2736            ncret = nf90_inq_varid(ncid, 'ylat0n', ncvarid)
[8413bc9]2737            call handle_nf90_err(ncret)
[8651603]2738            ncret = nf90_get_var(ncid, ncvarid, ylat0n(1:maxnests))
[8413bc9]2739            call handle_nf90_err(ncret)
[8651603]2740
2741
2742
[496c607]2743            ! Nested fields, static over time
2744            READ(iounit) oron, excessoron, lsmn, xlandusen
2745
[8651603]2746            ncret = nf90_inq_varid(ncid, 'oron', ncvarid)
[8413bc9]2747            call handle_nf90_err(ncret)
[8651603]2748            ncret = nf90_get_var(ncid, ncvarid, oron(0:nxmaxn-1,0:nymaxn-1,1:maxnests))
[8413bc9]2749            call handle_nf90_err(ncret)
[8651603]2750
2751            ncret = nf90_inq_varid(ncid, 'excessoron', ncvarid)
[8413bc9]2752            call handle_nf90_err(ncret)
[8651603]2753            ncret = nf90_get_var(ncid, ncvarid, excessoron(0:nxmaxn-1,0:nymaxn-1,1:maxnests))
[8413bc9]2754            call handle_nf90_err(ncret)
[8651603]2755
2756            ncret = nf90_inq_varid(ncid, 'lsmn', ncvarid)
[8413bc9]2757            call handle_nf90_err(ncret)
[8651603]2758            ncret = nf90_get_var(ncid, ncvarid, lsmn(0:nxmaxn-1,0:nymaxn-1,1:maxnests))
[8413bc9]2759            call handle_nf90_err(ncret)
[8651603]2760
2761            ncret = nf90_inq_varid(ncid, 'xlandusen', ncvarid)
[8413bc9]2762            call handle_nf90_err(ncret)
[8651603]2763            ncret = nf90_get_var(ncid, ncvarid, xlandusen(0:nxmaxn-1,0:nymaxn-1,1:numclass,1:maxnests))
[8413bc9]2764            call handle_nf90_err(ncret)
[8651603]2765
2766
[8413bc9]2767            PRINT *, 'SUM(oron): ', SUM(oron)
[8651603]2768
2769
2770
2771
[496c607]2772            ! 3d nested fields
2773            READ(iounit) uun(:,:,:,cm_index,:)
2774            READ(iounit) vvn(:,:,:,cm_index,:)
2775            READ(iounit) wwn(:,:,:,cm_index,:)
2776            READ(iounit) ttn(:,:,:,cm_index,:)
2777            READ(iounit) qvn(:,:,:,cm_index,:)
2778            READ(iounit) pvn(:,:,:,cm_index,:)
2779            READ(iounit) cloudsn(:,:,:,cm_index,:)
2780            READ(iounit) cloudsnh(:,:,cm_index,:)
2781            READ(iounit) rhon(:,:,:,cm_index,:)
2782            READ(iounit) drhodzn(:,:,:,cm_index,:)
2783            READ(iounit) tthn(:,:,:,cm_index,:)
2784            READ(iounit) qvhn(:,:,:,cm_index,:)
2785
[8413bc9]2786
2787            ncret = nf90_inq_varid(ncid, 'uun', ncvarid)
2788            call handle_nf90_err(ncret)
2789            ncret = nf90_get_var(ncid, ncvarid, uun(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests))
2790            call handle_nf90_err(ncret)
2791
2792            ncret = nf90_inq_varid(ncid, 'vvn', ncvarid)
2793            call handle_nf90_err(ncret)
2794            ncret = nf90_get_var(ncid, ncvarid, vvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests))
2795            call handle_nf90_err(ncret)
2796
2797            ncret = nf90_inq_varid(ncid, 'wwn', ncvarid)
2798            call handle_nf90_err(ncret)
2799            ncret = nf90_get_var(ncid, ncvarid, wwn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests))
2800            call handle_nf90_err(ncret)
2801
2802            ncret = nf90_inq_varid(ncid, 'ttn', ncvarid)
2803            call handle_nf90_err(ncret)
2804            ncret = nf90_get_var(ncid, ncvarid, ttn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests))
2805            call handle_nf90_err(ncret)
2806
2807            ncret = nf90_inq_varid(ncid, 'qvn', ncvarid)
2808            call handle_nf90_err(ncret)
2809            ncret = nf90_get_var(ncid, ncvarid, qvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests))
2810            call handle_nf90_err(ncret)
2811
2812            ncret = nf90_inq_varid(ncid, 'pvn', ncvarid)
2813            call handle_nf90_err(ncret)
2814            ncret = nf90_get_var(ncid, ncvarid, pvn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests))
2815            call handle_nf90_err(ncret)
2816
2817            ncret = nf90_inq_varid(ncid, 'rhon', ncvarid)
2818            call handle_nf90_err(ncret)
2819            ncret = nf90_get_var(ncid, ncvarid, rhon(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests))
2820            call handle_nf90_err(ncret)
2821
2822            ncret = nf90_inq_varid(ncid, 'drhodzn', ncvarid)
2823            call handle_nf90_err(ncret)
2824            ncret = nf90_get_var(ncid, ncvarid, drhodzn(0:nxmaxn-1,0:nymaxn-1,1:nzmax,cm_index,1:maxnests))
2825            call handle_nf90_err(ncret)
2826
2827            ncret = nf90_inq_varid(ncid, 'tthn', ncvarid)
2828            call handle_nf90_err(ncret)
2829            ncret = nf90_get_var(ncid, ncvarid, tthn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests))
2830            call handle_nf90_err(ncret)
2831
2832            ncret = nf90_inq_varid(ncid, 'qvhn', ncvarid)
2833            call handle_nf90_err(ncret)
2834            ncret = nf90_get_var(ncid, ncvarid, qvhn(0:nxmaxn-1,0:nymaxn-1,1:nuvzmax,cm_index,1:maxnests))
2835            call handle_nf90_err(ncret)
2836
2837            ncret = nf90_inq_varid(ncid, 'cloudsn', ncvarid)
2838            call handle_nf90_err(ncret)
2839            ncret = nf90_get_var(ncid, ncvarid, cloudsn(0:nxmaxn-1,0:nymaxn-1,0:nzmax,cm_index,1:maxnests))
2840            call handle_nf90_err(ncret)
2841
2842            ncret = nf90_inq_varid(ncid, 'cloudsnh', ncvarid)
2843            call handle_nf90_err(ncret)
2844            ncret = nf90_get_var(ncid, ncvarid, cloudsnh(0:nxmaxn-1,0:nymaxn-1,cm_index,1:maxnests))
2845            call handle_nf90_err(ncret)
2846
2847
2848
2849
2850            PRINT *, 'SUM(uun): ', SUM(uun(:,:,:,cm_index,:))
2851            PRINT *, 'SUM(qvhn): ', SUM(qvhn(:,:,:,cm_index,:))
2852            PRINT *, 'SUM(cloudsn): ', SUM(cloudsn(:,:,:,cm_index,:))
2853
2854
2855
2856
[496c607]2857            ! 2d nested fields
2858            READ(iounit) psn(:,:,:,cm_index,:)
2859            READ(iounit) sdn(:,:,:,cm_index,:)
2860            READ(iounit) msln(:,:,:,cm_index,:)
2861            READ(iounit) tccn(:,:,:,cm_index,:)
2862            READ(iounit) u10n(:,:,:,cm_index,:)
2863            READ(iounit) v10n(:,:,:,cm_index,:)
2864            READ(iounit) tt2n(:,:,:,cm_index,:)
2865            READ(iounit) td2n(:,:,:,cm_index,:)
2866            READ(iounit) lsprecn(:,:,:,cm_index,:)
2867            READ(iounit) convprecn(:,:,:,cm_index,:)
2868            READ(iounit) sshfn(:,:,:,cm_index,:)
2869            READ(iounit) ssrn(:,:,:,cm_index,:)
2870            READ(iounit) surfstrn(:,:,:,cm_index,:)
2871            READ(iounit) ustarn(:,:,:,cm_index,:)
2872            READ(iounit) wstarn(:,:,:,cm_index,:)
2873            READ(iounit) hmixn(:,:,:,cm_index,:)
2874            READ(iounit) tropopausen(:,:,:,cm_index,:)
2875            READ(iounit) olin(:,:,:,cm_index,:)
2876            READ(iounit) diffkn(:,:,:,cm_index,:)
2877            READ(iounit) vdepn(:,:,:,cm_index,:)
2878
[8413bc9]2879            ncret = nf90_inq_varid(ncid, 'psn', ncvarid)
2880            call handle_nf90_err(ncret)
2881            ncret = nf90_get_var(ncid, ncvarid, psn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2882            call handle_nf90_err(ncret)
2883
[ee13a7b]2884            ncret = nf90_inq_varid(ncid, 'sdn', ncvarid)
2885            call handle_nf90_err(ncret)
2886            ncret = nf90_get_var(ncid, ncvarid, sdn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2887            call handle_nf90_err(ncret)
2888
2889            ncret = nf90_inq_varid(ncid, 'msln', ncvarid)
2890            call handle_nf90_err(ncret)
2891            ncret = nf90_get_var(ncid, ncvarid, msln(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2892            call handle_nf90_err(ncret)
2893
2894            ncret = nf90_inq_varid(ncid, 'tccn', ncvarid)
2895            call handle_nf90_err(ncret)
2896            ncret = nf90_get_var(ncid, ncvarid, tccn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2897            call handle_nf90_err(ncret)
2898
2899            ncret = nf90_inq_varid(ncid, 'u10n', ncvarid)
2900            call handle_nf90_err(ncret)
2901            ncret = nf90_get_var(ncid, ncvarid, u10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2902            call handle_nf90_err(ncret)
2903
2904            ncret = nf90_inq_varid(ncid, 'v10n', ncvarid)
2905            call handle_nf90_err(ncret)
2906            ncret = nf90_get_var(ncid, ncvarid, v10n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2907            call handle_nf90_err(ncret)
2908
2909            ncret = nf90_inq_varid(ncid, 'tt2n', ncvarid)
2910            call handle_nf90_err(ncret)
2911            ncret = nf90_get_var(ncid, ncvarid, tt2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2912            call handle_nf90_err(ncret)
2913
2914            ncret = nf90_inq_varid(ncid, 'td2n', ncvarid)
2915            call handle_nf90_err(ncret)
2916            ncret = nf90_get_var(ncid, ncvarid, td2n(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2917            call handle_nf90_err(ncret)
2918
2919            ncret = nf90_inq_varid(ncid, 'lsprecn', ncvarid)
2920            call handle_nf90_err(ncret)
2921            ncret = nf90_get_var(ncid, ncvarid, lsprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2922            call handle_nf90_err(ncret)
2923
2924            ncret = nf90_inq_varid(ncid, 'convprecn', ncvarid)
2925            call handle_nf90_err(ncret)
2926            ncret = nf90_get_var(ncid, ncvarid, convprecn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2927            call handle_nf90_err(ncret)
2928
2929            ncret = nf90_inq_varid(ncid, 'sshfn', ncvarid)
2930            call handle_nf90_err(ncret)
2931            ncret = nf90_get_var(ncid, ncvarid, sshfn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2932            call handle_nf90_err(ncret)
2933
2934            ncret = nf90_inq_varid(ncid, 'ssrn', ncvarid)
2935            call handle_nf90_err(ncret)
2936            ncret = nf90_get_var(ncid, ncvarid, ssrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2937            call handle_nf90_err(ncret)
2938
2939            ncret = nf90_inq_varid(ncid, 'surfstrn', ncvarid)
2940            call handle_nf90_err(ncret)
2941            ncret = nf90_get_var(ncid, ncvarid, surfstrn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2942            call handle_nf90_err(ncret)
2943
2944            ncret = nf90_inq_varid(ncid, 'ustarn', ncvarid)
2945            call handle_nf90_err(ncret)
2946            ncret = nf90_get_var(ncid, ncvarid, ustarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2947            call handle_nf90_err(ncret)
2948
2949            ncret = nf90_inq_varid(ncid, 'wstarn', ncvarid)
2950            call handle_nf90_err(ncret)
2951            ncret = nf90_get_var(ncid, ncvarid, wstarn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2952            call handle_nf90_err(ncret)
2953
2954            ncret = nf90_inq_varid(ncid, 'hmixn', ncvarid)
2955            call handle_nf90_err(ncret)
2956            ncret = nf90_get_var(ncid, ncvarid, hmixn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2957            call handle_nf90_err(ncret)
2958
2959            ncret = nf90_inq_varid(ncid, 'tropopausen', ncvarid)
2960            call handle_nf90_err(ncret)
2961            ncret = nf90_get_var(ncid, ncvarid, tropopausen(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2962            call handle_nf90_err(ncret)
2963
2964            ncret = nf90_inq_varid(ncid, 'olin', ncvarid)
2965            call handle_nf90_err(ncret)
2966            ncret = nf90_get_var(ncid, ncvarid, olin(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2967            call handle_nf90_err(ncret)
2968
2969            ncret = nf90_inq_varid(ncid, 'diffkn', ncvarid)
2970            call handle_nf90_err(ncret)
2971            ncret = nf90_get_var(ncid, ncvarid, diffkn(0:nxmaxn-1,0:nymaxn-1,1,cm_index,1:maxnests))
2972            call handle_nf90_err(ncret)
2973
2974            ncret = nf90_inq_varid(ncid, 'vdepn', ncvarid)
2975            call handle_nf90_err(ncret)
2976            ncret = nf90_get_var(ncid, ncvarid, vdepn(0:nxmaxn-1,0:nymaxn-1,1:maxspec,cm_index,1:maxnests))
2977            call handle_nf90_err(ncret)
2978
2979
[8413bc9]2980
2981
2982            PRINT *, 'SUM(psn): ', SUM(psn(:,:,:,cm_index,:))
[ee13a7b]2983            PRINT *, 'SUM(surfstrn): ', SUM(surfstrn(:,:,:,cm_index,:))
2984            PRINT *, 'SUM(vdepn): ', SUM(vdepn(:,:,:,cm_index,:))
[8413bc9]2985
2986
2987
[496c607]2988            ! Auxiliary variables for nests
2989            READ(iounit) xresoln(:)
2990            READ(iounit) yresoln(:)
2991            READ(iounit) xln(:)
2992            READ(iounit) yln(:)
2993            READ(iounit) xrn(:)
2994            READ(iounit) yrn(:)
2995
[ee13a7b]2996            ncret = nf90_inq_varid(ncid, 'xresoln', ncvarid)
2997            call handle_nf90_err(ncret)
2998            ncret = nf90_get_var(ncid, ncvarid, xresoln(0:maxnests))
2999            call handle_nf90_err(ncret)
3000
3001            ncret = nf90_inq_varid(ncid, 'yresoln', ncvarid)
3002            call handle_nf90_err(ncret)
3003            ncret = nf90_get_var(ncid, ncvarid, yresoln(0:maxnests))
3004            call handle_nf90_err(ncret)
3005
3006            ncret = nf90_inq_varid(ncid, 'xln', ncvarid)
3007            call handle_nf90_err(ncret)
3008            ncret = nf90_get_var(ncid, ncvarid, xln(1:maxnests))
3009            call handle_nf90_err(ncret)
3010
3011            ncret = nf90_inq_varid(ncid, 'yln', ncvarid)
3012            call handle_nf90_err(ncret)
3013            ncret = nf90_get_var(ncid, ncvarid, yln(1:maxnests))
3014            call handle_nf90_err(ncret)
3015
3016            ncret = nf90_inq_varid(ncid, 'xrn', ncvarid)
3017            call handle_nf90_err(ncret)
3018            ncret = nf90_get_var(ncid, ncvarid, xrn(1:maxnests))
3019            call handle_nf90_err(ncret)
3020
3021            ncret = nf90_inq_varid(ncid, 'yrn', ncvarid)
3022            call handle_nf90_err(ncret)
3023            ncret = nf90_get_var(ncid, ncvarid, yrn(1:maxnests))
3024            call handle_nf90_err(ncret)
3025
3026
3027
3028            PRINT *, 'SUM(yresoln): ', SUM(yresoln)
3029            PRINT *, 'SUM(xrn): ', SUM(xrn)
3030
3031
3032
[496c607]3033            ! Variables for polar stereographic projection
3034            READ(iounit) xglobal, sglobal, nglobal
3035            READ(iounit) switchnorthg, switchsouthg
3036            READ(iounit) southpolemap(:)
3037            READ(iounit) northpolemap(:)
3038
[ee13a7b]3039
3040            ncret = nf90_inq_varid(ncid, 'southpolemap', ncvarid)
3041            call handle_nf90_err(ncret)
3042            ncret = nf90_get_var(ncid, ncvarid, southpolemap(:))
3043            call handle_nf90_err(ncret)
3044
3045            ncret = nf90_inq_varid(ncid, 'northpolemap', ncvarid)
3046            call handle_nf90_err(ncret)
3047            ncret = nf90_get_var(ncid, ncvarid, northpolemap(:))
3048            call handle_nf90_err(ncret)
3049
[030e3c1]3050            ! xglobal, sglobal, nglobal are LOGICAL vars, and need to be converted
3051            ! to INTEGER for NetCDF storage
[ee13a7b]3052            ncret = nf90_inq_varid(ncid, 'xglobal', ncvarid)
3053            call handle_nf90_err(ncret)
[030e3c1]3054            ncret = nf90_get_var(ncid, ncvarid, temp_integer)
[ee13a7b]3055            call handle_nf90_err(ncret)
[030e3c1]3056            xglobal = integer2logical(temp_integer)
[ee13a7b]3057
3058            ncret = nf90_inq_varid(ncid, 'sglobal', ncvarid)
3059            call handle_nf90_err(ncret)
[030e3c1]3060            ncret = nf90_get_var(ncid, ncvarid, temp_integer)
[ee13a7b]3061            call handle_nf90_err(ncret)
[030e3c1]3062            sglobal = integer2logical(temp_integer)
[ee13a7b]3063
3064            ncret = nf90_inq_varid(ncid, 'nglobal', ncvarid)
3065            call handle_nf90_err(ncret)
[030e3c1]3066            ncret = nf90_get_var(ncid, ncvarid, temp_integer)
[ee13a7b]3067            call handle_nf90_err(ncret)
[030e3c1]3068            nglobal = integer2logical(temp_integer)
[ee13a7b]3069
3070            ncret = nf90_inq_varid(ncid, 'switchnorthg', ncvarid)
3071            call handle_nf90_err(ncret)
3072            ncret = nf90_get_var(ncid, ncvarid, switchnorthg)
3073            call handle_nf90_err(ncret)
3074
3075            ncret = nf90_inq_varid(ncid, 'switchsouthg', ncvarid)
3076            call handle_nf90_err(ncret)
3077            ncret = nf90_get_var(ncid, ncvarid, switchsouthg)
3078            call handle_nf90_err(ncret)
3079
3080
3081            PRINT *, 'SUM(northpolemap): ', SUM(northpolemap)
3082            PRINT *, 'xglobal: ', xglobal
3083            PRINT *, 'sglobal: ', sglobal
3084            PRINT *, 'nglobal: ', nglobal
3085            PRINT *, 'switchsouthg: ', switchsouthg
3086
3087
3088
3089
[496c607]3090            ! Variables declared in conv_mod (convection)
3091            READ(iounit) pconv(:)
3092            READ(iounit) phconv(:)
3093            READ(iounit) dpr(:)
3094            READ(iounit) pconv_hpa(:)
3095            READ(iounit) phconv_hpa(:)
3096            READ(iounit) ft(:)
3097            READ(iounit) fq(:)
3098            READ(iounit) fmass(:,:)
3099            READ(iounit) sub(:)
3100            READ(iounit) fmassfrac(:,:)
3101            READ(iounit) cbaseflux(:,:)
3102            READ(iounit) cbasefluxn(:,:,:)
3103            READ(iounit) tconv(:)
3104            READ(iounit) qconv(:)
3105            READ(iounit) qsconv(:)
3106            READ(iounit) psconv, tt2conv, td2conv
3107            READ(iounit) nconvlev, nconvtop
3108
[030e3c1]3109            ncret = nf90_inq_varid(ncid, 'pconv', ncvarid)
3110            call handle_nf90_err(ncret)
3111            ncret = nf90_get_var(ncid, ncvarid, pconv(:))
3112            call handle_nf90_err(ncret)
3113
3114            ncret = nf90_inq_varid(ncid, 'dpr', ncvarid)
3115            call handle_nf90_err(ncret)
3116            ncret = nf90_get_var(ncid, ncvarid, dpr(:))
3117            call handle_nf90_err(ncret)
3118
3119            ncret = nf90_inq_varid(ncid, 'pconv_hpa', ncvarid)
3120            call handle_nf90_err(ncret)
3121            ncret = nf90_get_var(ncid, ncvarid, pconv_hpa(:))
3122            call handle_nf90_err(ncret)
3123
3124            ncret = nf90_inq_varid(ncid, 'ft', ncvarid)
3125            call handle_nf90_err(ncret)
3126            ncret = nf90_get_var(ncid, ncvarid, ft(:))
3127            call handle_nf90_err(ncret)
3128
3129            ncret = nf90_inq_varid(ncid, 'fq', ncvarid)
3130            call handle_nf90_err(ncret)
3131            ncret = nf90_get_var(ncid, ncvarid, fq(:))
3132            call handle_nf90_err(ncret)
3133
3134            ncret = nf90_inq_varid(ncid, 'sub', ncvarid)
3135            call handle_nf90_err(ncret)
3136            ncret = nf90_get_var(ncid, ncvarid, sub(:))
3137            call handle_nf90_err(ncret)
3138
3139            ncret = nf90_inq_varid(ncid, 'phconv', ncvarid)
3140            call handle_nf90_err(ncret)
3141            ncret = nf90_get_var(ncid, ncvarid, phconv(:))
3142            call handle_nf90_err(ncret)
3143
3144            ncret = nf90_inq_varid(ncid, 'phconv_hpa', ncvarid)
3145            call handle_nf90_err(ncret)
3146            ncret = nf90_get_var(ncid, ncvarid, phconv_hpa(:))
3147            call handle_nf90_err(ncret)
3148
3149            ncret = nf90_inq_varid(ncid, 'tconv', ncvarid)
3150            call handle_nf90_err(ncret)
3151            ncret = nf90_get_var(ncid, ncvarid, tconv(:))
3152            call handle_nf90_err(ncret)
3153
3154            ncret = nf90_inq_varid(ncid, 'qconv', ncvarid)
3155            call handle_nf90_err(ncret)
3156            ncret = nf90_get_var(ncid, ncvarid, qconv(:))
3157            call handle_nf90_err(ncret)
3158
3159            ncret = nf90_inq_varid(ncid, 'qsconv', ncvarid)
3160            call handle_nf90_err(ncret)
3161            ncret = nf90_get_var(ncid, ncvarid, qsconv(:))
3162            call handle_nf90_err(ncret)
3163
3164            ncret = nf90_inq_varid(ncid, 'fmass', ncvarid)
3165            call handle_nf90_err(ncret)
3166            ncret = nf90_get_var(ncid, ncvarid, fmass(:,:))
3167            call handle_nf90_err(ncret)
3168
3169            ncret = nf90_inq_varid(ncid, 'fmassfrac', ncvarid)
3170            call handle_nf90_err(ncret)
3171            ncret = nf90_get_var(ncid, ncvarid, fmassfrac(:,:))
3172            call handle_nf90_err(ncret)
3173
3174            ncret = nf90_inq_varid(ncid, 'cbaseflux', ncvarid)
3175            call handle_nf90_err(ncret)
3176            ncret = nf90_get_var(ncid, ncvarid, cbaseflux(0:nxmax-1,0:nymax-1))
3177            call handle_nf90_err(ncret)
3178
3179            ncret = nf90_inq_varid(ncid, 'cbasefluxn', ncvarid)
3180            call handle_nf90_err(ncret)
3181            ncret = nf90_get_var(ncid, ncvarid, cbasefluxn(0:nxmaxn-1,0:nymaxn-1,1:maxnests))
3182            call handle_nf90_err(ncret)
3183
3184            ncret = nf90_inq_varid(ncid, 'psconv', ncvarid)
3185            call handle_nf90_err(ncret)
3186            ncret = nf90_get_var(ncid, ncvarid, psconv)
3187            call handle_nf90_err(ncret)
3188
3189            ncret = nf90_inq_varid(ncid, 'tt2conv', ncvarid)
3190            call handle_nf90_err(ncret)
3191            ncret = nf90_get_var(ncid, ncvarid, tt2conv)
3192            call handle_nf90_err(ncret)
3193
3194            ncret = nf90_inq_varid(ncid, 'td2conv', ncvarid)
3195            call handle_nf90_err(ncret)
3196            ncret = nf90_get_var(ncid, ncvarid, td2conv)
3197            call handle_nf90_err(ncret)
3198
3199            ncret = nf90_inq_varid(ncid, 'nconvlev', ncvarid)
3200            call handle_nf90_err(ncret)
3201            ncret = nf90_get_var(ncid, ncvarid, nconvlev)
3202            call handle_nf90_err(ncret)
3203
3204            ncret = nf90_inq_varid(ncid, 'nconvtop', ncvarid)
3205            call handle_nf90_err(ncret)
3206            ncret = nf90_get_var(ncid, ncvarid, nconvtop)
3207            call handle_nf90_err(ncret)
3208
3209
3210
3211
3212            PRINT *, 'SUM(pconv): ', SUM(pconv)
3213            PRINT *, 'SUM(qconv): ', SUM(qconv)
3214            PRINT *, 'SUM(fmassfrac): ', SUM(fmassfrac)
3215            PRINT *, 'SUM(cbasefluxn): ', SUM(cbasefluxn)
3216            PRINT *, 'tt2conv: ', tt2conv
3217            PRINT *, 'nconvlev: ', nconvlev
3218
3219
3220
3221
3222
3223
3224
3225
3226
[496c607]3227        ELSE
3228            STOP 'fpio(): Illegal operation'
3229           
3230        ENDIF
3231    END SUBROUTINE fpio
3232
3233    SUBROUTINE fpmetbinary_filetext(filename, cm_index)
3234
3235        ! This is a utility subroutine meant to be used for testing purposes.
3236        ! It facilitates the text output of variables read in from the
3237        ! specified .fp file.  This routine will easily cause the program
3238        ! to crash due memory allocation issues, particularly when you are
3239        ! trying to text print 3d arrays in a single formatted statetment.
3240       
3241        CHARACTER(LEN=*), INTENT(IN) :: filename
3242        INTEGER, INTENT(IN) :: cm_index           ! Index of last dimension in
3243                                                  ! most com_mod variables.
3244                                                  ! Should be 1 or 2
3245
3246        !OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', status='REPLACE', &
3247        !    form="formatted", access="stream")
3248        OPEN(IOUNIT_TEXTOUT, file=filename, action='WRITE', &
3249             form="formatted", access="APPEND")
3250
3251        WRITE(IOUNIT_TEXTOUT, *) 'oro: ', oro
3252        WRITE(IOUNIT_TEXTOUT, *) 'excessoro: ', excessoro
3253        WRITE(IOUNIT_TEXTOUT, *) 'lsm: ', lsm
3254        WRITE(IOUNIT_TEXTOUT, *) 'xlanduse: ', xlanduse
3255        WRITE(IOUNIT_TEXTOUT, *) 'height: ', height
3256
3257        WRITE(IOUNIT_TEXTOUT, *) 'uu: ', uu(:,:,:,cm_index)
3258        WRITE(IOUNIT_TEXTOUT, *) 'vv: ', vv(:,:,:,cm_index)
3259        WRITE(IOUNIT_TEXTOUT, *) 'uupol: ', uupol(:,:,:,cm_index)
3260        WRITE(IOUNIT_TEXTOUT, *) 'vvpol: ', vvpol(:,:,:,cm_index)
3261        WRITE(IOUNIT_TEXTOUT, *) 'ww: ', ww(:,:,:,cm_index)
3262        WRITE(IOUNIT_TEXTOUT, *) 'tt: ', tt(:,:,:,cm_index)
3263        WRITE(IOUNIT_TEXTOUT, *) 'qv: ', qv(:,:,:,cm_index)
3264        WRITE(IOUNIT_TEXTOUT, *) 'pv: ', pv(:,:,:,cm_index)
3265        WRITE(IOUNIT_TEXTOUT, *) 'rho: ', rho(:,:,:,cm_index)
3266        WRITE(IOUNIT_TEXTOUT, *) 'drhodz: ', drhodz(:,:,:,cm_index)
3267        WRITE(IOUNIT_TEXTOUT, *) 'tth: ', tth(:,:,:,cm_index)
3268        WRITE(IOUNIT_TEXTOUT, *) 'qvh: ', qvh(:,:,:,cm_index)
3269        WRITE(IOUNIT_TEXTOUT, *) 'pplev: ', pplev(:,:,:,cm_index)
3270        WRITE(IOUNIT_TEXTOUT, *) 'clouds: ', clouds(:,:,:,cm_index)
3271        WRITE(IOUNIT_TEXTOUT, *) 'cloudsh: ', cloudsh(:,:,cm_index)
3272
3273
3274
3275
3276        CLOSE(IOUNIT_TEXTOUT)
3277    END SUBROUTINE fpmetbinary_filetext
3278
[8413bc9]3279    subroutine handle_nf90_err(status)
3280
3281        ! Custom routine for checking NF90 error status
3282        ! and aborting if necessary
3283        use netcdf
3284        implicit none
3285        integer, intent (in) :: status
3286
3287        if (status /= nf90_noerr) then
3288            print *, trim(nf90_strerror(status))
3289            stop "Stopped..."
3290        endif
3291    end subroutine handle_nf90_err
3292
3293
[030e3c1]3294    INTEGER FUNCTION logical2integer(logical_value)
3295        IMPLICIT NONE
3296
3297        ! Auxiliary function to convert logical values to
3298        ! integers.  THIS DOES NO TYPE CHECKING!!!
3299
3300
3301        LOGICAL, INTENT(IN) :: logical_value
3302
3303        IF (logical_value .EQV. .TRUE.) THEN
3304            logical2integer = 1
3305        ELSE
3306            logical2integer = 0
3307        ENDIF
3308
3309        RETURN
3310
3311    END FUNCTION logical2integer
3312
3313
3314    LOGICAL FUNCTION integer2logical(integer_value)
3315        IMPLICIT NONE
3316
3317        ! Auxiliary function to convert integer values to
3318        ! logical.  THIS DOES NO TYPE CHECKING!!!
3319
3320
3321        INTEGER, INTENT(IN) :: integer_value
3322
3323        IF (integer_value .EQ. 0) THEN
3324            integer2logical = .FALSE.
3325        ELSE
3326            integer2logical = .TRUE.
3327        ENDIF
3328
3329        RETURN
3330
3331    END FUNCTION integer2logical
[8413bc9]3332
[496c607]3333
3334END MODULE fpmetbinary_mod
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG