Changeset 10276
- Timestamp:
- 2018-11-02T18:15:27+01:00 (6 years ago)
- Location:
- branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r10181 r10276 22 22 USE obs_read_surf ! Reading and allocation of surface obs 23 23 USE obs_readmdt ! Reading and allocation of MDT for SLA. 24 USE obs_readsnowdepth ! Get model snow depth for conversion of freeboard to ice thickness. 24 25 USE obs_prep ! Preparation of obs. (grid search etc). 25 26 USE obs_oper ! Observation operators … … 98 99 & surfdata, & !: Initial surface data 99 100 & surfdataqc !: Surface data after quality control 101 100 102 TYPE(obs_prof), PUBLIC, POINTER, DIMENSION(:) :: & 101 103 & profdata, & !: Initial profile data … … 134 136 !! ! 15-02 (M. Martin) Simplification of namelist and code 135 137 !!---------------------------------------------------------------------- 136 138 #if defined key_cice 139 USE sbc_oce, ONLY : & ! CICE variables 140 & thick_s ! snow depth for freeboard conversion 141 #endif 137 142 IMPLICIT NONE 138 143 … … 831 836 nextrsurf(jtype) = 0 832 837 IF ( TRIM(cobstypessurf(jtype)) == 'sla' ) nextrsurf(jtype) = 2 838 IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) nextrsurf(jtype) = 2 833 839 834 840 !Read in surface obs types … … 844 850 IF ( ln_altbias ) & 845 851 & CALL obs_rea_altbias ( surfdataqc(jtype), n2dintsurf(jtype), cn_altbiasfile ) 852 ENDIF 853 854 IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN 855 CALL obs_rea_snowdepth( surfdataqc(jtype), n2dintsurf(jtype), thick_s(:,:) ) 846 856 ENDIF 847 857 … … 1251 1261 ELSE 1252 1262 #if defined key_cice 1253 ! Will need to convert freeboard to thickness here1254 1263 zsurfvar(:,:) = thick_i(:,:) 1255 1264 #elif defined key_lim2 || defined key_lim3 … … 1533 1542 & nit000, idaystp, zsurfvar, zsurfmask, & 1534 1543 & n2dintsurf(jtype), llnightav(jtype), & 1535 & ravglamscl(jtype), ravgphiscl(jtype), 1544 & ravglamscl(jtype), ravgphiscl(jtype), & 1536 1545 & lfpindegs(jtype) ) 1537 1546 1547 ! Change label of data from FBD ("freeboard") to SIT ("Sea Ice Thickness") 1548 IF ( TRIM(surfdataqc(jtype)%cvars(1)) == 'FBD' ) THEN 1549 surfdata(jtype)%cvars(1) = 'SIT' 1550 ENDIF 1551 1538 1552 END DO 1539 1553 -
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
r9306 r10276 37 37 USE obs_grid, ONLY : & 38 38 & obs_level_search 39 39 #if defined key_cice 40 USE ice_constants, ONLY : & ! For conversion from sea ice freeboard to thickness 41 & rhos, rhoi, rhow 42 #endif 40 43 IMPLICIT NONE 41 44 … … 798 801 ENDIF 799 802 803 IF ( TRIM(surfdataqc%cvars(1)) == 'FBD' ) THEN 804 ! Convert radar freeboard to true freeboard (add 1/4 snow depth; 1/4 based on ratio of speed of light in vacuum compared to snow (3.0e8 vs 2.4e8 m/s)) 805 surfdataqc%rext(jobs,1) = surfdataqc%robs(jobs,1) 806 surfdataqc%robs(jobs,1) = surfdataqc%rext(jobs,1) + 0.25*surfdataqc%rext(jobs,2) 807 ! Convert corrected freeboard to ice thickness following Tilling et al. (2016) 808 surfdataqc%robs(jobs,1) = (surfdataqc%robs(jobs,1)*rhow + surfdataqc%rext(jobs,2)*rhos)/ & 809 (rhow - rhoi) 810 ENDIF 811 800 812 IF ( zext(1) == obfillflt ) THEN 801 813 ! If the observation value is a fill value, set QC flag to bad -
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_surf.F90
r9308 r10276 369 369 surfdata%cext(2) = 'MDT' 370 370 ENDIF 371 IF ( ldmod .AND. ( TRIM( surfdata%cvars(1) ) == 'FBD' ) ) THEN 372 surfdata%cext(1) = 'freeboard' 373 surfdata%cext(2) = 'thick_s' 374 ENDIF 371 375 IF ( iextr > kextr ) surfdata%cext(iextr) = 'STD' 372 376 … … 450 454 ! Observed value 451 455 surfdata%robs(iobs,1) = inpfiles(jj)%pob(1,ji,1) 456 IF ( TRIM(surfdata%cvars(1)) == 'FBD' ) THEN 457 surfdata%rext(iobs,1) = inpfiles(jj)%pob(1,ji,1) 458 surfdata%rext(iobs,2) = fbrmdi 459 ENDIF 452 460 453 461 ! Model and MDT is set to fbrmdi unless read from file -
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r10181 r10276 107 107 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_iu !: ice thickness at NEMO U point 108 108 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_iv !: ice thickness at NEMO V point 109 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_su !: snow depth at NEMO U point 110 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_sv !: snow depth at NEMO V point 109 111 ! variables used in the coupled interface 110 112 INTEGER , PUBLIC, PARAMETER :: jpl = ncat … … 174 176 ss_iov(jpi,jpj) , fr_iu(jpi,jpj) , fr_iv(jpi,jpj) , & 175 177 thick_iu(jpi,jpj) , thick_iv(jpi,jpj) , & 178 thick_su(jpi,jpj) , thick_sv(jpi,jpj) , & 176 179 ht_i(jpi,jpj,ncat) , ht_s(jpi,jpj,ncat) , & 177 180 a_i(jpi,jpj,ncat) , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat) , & -
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
r10181 r10276 122 122 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr_i !: ice fraction = 1 - lead fraction (between 0 to 1) 123 123 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_i !: ice thickness [m] 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: thick_s !: snow depth [m - I think] 124 125 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vol_i !: ice volume [m3] 125 126 #if defined key_cpl_carbon_cycle … … 198 199 ! 199 200 ALLOCATE( tprecip(jpi,jpj) , sprecip(jpi,jpj) , fr_i(jpi,jpj) , & 200 & thick_i(jpi,jpj) , vol_i(jpi,jpj) ,&201 & thick_i(jpi,jpj) , thick_s(jpi,jpj) , vol_i(jpi,jpj) , & 201 202 #if defined key_cpl_carbon_cycle 202 203 & atm_co2(jpi,jpj) , & -
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r10181 r10276 251 251 CALL lbc_lnk ( fr_iv , 'V', 1. ) 252 252 253 !!*****JUST ADDED BUT NEEDS CONFIRMING!!**** 253 254 254 ! Snow and ice thickness 255 CALL cice2nemo(vice,thick_i,'T', 1. ) !!Do this for snow depth too? set thick_s. Duplicated below for embedded ice? 256 257 ! vice is volume per unit area of grid cell = thickness 255 ! vice, vsno is volume per unit area of grid cell = thickness 256 CALL cice2nemo(vice,thick_i,'T', 1. ) 257 CALL cice2nemo(vsno,thick_s,'T', 1. ) 258 258 259 IF ( (ksbc == jp_flx) .OR. (ksbc == jp_purecpl) ) THEN ! Confirm what this if loop is for259 IF ( (ksbc == jp_flx) .OR. (ksbc == jp_purecpl) ) THEN 260 260 DO jl = 1,ncat 261 261 CALL cice2nemo(vsnon(:,:,jl,:),ht_s(:,:,jl),'T', 1. ) … … 263 263 ENDDO 264 264 ENDIF 265 265 266 266 267 ! T point to U point 267 268 ! T point to V point 269 270 ! Sea ice thickness 268 271 thick_iu(:,:)=0.0 269 272 thick_iv(:,:)=0.0 … … 278 281 CALL lbc_lnk ( thick_iv , 'V', 1. ) 279 282 280 !!********************************************************** 283 ! Snow depth 284 thick_su(:,:)=0.0 285 thick_sv(:,:)=0.0 286 DO jj=1,jpjm1 287 DO ji=1,jpim1 288 thick_su(ji,jj)=0.5*(thick_s(ji,jj)+thick_s(ji+1,jj))*umask(ji,jj,1) 289 thick_sv(ji,jj)=0.5*(thick_s(ji,jj)+thick_s(ji,jj+1))*vmask(ji,jj,1) 290 ENDDO 291 ENDDO 292 293 CALL lbc_lnk ( thick_su , 'U', 1. ) 294 CALL lbc_lnk ( thick_sv , 'V', 1. ) 281 295 282 296
Note: See TracChangeset
for help on using the changeset viewer.