Opened 3 years ago
Closed 3 years ago
#2464 closed Bug (fixed)
atm-ice stress at the coast is used and polluted by land values
Reported by: | smasson | Owned by: | systeam |
---|---|---|---|
Priority: | low | Milestone: | |
Component: | SI3 | Version: | trunk |
Severity: | minor | Keywords: | |
Cc: |
Description
Context
atmosphere-ice stress is computed in blk_ice_1
! C-grid ice dynamics : U & V-points (same as ocean) DO_2D_00_00 putaui(ji,jj) = 0.5_wp * ( rhoa(ji+1,jj) * zcd_dui(ji+1,jj) & & + rhoa(ji ,jj) * zcd_dui(ji ,jj) ) & & * ( 0.5_wp * ( pwndi(ji+1,jj) + pwndi(ji,jj) ) - rn_vfac * puice(ji,jj) ) pvtaui(ji,jj) = 0.5_wp * ( rhoa(ji,jj+1) * zcd_dui(ji,jj+1) & & + rhoa(ji,jj ) * zcd_dui(ji,jj ) ) & & * ( 0.5_wp * ( pwndj(ji,jj+1) + pwndj(ji,jj) ) - rn_vfac * pvice(ji,jj) ) END_2D CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1., pvtaui, 'V', -1. )
values are computed at U/V point by averaging values at T point without taking care of the land-sea mask.
Same story in sbc_cpl_ice_tau if the wind stress is sent to T point:
CASE( 'T' ) DO_2D_00_00 p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji+1,jj ,1) + frcv(jpr_itx1)%z3(ji,jj,1) ) p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji ,jj+1,1) + frcv(jpr_ity1)%z3(ji,jj,1) ) END_2D
Analysis
Depending on how land values were defined, putaui and pvtaui are then potentially corrupted at the coast.
The stress at coastal points is used in si3 if:
- ln_frazil = .true.
- in the ice rheology
Note that, in the current version, ocean wind stress (utau, vtau) at the coast is not used in the model. There is no impact if it is polluted at the coast.
Fix
make sure that the stress at coastal points is correctly computed by using the same method used for utau in the ocean part:
DO_2D_10_10 utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( zwnd_i(ji,jj) + zwnd_i(ji+1,jj ) ) & & * MAX(tmask(ji,jj,1),tmask(ji+1,jj,1)) vtau(ji,jj) = 0.5 * ( 2. - vmask(ji,jj,1) ) * ( zwnd_j(ji,jj) + zwnd_j(ji ,jj+1) ) & & * MAX(tmask(ji,jj,1),tmask(ji,jj+1,1)) END_2D CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. )
Even if it is useless for utau and vtau, I think it is safer to take care of the land-sea mask to compute ocean stress, as you never know if someone somewhere decide to use the coastal ocean stress...
Commit History (1)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
12925 | smasson | 2020-05-14T15:46:17+02:00 | trunk: avoid pollution of atm-ice stress at coastal points, see #2464 |
Change History (2)
comment:1 Changed 3 years ago by smasson
comment:2 Changed 3 years ago by smasson
- Resolution set to fixed
- Status changed from new to closed
We took the opportunity of this bugfix to modify the way atm-ice stress is computed at U and V point.
We first compute it at T point and next distribute it over U and V point with a "masked" average.
With this method, we do the average of a product (rho*Cd*|Wnd|*Wnd) instead of the product of averaged values. We therefore keep a larger part of the signal with the new method.
fixed in [12925]. All sette tests are ok. As expected configuration with sea-ice and forcing are different: ORCA2_ICE_PISCES, ORCA2_SAS_ICE, AGRIF_DEMO and SPITZ12
[reee217@jean-zay1: sette]$ ./sette_rpt.sh Current code is : NEMO/trunk @ r12925 ( last change @ r12925 ) SETTE validation report generated for : NEMO/trunk @ r12925 (last changed revision) on X64_JEANZAY arch file !!---------------1st pass------------------!! !----restart----! WGYRE_PISCES_ST run.stat restartability passed : 12925 WGYRE_PISCES_ST tracer.stat restartability passed : 12925 WORCA2_ICE_PISCES_ST run.stat restartability passed : 12925 WORCA2_ICE_PISCES_ST tracer.stat restartability passed : 12925 WORCA2_OFF_PISCES_ST tracer.stat restartability passed : 12925 WAMM12_ST run.stat restartability passed : 12925 WORCA2_SAS_ICE_ST run.stat restartability passed : 12925 WAGRIF_DEMO_ST run.stat restartability passed : 12925 WSPITZ12_ST run.stat restartability passed : 12925 WISOMIP_ST run.stat restartability passed : 12925 WOVERFLOW_ST run.stat restartability passed : 12925 WLOCK_EXCHANGE_ST run.stat restartability passed : 12925 WVORTEX_ST run.stat restartability passed : 12925 WICE_AGRIF_ST run.stat restartability passed : 12925 !----repro----! WGYRE_PISCES_ST run.stat reproducibility passed : 12925 WGYRE_PISCES_ST tracer.stat reproducibility passed : 12925 WORCA2_ICE_PISCES_ST run.stat reproducibility passed : 12925 WORCA2_ICE_PISCES_ST tracer.stat reproducibility passed : 12925 WORCA2_OFF_PISCES_ST tracer.stat reproducibility passed : 12925 WAMM12_ST run.stat reproducibility passed : 12925 WORCA2_SAS_ICE_ST run.stat reproducibility passed : 12925 WORCA2_ICE_OBS_ST run.stat reproducibility passed : 12925 WAGRIF_DEMO_ST run.stat reproducibility passed : 12925 WSPITZ12_ST run.stat reproducibility passed : 12925 WISOMIP_ST run.stat reproducibility passed : 12925 WVORTEX_ST run.stat reproducibility passed : 12925 WICE_AGRIF_ST run.stat reproducibility passed : 12925 !----agrif check----! ORCA2 AGRIF vs ORCA2 NOAGRIF run.stat unchanged - passed : 12925 12925 !----result comparison check----! check result differences between : VALID directory : /gpfswork/rech/fqx/reee217/NEMO_ALL_VALIDATIONS/trunk/NEMO_VALIDATION at rev 12925 and REFERENCE directory : /gpfswork/rech/fqx/reee217/NEMO_ALL_VALIDATIONS/trunk/NEMO_VALIDATION at rev 12895 WGYRE_PISCES_ST run.stat files are identical WGYRE_PISCES_ST tracer.stat files are identical WORCA2_ICE_PISCES_ST run.stat files are DIFFERENT (results are different after 1 time steps) WORCA2_ICE_PISCES_ST tracer.stat files are DIFFERENT (results are different after time steps) WORCA2_OFF_PISCES_ST tracer.stat files are identical WAMM12_ST run.stat files are identical WISOMIP_ST run.stat files are identical WORCA2_SAS_ICE_ST run.stat files are DIFFERENT (results are different after 1 time steps) WAGRIF_DEMO_ST run.stat files are DIFFERENT (results are different after 1 time steps) WSPITZ12_ST run.stat files are DIFFERENT (results are different after 1 time steps) WISOMIP_ST run.stat files are identical WVORTEX_ST run.stat files are identical WICE_AGRIF_ST run.stat files are identical
In 12925: