[MITgcm-devel] real-fresh-water-flux with pkg/shelfice

Jean-Michel Campin jmc at ocean.mit.edu
Sun Jan 25 19:33:05 EST 2015


Hi Martin,

I took a look at this, and I propose to add the part of code in 
shelfice_forcing_surf.F (update of EmPmR) and see/change later
if it's consistent or not with shelfice_thermodynamics.F

One thing is that with staggerTimeStep=F, there will be inconsistency
between the fresh-water supply (effect on eta & grid-cell volume if
using Non-Lin Free-Surf) and the diffution effect on salinity
since this later one will be ahead by 1 time-step.

An other thing: I would like to change kTopC so that it's also set to 
zero where there is no ice-shelf.
I think this can save some computation within shelfice_thermodynamics.F
 (because of several "if kTopC <> 0 then ..."
and this would allow to fix very easily the SHELFICE_U_DRAG & V_DRAG
for the case of thin ice-shelf (all in 1rst level) with something like
 IF ( k.EQ.MAX(kTopC(i-1),kTopC(i)) ) THEN ...

Cheers,
Jean-Michel

On Fri, Jan 09, 2015 at 03:02:06PM +0100, Martin Losch wrote:
> Hi Jean-Michel,
> 
> I think we talked about this about a year ago, but I never completed my action item to actually implement this. 
> 
> >From what I found in my multiple personal MITgcm copies, I think we agreed on option 2(b) and your suggestions in 3), because I had partly implemented that already. The extra code in shelfice_forcing_surf.F looks like this:
> 
> #ifdef EXACT_CONSERV
> C NB: synchronous time step: PmEpR lags 1 time step behind EmPmR
> C     to stay consitent with volume change (=d/dt etaH).
> CML# ifdef ALLOW_AUTODIFF_TAMC
> CMLCADJ STORE PmEpR = comlev1, key = ikey_dynamics,  kind = isbyte
> CMLCADJ STORE EmPmR = comlev1, key = ikey_dynamics,  kind = isbyte
> CML# endif
> CML        IF ( staggerTimeStep ) THEN
>         DO j=1-OLy,sNy+OLy
>          DO i=1-OLx,sNx+OLx
>           PmEpR(i,j,bi,bj) = PmEpR(i,j,bi,bj) 
>      &         - SHELFICEfreshWaterFlux(i,j,bi,bj) 
>          ENDDO
>         ENDDO
> CML        ENDIF
> #endif /* EXACT_CONSERV */
>         DO j=1-OLy,sNy+OLy
>          DO i=1-OLx,sNx+OLx
>           EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj) 
>      &         + SHELFICEfreshWaterFlux(i,j,bi,bj) 
>          ENDDO
>         ENDDO
> 
> 
> cFac=1 adds temperature and salinity tendency due to the advection by meltwater. This is very tricky, because the underlying assumption is, that there is a thin boundary (not resolved) at T=tfreeze and S=sFreeze. This boundary layer will not vanish if freshwater is really added to the ocean, so I think that the cFac = 1 is still OK, but I can be convinced otherwise.
> 
> rFac is used on one place: computation of shelficeHeatFlux, which is “just” a diagnostic (and used in esoteric cost functions …), so I don’t see this as a crucial thing to understand (again). Currently, I don’t understand why it is used in the way it is.
> 
> Martin
> 
> On Jan 9, 2015, at 2:11 AM, Jean-Michel Campin <jmc at ocean.mit.edu> wrote:
> 
> > Hi Martin and others,
> > 
> > Looking at how to make shelfice to work with useRealFreshWaterFlux=T :
> > 
> > 1) I think there will be few things to change in solve_for_pressure.F
> >  (+ integr_continuity.F, integrate_for_w.F, cg3d.F & pre_/post_cg3d.F)
> >  for z* and/or for Non-Hydrostatic,
> >  but if we leave these 2 options on the side for now, should work
> >  as long as EmPmR has been updated to include ice-shelf melting.
> > 
> > 2) Regarding where/when to modify EmPmR (to add melting):
> > a) one option would be fill-up EmPmR (and may be also Qnet)
> >  in shelfice_thermodynamics.F and rely on usual way surface forcing
> >  is apply to T,S time-stepping.
> >  The problem here is that external_forcing_surf.F is not ready yet 
> >  to deal with ks > 1.
> > b) a simpler alternative (involving less changes) would be to continue
> >  to rely on shelfice_forcing_surf.F (called from external_forcing_surf.F)
> >  to copy shelficeForcingT/S into surfaceForcingT,S
> >  and to add a piece of code there to update/modify EmPmR.
> >  This would make a difference if using balanceEmPmR (that would
> >  balance EmPmR over ocean surface - excluding shelfice melting -
> >  but this might even be better.
> > 
> > 3) The other things involve changes in shelfice_thermodynamics.F:
> >  I would propose that:
> >  a) we keep unchanged the "SHELFICEBoundaryLayer" part together with
> >  the 2 S/R within shelfice_forcing.F but
> >  b) for the case SHELFICEBoundaryLayer=F, we could just compute the melting
> >  rate (shelfIceFreshWaterFlux ?) in shelfice_thermodynamics.F
> >  and push shelficeForcingT/S calculation to shelfice_forcing_surf.F
> >  I am not sure about the current setting of cFac/rFac according to
> >  SHELFICEconserve/useRealFreshWaterFlux, and there might be some simpler
> >  (and more consistent with main model options such as useRealFreshWaterFlux
> >  & nonlinFreeSurf with temp,salt_EvPrRn settings) ways to change this.
> > 
> > I might have missed something there (did not check too carefully);
> > and any comment is appreciated.
> > 
> > Cheers,
> > Jean-Michel
> > 
> > _______________________________________________
> > 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