nextsimhub / nextsimdg

neXtSIM_DG : next generation sea-ice model with DG
https://nextsim-dg.readthedocs.io/en/latest/?badge=latest
Apache License 2.0
10 stars 13 forks source link

Problems with free-drift test cases #192

Closed einola closed 1 year ago

einola commented 1 year ago

Investigating some issues in the BBM implementation, I created some free drift test cases, only to find more issues. The test cases re-use the geometry of Mehlmann benchmark, but here we have constant wind and ocean forcing and only a small patch of low concentration ice (with cracks) that's advected under wind and ocean currents. We expect the patch to drift undeformed along a diagonal x=y (if we turn off Coriolis). See the branch freedrift_tests.

Using the mEVP rheology we get strange features along the downwind side of the ice patch while using the BBM rheology we get strange features at the bottom of the patch. This also happens if I comment out the StressUpdateHighOrder functions, so the problem is not there.

einola commented 1 year ago

To clarify: I get the same results even without the stress update in StressUpdateHighOrder. This means that the two functions MEBStep and MEVPStep don't give the same results for either the stress update commented out or with very low concentration (which gives very low stress, as expected).

pminak commented 1 year ago

To get the same results for MEBStep and MEVPStep for MEB time stepping, you need a smaller timestep than MEVP. I verified it with a function VP, which I will find and commit back.

I'll check free drift and get back to @einola.

einola commented 1 year ago

I didn't think about the time stepping, to be honest. But my feeling is that with very low concentration internal stress is zero and we should get the same results for all time steps shorter than some stability limit - which I expect to be quite large. I'll think about this more though.

einola commented 1 year ago

I've made some progress with this in the freedrift_tests branch. See commit 009058a8d68ae019f6cac625dad56f5407fbfa0a. This replaces the explicit solver with an exact copy of what I did in the old neXtSIM (see the BBM paper and Hunke and Dukowicz (1997).

winzerle commented 1 year ago

I now looked at what you’re doing. It took some time to understand it :-) You’ve implemented the EVP-iteration, we had the mEVP iteration, which is rather different. The EVP iteration is a subcyling with a smaller time step size. mEVP still does one step with the large step size but uses an iteration towards it.

I found a mistake in the old mEVP - iteration (that I already fixed for the paper) but this was not the problem. Although looking severe (a wrongly set bracket) it had no effect.

There’s one thing in your formulation: For the wind-forcing, shouldn’t it be | a | * a, so the norm of the wind-velocity should be there. But I think you do not have it.

At the moment I do not understand, why the agreement to other results is perfect for the benchmark, but why the free drift is indeed not looking good. It could really have to do with the convective term. I will further look into it.

Thomas

On 18. Nov 2022, at 07:24, Einar Örn Ólason @.***> wrote:

I've made some progress with this in the freedrift_tests branch. See commit 009058a. This replaces the explicit solver with an exact copy of what I did in the old neXtSIM (see the BBM paper and Hunke and Dukowicz (1997).

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were assigned.

winzerle commented 1 year ago

Finally I found the problem. It is something with the mEVP iteration and how it is usually used.

It is basically a question of parameters and how they are usually chosen. If one slightly modifies the mEVP iteration is all looks good in the free drift case. But this does not mean that the iteration also makes sense :-) I will need to read a bit and can explain it on Wednesday.

Thomas

On 18. Nov 2022, at 07:24, Einar Örn Ólason @.***> wrote:

I've made some progress with this in the freedrift_tests branch. See commit 009058a. This replaces the explicit solver with an exact copy of what I did in the old neXtSIM (see the BBM paper and Hunke and Dukowicz (1997).

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were assigned.

einola commented 1 year ago

I look forwards to Wednesday then :)

I'll also check the norm that seems to be missing. I now also get "waves" at the bottom of the ice floe. It's strange, but I'll try to figure it out soon. Unfortunately, today and Monday are largely reserved for less interesting things :(