Changeset 11455 for branches/UKMO/dev_r5518_obs_oper_update_addclim/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
- Timestamp:
- 2019-08-19T17:36:23+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_obs_oper_update_addclim/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
r11449 r11455 190 190 REAL(KIND=wp), DIMENSION(1) :: zmsk 191 191 REAL(KIND=wp), DIMENSION(:,:,:), ALLOCATABLE :: interp_corner 192 192 REAL(KIND=wp), DIMENSION(:,:,:), ALLOCATABLE :: interp_corner_clim 193 193 194 LOGICAL :: ld_dailyav 194 LOGICAL :: ld_clim195 195 196 196 !------------------------------------------------------------------------ … … 200 200 inrc = kt - kit000 + 2 201 201 ipro = prodatqc%npstp(inrc) 202 203 ! Check if climatology is available and set flag204 IF ( SUM( pclim(:,:,:) ) == 0. ) THEN205 ld_clim = .FALSE.206 ELSE207 ld_clim = .TRUE.208 ENDIF209 202 210 203 ! Daily average types … … 273 266 & ) 274 267 275 IF ( ld_clim ) ALLOCATE( zclim(2,2,kpk,ipro) )268 IF ( prodatqc%lclim ) ALLOCATE( zclim(2,2,kpk,ipro) ) 276 269 277 270 DO jobs = prodatqc%nprofup + 1, prodatqc%nprofup + ipro … … 299 292 CALL obs_int_comm_3d( 2, 2, ipro, kpi, kpj, kpk, igrdi, igrdj, pgdepw, zgdepw ) 300 293 301 IF ( ld_clim ) THEN294 IF ( prodatqc%lclim ) THEN 302 295 CALL obs_int_comm_3d( 2, 2, ipro, kpi, kpj, kpk, igrdi, igrdj, pclim, zclim ) 303 296 ENDIF … … 366 359 inum_obs = iend - ista + 1 367 360 ALLOCATE(interp_corner(2,2,inum_obs),iv_indic(inum_obs)) 368 IF ( ld_clim ) ALLOCATE( interp_corner_clim(2,2,inum_obs) )361 IF ( prodatqc%lclim ) ALLOCATE( interp_corner_clim(2,2,inum_obs) ) 369 362 370 363 DO iin=1,2 … … 377 370 & zmask(iin,ijn,:,iobs)) 378 371 379 IF ( ld_clim ) THEN372 IF ( prodatqc%lclim ) THEN 380 373 CALL obs_int_z1d_spl( kpk, & 381 374 & zclim(iin,ijn,:,iobs), & … … 398 391 & zmask(iin,ijn,:,iobs)) 399 392 400 IF ( ld_clim ) THEN393 IF ( prodatqc%lclim ) THEN 401 394 CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, & 402 395 & prodatqc%var(kvar)%vdep(ista:iend), & … … 422 415 ALLOCATE( interp_corner(2,2,inum_obs), & 423 416 & iv_indic(inum_obs) ) 424 IF ( ld_clim ) ALLOCATE( interp_corner_clim(2,2,inum_obs) )417 IF ( prodatqc%lclim ) ALLOCATE( interp_corner_clim(2,2,inum_obs) ) 425 418 DO iin=1,2 426 419 DO ijn=1,2 … … 432 425 & zmask(iin,ijn,:,iobs)) 433 426 434 IF ( ld_clim ) THEN427 IF ( prodatqc%lclim ) THEN 435 428 CALL obs_int_z1d_spl( kpk, & 436 429 & zclim(iin,ijn,:,iobs),& … … 453 446 & zmask(iin,ijn,:,iobs) ) 454 447 455 IF ( ld_clim ) THEN448 IF ( prodatqc%lclim ) THEN 456 449 CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, & 457 450 & prodatqc%var(kvar)%vdep(ista:iend), & … … 504 497 & prodatqc%var(kvar)%vmod(iend:iend) ) 505 498 506 IF ( ld_clim ) THEN499 IF ( prodatqc%lclim ) THEN 507 500 CALL obs_int_h2d( 1, 1, zweig, interp_corner_clim(:,:,ikn), & 508 501 & prodatqc%var(kvar)%vclm(iend:iend) ) … … 516 509 517 510 DEALLOCATE(interp_corner,iv_indic) 518 IF ( ld_clim ) DEALLOCATE( interp_corner_clim )511 IF ( prodatqc%lclim ) DEALLOCATE( interp_corner_clim ) 519 512 520 513 ENDIF … … 534 527 & ) 535 528 536 IF ( ld_clim ) DEALLOCATE( zclim )529 IF ( prodatqc%lclim ) DEALLOCATE( zclim ) 537 530 538 531 ! At the end of the day also get interpolated means … … 650 643 & zmeanday ! to compute model sst in region of 24h daylight (pole) 651 644 652 LOGICAL :: ld_clim ! T => climatological data is available653 645 !------------------------------------------------------------------------ 654 646 ! Local initialization … … 657 649 inrc = kt - kit000 + 2 658 650 isurf = surfdataqc%nsstp(inrc) 659 660 ! Check if climatological information is available661 IF ( SUM(pclim(:,:)) == 0._wp ) THEN662 ld_clim = .FALSE.663 ELSE664 ld_clim = .TRUE.665 ENDIF666 651 667 652 ! Work out the maximum footprint size for the … … 750 735 & ) 751 736 752 IF ( ld_clim ) ALLOCATE( zclim(imaxifp,imaxjfp,isurf) )737 IF ( surfdataqc%lclim ) ALLOCATE( zclim(imaxifp,imaxjfp,isurf) ) 753 738 754 739 DO jobs = surfdataqc%nsurfup + 1, surfdataqc%nsurfup + isurf … … 793 778 & igrdip1, igrdjp1, gphif, zgphif ) 794 779 795 IF ( ld_clim ) THEN780 IF ( surfdataqc%lclim ) THEN 796 781 CALL obs_int_comm_2d( imaxifp, imaxjfp, isurf, kpi, kpj, & 797 782 & igrdi, igrdj, pclim, zclim ) … … 853 838 CALL obs_int_h2d( 1, 1, zweig, zsurftmp(:,:,iobs), zext ) 854 839 855 IF ( ld_clim ) THEN840 IF ( surfdataqc%lclim ) THEN 856 841 CALL obs_int_h2d( 1, 1, zweig, zclim(:,:,iobs), zclm ) 842 IF (lwp) THEN 843 WRITE(numout,*)'zclim: ', iobs, zclim(:,:,iobs), zclm 844 ENDIF 857 845 ENDIF 858 846 … … 871 859 & zweig, zsurftmp(:,:,iobs), zext ) 872 860 873 IF ( ld_clim ) THEN861 IF ( surfdataqc%lclim ) THEN 874 862 CALL obs_avg_h2d( 1, 1, imaxifp, imaxjfp, & 875 863 & zweig, zsurftmp(:,:,iobs), zclm ) … … 886 874 ENDIF 887 875 888 IF ( ld_clim ) surfdataqc%rclm(jobs,1) = zclm(1)876 IF ( surfdataqc%lclim ) surfdataqc%rclm(jobs,1) = zclm(1) 889 877 890 878 IF ( zext(1) == obfillflt ) THEN … … 911 899 & ) 912 900 913 IF ( ld_clim ) DEALLOCATE( zclim )901 IF ( surfdataqc%lclim ) DEALLOCATE( zclim ) 914 902 915 903 ! At the end of the day also deallocate night-time mean array
Note: See TracChangeset
for help on using the changeset viewer.