Open TillRasmussen opened 10 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.
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?
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
@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.
Just getting back to this one. Do we have a fix?
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.
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