- Timestamp:
- 2019-08-23T10:37:22+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r11235 r11468 33 33 USE mpp_map ! MPP mapping 34 34 USE lib_mpp ! For ctl_warn/stop 35 USE tradmp ! For climatological temperature & salinity 35 36 36 37 IMPLICIT NONE … … 53 54 LOGICAL :: ln_sss_fp_indegs !: T=> SSS obs footprint size specified in degrees, F=> in metres 54 55 LOGICAL :: ln_sic_fp_indegs !: T=> sea-ice obs footprint size specified in degrees, F=> in metres 56 LOGICAL :: ln_output_clim !: Logical switch for interpolating and writing T/S climatology 55 57 56 58 REAL(wp) :: rn_default_avglamscl !: Default E/W diameter of observation footprint … … 232 234 LOGICAL :: ltype_fp_indegs ! Local version of ln_*_fp_indegs 233 235 LOGICAL :: ltype_night ! Local version of ln_sstnight (false for other variables) 236 LOGICAL :: ltype_clim ! Local version of ln_output_clim 234 237 235 238 REAL(wp), POINTER, DIMENSION(:,:,:) :: & … … 254 257 & ln_grid_global, ln_grid_search_lookup, & 255 258 & ln_ignmis, ln_s_at_t, ln_bound_reject, & 256 & ln_sstnight, ln_default_fp_indegs, & 259 & ln_sstnight, ln_output_clim, & 260 & ln_default_fp_indegs, & 257 261 & ln_sla_fp_indegs, ln_sst_fp_indegs, & 258 262 & ln_sss_fp_indegs, ln_sic_fp_indegs, & … … 415 419 WRITE(numout,*) ' Daily average types nn_profdavtypes = ', nn_profdavtypes 416 420 WRITE(numout,*) ' Logical switch for night-time SST obs ln_sstnight = ', ln_sstnight 421 WRITE(numout,*) ' Logical switch for writing climat. at obs points ln_output_clim = ', ln_output_clim 417 422 ENDIF 418 423 !----------------------------------------------------------------------- … … 438 443 RETURN 439 444 ENDIF 445 446 IF ( ln_output_clim .AND. ( .NOT. ln_tradmp ) ) THEN 447 IF(lwp) WRITE(numout,cform_war) 448 IF(lwp) WRITE(numout,*) ' ln_output_clim is true, but ln_tradmp is false', & 449 & ' so climatological T/S not available and will not be output' 450 nwarn = nwarn + 1 451 ln_output_clim = .FALSE. 452 ENDIF 453 440 454 441 455 IF(lwp) WRITE(numout,*) ' Number of profile obs types: ',nproftypes … … 714 728 715 729 DO jtype = 1, nproftypes 716 730 731 ltype_clim = .FALSE. 732 717 733 IF ( TRIM(cobstypesprof(jtype)) == 'prof' ) THEN 718 734 nvarsprof(jtype) = 2 719 735 nextrprof(jtype) = 1 736 IF ( ln_output_clim ) ltype_clim = .TRUE. 720 737 ALLOCATE(llvar(nvarsprof(jtype))) 721 738 CALL wrk_alloc( jpi, jpj, nvarsprof(jtype), zglam ) … … 763 780 & nvarsprof(jtype), nextrprof(jtype), nitend-nit000+2, & 764 781 & rn_dobsini, rn_dobsend, llvar, & 765 & ln_ignmis, ln_s_at_t, .FALSE., &782 & ln_ignmis, ln_s_at_t, .FALSE., ltype_clim, & 766 783 & kdailyavtypes = nn_profdavtypes ) 767 784 … … 799 816 nvarssurf(jtype) = 1 800 817 nextrsurf(jtype) = 0 818 ltype_clim = .FALSE. 801 819 IF ( TRIM(cobstypessurf(jtype)) == 'sla' ) nextrsurf(jtype) = 2 820 IF ( ln_output_clim .AND. & 821 & ( ( TRIM(cobstypessurf(jtype)) == 'sst' ) .OR. & 822 & ( TRIM(cobstypessurf(jtype)) == 'sss' ) ) ) & 823 & ltype_clim = .TRUE. 802 824 803 825 !Read in surface obs types … … 805 827 & clsurffiles(jtype,1:ifilessurf(jtype)), & 806 828 & nvarssurf(jtype), nextrsurf(jtype), nitend-nit000+2, & 807 & rn_dobsini, rn_dobsend, ln_ignmis, .FALSE., llnightav(jtype) ) 829 & rn_dobsini, rn_dobsend, ln_ignmis, .FALSE., & 830 & llnightav(jtype), ltype_clim ) 808 831 809 832 CALL obs_pre_surf( surfdata(jtype), surfdataqc(jtype), ln_nea, ln_bound_reject ) … … 926 949 REAL(wp) :: tiny ! small number 927 950 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: & 928 & zprofvar ! Model values for variables in a prof ob 951 & zprofvar, & ! Model values for variables in a prof ob 952 & zprofclim ! Climatology values for variables in a prof ob 929 953 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: & 930 954 & zprofmask ! Mask associated with zprofvar 931 955 REAL(wp), POINTER, DIMENSION(:,:) :: & 932 956 & zsurfvar, & ! Model values equivalent to surface ob. 957 & zsurfclim, & ! Climatology values for variables in a surface ob. 933 958 & zsurfmask ! Mask associated with surface variable 934 959 REAL(wp), POINTER, DIMENSION(:,:,:) :: & … … 940 965 & pco2_3d ! 3D pCO2 from FABM 941 966 #endif 942 967 943 968 IF(lwp) THEN 944 969 WRITE(numout,*) … … 963 988 CALL wrk_alloc( jpi, jpj, profdataqc(jtype)%nvar, zglam ) 964 989 CALL wrk_alloc( jpi, jpj, profdataqc(jtype)%nvar, zgphi ) 965 990 CALL wrk_alloc( jpi, jpj, jpk, profdataqc(jtype)%nvar, zprofclim ) 991 966 992 ! Defaults which might change 967 993 DO jvar = 1, profdataqc(jtype)%nvar … … 969 995 zglam(:,:,jvar) = glamt(:,:) 970 996 zgphi(:,:,jvar) = gphit(:,:) 997 zprofclim(:,:,:,jvar) = 0._wp 971 998 END DO 972 999 … … 976 1003 zprofvar(:,:,:,1) = tsn(:,:,:,jp_tem) 977 1004 zprofvar(:,:,:,2) = tsn(:,:,:,jp_sal) 978 1005 IF ( ln_output_clim ) THEN 1006 zprofclim(:,:,:,1) = tclim(:,:,:) 1007 zprofclim(:,:,:,2) = sclim(:,:,:) 1008 ENDIF 1009 979 1010 CASE('vel') 980 1011 zprofvar(:,:,:,1) = un(:,:,:) … … 1155 1186 & nit000, idaystp, jvar, & 1156 1187 & zprofvar(:,:,:,jvar), & 1188 & zprofclim(:,:,:,jvar), & 1157 1189 & fsdept(:,:,:), fsdepw(:,:,:), & 1158 1190 & zprofmask(:,:,:,jvar), & … … 1166 1198 CALL wrk_dealloc( jpi, jpj, profdataqc(jtype)%nvar, zglam ) 1167 1199 CALL wrk_dealloc( jpi, jpj, profdataqc(jtype)%nvar, zgphi ) 1200 CALL wrk_dealloc( jpi, jpj, jpk, profdataqc(jtype)%nvar, zprofclim ) 1168 1201 1169 1202 END DO … … 1175 1208 !Allocate local work arrays 1176 1209 CALL wrk_alloc( jpi, jpj, zsurfvar ) 1210 CALL wrk_alloc( jpi, jpj, zsurfclim ) 1177 1211 CALL wrk_alloc( jpi, jpj, zsurfmask ) 1178 1212 #if defined key_fabm … … 1184 1218 !Defaults which might be changed 1185 1219 zsurfmask(:,:) = tmask(:,:,1) 1220 zsurfclim(:,:) = 0._wp 1186 1221 llog10 = .FALSE. 1187 1222 … … 1189 1224 CASE('sst') 1190 1225 zsurfvar(:,:) = tsn(:,:,1,jp_tem) 1226 IF ( ln_output_clim ) zsurfclim(:,:) = tclim(:,:,1) 1191 1227 CASE('sla') 1192 1228 zsurfvar(:,:) = sshn(:,:) 1193 1229 CASE('sss') 1194 1230 zsurfvar(:,:) = tsn(:,:,1,jp_sal) 1231 IF ( ln_output_clim ) zsurfclim(:,:) = sclim(:,:,1) 1195 1232 CASE('sic') 1196 1233 IF ( kstp == 0 ) THEN … … 1485 1522 1486 1523 CALL obs_surf_opt( surfdataqc(jtype), kstp, jpi, jpj, & 1487 & nit000, idaystp, zsurfvar, zsurfmask, & 1524 & nit000, idaystp, zsurfvar, & 1525 & zsurfclim, zsurfmask, & 1488 1526 & n2dintsurf(jtype), llnightav(jtype), & 1489 & ravglamscl(jtype), ravgphiscl(jtype), 1527 & ravglamscl(jtype), ravgphiscl(jtype), & 1490 1528 & lfpindegs(jtype) ) 1491 1529
Note: See TracChangeset
for help on using the changeset viewer.