[MITgcm-devel] merged budget_ice
Jean-Michel Campin
jmc at ocean.mit.edu
Tue Sep 21 19:41:50 EDT 2010
Hi Ian and others,
I've checked that the merged (_if + original) version of seaice_budget_ice.F
is not changing at all the forward tesreport results (tested with gfortran
and with ifort+mpi+mth). And regarding adjoint test (with gfortran),
I am getting small differences (15 versus 16 digits of matching
in gradient check) for lab_sea & lab_sea.evp (others are identical).
It could be moved to pkg/seaice. Do we want to give it a new name ?
(I think it would be better since the way it's written is quite
different from pkg/seaice/seaice_budget_ice.F).
The somehow equivalent in pkg/thsice (I was wrong last time) are:
THSICE_STEP_TEMP which call THSICE_SOLVE4TEMP
(seaice_solve4temp.F would look OK to me)
Cheers,
Jean-Michel
On Tue, Sep 21, 2010 at 12:10:27PM -0400, Jean-Michel Campin wrote:
> Hi Ian,
>
> I did not get the confirmation from Gael, but looks like the problem
> he was having (getting NaNs) with the MITgcm_contrib version of
> seaice_growth_if.F is quite similar to what I was getting (division by zero)
> in the same routine. The lines of code where we have a pb are:
> 1268 IF (salt(I,J,kSurface,bi,bj) .GE.
> 1269 & SEAICE_salinity_fixed) THEN
> 1270
> 1271 FreshwaterContribFromIce(I,J) =
> 1272 & - ActualIceVolumeChange(I,J)*
> 1273 & SEAICE_rhoICE/ RHOFW* (ONE -
> 1274 & SEAICE_salinity_fixed/salt(I,J,kSurface,bi,bj))
>
> I personally don't understand what this formulation means.
>
> In addition, it introduces a sharp discontinuity around
> salt() = SEAICE_salinity_fixed:
> a) if salt() = -1.e-16 + SEAICE_salinity_fixed, then
> FreshwaterContribFromIce is the full delta ice-volume
> b) if salt() = SEAICE_salinity_fixed, then
> FreshwaterContribFromIce = 0 even if there is a large
> change of ice volume (from melting or freezing)
>
> I have a 3rd remark: did not see any contribution to saltFlux,
> which seems strange for the case where SEAICE_salinity(_fixed) is > 0
>
> Thanks,
> Jean-Michel
>
> On Tue, Sep 21, 2010 at 02:27:07AM -0400, Ian Fenty wrote:
> > Merging SEAICE_BUDGET_ICE and SEAICE_BUDGET_ICE_IF
> >
> > Fenty_Thermo_Code_Updates/code_updates/seaice_budget_ice.F
> >
> > The routine seaice_budget_ice.F is merged with seaice_budget_ice_if.F in
> > a file which continues to be called seaice_budget_ice.F. The newly
> > merged routine can use either the original "default" method for
> > calculating fluxes between snow-ice and air by including "#define
> > USE_ORIGINAL_SBI" in SEAICE_OPTIONS.h.
> >
> > The method used in seaice_budget_ice_if.F is set to be the default.
> > Invoking the original flux calculations should give the same results as
> > using the original seaice_budget_ice routine. The difference between
> > the two methods is due to 1) alternative formulation of saturation vapor
> > pressure over the ice 2) truncation errors stemming from differences in
> > the ordering of some calculation 3) difference in the iterative search
> > scheme ( the original method uses an approximate derivative of the
> > surface energy balance w.r.t. the snow/ice surface temperature while the
> > _if codes uses the full derivative.).
> >
> >
> >
>
> _______________________________________________
> MITgcm-devel mailing list
> MITgcm-devel at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-devel
More information about the MITgcm-devel
mailing list