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

Jean-Michel Campin jmc at ocean.mit.edu
Mon Feb 2 17:57:13 EST 2015


Hi Martin and Dan,

I made some changes in pkg/shelfice:
a) kTopC is now zero over open ocean (was previously zero only over land)
b) reset surface forcing arrays (surfaceForcingT,S) to zero
   where there is ice-shelf cavity: 
   This was a problem left from when I made changes in APPLY_FORCING_T 
   & APPLY_FORCING_S to also account for surfaceForcingT,S where kSurfC > 1.
   should be fixed now.
c) added the small piece of code for useRealFreshWaterFlux, but did not
  do serious tests. Also, it's not available with the adjoint (TAF was not
  happy and was giving plenty of recomputations). 

Cheers,
Jean-Michel

On Sun, Jan 25, 2015 at 07:33:05PM -0500, Jean-Michel Campin wrote:
> 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
> 
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel



More information about the MITgcm-devel mailing list