[MITgcm-devel] seaice adjoint and EVP
Martin Losch
Martin.Losch at awi.de
Thu May 24 09:06:21 EDT 2007
I have a new feeble theory for the noise in the evp solver over open
ocean:
heff = 0 over open ocean, therefore seaiceMassU/V = 0.
momentum equation in seaice_evp is discretized (in time) as
m*duice/dt = -m dphi/dx + tau_air + cd*(uice-uocean) + m*f*vice +
\nabla\sigma
m*(uice(n+1)-uice(n))/dt = -m dphi(n)/dx + tau_air(n) - cd*(uice(n+1)-
uocean(n)) + m*f*vice(n) + \nabla\sigma(n),
so coriolis is explicit, ice-ocean stress is implicit. if the mass m
is zero (and zetaMin=0, so that zeta=eta=press = 0 over open ocen)
this reduces to
cd*uice(n+1) = tau_air(n) + cd*uocean(N)
so that uice ist a purely diagnostic quantity and not time stepped.
cd is a function of uice-uocean at the nth time step, averaged to
center points and the averaged back to velocity points.
Dimitris, could that be the problem, somehow I don't think so, but
you can try by putting a minimum seaiceMassU/V in seaice_dynsolver.F,
say seaiceMassU = max(seaiceMassU,SEAICE_rhoIce*0.05)
Martin
On 22 May 2007, at 18:59, Jinlun Zhang wrote:
> Hi Martin,
> Yeah, we are sort of stuck, but hey it is very interesting and
> revealing.
> I would vote against masking ice velocities over open water
> because, as mentioned earlier, the ice velocities would be wrong at
> ice edge and the ice velocity discontinuity at ice edge will get
> into ocean. (o:. We don't do the masking with LSR solver, perhaps
> we can avoid doing that with EVP.
> Jinlun
>
> Martin Losch wrote:
>
>> Hi Jinlun,
>> the evp-solver is only in place for the C-grid. I don't have the
>> time to code the solver for the b-grid now. The b-grid code (for
>> LSR) is still working, but I have not kept it up to date, so
>> there may be a few thing different other than the different grids.
>>
>> In general I though that the c-grid is perfect for evp as all the
>> discretizations fall in place naturally. Only for this \delta
>> term one needs to average from center to corner points and vice
>> versa (have a look at seaice_calc_strainrates and seaice_evp).
>> However, there may be issues with the coriolis terms (commonly a
>> problem with the c-grid).
>>
>> Actually, Elizabeth told us that she masks ice velocities over
>> open water in CICE.
>>
>> Now we are a little stuck, aren't we?
>>
>> Martin
>>
>> PS. I need to be able to reproduce these results myself (I
>> haven't been able to, yet), maybe I can debug the stuff this way.
>> Via email etc. it's quite demanding (o:
>>
>> On 21 May 2007, at 19:15, Jinlun Zhang wrote:
>>
>>> I wouldn't think C-grid is problematic with EVP as we have seen.
>>> But just to make sure, is it possible to use the original B-grid
>>> EVP to see if the same things occur? There was a B-grid ice
>>> model setup in place that may be used for doing B-grid.
>>> Better not zap out things over open ocean. Otherwise,
>>> discontinuity may occur and ocean may be screwed up.
>>> Jinlun
>>>
>>>>> Hi Martin,
>>>>>
>>>>>> 1. Are these figures all with with zMin = 0?
>>>>>
>>>>>
>>>> In this case it may be worth turning of individual terms in the
>>>> rhs of the momentum equations
>>>> 1. dphiSurf/dx and dphiSurf/dy (in seaice_dynsolver)
>>>> 2. surface wind stress (taux/y=0 in seaice_get_dynforcing)
>>>> 3. ice-ocean stress (DWATN in seaice_evp)
>>>> 4. Coriolis
>>>> 5. stressDivergence
>>>> 4 and 5 should be zero over open ocean anyway so I do not see
>>>> how these terms can lead to the stripes.
>>>> We should get to the bottom of what is causing these stripes.
>>>> that way we can probably understand the noise in the ice
>>>> fields, too.
>>>>
>>>>>
>>>>> Yes, all the figures and results under
>>>>> http://ecco2.jpl.nasa.gov/data1/arctic/output/tests/
>>>>> (except for the oldtest subdirectory) are with zMin=0.
>>>>>
>>>>>> 2. Do you have an EVP run that does not blow up at all
>>>>>> (regardless of noise)?
>>>>>
>>>>>
>>>>> I have not run any of the zMin=0/SEAICEuseFlooding=.true.
>>>>> tests out for very
>>>>> long, but I am almost certain that none of these new
>>>>> integrations will crash,
>>>>> including the SEAICE_deltaTevp=60.
>>>>> The crashes had to do with snow accumulation and could happen
>>>>> to both LSR or to
>>>>> EVP solutions.
>>>>
>>>>
>>>> That's good news. It mean that we can (in principle) maskRHS
>>>> flag and not worry about the stripes.
>>>>
>>>>>
>>>>>> 3. What's the convergence criterion for LSR, and how many
>>>>>> interations do you allow/do? In other words how close is the
>>>>>> LSR solution to VP?
>>>>>
>>>>>
>>>>>
>>>>> LSR_ERROR = 2e-4,
>>>>> SOLV_MAX_ITERS=1500
>>>>
>>>>
>>>> That's not very much, is it? For an accurate VP solution I
>>>> would put LSR_ERROR = 1e-7 to 1e-13, right?
>>>>
>>>>>
>>>>>> c. the same is true for the wind-ice/ocean-ice stress terms
>>>>>> which in involve
>>>>>> averaging perpendicular to the stripes (unless the turning
>>>>>> angle is not
>>>>>> equal to zero, in which case there is also averaging in the
>>>>>> other directions,
>>>>>> but you don't do that, do you?).
>>>>>
>>>>>
>>>>>
>>>>> No I use SEAICE_airTurnAngle=SEAICE_waterTurnAngle=0.
>>>>
>>>>
>>>> Good.
>>>>
>>>>>
>>>>>> About question 3 (is it really a VP solution): Could you
>>>>>> diagnose SIsigI and SIsigII (snapshots!!!! I guess one is
>>>>>> enough) for all (or some) solutions and
>>>>>> plot them (plot(SIsigII(:),SIsigI(:),'x')? These should be
>>>>>> the principle components of sigma normalized by the
>>>>>> strength/ pressure P.
>>>>>
>>>>>
>>>>>
>>>>> With SEAICE_dumpFreq, SIGMA1, SIGMA2, and SIGMA12 are
>>>>> diagnosed by default for
>>>>> the EVP solutions but not for LSR. Are these the same as
>>>>> SIsigI and SIsigII?
>>>>> Figure for SIGMA1, SIGMA2 for EVP solution is here:
>>>>> http://ecco2.jpl.nasa.gov/data1/arctic/output/tests/figs/
>>>>> SIGMA2232.ps
>>>>> Does it look as expected?
>>>>
>>>>
>>>> sigma1/2/12 are not the principle stress components. I have
>>>> added diagnostics that are called SIsigI and SIsigII, which is
>>>> what you want. In principle you could computed them yourself
>>>> (from snapshots):
>>>> SIsigI = 0.5*(sigma1 + sqrt(sigma2^2 + 4*sigma12^2)/Press
>>>> SIsigII = 0.5*(sigma1 - sqrt(sigma2^2 + 4*sigma12^2)/Press
>>>>
>>>> Press = max(1.e-13,Pstar * HEFF *exp( -20*(1-AREA)));
>>>>
>>>> see seaice_do_diags.F (and seaice_dynsolver.F)
>>>>
>>>>>
>>>>>> I am also a little concerned that the LSR and EVP solutions
>>>>>> look so different
>>>>>> in the ice-covered area, can that be attributed to that
>>>>>> different boundary
>>>>>> conditons? Can you try a run with no slip for the evp solver?
>>>>>
>>>>>
>>>>>
>>>>> Is LSR no slip by default? How do you specify no slip for evp
>>>>> solver?
>>>>
>>>>
>>>> LSR is half slip and that's hardwired. I didn't want to bother
>>>> this the boundary conditions if EVP works, because it's so
>>>> much simpler to do that in EVP. But now I may have to
>>>> reconsider this decision.
>>>> EVP is free slip by default. SEAICE_no_slip = .true. makes it
>>>> no slip.
>>>>
>>>> Martin
>>>>
>>>> _______________________________________________
>>>
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel
More information about the MITgcm-devel
mailing list