Changeset 14056 for NEMO/trunk/src/OCE/OBS/obs_write.F90
- Timestamp:
- 2020-12-03T15:08:29+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/OBS/obs_write.F90
r12933 r14056 86 86 CHARACTER(LEN=40) :: clfname 87 87 CHARACTER(LEN=10) :: clfiletype 88 CHARACTER(LEN=ilenlong) :: cllongname ! Long name of variable 89 CHARACTER(LEN=ilenunit) :: clunits ! Units of variable 90 CHARACTER(LEN=ilengrid) :: clgrid ! Grid of variable 88 91 CHARACTER(LEN=12) :: clfmt ! writing format 89 92 INTEGER :: idg ! number of digits … … 115 118 ! Find maximum level 116 119 ilevel = 0 117 DO jvar = 1, 2120 DO jvar = 1, profdata%nvar 118 121 ilevel = MAX( ilevel, MAXVAL( profdata%var(jvar)%nvlidx(:) ) ) 119 122 END DO … … 180 183 181 184 END SELECT 185 186 IF ( ( TRIM(profdata%cvars(1)) /= 'POTM' ) .AND. & 187 & ( TRIM(profdata%cvars(1)) /= 'UVEL' ) ) THEN 188 CALL alloc_obfbdata( fbdata, 1, profdata%nprof, ilevel, & 189 & 1 + iadd, iext, .TRUE. ) 190 fbdata%cname(1) = profdata%cvars(1) 191 fbdata%coblong(1) = cllongname 192 fbdata%cobunit(1) = clunits 193 fbdata%caddlong(1,1) = 'Model interpolated ' // TRIM(cllongname) 194 fbdata%caddunit(1,1) = clunits 195 fbdata%cgrid(:) = clgrid 196 DO je = 1, iext 197 fbdata%cextname(je) = pext%cdname(je) 198 fbdata%cextlong(je) = pext%cdlong(je,1) 199 fbdata%cextunit(je) = pext%cdunit(je,1) 200 END DO 201 DO ja = 1, iadd 202 fbdata%caddname(1+ja) = padd%cdname(ja) 203 fbdata%caddlong(1+ja,1) = padd%cdlong(ja,1) 204 fbdata%caddunit(1+ja,1) = padd%cdunit(ja,1) 205 END DO 206 ENDIF 182 207 183 208 fbdata%caddname(1) = 'Hx' … … 234 259 & krefdate = 19500101 ) 235 260 ! Reform the profiles arrays for output 236 DO jvar = 1, 2261 DO jvar = 1, profdata%nvar 237 262 DO jk = profdata%npvsta(jo,jvar), profdata%npvend(jo,jvar) 238 263 ik = profdata%var(jvar)%nvlidx(jk) … … 329 354 CHARACTER(LEN=40) :: clfname ! netCDF filename 330 355 CHARACTER(LEN=10) :: clfiletype 356 CHARACTER(LEN=ilenlong) :: cllongname ! Long name of variable 357 CHARACTER(LEN=ilenunit) :: clunits ! Units of variable 358 CHARACTER(LEN=ilengrid) :: clgrid ! Grid of variable 331 359 CHARACTER(LEN=12), PARAMETER :: cpname = 'obs_wri_surf' 332 360 CHARACTER(LEN=12) :: clfmt ! writing format … … 354 382 SELECT CASE ( TRIM(surfdata%cvars(1)) ) 355 383 CASE('SLA') 384 385 ! SLA needs special treatment because of MDT, so is all done here 386 ! Other variables are done more generically 387 ! No climatology for SLA, MDT is our best estimate of that and is already output. 356 388 357 389 CALL alloc_obfbdata( fbdata, 1, surfdata%nsurf, 1, & … … 384 416 CASE('SST') 385 417 418 clfiletype = 'sstfb' 419 cllongname = 'Sea surface temperature' 420 clunits = 'Degree centigrade' 421 clgrid = 'T' 422 423 CASE('ICECONC') 424 425 clfiletype = 'sicfb' 426 cllongname = 'Sea ice concentration' 427 clunits = 'Fraction' 428 clgrid = 'T' 429 430 CASE('SSS') 431 432 clfiletype = 'sssfb' 433 cllongname = 'Sea surface salinity' 434 clunits = 'psu' 435 clgrid = 'T' 436 437 CASE DEFAULT 438 439 CALL ctl_stop( 'Unknown observation type '//TRIM(surfdata%cvars(1))//' in obs_wri_surf' ) 440 441 END SELECT 442 443 ! SLA needs special treatment because of MDT, so is done above 444 ! Remaining variables treated more generically 445 446 IF ( TRIM(surfdata%cvars(1)) /= 'SLA' ) THEN 447 386 448 CALL alloc_obfbdata( fbdata, 1, surfdata%nsurf, 1, & 387 449 & 1 + iadd, iext, .TRUE. ) 388 450 389 clfiletype = 'sstfb'390 451 fbdata%cname(1) = surfdata%cvars(1) 391 fbdata%coblong(1) = 'Sea surface temperature'392 fbdata%cobunit(1) = 'Degree centigrade'452 fbdata%coblong(1) = cllongname 453 fbdata%cobunit(1) = clunits 393 454 DO je = 1, iext 394 455 fbdata%cextname(je) = pext%cdname(je) 395 456 fbdata%cextlong(je) = pext%cdlong(je,1) 396 457 fbdata%cextunit(je) = pext%cdunit(je,1) 397 END DO 398 fbdata%caddlong(1,1) = 'Model interpolated SST' 399 fbdata%caddunit(1,1) = 'Degree centigrade' 400 fbdata%cgrid(1) = 'T' 458 END DO 459 IF ( TRIM(surfdata%cvars(1)) == 'ICECONC' ) THEN 460 fbdata%caddlong(1,1) = 'Model interpolated ICE' 461 ELSE 462 fbdata%caddlong(1,1) = 'Model interpolated ' // TRIM(surfdata%cvars(1)) 463 ENDIF 464 fbdata%caddunit(1,1) = clunits 465 fbdata%cgrid(1) = clgrid 401 466 DO ja = 1, iadd 402 467 fbdata%caddname(1+ja) = padd%cdname(ja) … … 404 469 fbdata%caddunit(1+ja,1) = padd%cdunit(ja,1) 405 470 END DO 406 407 CASE('ICECONC') 408 409 CALL alloc_obfbdata( fbdata, 1, surfdata%nsurf, 1, & 410 & 1 + iadd, iext, .TRUE. ) 411 412 clfiletype = 'sicfb' 413 fbdata%cname(1) = surfdata%cvars(1) 414 fbdata%coblong(1) = 'Sea ice' 415 fbdata%cobunit(1) = 'Fraction' 416 DO je = 1, iext 417 fbdata%cextname(je) = pext%cdname(je) 418 fbdata%cextlong(je) = pext%cdlong(je,1) 419 fbdata%cextunit(je) = pext%cdunit(je,1) 420 END DO 421 fbdata%caddlong(1,1) = 'Model interpolated ICE' 422 fbdata%caddunit(1,1) = 'Fraction' 423 fbdata%cgrid(1) = 'T' 424 DO ja = 1, iadd 425 fbdata%caddname(1+ja) = padd%cdname(ja) 426 fbdata%caddlong(1+ja,1) = padd%cdlong(ja,1) 427 fbdata%caddunit(1+ja,1) = padd%cdunit(ja,1) 428 END DO 429 430 CASE('SSS') 431 432 CALL alloc_obfbdata( fbdata, 1, surfdata%nsurf, 1, & 433 & 1 + iadd, iext, .TRUE. ) 434 435 clfiletype = 'sssfb' 436 fbdata%cname(1) = surfdata%cvars(1) 437 fbdata%coblong(1) = 'Sea surface salinity' 438 fbdata%cobunit(1) = 'psu' 439 DO je = 1, iext 440 fbdata%cextname(je) = pext%cdname(je) 441 fbdata%cextlong(je) = pext%cdlong(je,1) 442 fbdata%cextunit(je) = pext%cdunit(je,1) 443 END DO 444 fbdata%caddlong(1,1) = 'Model interpolated SSS' 445 fbdata%caddunit(1,1) = 'psu' 446 fbdata%cgrid(1) = 'T' 447 DO ja = 1, iadd 448 fbdata%caddname(1+ja) = padd%cdname(ja) 449 fbdata%caddlong(1+ja,1) = padd%cdlong(ja,1) 450 fbdata%caddunit(1+ja,1) = padd%cdunit(ja,1) 451 END DO 452 453 CASE DEFAULT 454 455 CALL ctl_stop( 'Unknown observation type '//TRIM(surfdata%cvars(1))//' in obs_wri_surf' ) 456 457 END SELECT 471 ENDIF 458 472 459 473 fbdata%caddname(1) = 'Hx'
Note: See TracChangeset
for help on using the changeset viewer.