Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
TillRasmussen opened this issue Jan 10, 2024 · 6 comments
Open

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

TillRasmussen opened this issue Jan 10, 2024 · 6 comments

Comments

@TillRasmussen
Copy link
Contributor

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
Copy link
Contributor

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
Copy link
Contributor

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
Copy link
Contributor Author

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
Copy link
Contributor Author

@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
Copy link
Contributor

dabail10 commented Jul 5, 2024

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

@TillRasmussen
Copy link
Contributor Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants