Last edited Timestamp?


Author : Matthew Martin

ticket : #1468

Branch : dev_r5072_UKMO2_OBS_simplification


Description

The OBS part of NEMO has been simplified to remove duplication of code and to remove some options for input file formats. The main changes implemented are:

  • removed options in code and namelist for reading formats other than fdbk format.
  • combined reading routines for profile types (T/S and velocity) and combined routines for surface types (SST, SLA, SIC).
  • combined routines for doing the obs operator on each time-step for all profile types, and similarly for all surface types
  • combined writing routines for profile types, and combined writing routines for surface types.
  • changed dia_obs_init to first set up the profile types which should be read in, then loop over profile types and call a generic reading routine and generic preparation routine. Similarly for surface types.
  • changed dia_obs to loop over profile types and call generic profile obs operator routines. Similarly for surface types.
  • made changes to namelist variables so that they comply with the NEMO coding standards
  • removed key_diaobs and replaced it with namelist logical ln_diaobs
  • changed namelist_ref and sette.sh so that the ORCA2_LIM_OBS tests of SETTE will work with the new code.

The documentation in the NEMO book has been updated to reflect these changes.


Testing

Runs of the ORCA2_LIM_OBS SETTE tests have been done with the trunk version, and with this branch, and the obs-minus-model statistics at the bottom of the ocean.output file are exactly the same in both. The output feedback files have also been plotted and look the same.

Changes to the SETTE scripts have been made to add velocity and sea-ice concentration to the list of observations which are included in the ORCA2_LIM_OBS tests. New files will need to be added to the central 'FORCING' data-set.

NVTK Tested'''YES'''
Other model configurations'''NO'''
Processor configurations tested[ ORCA2_LIM_OBS with REPRO_4_4 and REPRO_2_8 ]
If adding new functionality please confirm that the
New code doesn't change results when it is switched off
and ''works'' when switched on
'''YES'''

Bit Comparability

Does this change preserve answers in your tested standard configurations (to the last bit) ?'''YES'''
Does this change bit compare across various processor configurations. (1xM, Nx1 and MxN are recommended)'''YES'''
Is this change expected to preserve answers in all possible model configurations?'''YES'''
Is this change expected to preserve all diagnostics?
,,''Preserving answers in model runs does not necessarily imply preserved diagnostics. ''
'''YES'''

If you answered '''NO''' to any of the above, please provide further details:

  • Which routine(s) are causing the difference?
  • Why the changes are not protected by a logical switch or new section-version
  • What is needed to achieve regression with the previous model release (e.g. a regression branch, hand-edits etc). If this is not possible, explain why not.
  • What do you expect to see occur in the test harness jobs?
  • Which diagnostics have you altered and why have they changed?Please add details here……..

System Changes

Does your change alter namelists?'''YES'''
Does your change require a change in compiler options?'''NO '''

The namobs namelist has been changed and should now have the following structure:

!-----------------------------------------------------------------------
&namobs       !  observation usage switch
!-----------------------------------------------------------------------
   ln_diaobs  = .false.             ! Logical switch for the observation operator
   ln_t3d     = .false.             ! Logical switch for T profile observations
   ln_s3d     = .false.             ! Logical switch for S profile observations
   ln_sla     = .false.             ! Logical switch for SLA observations
   ln_sst     = .false.             ! Logical switch for SST observations
   ln_sic     = .false.             ! Logical switch for Sea Ice observations
   ln_vel3d   = .false.             ! Logical switch for velocity observations
   ln_altbias = .false.             ! Logical switch for altimeter bias correction
   ln_nea     = .false.             ! Logical switch for rejection of observations near land
   ln_grid_global = .true.          ! Logical switch for global distribution of observations
   ln_grid_search_lookup = .false.  ! Logical switch for obs grid search w/lookup table
   ln_ignmis  = .true.              ! Logical switch for ignoring missing files
   ln_s_at_t  = .false.             ! Logical switch for computing model S at T obs if not there
   ln_sstnight = .false.            ! Logical switch for calculating night-time average for SST obs
! All of the *files* variables below are arrays. Use namelist_cfg to add more files
   cn_profbfiles = 'profiles_01.nc'    ! Profile feedback input observation file names
   cn_slafbfiles = 'sla_01.nc'         ! SLA feedback input observation file names
   cn_sstfbfiles = 'sst_01.nc'         ! SST feedback input observation file names
   cn_sicfbfiles = 'sic_01.nc'         ! SIC feedback input observation file names
   cn_velfbfiles = 'vel_01.nc'         ! Velocity feedback input observation file names
   cn_altbiasfile = 'altbias.nc'       ! Altimeter bias input file name
   cn_gridsearchfile = 'gridsearch.nc' ! Grid search file name
   rn_gridsearchres = 0.5              ! Grid search resolution
   rn_dobsini = 00010101.000000        ! Initial date in window YYYYMMDD.HHMMSS
   rn_dobsend = 00010102.000000        ! Final date in window YYYYMMDD.HHMMSS
   nn_1dint = 0                        ! Type of vertical interpolation method
   nn_2dint = 0                        ! Type of horizontal interpolation method
   nn_msshc = 0                        ! MSSH correction scheme
   rn_mdtcorr = 1.61                   ! MDT  correction
   rn_mdtcutoff = 65.0                 ! MDT cutoff for computed correction
   nn_profdavtypes = -1                ! Profile daily average types - array
/

Resources

Runtime and memory changes are minimal.


IPR issues

Has the code been wholly (100%) produced by NEMO developers staff working exclusively on NEMO?'''YES '''

If No:

  • Identify the collaboration agreement details
  • Ensure the code routine header is in accordance with the agreement, (Copyright/Redistribution? etc).Add further details here if required……….
Last modified 5 years ago Last modified on 2015-08-24T12:29:12+02:00