ROMS option to have model_interpolate salinity units in kg/kg (default) or g/kg#1008
ROMS option to have model_interpolate salinity units in kg/kg (default) or g/kg#1008hkershaw-brown wants to merge 1 commit intomainfrom
Conversation
…fualt) or g/kg fixes #1003
mgharamti
left a comment
There was a problem hiding this comment.
Very Good! I'll need to test a filtering cycle with those changes.
As far as units, you're correct PSU is not technically g/kg but very close to it. The reason for that is because it's defined using conductivity ratios and not mass fraction. Thought, it is well accepted that: S{kg/kg} = S{psu}/1000
| * - ``convert_salinity_to_kgkg`` | ||
| - `logical` | ||
| - `.true.` | ||
| - If true, module_interpolate salinity output is converted to kg/kg, otherwise PSU (g/g) is used. Be sure to match observation units. |
| integer :: assimilation_period_seconds = 0 ! Assimilation window in secs | ||
| real(r8) :: perturbation_amplitude = 0.02 ! Perturbation size for generating an ensemble | ||
| integer :: debug = 0 ! Turn up for more debug messages | ||
| logical :: convert_salinity_to_kgkg = .true. ! model_interpolate salinity ouput in kg/kg |
There was a problem hiding this comment.
I would default this to .false. and add it to the input.nml given its importance
There was a problem hiding this comment.
Chatting with the WHOI folks about this who agree, PSU is the way to go as the default.
Crocolake converter - PSU
MOM6, ROMS - option to have /1000 so you can use the dart bank of WOD obs on glade, but default is PSU.
- Crocolake converter - PSU https://github.com/NCAR/DART/blob/main/observations/obs_converters/CrocoLake/convert_crocolake_obs.py#L169-L171
- MOM6 - option to have /1000 so you can use the dart bank of obs, but default is PSU.
- ROMS - option to have /1000 so you can use the dart bank of obs, but default is PSU.
- WOD converter option to have /1000 or not. Default not for new obs
- [ ] new version of existing WOD on /glade/ ? *1000? - GTSPP
- @hkershaw-brown release notes for this need to be clear for MOM6 users & converters.
⚠️ 🧇 BREAKING CHANGE.
| expected_obs = sensible_temp(expected_T, expected_S, pdbar) | ||
| endif | ||
|
|
||
| if (convert_salinity_to_kgkg .and. qty == QTY_SALINITY) expected_obs = expected_obs / CONCENTRATION_TO_PPT |
There was a problem hiding this comment.
good. This is the right location. We don't want to do that prior to the sensible temperature computation (we need salinity to be in PSU there).
|
@hkershaw-brown cesm has a copy of the wod data with the /1000 |
Description:
ROMS option to have model_interpolate salinity units in kg/kg (default) or g/kg
The converters we have in the dart repo: wod, GTSPP, give salinity in kg/kg
I believe this choice of kg/kg for units was for POP. There is no concept of units in observation sequence files or obs_def which is not ideal, but a larger topic beyond the scope of this pull request.
The namelist option allows users to use observation sequences generated outside dart (g/kg)
It would be good to get some oceanography input on this because I am not sure if this pull request is the correct thing to do. There seems to be differing references on whether psu (dimensionless) is exactly the same as g/kg
I'm following this convention:
1ef07d8
and using /1000. But maybe this is not correct.
Fixes issue
fixes #1003
Types of changes
Documentation changes needed?
Tests
Please describe any tests you ran to verify your changes.
PMO to take a look at interpolated values
Checklist for merging
Checklist for release
Testing Datasets