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