Changeset 14165 for branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_surf.F90
- Timestamp:
- 2020-12-12T12:31:26+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_obs_oper_update_sit_SMOS/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_surf.F90
r12610 r14165 85 85 INTEGER :: jj 86 86 INTEGER :: jk 87 INTEGER :: jvar 87 88 INTEGER :: iflag 88 89 INTEGER :: inobf … … 107 108 & ityp, & 108 109 & itypmpp 109 INTEGER, DIMENSION(: ), ALLOCATABLE :: &110 INTEGER, DIMENSION(:,:), ALLOCATABLE :: & 110 111 & iobsi, & 111 112 & iobsj, & 112 & iproc, & 113 & iproc 114 INTEGER, DIMENSION(:), ALLOCATABLE :: & 113 115 & iindx, & 114 116 & ifileidx, & … … 126 128 TYPE(obfbdata), POINTER, DIMENSION(:) :: & 127 129 & inpfiles 128 130 CHARACTER(LEN=256) :: cout1 ! Diagnostic output line 131 129 132 ! Local initialization 130 133 iobs = 0 … … 278 281 279 282 IF ( inpfiles(jj)%nobs > 0 ) THEN 280 inpfiles(jj)%iproc = -1281 inpfiles(jj)%iobsi = -1282 inpfiles(jj)%iobsj = -1283 inpfiles(jj)%iproc(:,:) = -1 284 inpfiles(jj)%iobsi(:,:) = -1 285 inpfiles(jj)%iobsj(:,:) = -1 283 286 ENDIF 284 287 … … 295 298 END DO 296 299 ENDIF 297 300 298 301 inowin = 0 299 302 DO ji = 1, inpfiles(jj)%nobs … … 305 308 ALLOCATE( zlam(inowin) ) 306 309 ALLOCATE( zphi(inowin) ) 307 ALLOCATE( iobsi(inowin ) )308 ALLOCATE( iobsj(inowin ) )309 ALLOCATE( iproc(inowin ) )310 ALLOCATE( iobsi(inowin,kvars) ) 311 ALLOCATE( iobsj(inowin,kvars) ) 312 ALLOCATE( iproc(inowin,kvars) ) 310 313 inowin = 0 311 314 DO ji = 1, inpfiles(jj)%nobs … … 318 321 END DO 319 322 320 CALL obs_grid_search( inowin, zlam, zphi, iobsi, iobsj, iproc, 'T' ) 323 ! Assume anything other than velocity is on T grid 324 IF ( TRIM( inpfiles(jj)%cname(1) ) == 'UVEL' ) THEN 325 CALL obs_grid_search( inowin, zlam, zphi, iobsi(:,1), iobsj(:,1), & 326 & iproc(:,1), 'U' ) 327 CALL obs_grid_search( inowin, zlam, zphi, iobsi(:,2), iobsj(:,2), & 328 & iproc(:,2), 'V' ) 329 ELSE 330 CALL obs_grid_search( inowin, zlam, zphi, iobsi(:,1), iobsj(:,1), & 331 & iproc(:,1), 'T' ) 332 IF ( kvars > 1 ) THEN 333 DO jvar = 2, kvars 334 iobsi(:,jvar) = iobsi(:,1) 335 iobsj(:,jvar) = iobsj(:,1) 336 iproc(:,jvar) = iproc(:,1) 337 END DO 338 ENDIF 339 ENDIF 321 340 322 341 inowin = 0 … … 325 344 & ( inpfiles(jj)%ptim(ji) <= djulend(jj) ) ) THEN 326 345 inowin = inowin + 1 327 inpfiles(jj)%iproc(ji,1) = iproc(inowin) 328 inpfiles(jj)%iobsi(ji,1) = iobsi(inowin) 329 inpfiles(jj)%iobsj(ji,1) = iobsj(inowin) 346 DO jvar = 1, kvars 347 inpfiles(jj)%iproc(ji,jvar) = iproc(inowin,jvar) 348 inpfiles(jj)%iobsi(ji,jvar) = iobsi(inowin,jvar) 349 inpfiles(jj)%iobsj(ji,jvar) = iobsj(inowin,jvar) 350 END DO 330 351 ENDIF 331 352 END DO … … 448 469 449 470 ! Coordinate search parameters 450 surfdata%mi (iobs) = inpfiles(jj)%iobsi(ji,1) 451 surfdata%mj (iobs) = inpfiles(jj)%iobsj(ji,1) 452 471 DO jvar = 1, kvars 472 surfdata%mi(iobs,jvar) = inpfiles(jj)%iobsi(ji,jvar) 473 surfdata%mj(iobs,jvar) = inpfiles(jj)%iobsj(ji,jvar) 474 END DO 475 453 476 ! WMO number 454 477 surfdata%cwmo(iobs) = inpfiles(jj)%cdwmo(ji) … … 480 503 481 504 ! Observed value 482 surfdata%robs(iobs,1) = inpfiles(jj)%pob(1,ji,1) 505 DO jvar = 1, kvars 506 surfdata%robs(iobs,jvar) = inpfiles(jj)%pob(1,ji,jvar) 507 END DO 483 508 IF ( TRIM(surfdata%cvars(1)) == 'FBD' ) THEN 484 509 surfdata%rext(iobs,1) = inpfiles(jj)%pob(1,ji,1) … … 488 513 ! Model and MDT is set to fbrmdi unless read from file 489 514 IF ( ldmod ) THEN 490 surfdata%rmod(iobs,1) = inpfiles(jj)%padd(1,ji,1,1) 515 DO jvar = 1, kvars 516 surfdata%rmod(iobs,jvar) = inpfiles(jj)%padd(1,ji,1,jvar) 517 END DO 491 518 IF ( TRIM(surfdata%cvars(1)) == 'SLA' ) THEN 492 519 surfdata%rext(iobs,1) = inpfiles(jj)%padd(1,ji,2,1) … … 494 521 ENDIF 495 522 ELSE 496 surfdata%rmod(iobs,1) = fbrmdi 523 DO jvar = 1, kvars 524 surfdata%rmod(iobs,jvar) = fbrmdi 525 END DO 497 526 IF ( TRIM(surfdata%cvars(1)) == 'SLA' ) surfdata%rext(iobs,:) = fbrmdi 498 527 ENDIF 499 528 500 529 ! Initialise climatology if set 501 IF ( surfdata%lclim ) surfdata%rclm(iobs,1) = fbrmdi 530 IF ( surfdata%lclim ) THEN 531 DO jvar = 1, kvars 532 surfdata%rclm(iobs,jvar) = fbrmdi 533 END DO 534 ENDIF 502 535 503 536 ! STD (obs error standard deviation) read from file and passed through obs operator … … 521 554 !----------------------------------------------------------------------- 522 555 IF (lwp) THEN 523 556 DO jvar = 1, surfdata%nvar 557 IF ( jvar == 1 ) THEN 558 cout1=TRIM(surfdata%cvars(1)) 559 ELSE 560 WRITE(cout1,'(A,A1,A)') TRIM(cout1), '/', TRIM(surfdata%cvars(jvar)) 561 ENDIF 562 END DO 563 524 564 WRITE(numout,*) 525 WRITE(numout,'(1X,A)')TRIM( surfdata%cvars(1))//' data'565 WRITE(numout,'(1X,A)')TRIM( cout1 )//' data' 526 566 WRITE(numout,'(1X,A)')'--------------' 527 567 DO jj = 1,8 … … 533 573 & '---------------------------------------------------------------' 534 574 WRITE(numout,'(1X,A,I8)') & 535 & 'Total data for variable '//TRIM( surfdata%cvars(1))// &575 & 'Total data for variable '//TRIM( cout1 )// & 536 576 & ' = ', iobsmpp 537 577 WRITE(numout,'(1X,A)') &
Note: See TracChangeset
for help on using the changeset viewer.