Closed JFLemieux73 closed 1 month ago
atm_data_type = 'uniform_NWW'.
Ok I can really simplify the problem. Even with Pstar=0 it still crashes.
Here is vvelN after 3 days. There are unrealistic values at the north and east edge, especially the NE corner.
Keeping Pstar=0, I also set kridge = -1 ktransport = -1
Here is vvelN after 3 days
Notice the diff range of values. I just want to show that vvelN is different at the ice edge. It should not. It should be equal to the freedrift velocity. This is certainly related to our treatment of uvelE,vvelN at the ice edge.
Ok the problem is clearly not related to the remapping. It also crashed with upwind.
Ok I am able to correct the problem with ktransport=kridge=-1 for the diff velocities at the edge. At a point i,j (N) on the north edde, uN is (uEij+uEi-1j+0+0)/4. If I just use the ice points to calc uN, i.e. uN=(uEij+uEi-1j)/2 and I do the same thing for vE I get the following:
It is the freedrift velocity everywhere.
Using this new code, it still crashes with ktransport=kridge=1. Looks like there is another problem...My bet is that it is related to the concentration used to calculate the wind stress and the water stress. With all the simplifications done, at steady state the balance is only between these two terms.
At steady-state aicetauair = aicetauw. My guess is that aice on the LHS .ne. aice on RHS. In stepu_C and stepv_C I forced aice on both sides to be equal to 1. The problem disappears...
Ok I think that aicetauair is only calculated at the beginning...i.e. aice = aice_init (constant in time). When solving for uvelE,vvelN at steady-state we would have:
tauw = aice_init x tauair / aice
When aice is small this can lead to large unrealistic velocities.
@apcraig am I right that in idealized experiments such as the one described above aicetauair is only calculated once in uniform_data_atm and held fixed for the rest of the simulations?
I just checked and the problem also affects the B-grid. The model also crashes.
@apcraig am I right that in idealized experiments such as the one described above aicetauair is only calculated once in uniform_data_atm and held fixed for the rest of the simulations?
I don't know the answer for sure. But it looks like uniform_data_atm is called as part of the initialization (init_forcing_atmo) and during the run (get_forcing_atmo). When you added the "uniform_NWW" option, did you add it to both of those subroutines?
I guess I created the bug with my new wind stress! Sorry about that.
Good to see that the idealized test cases are ok.
I will also modify it in get_forcing_atmo. Thanks!
I am closing this issue as it was not a real instability. The only thing interesting here is the alternative calculation of uN and vE as explained above. This could be useful for issue #713.
While investigating issue #970 there was a crash after a few days with a negative area. I think this is different then all the cases we have seen before with the EFA method as these were related to the non-uniform grid and involved realistic velocities.
In this case the grid is uniform with dx=dy=16 km. The velocities are however unrealistic with some values 10 times larger than freedrift. This could be related to the problem seen by @daveh150 (issue #941).
The exp is:
./cice.setup --case INSTAB -g gbox80 -m ppp6 -e intel -p 1x1 -s boxforcee,boxclosed,buildincremental
I setup in ice_in the following:
ice_data_type = 'eastblock' ice_data_conc = 'c1' ice_data_dist = 'uniform'
Note that seabed_stress = .false.
With uniform_west (block drift away from the coast) there is no crash. I found the problem because I created a new idealized wind: NWW: uatm = -atm_val, vatm = -atm_val