[MITgcm-devel] more seaice blues for the adjoint

Jinlun Zhang zhang at apl.washington.edu
Fri Jun 8 06:58:37 EDT 2007


Martin, I am in Japan, so I catch this email of yours quick.
Good to know B-grid also has this problem. But I thought if the motion 
gets smaller and smaller, then delta approaches zero, and zeta would hit 
maximum, and eventually, everything is constant, thus dp/dx is zero. 
This would not be related to zmin. Am I wrong here?
Jinlun

> Hi Jinlun,
>
> I check with the b-code and at first I got zero motion!!! But why? the 
> reason is not the grid, but this line:
> zmin = 4e8
> if I set this to
> zmin = 0
> as we have agree a few days/weeks ago, I do get motion.
>
> So it's not the C-grid, but this lower limit for zeta, that makes zeta 
> = constant if delta = 0, and thus P = zeta*2*delt2 = const, so no 
> dP/dx -> no motion. if zmin = 0, then zeta is not constant, neither P 
> and we have motion.
> so if zmin = 0, then I need to do something else to ensure P = 
> constant if delta = 0., eg. P = P * delta/delt2
>
> Martin
>
> On 8 Jun 2007, at 08:38, Jinlun Zhang wrote:
>
>> Hi Martin,
>> Before your fix, is it occurring with both LSR and EVP C-grid codes? 
>> Also, would it be possible for you to try the B-grid that I put in 
>> originally (if it is still one of the options)? It is OK for not 
>> trying if you don't have time. I remember I tested this thing with 
>> B-grid years ago without finding similar problem, but I am not sure 
>> now after so many years without dealing with it again. I just hope 
>> this is not one of the differences between B and C. Your explanation 
>> certainly indicates that this thing does not depend on grid. But a 
>> test on B-grid would clear any residual doubts.
>> Thanks, Jinlun
>>
>>
>> Martin Losch wrote:
>>> Chris,
>>> when there is no strain (in the absence of any forcing), the ice 
>>> should not move, right? Unless you expect it to spread like a pile 
>>> of sand with time, but I don't know what the time scale for that 
>>> would be, very slow.
>>> If delta = 0, we reset it to delta_min, because we have to devide by 
>>> it zeta = press/(2*delta), this effictively makes zeta <= zeta_max = 
>>> press/(2*delta_min), after capping zeta, we recompute press_replace 
>>> = zeta*2*delta, if delta has been replaced by delta_min, this give 
>>> non zero pressure and thus a forcing due to internal stress. That's 
>>> the numerical issue. I am not shure that I solved it very well (the 
>>> adjoint breaks), but this way the ice does not move in the absence 
>>> of forcing.
>>>
>>> Martin
>>> On 7 Jun 2007, at 18:05, chris hill wrote:
>>>
>>>> Martin,
>>>>
>>>>  Quick ice question.
>>>>
>>>> Is it just a numerical issue i.e. is it clear what the underlying 
>>>> equations are, since ice is neither a classical fluid or a 
>>>> classical solid. What time scale does it spread on?
>>>>
>>>> Chris
>>>> Martin Losch wrote:
>>>>> No, but it's a numerical issure. I did not pay any attention to 
>>>>> this before and maybe this was no problem in the original code 
>>>>> that you supplied but if you have zero strain, Delta = 0, and this 
>>>>> is replaced by some Delta_min (SEAICE_EPS in the code) in order to 
>>>>> avoid division by zero (and infinite viscosities). P however is 
>>>>> still non-zero and divergence(stress) end up being (dP/dx, dP/dy) 
>>>>> .NE. 0, so that you have a forcing of down the slope of P. This 
>>>>> does not make sense (why would ice spontaneously spread?), so that 
>>>>> the pressure is replaced by P = P*Delta/max(Delta,SEAICE_EPS), so 
>>>>> that in the (rare) case of no strain P = zeta = eta = 0 and thus 
>>>>> no forcing by stress. Makes sense to me (and is really only 
>>>>> relevant in idealized test case, just like the spurious motion of 
>>>>> sigma coordinates vs. z-coordinates in ocean models).
>>>>> Hope I did not misunderstand anything here.
>>>>> Martin
>>>>> On 7 Jun 2007, at 13:40, Jinlun Zhang wrote:
>>>>>> Hi Martin,
>>>>>> Would this be due to some kind of finite differencing problem?
>>>>>> Jinlun
>>>>>>
>>>>>> Martin Losch wrote:
>>>>>>> Hi Patrick,
>>>>>>>
>>>>>>> I have found (or rather, was pointed to) a problem with the 
>>>>>>> seaice solvers: The start to move spontaneously (in the absence 
>>>>>>> of forcing), if the sea ice distribution is NOT uniform.
>>>>>>> I have implemented a fix but this will cause problems with the 
>>>>>>> adjoint: I need terms like
>>>>>>> SQRT(deltaC), which used to be SQRT(MAX(deltaC,SEAICE_EPS_SQ)), 
>>>>>>> so that the derivate code will be involve 1/sqrt(deltaC). Should 
>>>>>>> I put this into #ifdefs?
>>>>>>>
>>>>>>> Martin
>>>>>>
>>>>>> _______________________________________________
>>>>>> MITgcm-devel mailing list
>>>>>> MITgcm-devel at mitgcm.org
>>>>>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
>>>>> _______________________________________________
>>>>> MITgcm-devel mailing list
>>>>> MITgcm-devel at mitgcm.org
>>>>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
>>>>
>>>> _______________________________________________
>>>> MITgcm-devel mailing list
>>>> MITgcm-devel at mitgcm.org
>>>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
>>>
>>> _______________________________________________
>>> MITgcm-devel mailing list
>>> MITgcm-devel at mitgcm.org
>>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
>>
>> _______________________________________________
>> MITgcm-devel mailing list
>> MITgcm-devel at mitgcm.org
>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
>
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel




More information about the MITgcm-devel mailing list