CICE-Consortium / CICE

Development repository for the CICE sea-ice model
Other
57 stars 131 forks source link

dynamics U points are active when T points are not #925

Open TillRasmussen opened 9 months ago

TillRasmussen commented 9 months ago

According to the formulation of the U points should not be the active when T mask is not. This is the case and the reason is that aice_init is used to find the ice concentration at U points and aice is used to find the ice concentration at T points. This is inconsistent and I think that is a bug. The fix is easy ensure that the same ice concentrations are used in the evp, eap and the vp subroutines. My guess is that it is aice that should be used but I would like an opinion from others before I change it.

An example where this issue occur is the test. freya_gnu_smoke_gx3_8x2_diag24_medium_run1year_debug.baseline_dump_debug It happens in many other test as well. Som output aiX(i,j) , Xmass(i,j) ! average of mass and ice concentration in U point 0.10282E-02 0.62235E-01 The following values are the following points (i-1, j+1), (i, j+1), (i+1, j+1) (i-1, j ), (i, j ), (i+1, j ) (i-1, j+1), (i, j+1), (i+1, j+1) aice 0.42316E-04 0.42015E-03 0.41475E-04 0.95482E-04 0.18367E-03 0.24394E-03 0.13911E-05 0.61725E-05 0.13087E-04 aice_init 0.44378E-04 0.44704E-03 0.35680E-02 0.96238E-04 0.18468E-03 0.24933E-03 0.14013E-05 0.62042E-05 0.13143E-04

aiX is the average of the 4 upper right points ((i, j+1), (i+1, j+1) (i, j ), (i+1, j )) and T uses

dabail10 commented 8 months ago

I'm not sure this is a bug. The point is you may have a change in ice concentration in a cell, and we have a region around the edge of the ice pack where we still compute the velocities so we have something to advect the ice in our out. @eclare108213 can expand on this.

eclare108213 commented 8 months ago

That's true, we do have a row of cells around the edge of the pack to allow advection there. So I guess the possibility is that there's a cell in that row, which is empty of ice, but it's neighboring cells receives ice by advection and therefore the U point between them becomes active. That would make sense. But when the ice T- and U-masks are defined, I don't think this should be true. @TillRasmussen is this coming up immediately after new ice masks are defined, or later?

TillRasmussen commented 8 months ago

I added a check just after the umask/iceXmask was calculated.

See branch https://github.com/TillRasmussen/CICE/tree/TU_MASK file ice_dyn_shared.F90 subroutine dyn_prep2 line 687

TillRasmussen commented 8 months ago

@eclare108213, @dabail10 I have looked a bit more at this and It extends a bit more than just the t and u mask. It also means that stresses (indirectly from calculations of seabed_stress and strength) and velocities (step_u) are based on different ice concentrations.

dabail10 commented 3 months ago

Just getting back to this one. Do we have a fix?

TillRasmussen commented 1 month ago

The easy fix is to replace aice_init with aice in ice_dyn_evp.F90, ice_dyn_eap.F90 and ice_dyn_vp.F90. This will result in minor differences in the result. The averaging from t to u/n/e cells is done before any iterations is carried out.

I can make the change and make a pull request. Then we can take it from there.