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

Changeset 14591


Ignore:
Timestamp:
2021-03-05T15:20:31+01:00 (3 years ago)
Author:
dcarneir
Message:

Adding option of sea-ice freeboard data for the OBS code

Location:
branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM
Files:
3 edited

Legend:

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

    r13393 r14591  
    12001200   ln_sic     = .false.             ! Logical switch for Sea Ice Concentration observations 
    12011201   ln_sit     = .false.             ! Logical switch for Sea Ice Thickness observations 
     1202   ln_fbd     = .false.             ! Logical switch for Sea Ice Freeboard observations 
    12021203   ln_vel3d   = .false.             ! Logical switch for velocity observations 
    12031204   ln_sss     = .false.             ! Logical switch for SSS observations 
     
    12441245   ln_sic_fp_indegs = .true. 
    12451246   ln_sit_fp_indegs = .true. 
     1247   ln_fbd_fp_indegs = .true. 
    12461248! All of the *files* variables below are arrays. Use namelist_cfg to add more files 
    12471249   cn_profbfiles = 'profiles_01.nc'      ! Profile feedback input observation file names 
     
    12501252   cn_sicfbfiles = 'sic_01.nc'           ! SIC feedback input observation file names 
    12511253   cn_sitfbfiles = 'sit_01.nc'           ! SIT feedback input observation file names 
     1254   cn_fbdfbfiles = 'fbd_01.nc'           ! FBD feedback input observation file names 
    12521255   cn_velfbfiles = 'vel_01.nc'           ! Velocity feedback input observation file names 
    12531256   cn_sssfbfiles = 'sss_01.nc'           ! SSS feedback input observation file names 
     
    12951298   rn_sit_avglamscl = 0.                 ! E/W diameter of SIT observation footprint (metres/degrees) 
    12961299   rn_sit_avgphiscl = 0.                 ! N/S diameter of SIT observation footprint (metres/degrees) 
     1300   rn_fbd_avglamscl = 0.                 ! E/W diameter of FBD observation footprint (metres/degrees) 
     1301   rn_fbd_avgphiscl = 0.                 ! N/S diameter of FBD observation footprint (metres/degrees) 
    12971302   nn_1dint = 0                          ! Type of vertical interpolation method 
    12981303   nn_2dint_default = 0                  ! Default horizontal interpolation method 
     
    13031308   nn_2dint_sic = -1                     ! Horizontal interpolation method for SIC 
    13041309   nn_2dint_sit = -1                     ! Horizontal interpolation method for SIT 
     1310   nn_2dint_fbd = -1                     ! Horizontal interpolation method for FBD 
    13051311   nn_msshc = 0                          ! MSSH correction scheme 
    13061312   rn_mdtcorr = 1.61                     ! MDT  correction 
  • branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r13575 r14591  
    5757   LOGICAL :: ln_sic_fp_indegs     !: T=> SIC obs footprint size specified in degrees, F=> in metres 
    5858   LOGICAL :: ln_sit_fp_indegs     !: T=> SIT obs footprint size specified in degrees, F=> in metres 
     59   LOGICAL :: ln_fbd_fp_indegs     !: T=> SIT obs footprint size specified in degrees, F=> in metres 
    5960   LOGICAL :: ln_output_clim       !: Logical switch for interpolating and writing T/S climatology 
    6061   LOGICAL :: ln_time_mean_sla_bkg !: Logical switch for applying time mean of SLA background to remove tidal signal 
     
    7475   REAL(wp) :: rn_sit_avglamscl     !: E/W diameter of SIT observation footprint 
    7576   REAL(wp) :: rn_sit_avgphiscl     !: N/S diameter of SIT observation footprint 
     77   REAL(wp) :: rn_fbd_avglamscl     !: E/W diameter of FBD observation footprint 
     78   REAL(wp) :: rn_fbd_avgphiscl     !: N/S diameter of FBD observation footprint 
    7679   REAL(wp), PUBLIC :: & 
    7780      &        MeanPeriodHours = 24. + (5./6.) !: Meaning period for surface data. 
     
    8689   INTEGER :: nn_2dint_sic     !: SIC horizontal interpolation method (-1 = default) 
    8790   INTEGER :: nn_2dint_sit     !: SIT horizontal interpolation method (-1 = default) 
     91   INTEGER :: nn_2dint_fbd     !: FBD horizontal interpolation method (-1 = default) 
    8892  
    8993   INTEGER, DIMENSION(imaxavtypes) :: & 
     
    171175         & cn_sicfbfiles,      & ! Seaice concentration input filenames 
    172176         & cn_sitfbfiles,      & ! Seaice thickness input filenames 
     177         & cn_fbdfbfiles,      & ! Seaice freeboard input filenames 
    173178         & cn_velfbfiles,      & ! Velocity profile input filenames 
    174179         & cn_sssfbfiles,      & ! Sea surface salinity input filenames 
     
    211216      LOGICAL :: ln_sic          ! Logical switch for sea ice concentration 
    212217      LOGICAL :: ln_sit          ! Logical switch for sea ice thickness 
     218      LOGICAL :: ln_fbd          ! Logical switch for sea ice freeboard 
    213219      LOGICAL :: ln_sss          ! Logical switch for sea surface salinity obs 
    214220      LOGICAL :: ln_ssv          ! Logical switch for sea surface velocity obs       
     
    272278 
    273279      NAMELIST/namobs/ln_diaobs, ln_t3d, ln_s3d, ln_sla,              & 
    274          &            ln_sst, ln_sic, ln_sit, ln_sss,                 & 
    275          &            ln_ssv, ln_vel3d,                               & 
     280         &            ln_sst, ln_sic, ln_sit, ln_fbd,                 & 
     281         &            ln_sss, ln_ssv, ln_vel3d,                       & 
    276282         &            ln_slchltot, ln_slchldia, ln_slchlnon,          & 
    277283         &            ln_slchldin, ln_slchlmic, ln_slchlnan,          & 
     
    291297         &            ln_sss_fp_indegs, ln_ssv_fp_indegs,             & 
    292298         &            ln_sic_fp_indegs, ln_sit_fp_indegs,             & 
     299         &            ln_fbd_fp_indegs,                               & 
    293300         &            cn_profbfiles, cn_slafbfiles,                   & 
    294301         &            cn_sstfbfiles, cn_sicfbfiles,                   & 
    295          &            cn_sitfbfiles, cn_ssvfbfiles,                   & 
    296          &            cn_velfbfiles, cn_sssfbfiles,                   & 
     302         &            cn_sitfbfiles, cn_fbdfbfiles,                   & 
     303         &            cn_velfbfiles, cn_sssfbfiles, cn_ssvfbfiles,    & 
    297304         &            cn_slchltotfbfiles, cn_slchldiafbfiles,         & 
    298305         &            cn_slchlnonfbfiles, cn_slchldinfbfiles,         & 
     
    317324         &            rn_sic_avglamscl, rn_sic_avgphiscl,             & 
    318325         &            rn_sit_avglamscl, rn_sit_avgphiscl,             & 
     326         &            rn_fbd_avglamscl, rn_fbd_avgphiscl,             & 
    319327         &            nn_1dint, nn_2dint_default,                     & 
    320328         &            nn_2dint_sla, nn_2dint_sst,                     & 
    321329         &            nn_2dint_sss, nn_2dint_ssv,                     & 
    322330         &            nn_2dint_sic, nn_2dint_sit,                     & 
     331         &            nn_2dint_fbd,                                   & 
    323332         &            nn_msshc, rn_mdtcorr, rn_mdtcutoff,             & 
    324333         &            nn_profdavtypes 
     
    334343      cn_sicfbfiles(:)      = '' 
    335344      cn_sitfbfiles(:)      = '' 
     345      cn_fbdfbfiles(:)      = '' 
    336346      cn_velfbfiles(:)      = '' 
    337347      cn_sssfbfiles(:)      = '' 
     
    399409         WRITE(numout,*) '             Logical switch for SIC observations                      ln_sic = ', ln_sic 
    400410         WRITE(numout,*) '             Logical switch for SIT observations                      ln_sit = ', ln_sit 
     411         WRITE(numout,*) '             Logical switch for FBD observations                      ln_fbd = ', ln_fbd 
    401412         WRITE(numout,*) '             Logical switch for velocity observations               ln_vel3d = ', ln_vel3d 
    402413         WRITE(numout,*) '             Logical switch for SSS observations                      ln_sss = ', ln_sss 
     
    440451         WRITE(numout,*) '             Type of horizontal interpolation method for SIC    nn_2dint_sic = ', nn_2dint_sic 
    441452         WRITE(numout,*) '             Type of horizontal interpolation method for SIT    nn_2dint_sit = ', nn_2dint_sit 
     453         WRITE(numout,*) '             Type of horizontal interpolation method for FBD    nn_2dint_fbd = ', nn_2dint_fbd 
    442454         WRITE(numout,*) '             Default E/W diameter of obs footprint      rn_default_avglamscl = ', rn_default_avglamscl 
    443455         WRITE(numout,*) '             Default N/S diameter of obs footprint      rn_default_avgphiscl = ', rn_default_avgphiscl 
     
    455467         WRITE(numout,*) '             SIT N/S diameter of obs footprint              rn_sit_avgphiscl = ', rn_sit_avgphiscl 
    456468         WRITE(numout,*) '             SIT obs footprint in deg [T] or m [F]          ln_sit_fp_indegs = ', ln_sit_fp_indegs 
     469         WRITE(numout,*) '             FBD E/W diameter of obs footprint              rn_fbd_avglamscl = ', rn_fbd_avglamscl 
     470         WRITE(numout,*) '             FBD N/S diameter of obs footprint              rn_fbd_avgphiscl = ', rn_fbd_avgphiscl 
     471         WRITE(numout,*) '             FBD obs footprint in deg [T] or m [F]          ln_fbd_fp_indegs = ', ln_fbd_fp_indegs 
    457472         WRITE(numout,*) '             Rejection of observations near land switch               ln_nea = ', ln_nea 
    458473         WRITE(numout,*) '             Rejection of obs near open bdys                 ln_bound_reject = ', ln_bound_reject 
     
    476491         &                  ln_pchltot,  ln_pno3,     ln_psi4,     ln_ppo4,     & 
    477492         &                  ln_pdic,     ln_palk,     ln_pph,      ln_po2 /) ) 
    478       nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sit, ln_sss, ln_ssv,     & 
     493      nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sit, ln_fbd,             & 
     494         &                  ln_sss, ln_ssv,                                     & 
    479495         &                  ln_slchltot, ln_slchldia, ln_slchlnon, ln_slchldin, & 
    480496         &                  ln_slchlmic, ln_slchlnan, ln_slchlpic, ln_schltot,  & 
     
    600616            cobstypessurf(jtype) = 'sit' 
    601617            clsurffiles(jtype,:) = cn_sitfbfiles 
     618         ENDIF 
     619         IF (ln_fbd) THEN 
     620            jtype = jtype + 1 
     621            cobstypessurf(jtype) = 'fbd' 
     622            clsurffiles(jtype,:) = cn_fbdfbfiles 
    602623         ENDIF 
    603624         IF (ln_sss) THEN 
     
    730751               ztype_avgphiscl = rn_sit_avgphiscl 
    731752               ltype_fp_indegs = ln_sit_fp_indegs 
     753               ltype_night     = .FALSE. 
     754            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'fbd' ) THEN 
     755               IF ( nn_2dint_fbd == -1 ) THEN 
     756                  n2dint_type  = nn_2dint_default 
     757               ELSE 
     758                  n2dint_type  = nn_2dint_fbd 
     759               ENDIF 
     760               ztype_avglamscl = rn_fbd_avglamscl 
     761               ztype_avgphiscl = rn_fbd_avgphiscl 
     762               ltype_fp_indegs = ln_fbd_fp_indegs 
    732763               ltype_night     = .FALSE. 
    733764            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sss' ) THEN 
     
    929960 
    930961            IF ( (TRIM(cobstypessurf(jtype)) == 'sla') .OR. & 
    931                & (TRIM(cobstypessurf(jtype)) == 'sit') ) THEN 
     962               & (TRIM(cobstypessurf(jtype)) == 'sit') .OR. & 
     963               & (TRIM(cobstypessurf(jtype)) == 'fbd') ) THEN 
    932964               nvarssurf(jtype) = 1 
    933965               nextrsurf(jtype) = 2 
     
    966998            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sic' ) THEN 
    967999               clvars(1) = 'ICECONC' 
     1000            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'fbd' ) THEN 
     1001               clvars(1) = 'FBD' 
     1002               ln_seaicetypes = .TRUE. 
    9681003            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN 
    969                clvars(1) = 'FBD' 
     1004               clvars(1) = 'SIT' 
    9701005               ln_seaicetypes = .TRUE. 
    9711006            ELSE IF ( TRIM(cobstypessurf(jtype)) == 'sss' ) THEN 
     
    10251060 
    10261061#if defined key_cice 
    1027             IF ( TRIM(cobstypessurf(jtype)) == 'sit' ) THEN 
     1062            IF ( TRIM(cobstypessurf(jtype)) == 'fbd' ) THEN 
    10281063               CALL obs_rea_snowdepth( surfdataqc(jtype), n2dintsurf(jtype), thick_s(:,:) ) 
    10291064            ENDIF  
     
    14821517               ENDIF 
    14831518 
     1519            CASE('fbd') 
     1520               IF ( kstp == 0 ) THEN 
     1521                  IF ( lwp .AND. surfdataqc(jtype)%nsstpmpp(1) > 0 ) THEN 
     1522                     CALL ctl_warn( 'Sea-ice not initialised on zeroth '// & 
     1523                        &           'time-step but some obs are valid then.' ) 
     1524                     WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), & 
     1525                        &           ' sea-ice freeboard obs will be missed and QC flag set to 4' 
     1526                  ENDIF                                  
     1527               ELSE        
     1528#if defined key_cice 
     1529                  zsurfvar(:,:) = thick_i(:,:) 
     1530#elif defined key_lim2 || defined key_lim3 
     1531                  CALL ctl_stop( ' No sea-ice freeboard observation operator defined for LIM model' ) 
     1532#else 
     1533                  CALL ctl_stop( ' Trying to run sea-ice freeboard observation operator', & 
     1534                     &           ' but no sea-ice model appears to have been defined' ) 
     1535#endif 
     1536               ENDIF 
     1537 
    14841538            CASE('slchltot') 
    14851539#if defined key_hadocc 
     
    18041858 
    18051859            END DO 
    1806              
    1807             ! Change label of data from FBD ("freeboard") to SIT ("Sea Ice 
    1808             ! Thickness") 
    1809             IF ( TRIM(surfdataqc(jtype)%cvars(1)) == 'FBD' ) THEN 
    1810                  surfdataqc(jtype)%cvars(1) = 'SIT' 
    1811             ENDIF 
    18121860 
    18131861            CALL wrk_dealloc( jpi, jpj, surfdataqc(jtype)%nvar, zsurfvar  ) 
  • branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90

    r13575 r14591  
    542542         clgrid(1)     = 'T' 
    543543 
     544      CASE('FBD') 
     545 
     546         clfiletype = 'fbdfb' 
     547         ! Change label from FBD ("freeboard") to SIT ("Sea Ice Thickness") 
     548         surfdata%cvars(1) = 'SIT' 
     549         cllongname = 'Sea ice thickness' 
     550         clunits    = 'm' 
     551         clgrid     = 'T' 
     552 
    544553      CASE('SSS') 
    545554 
Note: See TracChangeset for help on using the changeset viewer.