[MITgcm-devel] conservation // sublimation
Ian Fenty
ifenty at gmail.com
Tue Jun 21 12:17:51 EDT 2011
Gael,
Our thinking on the subject is almost identical. In fact, the trial
version I gave Martin had multicategory support and an almost identical
posteriori test. I did overlook legacy solve4temp support, however.
I'll commit following JM's checkpoint.
-Ian
On 6/21/2011 8:12 AM, Gael Forget wrote:
> Hi Ian,
>
> thanks for taking charge of this. Your approach sounds fine.
> You probably thought it through already, but I would like
> to raise two issues before you proceed with the check-in.
>
> The a posteriori fixes (the one in line with Martin's code that
> I had annotated, and the other one that I would have argued for) would
> have
> been adequate with&without SEAICE_MULTICATEGORY, with&without
> SEAICE_SOLVE4TEMP_LEGACY. Please make sure your fix does too.
>
> Also, in the a priori fix approach (via solve4temp, as you
> implemented) I see how
> things could go wrong in the future. To remove the risk of the problem
> re-appearing
> and going undetected again, we now need an a posteriori test in
> seaice_growth.F.
> Something like "if r_FWbySublim<>0 then print_error and stop" right
> after the
> sublimation term has been applied. It is probably not great
> for vectorization,
> but safety should be the highest priority. So please add one such test.
>
> Cheers,
> Gael
>
> On Jun 20, 2011, at 7:40 PM, Ian Fenty wrote:
>
>>
>> Martin,
>>
>> On 6/17/2011 3:56 PM, Martin Losch wrote:
>>> Hi there,
>>>
>>> it looks like, Ian's "crack" is really fixing the heat conservation
>>> problem.
>>>
>>> Further I like the conceptual idea: you cannot not sublimate more
>>> mass than there is.
>>>
>>> I completely vote for this version.
>>>
>>> Now, what does the adjoint think of this?
>>>
>>
>> I tested today. The adjoint is stable when sublimation is treated
>> with my fix (it may have been stable with the other method but I
>> didn't look). Moreover, including sublimation in the adjoint
>> modifies the dJ/dAQH in a perfectly interpretable way. Basically,
>> the greater the AQH, the lower the latent heat flux/sublimation/mass
>> loss, the greater the ice concentrations at the end of the simulation.
>>
>> So. That's two votes yes and an unknown number of votes abstaining.
>> I put it my fix tomorrow unless there is objection.
>>
>> -Ian
>>
>>> Martin
>>>
>>> On Jun 17, 2011, at 11:06 AM, Ian Fenty wrote:
>>>
>>>> Ice-people,
>>>>
>>>> After discussing with Martin, I took a crack at fixing the
>>>> non-conservation bug that Gael found in the sublimation code. The
>>>> approach I took, which works and is physically sound, is to cap the
>>>> latent heat flux over the ice in solve4temp so that sublimation
>>>> cannot remove more than the total mass of snow and ice present over
>>>> a time step.
>>>>
>>>> A maximum latent heat flux (F_lh_max) is calculated in
>>>> seaice_growth using the true (not regularized) ice and snow
>>>> thickness and passed as an argument to solve4temp. In the
>>>> Newton-Rhapson loop, if F_lh is capped, the derivative of F_lh with
>>>> respect to tsurfLoc is set to zero so that both numerical
>>>> convergence and energy conservation are achieved.
>>>>
>>>> #ifdef SEAICE_ADD_SUBLIMATION_TO_FWBUDGET
>>>> c if the latent heat flux implied by tsurfLoc exceeds
>>>> c F_lh_max, cap F_lh and decouple the flux magnitude from TICE
>>>> if (F_lh(I,J) .GT. F_lh_max(I,J)) THEN
>>>> F_lh(I,J) = F_lh_max(I,J)
>>>> dqhice_dTice = ZERO
>>>> endif
>>>> #endif
>>>>
>>>> In addition, the order in which thickness tendency terms are
>>>> applied in seaice_growth must be changed such that loss of ice and
>>>> snow by sublimation occurs before ice-ocean melting (if ice and
>>>> snow are removed by ice-ocean fluxes prior to sublimation we can
>>>> end up with nonzero r_FWbySublim).
>>>>
>>>> Unlike other ice fluxes, the latent heat flux does actually have an
>>>> upper bound which we simply overlooked in the past (which was a
>>>> good approximation being that actual latent heat fluxes<< maximum
>>>> latent heat fluxes). By bounding F_lh and switching the order of
>>>> the d_HEFF operations, we are ensured no latent heat flux residuals
>>>> and therefore no need for complicated retroactive accounting of
>>>> energy and freshwater fluxes in QNET and EmPmR.
>>>>
>>>> Comments?
>>>>
>>>> -Ian
>>>>
>>>>
>>>> On Jun 7, 2011, at 9:29 PM, Gael Forget wrote:
>>>>
>>>>> Hi Martin et al.,
>>>>>
>>>>> as you may have notice, I did a slight re-organization of the
>>>>> SEAICE_ADD_SUBLIMATION_TO_FWBUDGET code.
>>>>>
>>>>> The reason why I did this now is that, once we double check it,
>>>>> I think it should become the default for the EVOLUTION branch (i.e.
>>>>> I would replace #ifdef SEAICE_ADD_SUBLIMATION_TO_FWBUDGET
>>>>> with a simple #ifndef SEAICE_GROWTH_LEGACY) and then
>>>>> include it in the seaice tracer stuff (seaice_tracer_phys.F).
>>>>>
>>>>> I tested the changes with global_ocean.cs32x15, after adding
>>>>> SEAICE_ADD_SUBLIMATION_TO_FWBUDGET, over one year.
>>>>> I checked that the experiment thus tested all of the 'if ...'
>>>>> blocs, and it believe it
>>>>> did. Then I checked that the results remained identical as I
>>>>> edited the code,
>>>>> which they did. So I am pretty confident I did not change a thing.
>>>>> Am I mistaken?
>>>>>
>>>>> However, one point got my attention, which I think is a bug that
>>>>> is likely to break
>>>>> conservation. Indeed in the case when the pre-determined
>>>>> sublimation increment goes
>>>>> beyond all of the ice/snow that is present, we take the rest of
>>>>> a_FWbySublim (now called
>>>>> r_FWbySublim in analogy with the rest of the code) form the ocean,
>>>>> consistent with
>>>>> evaporation not sublimation. So I think we need to do something
>>>>> about the different latent
>>>>> heats. It took me a while, and I had to ask for Jean-Michel's
>>>>> help, but I think we figured
>>>>> the correct bug fix. I wrote it down as a comment (line 1499 to
>>>>> 1503).
>>>>>
>>>>> What do you think?
>>>>>
>>>>> Cheers,
>>>>> Gael
>>>>>
>>>>
>>>> _______________________________________________
>>>> MITgcm-devel mailing list
>>>> MITgcm-devel at mitgcm.org <mailto:MITgcm-devel at mitgcm.org>
>>>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
>>>
>>> _______________________________________________
>>> MITgcm-devel mailing list
>>> MITgcm-devel at mitgcm.org <mailto:MITgcm-devel at mitgcm.org>
>>> http://mitgcm.org/mailman/listinfo/mitgcm-devel
>>
>>
>> _______________________________________________
>> MITgcm-devel mailing list
>> MITgcm-devel at mitgcm.org <mailto: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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mitgcm.org/pipermail/mitgcm-devel/attachments/20110621/d611c6cc/attachment-0001.htm>
More information about the MITgcm-devel
mailing list