Opened 2 years ago
Closed 2 years ago
#2718 closed Bug (fixed)
Ice volume not correctly accounted for in the freshwater budget control option 2 (nn_fwb=2)
Reported by: | cdllod | Owned by: | systeam |
---|---|---|---|
Priority: | low | Milestone: | |
Component: | SI3 | Version: | v4.0.* |
Severity: | minor | Keywords: | freshwater budget control, ice initialisation |
Cc: | casimir.delavergne@… |
Description
Context
In forced ocean mode, freshwater budget control is generally used to avoid a drift of the mean ocean salinity and mean sea level. This control is done in sbcfwb.F90. There are three available options (namelist parameter nn_fwb = 1, 2 or 3). The bug relates to option 2, where a correction to surface freshwater fluxes is calculated based on the net freshwater imbalance of the previous year.
Analysis
The imbalance is calculated at the end of the year as the global mean ssh plus the volume of sea ice. This imbalance should be zero in the initial state; that is, the initial ssh should be reduced to offset the initial volume of sea ice. This is currently the case if sea ice is fully embedded, thanks to lines 380-383 of the iceistate.F90 routine:
IF( ln_ice_embd ) THEN ! embedded sea-ice: deplete the initial ssh below sea-ice area ! sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0
However it is not the case if ice is not fully embedded. This leads to incorrect freshwater budget control and sea level drop in forced ORCA simulations that use nn_fwb = 2 and ln_ice_embd = false (which are default namelist parameters).
Fix
We propose to replace line 424 of the current (rev 15226) iceistate.F90 routine by the following:
ELSE ! case ice is not fully embedded (this is needed to ensure correct freshwater budget control) zsshcor = glob_sum( 'iceistate', e1e2t(:,:) * snwice_mass(:,:) * r1_rau0 ) / glob_sum( 'iceistate', e1e2t(:,:) * tmask(:,:,1) ) sshn(:,:) = sshn(:,:) - zsshcor sshb(:,:) = sshb(:,:) - zsshcor ENDIF
and to replace line 94 by:
REAL(wp) :: ztmelts, zsshcor
This will ensure that the volume of sea ice is correctly accounted for in the freshwater budget control (option 2). A three-year test simulation with this fix suggests it is working.
Commit History (2)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
15439 | clem | 2021-10-22T19:53:09+02:00 | trunk: freshwater budget is now corrected for option nn_fwb=2. The option could be improved. There is a drift the 1st year and the correction applied can lead to oscillations in the solution. It is related to tickets #2718 and part of #2487 though the fix is somewhat different than proposed in the tickets. |
15438 | clem | 2021-10-22T16:56:07+02:00 | 4.0-HEAD: freshwater budget is now corrected for option nn_fwb=2. The option could be improved. There is a drift the 1st year and the correction applied can lead to oscillations in the solution. It is related to tickets #2718 and part of #2487 though the fix is somewhat different than proposed in the tickets. |
Change History (4)
comment:1 Changed 2 years ago by clem
comment:2 Changed 2 years ago by clem
In 15438:
comment:3 Changed 2 years ago by clem
In 15439:
comment:4 Changed 2 years ago by clem
- Resolution set to fixed
- Status changed from new to closed
Ok but this bug fix is only needed for nn_fwb=2, so I would add an IF condition somewhere.
I see also 3 problems:
1) changing ssh means that comparing 2 simulations (with and without nn_fwb=2) is not easy unless we change ssh whatever nn_fwb?
2) option nn_fwb=2 assumes that ssh is 0 at the beginning of a simulation (a bit restrictive to my point of view but it's coded like that).
So we have to ensure that it is indeed 0. I would add a test and a stop like that:
clean way:
fast way:
3) if we set ssh/=0 at kt=nit000 (it may be possible in trunk or in one of the dev branches?), then even with embedded sea-ice correction is not ok