Changeset 10712
- Timestamp:
- 2019-02-21T16:44:54+01:00 (4 years ago)
- Location:
- branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r10181 r10712 990 990 zincwgt = wgtiau(it) ! IAU weight for the current time step 991 991 ! note this is not a tendency so should not be divided by rdt (as with the tracer and other increments) 992 ! EF: Actually CICE is expecting a tendency so is divided by rdt below 992 993 993 994 IF(lwp) THEN … … 1211 1212 zincwgt = wgtiau(it) ! IAU weight for the current time step 1212 1213 ! note this is not a tendency so should not be divided by rdt (as with the tracer and other increments) 1214 ! EF: Actually CICE is expecting a tendency so is divided by rdt below 1215 1213 1216 1214 1217 IF(lwp) THEN -
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r10276 r10712 191 191 & cn_altbiasfile ! Altimeter bias input filename 192 192 193 LOGICAL :: ln_seaicetypes = .FALSE. ! Logical switch indicating data type is sea ice 193 194 194 195 LOGICAL :: ln_t3d ! Logical switch for temperature profiles … … 844 845 & rn_dobsini, rn_dobsend, ln_ignmis, .FALSE., llnightav(jtype) ) 845 846 846 CALL obs_pre_surf( surfdata(jtype), surfdataqc(jtype), ln_nea, ln_bound_reject ) 847 848 IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN 849 ln_seaicetypes = .TRUE. 850 ELSE 851 ln_seaicetypes = .FALSE. 852 ENDIF 853 CALL obs_pre_surf( surfdata(jtype), surfdataqc(jtype), ln_nea, ln_bound_reject, ln_seaicetypes ) 847 854 848 855 IF ( TRIM(cobstypessurf(jtype)) == 'sla' ) THEN … … 1233 1240 & 'time-step but some obs are valid then.' ) 1234 1241 WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), & 1235 & ' sea-ice concentration obs will be missed' 1236 ENDIF 1237 surfdataqc(jtype)%nsurfup = surfdataqc(jtype)%nsurfup + & 1238 & surfdataqc(jtype)%nsstp(1) 1239 CYCLE 1242 & ' sea-ice concentration obs will be missed' 1243 ENDIF 1240 1244 ELSE 1241 1245 #if defined key_cice … … 1249 1253 ENDIF 1250 1254 CASE('sit') 1251 IF ( kstp == 0 ) THEN ! **Copied from SIC, check applies to SIT!**1255 IF ( kstp == 0 ) THEN 1252 1256 IF ( lwp .AND. surfdataqc(jtype)%nsstpmpp(1) > 0 ) THEN 1253 1257 CALL ctl_warn( 'Sea-ice not initialised on zeroth '// & 1254 1258 & 'time-step but some obs are valid then.' ) 1255 1259 WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), & 1256 & ' sea-ice thickness obs will be missed' 1257 ENDIF 1258 surfdataqc(jtype)%nsurfup = surfdataqc(jtype)%nsurfup + & 1259 & surfdataqc(jtype)%nsstp(1) 1260 CYCLE 1261 ELSE 1260 & ' sea-ice thickness obs will be missed and QC flag set to 4' 1261 ENDIF 1262 ELSE 1262 1263 #if defined key_cice 1263 1264 zsurfvar(:,:) = thick_i(:,:) -
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
r10276 r10712 805 805 surfdataqc%rext(jobs,1) = surfdataqc%robs(jobs,1) 806 806 surfdataqc%robs(jobs,1) = surfdataqc%rext(jobs,1) + 0.25*surfdataqc%rext(jobs,2) 807 ! If the corrected freeboard observation is outside -0.3 to 3.0 m (CPOM) then set the QC flag to bad 808 IF ((surfdataqc%robs(jobs,1) < -0.3) .OR. (surfdataqc%robs(jobs,1) > 3.0)) THEN 809 surfdataqc%nqc(jobs) = 4 810 ENDIF 807 811 ! Convert corrected freeboard to ice thickness following Tilling et al. (2016) 808 812 surfdataqc%robs(jobs,1) = (surfdataqc%robs(jobs,1)*rhow + surfdataqc%rext(jobs,2)*rhos)/ & 809 (rhow - rhoi) 813 (rhow - rhoi) 814 ! Flag any negative ice thickness values as bad 815 IF (surfdataqc%robs(jobs,1) < 0.0) THEN 816 surfdataqc%nqc(jobs) = 4 817 ENDIF 810 818 ENDIF 811 819 -
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/obs_prep.F90
r9306 r10712 53 53 54 54 SUBROUTINE obs_pre_surf( surfdata, surfdataqc, ld_nea, ld_bound_reject, & 55 kqc_cutoff )55 ld_seaicetypes, kqc_cutoff ) 56 56 !!---------------------------------------------------------------------- 57 57 !! *** ROUTINE obs_pre_sla *** … … 83 83 LOGICAL, INTENT(IN) :: ld_nea ! Switch for rejecting observation near land 84 84 LOGICAL, INTENT(IN) :: ld_bound_reject ! Switch for rejecting obs near the boundary 85 INTEGER, INTENT(IN), OPTIONAL :: kqc_cutoff ! cut off for QC value 85 LOGICAL, INTENT(IN) :: ld_seaicetypes ! Switch to indicate sea ice data 86 INTEGER, INTENT(IN), OPTIONAL :: kqc_cutoff ! cut off for QC value 86 87 !! * Local declarations 87 88 INTEGER :: iqc_cutoff = 255 ! cut off for QC value … … 140 141 ! ----------------------------------------------------------------------- 141 142 142 CALL obs_coo_tim( icycle, & 143 & iyea0, imon0, iday0, ihou0, imin0, & 144 & surfdata%nsurf, surfdata%nyea, surfdata%nmon, & 145 & surfdata%nday, surfdata%nhou, surfdata%nmin, & 146 & surfdata%nqc, surfdata%mstp, iotdobs ) 147 143 IF ( ld_seaicetypes ) THEN 144 CALL obs_coo_tim( icycle, & 145 & iyea0, imon0, iday0, ihou0, imin0, & 146 & surfdata%nsurf, surfdata%nyea, surfdata%nmon, & 147 & surfdata%nday, surfdata%nhou, surfdata%nmin, & 148 & surfdata%nqc, surfdata%mstp, iotdobs, & 149 & ld_seaicetypes = ld_seaicetypes ) 150 ELSE 151 CALL obs_coo_tim( icycle, & 152 & iyea0, imon0, iday0, ihou0, imin0, & 153 & surfdata%nsurf, surfdata%nyea, surfdata%nmon, & 154 & surfdata%nday, surfdata%nhou, surfdata%nmin, & 155 & surfdata%nqc, surfdata%mstp, iotdobs ) 156 ENDIF 157 148 158 CALL obs_mpp_sum_integer( iotdobs, iotdobsmpp ) 149 159 … … 558 568 & kobsno, & 559 569 & kobsyea, kobsmon, kobsday, kobshou, kobsmin, & 560 & kobsqc, kobsstp, kotdobs 570 & kobsqc, kobsstp, kotdobs, ld_seaicetypes ) 561 571 !!---------------------------------------------------------------------- 562 572 !! *** ROUTINE obs_coo_tim *** … … 606 616 & kobsstp ! Number of time steps up to the 607 617 ! observation time 618 LOGICAL, OPTIONAL, INTENT(IN) :: ld_seaicetypes 619 608 620 609 621 !! * Local declarations … … 620 632 INTEGER :: iskip 621 633 INTEGER :: idaystp 634 INTEGER :: icecount 622 635 REAL(KIND=wp) :: zminstp 623 636 REAL(KIND=wp) :: zhoustp … … 715 728 ENDIF 716 729 717 END DO 730 731 !------------------------------------------------------------------------ 732 ! Flag sea ice observations falling on initial timestep 733 !------------------------------------------------------------------------ 734 735 IF ( PRESENT(ld_seaicetypes) ) THEN 736 737 IF ( ( kobsstp(jobs) == (nit000 - 1) ) ) THEN 738 WRITE(numout,*)( 'Sea-ice not initialised on zeroth '// & 739 & 'time-step but observation valid then, flagging '// & 740 'in time check subroutine obs_coo_tim.' ) 741 kobsqc(jobs) = IBSET(kobsqc(jobs),13) 742 kotdobs = kotdobs + 1 743 CYCLE 744 ENDIF 745 746 ENDIF 747 748 END DO 718 749 719 750 END SUBROUTINE obs_coo_tim
Note: See TracChangeset
for help on using the changeset viewer.