[[PageOutline]] Last edited [[Timestamp]] [[BR]] '''Author''' : Daniel Lea (representing the NEMOVAR team) '''ticket''' : #665 '''Branches''' : [https://forge.ipsl.jussieu.fr/nemo/browser/branches/dev_1784_ASM dev_1784_ASM ] [https://forge.ipsl.jussieu.fr/nemo/browser/branches/dev_1784_OBS dev_1784_OBS ] ---- === Description === The ASM branch adds the functionality to apply increments to model variables, temperature, salinity, SSH and velocity, read into the model from a file which may be produced by data assimilation. The OBS branch is a diagnostic branch which reads in observation files (profile temperature and salinity, sea surface temperature and sea level anomaly) and calculates the model equivalent value at the observation location. This information along with the observation value is output into a "feedback" file. This can be used for model validation and verification and also to provide information for data assimilation. ---- === Testing === Testing could consider (where appropriate) other configurations in addition to NVTK]. ||NVTK Tested|| Not yet although a similar ORCA2 test within the Met Office see below for description || ||Other model configurations|| YES ORCA025 || ||Processor configurations tested|| ORCA2: 1 proc ORCA025: 128 proc (16 x 8) || ||If adding new functionality please confirm that the [[BR]]New code doesn't change results when it is switched off [[BR]]and !''works!'' when switched on|| YES for both (see below) || 'Please add further summary details here' Several tests in orca2 configuration were performed. Each run was a 2 day run using climatological fluxes. 1. Run with the NEMO trunk at vn3.2 2. Run with the OBS and ASM branches included but without key_diaobs or key_asminc 3. Run with the OBS and ASM branches included but with both key_diaobs and key_asminc set and with the namobs and nam_asminc namelists included but everything set to false 4. Run with the OBS and ASM branches with sample observations and the observation operator turned on 5. Run with the OBS and ASM branches with sample observations and a sample increments files with the observation operator and assimilation increments code turned on in the namelist Tests 1, 2, 3 and 4 all produce identical restart files at the end of the run. Test 5 produces a restart file which differs from the previous tests by approximately the same amount as the change specified in the increments file. This shows that the change has no impact on the rest of the model except if we decide we wish to apply increments to the model fields. * Processor configurations tested * etc---- === 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/NO!'''|| ||Is this change expected to preserve answers in all possible model configurations?|| YES || ||Is this change expected to preserve all diagnostics? [[BR]]!,,!''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 (unless you wish to turn it on when key_diaobs and key_asminc must be set) || If any of these apply, please document the changes required here....... Namelist changes required if key_diaobs and key_asminc are set {{{ !----------------------------------------------------------------------- ! namobs observation usage switch !----------------------------------------------------------------------- ! ! ln_t3d Logical switch for T profile observations ! ln_s3d Logical switch for S profile observations ! ln_ena Logical switch for ENACT insitu data set ! ln_cor Logical switch for Coriolis insitu data set ! ln_profb Logical switch for feedback insitu data set ! ln_sla Logical switch for SLA observations ! ln_sladt Logical switch for AVISO SLA data ! ln_slafb Logical switch for feedback SLA data ! ln_ssh Logical switch for SSH observations ! ln_sst Logical switch for SST observations ! ln_reysst Logical switch for Reynolds observations ! ln_ghrsst Logical switch for GHRSST observations ! ln_sstfb Logical switch for feedback SST data ! ln_sss Logical switch for SSS observations ! ln_seaice Logical switch for Sea Ice observations ! ln_vel3d Logical switch for velocity observations ! ln_velavcur Logical switch for velocity daily av. cur. ! ln_velhrcur Logical switch for velocity high freq. cur. ! ln_velavadcp Logical switch for velocity daily av. ADCP ! ln_velhradcp Logical switch for velocity high freq. ADCP ! ln_velfb Logical switch for feedback velocity data ! ln_grid_global Global distribtion of observations ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table ! grid_search_file Grid search lookup file header ! enactfiles ENACT input observation file names ! coriofiles Coriolis input observation file name ! profbfiles Profile feedback input observation file name ! ln_profb_enatim Enact feedback input time setting switch ! slafilesact Active SLA input observation file name ! slafilespas Passive SLA input observation file name ! slafbfiles Feedback SLA input observation file name ! sstfiles GHRSST input observation file name ! sstfbfiles Feedback SST input observation file name ! seaicefiles Sea Ice input observation file name ! velavcurfiles Vel. cur. daily av. input file name ! velhvcurfiles Vel. cur. high freq. input file name ! velavadcpfiles Vel. ADCP daily av. input file name ! velhvadcpfiles Vel. ADCP high freq. input file name ! velfbfiles Vel. feedback input observation file name ! dobsini Initial date in window YYYYMMDD.HHMMSS ! dobsend Final date in window YYYYMMDD.HHMMSS ! n1dint Type of vertical interpolation method ! n2dint Type of horizontal interpolation method ! ln_nea Rejection of observations near land switch ! nmsshc MSSH correction scheme ! mdtcorr MDT correction ! mdtcutoff MDT cutoff for computed correction ! ln_altbias Logical switch for alt bias ! ln_ignmis Logical switch for ignoring missing files ! endailyavtypes ENACT daily average types &namobs ln_t3d = .true. ln_s3d = .true. ln_ena = .false. ln_profb = .true. ln_sla = .true. ln_sladt = .false. ln_slafb = .true. ln_sst = .true. ln_sstfb = .true. profbfiles = 'profiles_01.nc' slafbfiles = 'sla_01.nc' sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' ln_altbias = .false. ln_grid_global = .true. ln_grid_search_lookup = .true. ln_ignmis = .true. / !----------------------------------------------------------------------- ! nam_asminc assimilation increments namelist !----------------------------------------------------------------------- ! ln_bkgwri Logical switch for writing out background state ! ln_trjwri Logical switch for writing out state trajectory ! ln_trainc Logical switch for applying tracer increments ! ln_dyninc Logical switch for applying velocity increments ! ln_sshinc Logical switch for applying SSH increments ! ln_asmdin Logical switch for Direct Initialization (DI) ! ln_asmiau Logical switch for Incremental Analysis Updating (IAU) ! nitbkg Timestep of background in [0,nitend-nit000-1] ! nitdin Timestep of background for DI in [0,nitend-nit000-1] ! nitiaustr Timestep of start of IAU interval in [0,nitend-nit000-1] ! nitiaufin Timestep of end of IAU interval in [0,nitend-nit000-1] ! niaufn Type of IAU weighting function ! nittrjfrq Frequency of trajectory output for 4D-VAR ! ln_salfix Logical switch for ensuring that the sa > salfixmin ! salfixmin Minimum salinity after applying the increments &nam_asminc ln_bkgwri = .true. ln_trjwri = .false. ln_trainc = .false. ln_dyninc = .false. ln_sshinc = .false. ln_asmdin = .false. ln_asmiau = .false. nitbkg = 0 nitdin = 0 nitiaustr = 1 nitiaufin = 150 niaufn = 0 nittrjfrq = 0 ln_salfix = .false. salfixmin = -9999 / }}} ---- === Resources === !''Please !''summarize!'' any changes in runtime or memory use caused by this change......!'' ---- === 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..........