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 10181 for branches/UKMO/dev_r5518_obs_oper_update_icethick/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90 – NEMO

Ignore:
Timestamp:
2018-10-09T11:29:47+02:00 (6 years ago)
Author:
emmafiedler
Message:

Working version of ice thickness assimilation updates

File:
1 edited

Legend:

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

    r9306 r10181  
    5252   LOGICAL :: ln_sst_fp_indegs     !: T=>     SST obs footprint size specified in degrees, F=> in metres 
    5353   LOGICAL :: ln_sss_fp_indegs     !: T=>     SSS obs footprint size specified in degrees, F=> in metres 
    54    LOGICAL :: ln_sic_fp_indegs     !: T=> sea-ice obs footprint size specified in degrees, F=> in metres 
     54   LOGICAL :: ln_sic_fp_indegs     !: T=> SIC obs footprint size specified in degrees, F=> in metres 
     55   LOGICAL :: ln_sit_fp_indegs     !: T=> SIT obs footprint size specified in degrees, F=> in metres 
    5556 
    5657   REAL(wp) :: rn_default_avglamscl !: Default E/W diameter of observation footprint 
     
    6263   REAL(wp) :: rn_sss_avglamscl     !: E/W diameter of SSS observation footprint 
    6364   REAL(wp) :: rn_sss_avgphiscl     !: N/S diameter of SSS observation footprint 
    64    REAL(wp) :: rn_sic_avglamscl     !: E/W diameter of sea-ice observation footprint 
    65    REAL(wp) :: rn_sic_avgphiscl     !: N/S diameter of sea-ice observation footprint 
    66  
     65   REAL(wp) :: rn_sic_avglamscl     !: E/W diameter of SIC observation footprint 
     66   REAL(wp) :: rn_sic_avgphiscl     !: N/S diameter of SIC observation footprint 
     67   REAL(wp) :: rn_sit_avglamscl     !: E/W diameter of SIT observation footprint 
     68   REAL(wp) :: rn_sit_avgphiscl     !: N/S diameter of SIT observation footprint 
     69    
    6770   INTEGER :: nn_1dint         !: Vertical interpolation method 
    6871   INTEGER :: nn_2dint_default !: Default horizontal interpolation method 
     
    7073   INTEGER :: nn_2dint_sst     !: SST horizontal interpolation method (-1 = default) 
    7174   INTEGER :: nn_2dint_sss     !: SSS horizontal interpolation method (-1 = default) 
    72    INTEGER :: nn_2dint_sic     !: Seaice horizontal interpolation method (-1 = default) 
     75   INTEGER :: nn_2dint_sic     !: SIC horizontal interpolation method (-1 = default) 
     76   INTEGER :: nn_2dint_sit     !: SIT horizontal interpolation method (-1 = default) 
    7377  
    7478   INTEGER, DIMENSION(imaxavtypes) :: & 
     
    151155         & cn_slafbfiles,      & ! Sea level anomaly input filenames 
    152156         & cn_sicfbfiles,      & ! Seaice concentration input filenames 
     157         & cn_sitfbfiles,      & ! Seaice thickness input filenames          
    153158         & cn_velfbfiles,      & ! Velocity profile input filenames 
    154159         & cn_sssfbfiles,      & ! Sea surface salinity input filenames 
     
    187192      LOGICAL :: ln_sst          ! Logical switch for sea surface temperature 
    188193      LOGICAL :: ln_sic          ! Logical switch for sea ice concentration 
     194      LOGICAL :: ln_sit          ! Logical switch for sea ice thickness      
    189195      LOGICAL :: ln_sss          ! Logical switch for sea surface salinity obs 
    190196      LOGICAL :: ln_vel3d        ! Logical switch for velocity (u,v) obs 
     
    242248 
    243249      NAMELIST/namobs/ln_diaobs, ln_t3d, ln_s3d, ln_sla,              & 
    244          &            ln_sst, ln_sic, ln_sss, ln_vel3d,               & 
     250         &            ln_sst, ln_sic, ln_sit, ln_sss, ln_vel3d,       & 
    245251         &            ln_slchltot, ln_slchldia, ln_slchlnon,          & 
    246252         &            ln_slchldin, ln_slchlmic, ln_slchlnan,          & 
     
    257263         &            ln_sla_fp_indegs, ln_sst_fp_indegs,             & 
    258264         &            ln_sss_fp_indegs, ln_sic_fp_indegs,             & 
     265         &            ln_sit_fp_indegs,                               & 
    259266         &            cn_profbfiles, cn_slafbfiles,                   & 
    260267         &            cn_sstfbfiles, cn_sicfbfiles,                   & 
     268         &            cn_sitfbfiles,                                  & 
    261269         &            cn_velfbfiles, cn_sssfbfiles,                   & 
    262270         &            cn_slchltotfbfiles, cn_slchldiafbfiles,         & 
     
    279287         &            rn_sss_avglamscl, rn_sss_avgphiscl,             & 
    280288         &            rn_sic_avglamscl, rn_sic_avgphiscl,             & 
     289         &            rn_sit_avglamscl, rn_sit_avgphiscl,             & 
    281290         &            nn_1dint, nn_2dint_default,                     & 
    282291         &            nn_2dint_sla, nn_2dint_sst,                     & 
    283292         &            nn_2dint_sss, nn_2dint_sic,                     & 
     293         &            nn_2dint_sit,                                   & 
    284294         &            nn_msshc, rn_mdtcorr, rn_mdtcutoff,             & 
    285295         &            nn_profdavtypes 
     
    294304      cn_sstfbfiles(:)      = '' 
    295305      cn_sicfbfiles(:)      = '' 
     306      cn_sitfbfiles(:)      = ''       
    296307      cn_velfbfiles(:)      = '' 
    297308      cn_sssfbfiles(:)      = '' 
     
    355366         WRITE(numout,*) '             Logical switch for SLA observations                      ln_sla = ', ln_sla 
    356367         WRITE(numout,*) '             Logical switch for SST observations                      ln_sst = ', ln_sst 
    357          WRITE(numout,*) '             Logical switch for Sea Ice observations                  ln_sic = ', ln_sic 
     368         WRITE(numout,*) '             Logical switch for Sea Ice Concentration observations    ln_sic = ', ln_sic 
     369         WRITE(numout,*) '             Logical switch for Sea Ice Thickness observations        ln_sit = ', ln_sit          
    358370         WRITE(numout,*) '             Logical switch for velocity observations               ln_vel3d = ', ln_vel3d 
    359371         WRITE(numout,*) '             Logical switch for SSS observations                      ln_sss = ', ln_sss 
     
    393405         WRITE(numout,*) '             Type of horizontal interpolation method for SSS    nn_2dint_sss = ', nn_2dint_sss 
    394406         WRITE(numout,*) '             Type of horizontal interpolation method for SIC    nn_2dint_sic = ', nn_2dint_sic 
     407         WRITE(numout,*) '             Type of horizontal interpolation method for SIT    nn_2dint_sit = ', nn_2dint_sit          
    395408         WRITE(numout,*) '             Default E/W diameter of obs footprint      rn_default_avglamscl = ', rn_default_avglamscl 
    396409         WRITE(numout,*) '             Default N/S diameter of obs footprint      rn_default_avgphiscl = ', rn_default_avgphiscl 
     
    405418         WRITE(numout,*) '             SIC N/S diameter of obs footprint              rn_sic_avgphiscl = ', rn_sic_avgphiscl 
    406419         WRITE(numout,*) '             SIC obs footprint in deg [T] or m [F]          ln_sic_fp_indegs = ', ln_sic_fp_indegs 
     420         WRITE(numout,*) '             SIT E/W diameter of obs footprint              rn_sit_avglamscl = ', rn_sit_avglamscl 
     421         WRITE(numout,*) '             SIT N/S diameter of obs footprint              rn_sit_avgphiscl = ', rn_sit_avgphiscl 
     422         WRITE(numout,*) '             SIT obs footprint in deg [T] or m [F]          ln_sit_fp_indegs = ', ln_sit_fp_indegs          
    407423         WRITE(numout,*) '             Rejection of observations near land switch               ln_nea = ', ln_nea 
    408424         WRITE(numout,*) '             Rejection of obs near open bdys                 ln_bound_reject = ', ln_bound_reject 
     
    424440         &                  ln_pchltot,  ln_pno3,     ln_psi4,     ln_ppo4,     & 
    425441         &                  ln_pdic,     ln_palk,     ln_pph,      ln_po2 /) ) 
    426       nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sss,                     & 
     442      nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sit, ln_sss,             & 
    427443         &                  ln_slchltot, ln_slchldia, ln_slchlnon, ln_slchldin, & 
    428444         &                  ln_slchlmic, ln_slchlnan, ln_slchlpic, ln_schltot,  & 
     
    535551            clsurffiles(jtype,:) = cn_sicfbfiles 
    536552         ENDIF 
     553         IF (ln_sit) THEN 
     554            jtype = jtype + 1 
     555            cobstypessurf(jtype) = 'sit' 
     556            clsurffiles(jtype,:) = cn_sitfbfiles 
     557         ENDIF          
    537558         IF (ln_sss) THEN 
    538559            jtype = jtype + 1 
     
    645666               ltype_fp_indegs = ln_sic_fp_indegs 
    646667               ltype_night     = .FALSE. 
     668            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN 
     669               IF ( nn_2dint_sit == -1 ) THEN 
     670                  n2dint_type  = nn_2dint_default 
     671               ELSE 
     672                  n2dint_type  = nn_2dint_sit 
     673               ENDIF 
     674               ztype_avglamscl = rn_sit_avglamscl 
     675               ztype_avgphiscl = rn_sit_avgphiscl 
     676               ltype_fp_indegs = ln_sit_fp_indegs 
     677               ltype_night     = .FALSE.                
    647678            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sss' ) THEN 
    648679               IF ( nn_2dint_sss == -1 ) THEN 
     
    877908#endif 
    878909#if defined key_cice 
    879       USE sbc_oce, ONLY : fr_i     ! ice fraction 
     910      USE sbc_oce, ONLY : &        ! CICE variables 
     911         & fr_i,          &        ! ice fraction 
     912         & thick_i                 ! ice thickness 
    880913#endif 
    881914#if defined key_hadocc 
     
    11901223                        &           'time-step but some obs are valid then.' ) 
    11911224                     WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), & 
    1192                         &           ' sea-ice obs will be missed' 
     1225                        &           ' sea-ice concentration obs will be missed' 
    11931226                  ENDIF 
    11941227                  surfdataqc(jtype)%nsurfup = surfdataqc(jtype)%nsurfup + & 
     
    12011234                  zsurfvar(:,:) = 1._wp - frld(:,:) 
    12021235#else 
    1203                CALL ctl_stop( ' Trying to run sea-ice observation operator', & 
     1236               CALL ctl_stop( ' Trying to run sea-ice concentration observation operator', & 
     1237                  &           ' but no sea-ice model appears to have been defined' ) 
     1238#endif 
     1239               ENDIF 
     1240            CASE('sit') 
     1241               IF ( kstp == 0 ) THEN ! **Copied from SIC, check applies to SIT!** 
     1242                  IF ( lwp .AND. surfdataqc(jtype)%nsstpmpp(1) > 0 ) THEN 
     1243                     CALL ctl_warn( 'Sea-ice not initialised on zeroth '// & 
     1244                        &           'time-step but some obs are valid then.' ) 
     1245                     WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), & 
     1246                        &           ' sea-ice thickness obs will be missed' 
     1247                  ENDIF 
     1248                  surfdataqc(jtype)%nsurfup = surfdataqc(jtype)%nsurfup + & 
     1249                     &                        surfdataqc(jtype)%nsstp(1) 
     1250                  CYCLE 
     1251               ELSE             
     1252#if defined key_cice 
     1253               ! Will need to convert freeboard to thickness here 
     1254                  zsurfvar(:,:) = thick_i(:,:) 
     1255#elif defined key_lim2 || defined key_lim3 
     1256               CALL ctl_stop( ' No sea-ice thickness observation operator defined for LIM model' ) 
     1257#else 
     1258               CALL ctl_stop( ' Trying to run sea-ice thickness observation operator', & 
    12041259                  &           ' but no sea-ice model appears to have been defined' ) 
    12051260#endif 
Note: See TracChangeset for help on using the changeset viewer.