Opened 5 years ago
Closed 5 years ago
#2317 closed Bug (fixed)
Wrong asselin correction due to runoffs for vertical scale factors - non linear free surface case
Reported by: | jchanut | Owned by: | jchanut |
---|---|---|---|
Priority: | low | Milestone: | 2020 WP |
Component: | DOM | Version: | |
Severity: | minor | Keywords: | |
Cc: |
Description
Context
In the modified Robert-Asselin (RA) scheme designed by Leclair and Madec (2009), the effect of the RA filter on the forcing has to be removed from tracers, elevation and thicknesses.
Analysis
For thicknesses, a specific correction is applied on the top layer only (and additionally over a given runoff depth if activated) in tra_nxt_vvl routine (and in dyn_nxt). It reads:
e3t_b(:,:,1) = e3t_b(:,:,1) - atfp * 2. *rdt / rau0 * (emp_b(:,:)-emp(:,:))
After discussion with Fred Dupont, doing this precludes from maintaining e3t proportional to e3t_0 in the vertical, as one would expect in the z* context. It can lead to weird variations of the top layer.
Recommendation
I rather suggest to spread the correction over all vertical levels weighted by e3t/ht which should restore the expected z* behavior. This, a priori, does not change the conservation properties.
Commit History (3)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
12372 | acc | 2020-02-12T13:37:21+01:00 | Branch 2019/dev_r11943_MERGE_2019. A few changes to align the option 1 branch with the trunk@12371. These include a fix for #2317 (changes for LFRA freshwater correction) which was done at changeset 12279 on the trunk. These affect dynatf.F90, traatf.F90 and isfdynatf.F90 and pass SETTE but change results in all tests that use freshwater input (expected). All other changes on the trunk are present (where applicable) up to and including changeset 12367 (Solve #2380) |
12366 | jchanut | 2020-02-11T12:17:24+01:00 | #2317, revert to the correct sign for asselin term on e3t and runoffs |
12279 | jchanut | 2019-12-20T14:36:15+01:00 | #2317, changes for LFRA freshwater correction |
Change History (12)
comment:1 Changed 5 years ago by dupontf
- Version trunk deleted
comment:2 Changed 5 years ago by dupontf
Jerome alludes to those as well. However, for completeness, the lines 232 of dynnxt in the trunk
IF( jk <= nk_rnf(ji,jj) ) THEN
and 240
e3t_b(:,:,1) = e3t_b(:,:,1) - zcoef * ( -rnf_b(:,:) + rnf(:,:))*tmask(:,:,1)
also break the logic for z*. However, you may need those ones, and the one explicitly referred by Jerome above, for z~.
comment:3 Changed 5 years ago by dupontf
OK, I got the point about tranxt, thanks to Francois here at CMC. Tranxt filters the vertical scale factors as well. So same logic there.
comment:4 Changed 5 years ago by smasson
- Type changed from Defect to Bug
comment:5 Changed 5 years ago by smasson
- Owner changed from systeam to jchanut
- Status changed from new to assigned
comment:6 Changed 5 years ago by smasson
- Milestone set to 2020 WP
comment:7 Changed 5 years ago by jchanut
In 12279:
comment:8 Changed 5 years ago by jchanut
- Resolution set to fixed
- Status changed from assigned to closed
comment:9 Changed 5 years ago by jchanut
- Resolution fixed deleted
- Status changed from closed to reopened
comment:10 Changed 5 years ago by jchanut
In 12366:
comment:11 Changed 5 years ago by acc
In 12372:
comment:12 Changed 5 years ago by jchanut
- Resolution set to fixed
- Status changed from reopened to closed
Thanks Jérôme for summarizing the problem! Note that, for dynspg_ts and z*, another possible solution is to skip entirely the Asselin filter step.