New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 10276 for branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS – NEMO

Ignore:
Timestamp:
2018-11-02T18:15:27+01:00 (5 years ago)
Author:
emmafiedler
Message:

Freeboard assimilation updates

Location:
branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r10181 r10276  
    2222   USE obs_read_surf            ! Reading and allocation of surface obs 
    2323   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. 
    2425   USE obs_prep                 ! Preparation of obs. (grid search etc). 
    2526   USE obs_oper                 ! Observation operators 
     
    9899      & surfdata, &          !: Initial surface data 
    99100      & surfdataqc           !: Surface data after quality control 
     101       
    100102   TYPE(obs_prof), PUBLIC, POINTER, DIMENSION(:) :: & 
    101103      & profdata, &          !: Initial profile data 
     
    134136      !!        !  15-02  (M. Martin) Simplification of namelist and code 
    135137      !!---------------------------------------------------------------------- 
    136  
     138#if defined key_cice 
     139      USE sbc_oce, ONLY : &        ! CICE variables 
     140         & thick_s                 ! snow depth for freeboard conversion        
     141#endif          
    137142      IMPLICIT NONE 
    138143 
     
    831836            nextrsurf(jtype) = 0 
    832837            IF ( TRIM(cobstypessurf(jtype)) == 'sla' ) nextrsurf(jtype) = 2 
     838            IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) nextrsurf(jtype) = 2             
    833839 
    834840            !Read in surface obs types 
     
    844850               IF ( ln_altbias ) & 
    845851                  & 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(:,:) ) 
    846856            ENDIF 
    847857 
     
    12511261               ELSE             
    12521262#if defined key_cice 
    1253                ! Will need to convert freeboard to thickness here 
    12541263                  zsurfvar(:,:) = thick_i(:,:) 
    12551264#elif defined key_lim2 || defined key_lim3 
     
    15331542               &               nit000, idaystp, zsurfvar, zsurfmask,    & 
    15341543               &               n2dintsurf(jtype), llnightav(jtype),     & 
    1535                &               ravglamscl(jtype), ravgphiscl(jtype),     & 
     1544               &               ravglamscl(jtype), ravgphiscl(jtype),    & 
    15361545               &               lfpindegs(jtype) ) 
    15371546 
     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             
    15381552         END DO 
    15391553 
  • branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90

    r9306 r10276  
    3737   USE obs_grid,      ONLY : &  
    3838      & 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  
    4043   IMPLICIT NONE 
    4144 
     
    798801         ENDIF 
    799802          
     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          
    800812         IF ( zext(1) == obfillflt ) THEN 
    801813            ! 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  
    369369         surfdata%cext(2) = 'MDT' 
    370370      ENDIF 
     371      IF ( ldmod .AND. ( TRIM( surfdata%cvars(1) ) == 'FBD' ) ) THEN 
     372         surfdata%cext(1) = 'freeboard' 
     373         surfdata%cext(2) = 'thick_s' 
     374      ENDIF 
    371375      IF ( iextr > kextr ) surfdata%cext(iextr) = 'STD' 
    372376 
     
    450454               ! Observed value 
    451455               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                
    452460 
    453461               ! Model and MDT is set to fbrmdi unless read from file 
Note: See TracChangeset for help on using the changeset viewer.