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 11929 – NEMO

Changeset 11929


Ignore:
Timestamp:
2019-11-19T17:22:23+01:00 (5 years ago)
Author:
dcarneir
Message:

Changing diaobs.F90

Location:
branches/UKMO/dev_r5518_obs_oper_update_sit/NEMOGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_obs_oper_update_sit/NEMOGCM/CONFIG/SHARED/namelist_ref

    r11546 r11929  
    11981198   ln_sla     = .false.             ! Logical switch for SLA observations 
    11991199   ln_sst     = .false.             ! Logical switch for SST observations 
    1200    ln_sic     = .false.             ! Logical switch for Sea Ice observations 
     1200   ln_sic     = .false.             ! Logical switch for Sea Ice Concentration observations 
     1201   ln_sit     = .false.             ! Logical switch for Sea Ice Thickness observations 
    12011202   ln_vel3d   = .false.             ! Logical switch for velocity observations 
    12021203   ln_sss     = .false.             ! Logical swithc for SSS observations 
     
    12391240   ln_sss_fp_indegs = .true. 
    12401241   ln_sic_fp_indegs = .true. 
     1242   ln_sit_fp_indegs = .true. 
    12411243! All of the *files* variables below are arrays. Use namelist_cfg to add more files 
    12421244   cn_profbfiles = 'profiles_01.nc'      ! Profile feedback input observation file names 
     
    12441246   cn_sstfbfiles = 'sst_01.nc'           ! SST feedback input observation file names 
    12451247   cn_sicfbfiles = 'sic_01.nc'           ! SIC feedback input observation file names 
     1248   cn_sitfbfiles = 'sit_01.nc'           ! SIT feedback input observation file names 
    12461249   cn_velfbfiles = 'vel_01.nc'           ! Velocity feedback input observation file names 
    12471250   cn_sssfbfiles = 'sss_01.nc'           ! SSS feedback input observation file names 
     
    12841287   rn_sic_avglamscl = 0.                 ! E/W diameter of SIC observation footprint (metres/degrees) 
    12851288   rn_sic_avgphiscl = 0.                 ! N/S diameter of SIC observation footprint (metres/degrees) 
     1289   rn_sit_avglamscl = 0.                 ! E/W diameter of SIT observation footprint (metres/degrees) 
     1290   rn_sit_avgphiscl = 0.                 ! N/S diameter of SIT observation footprint (metres/degrees) 
    12861291   nn_1dint = 0                          ! Type of vertical interpolation method 
    12871292   nn_2dint_default = 0                  ! Default horizontal interpolation method 
     
    12901295   nn_2dint_sss = -1                     ! Horizontal interpolation method for SSS 
    12911296   nn_2dint_sic = -1                     ! Horizontal interpolation method for SIC 
     1297   nn_2dint_sit = -1                     ! Horizontal interpolation method for SIT 
    12921298   nn_msshc = 0                          ! MSSH correction scheme 
    12931299   rn_mdtcorr = 1.61                     ! MDT  correction 
  • branches/UKMO/dev_r5518_obs_oper_update_sit/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r11546 r11929  
    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 
     
    5354   LOGICAL :: ln_sst_fp_indegs     !: T=>     SST obs footprint size specified in degrees, F=> in metres 
    5455   LOGICAL :: ln_sss_fp_indegs     !: T=>     SSS obs footprint size specified in degrees, F=> in metres 
    55    LOGICAL :: ln_sic_fp_indegs     !: T=> sea-ice obs footprint size specified in degrees, F=> in metres 
     56   LOGICAL :: ln_sic_fp_indegs     !: T=> SIC obs footprint size specified in degrees, F=> in metres 
     57   LOGICAL :: ln_sit_fp_indegs     !: T=> SIT obs footprint size specified in degrees, F=> in metres 
    5658   LOGICAL :: ln_output_clim       !: Logical switch for interpolating and writing T/S climatology 
    5759 
     
    6466   REAL(wp) :: rn_sss_avglamscl     !: E/W diameter of SSS observation footprint 
    6567   REAL(wp) :: rn_sss_avgphiscl     !: N/S diameter of SSS observation footprint 
    66    REAL(wp) :: rn_sic_avglamscl     !: E/W diameter of sea-ice observation footprint 
    67    REAL(wp) :: rn_sic_avgphiscl     !: N/S diameter of sea-ice observation footprint 
     68   REAL(wp) :: rn_sic_avglamscl     !: E/W diameter of SIC observation footprint 
     69   REAL(wp) :: rn_sic_avgphiscl     !: N/S diameter of SIC observation footprint 
     70   REAL(wp) :: rn_sit_avglamscl     !: E/W diameter of SIT observation footprint 
     71   REAL(wp) :: rn_sit_avgphiscl     !: N/S diameter of SIT observation footprint 
    6872 
    6973   INTEGER :: nn_1dint         !: Vertical interpolation method 
     
    7276   INTEGER :: nn_2dint_sst     !: SST horizontal interpolation method (-1 = default) 
    7377   INTEGER :: nn_2dint_sss     !: SSS horizontal interpolation method (-1 = default) 
    74    INTEGER :: nn_2dint_sic     !: Seaice horizontal interpolation method (-1 = default) 
     78   INTEGER :: nn_2dint_sic     !: SIC horizontal interpolation method (-1 = default) 
     79   INTEGER :: nn_2dint_sit     !: SIT horizontal interpolation method (-1 = default) 
    7580  
    7681   INTEGER, DIMENSION(imaxavtypes) :: & 
     
    132137      !!        !  15-02  (M. Martin) Simplification of namelist and code 
    133138      !!---------------------------------------------------------------------- 
     139#if defined key_cice 
     140USE sbc_oce, ONLY : &        ! CICE variables 
     141   & thick_s                 ! snow depth for freeboard conversion  
     142#endif 
    134143 
    135144      IMPLICIT NONE 
     
    153162         & cn_slafbfiles,      & ! Sea level anomaly input filenames 
    154163         & cn_sicfbfiles,      & ! Seaice concentration input filenames 
     164         & cn_sitfbfiles,      & ! Seaice thickness input filenames 
    155165         & cn_velfbfiles,      & ! Velocity profile input filenames 
    156166         & cn_sssfbfiles,      & ! Sea surface salinity input filenames 
     
    185195 
    186196 
     197      LOGICAL :: ln_seaicetypes = .FALSE.          ! Logical switch inindicating data type is sea ice 
    187198      LOGICAL :: ln_t3d          ! Logical switch for temperature profiles 
    188199      LOGICAL :: ln_s3d          ! Logical switch for salinity profiles 
     
    190201      LOGICAL :: ln_sst          ! Logical switch for sea surface temperature 
    191202      LOGICAL :: ln_sic          ! Logical switch for sea ice concentration 
     203      LOGICAL :: ln_sit          ! Logical switch for sea ice thickness 
    192204      LOGICAL :: ln_sss          ! Logical switch for sea surface salinity obs 
    193205      LOGICAL :: ln_vel3d        ! Logical switch for velocity (u,v) obs 
     
    248260 
    249261      NAMELIST/namobs/ln_diaobs, ln_t3d, ln_s3d, ln_sla,              & 
    250          &            ln_sst, ln_sic, ln_sss, ln_vel3d,               & 
     262         &            ln_sst, ln_sic, ln_sit, ln_sss, ln_vel3d,               & 
    251263         &            ln_slchltot, ln_slchldia, ln_slchlnon,          & 
    252264         &            ln_slchldin, ln_slchlmic, ln_slchlnan,          & 
     
    265277         &            ln_sla_fp_indegs, ln_sst_fp_indegs,             & 
    266278         &            ln_sss_fp_indegs, ln_sic_fp_indegs,             & 
     279         &            ln_sit_fp_indegs,                               & 
    267280         &            cn_profbfiles, cn_slafbfiles,                   & 
    268281         &            cn_sstfbfiles, cn_sicfbfiles,                   & 
     282         &            cn_sitfbfiles,                                  & 
    269283         &            cn_velfbfiles, cn_sssfbfiles,                   & 
    270284         &            cn_slchltotfbfiles, cn_slchldiafbfiles,         & 
     
    288302         &            rn_sss_avglamscl, rn_sss_avgphiscl,             & 
    289303         &            rn_sic_avglamscl, rn_sic_avgphiscl,             & 
     304         &            rn_sit_avglamscl, rn_sit_avgphiscl,             & 
    290305         &            nn_1dint, nn_2dint_default,                     & 
    291306         &            nn_2dint_sla, nn_2dint_sst,                     & 
    292          &            nn_2dint_sss, nn_2dint_sic,                     & 
     307         &            nn_2dint_sss, nn_2dint_sic, nn_2dint_sit,       & 
    293308         &            nn_msshc, rn_mdtcorr, rn_mdtcutoff,             & 
    294309         &            nn_profdavtypes 
     
    303318      cn_sstfbfiles(:)      = '' 
    304319      cn_sicfbfiles(:)      = '' 
     320      cn_sitfbfiles(:)      = '' 
    305321      cn_velfbfiles(:)      = '' 
    306322      cn_sssfbfiles(:)      = '' 
     
    365381         WRITE(numout,*) '             Logical switch for SLA observations                      ln_sla = ', ln_sla 
    366382         WRITE(numout,*) '             Logical switch for SST observations                      ln_sst = ', ln_sst 
    367          WRITE(numout,*) '             Logical switch for Sea Ice observations                  ln_sic = ', ln_sic 
     383         WRITE(numout,*) '             Logical switch for SIC observations                      ln_sic = ', ln_sic 
     384         WRITE(numout,*) '             Logical switch for SIT observations                      ln_sit = ', ln_sit 
    368385         WRITE(numout,*) '             Logical switch for velocity observations               ln_vel3d = ', ln_vel3d 
    369386         WRITE(numout,*) '             Logical switch for SSS observations                      ln_sss = ', ln_sss 
     
    404421         WRITE(numout,*) '             Type of horizontal interpolation method for SSS    nn_2dint_sss = ', nn_2dint_sss 
    405422         WRITE(numout,*) '             Type of horizontal interpolation method for SIC    nn_2dint_sic = ', nn_2dint_sic 
     423         WRITE(numout,*) '             Type of horizontal interpolation method for SIT    nn_2dint_sit = ', nn_2dint_sit 
    406424         WRITE(numout,*) '             Default E/W diameter of obs footprint      rn_default_avglamscl = ', rn_default_avglamscl 
    407425         WRITE(numout,*) '             Default N/S diameter of obs footprint      rn_default_avgphiscl = ', rn_default_avgphiscl 
     
    416434         WRITE(numout,*) '             SIC N/S diameter of obs footprint              rn_sic_avgphiscl = ', rn_sic_avgphiscl 
    417435         WRITE(numout,*) '             SIC obs footprint in deg [T] or m [F]          ln_sic_fp_indegs = ', ln_sic_fp_indegs 
     436         WRITE(numout,*) '             SIT E/W diameter of obs footprint              rn_sit_avglamscl = ', rn_sit_avglamscl 
     437         WRITE(numout,*) '             SIT N/S diameter of obs footprint              rn_sit_avgphiscl = ', rn_sit_avgphiscl 
     438         WRITE(numout,*) '             SIT obs footprint in deg [T] or m [F]          ln_sit_fp_indegs = ', ln_sit_fp_indegs 
    418439         WRITE(numout,*) '             Rejection of observations near land switch               ln_nea = ', ln_nea 
    419440         WRITE(numout,*) '             Rejection of obs near open bdys                 ln_bound_reject = ', ln_bound_reject 
     
    436457         &                  ln_pchltot,  ln_pno3,     ln_psi4,     ln_ppo4,     & 
    437458         &                  ln_pdic,     ln_palk,     ln_pph,      ln_po2 /) ) 
    438       nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sss,                     & 
     459      nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sit, ln_sss,             & 
    439460         &                  ln_slchltot, ln_slchldia, ln_slchlnon, ln_slchldin, & 
    440461         &                  ln_slchlmic, ln_slchlnan, ln_slchlpic, ln_schltot,  & 
     
    555576            cobstypessurf(jtype) = 'sic' 
    556577            clsurffiles(jtype,:) = cn_sicfbfiles 
     578         ENDIF 
     579         IF (ln_sit) THEN 
     580            jtype = jtype + 1 
     581            cobstypessurf(jtype) = 'sit' 
     582            clsurffiles(jtype,:) = cn_sitfbfiles 
    557583         ENDIF 
    558584         IF (ln_sss) THEN 
     
    670696               ztype_avgphiscl = rn_sic_avgphiscl 
    671697               ltype_fp_indegs = ln_sic_fp_indegs 
     698               ltype_night     = .FALSE. 
     699            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN 
     700               IF ( nn_2dint_sit == -1 ) THEN 
     701                  n2dint_type  = nn_2dint_default 
     702               ELSE 
     703                  n2dint_type  = nn_2dint_sit 
     704               ENDIF 
     705               ztype_avglamscl = rn_sit_avglamscl 
     706               ztype_avgphiscl = rn_sit_avgphiscl 
     707               ltype_fp_indegs = ln_sit_fp_indegs 
    672708               ltype_night     = .FALSE. 
    673709            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sss' ) THEN 
     
    858894               & ltype_clim = .TRUE. 
    859895 
    860             IF ( TRIM(cobstypessurf(jtype)) == 'sla' ) THEN 
     896            IF ( (TRIM(cobstypessurf(jtype)) == 'sla') .OR. & 
     897               & (TRIM(cobstypessurf(jtype)) == 'sit') ) THEN 
    861898               nvarssurf(jtype) = 1 
    862899               nextrsurf(jtype) = 2 
     
    915952               &               llnightav(jtype), ltype_clim, clvars ) 
    916953 
    917             CALL obs_pre_surf( surfdata(jtype), surfdataqc(jtype), ln_nea, ln_bound_reject ) 
     954            IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN 
     955               ln_seaicetypes = .TRUE. 
     956            ELSE 
     957               ln_seaicetypes = .FALSE. 
     958            ENDIF            
     959            CALL obs_pre_surf( surfdata(jtype), surfdataqc(jtype), ln_nea, ln_bound_reject, ln_seaicetypes ) 
    918960 
    919961            IF ( TRIM(cobstypessurf(jtype)) == 'sla' ) THEN 
     
    922964                  & CALL obs_rea_altbias ( surfdataqc(jtype), n2dintsurf(jtype), cn_altbiasfile ) 
    923965            ENDIF 
     966 
     967            IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN 
     968               CALL obs_rea_snowdepth( surfdataqc(jtype), n2dintsurf(jtype), thick_s(:,:) ) 
     969            ENDIF  
    924970 
    925971            IF ( TRIM(cobstypessurf(jtype)) == 'sst' .AND. ln_sstbias ) THEN 
     
    9901036#endif 
    9911037#if defined key_cice 
    992       USE sbc_oce, ONLY : fr_i     ! ice fraction 
     1038      USE sbc_oce, ONLY : &        ! CICE variables 
     1039         & fr_i,          &        ! ice fraction 
     1040         & thick_i                 ! ice thickness 
    9931041#endif 
    9941042#if defined key_top 
     
    13231371                        &           'time-step but some obs are valid then.' ) 
    13241372                     WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), & 
    1325                         &           ' sea-ice obs will be missed' 
     1373                        &           ' sea-ice concentration obs will be missed' 
    13261374                  ENDIF 
    1327                   surfdataqc(jtype)%nsurfup = surfdataqc(jtype)%nsurfup + & 
    1328                      &                        surfdataqc(jtype)%nsstp(1) 
    1329                   CYCLE 
    13301375               ELSE 
    13311376#if defined key_cice 
     
    13341379                  zsurfvar(:,:) = 1._wp - frld(:,:) 
    13351380#else 
    1336                CALL ctl_stop( ' Trying to run sea-ice observation operator', & 
     1381               CALL ctl_stop( ' Trying to run sea-ice concentration observation operator', & 
    13371382                  &           ' but no sea-ice model appears to have been defined' ) 
    13381383#endif 
    13391384               ENDIF 
     1385 
     1386            CASE('sit') 
     1387              IF ( kstp == 0 ) THEN 
     1388                 IF ( lwp .AND. surfdataqc(jtype)%nsstpmpp(1) > 0 ) THEN 
     1389                    CALL ctl_warn( 'Sea-ice not initialised on zeroth '// & 
     1390                       &           'time-step but some obs are valid then.' ) 
     1391                    WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), & 
     1392                       &           ' sea-ice thickness obs will be missed and QC flag set to 4' 
     1393                 ENDIF                                  
     1394              ELSE        
     1395#if defined key_cice 
     1396                 zsurfvar(:,:) = thick_i(:,:) 
     1397#elif defined key_lim2 || defined key_lim3 
     1398                 CALL ctl_stop( ' No sea-ice thickness observation operator defined for LIM model' ) 
     1399#else 
     1400                 CALL ctl_stop( ' Trying to run sea-ice thickness observation operator', & 
     1401                  &           ' but no sea-ice model appears to have been defined' ) 
     1402#endif 
    13401403 
    13411404            CASE('slchltot') 
     
    16311694               &               lfpindegs(jtype) ) 
    16321695 
     1696 
     1697           ! Change label of data from FBD ("freeboard") to SIT ("Sea Ice 
     1698           ! Thickness") 
     1699            IF ( TRIM(surfdataqc(jtype)%cvars(1)) == 'FBD' ) THEN 
     1700                 surfdata(jtype)%cvars(1) = 'SIT' 
     1701            ENDIF 
     1702 
    16331703         END DO 
    16341704 
Note: See TracChangeset for help on using the changeset viewer.