[MITgcm-devel] obcs and seaice
Martin Losch
Martin.Losch at awi.de
Tue Feb 24 04:52:59 EST 2009
Hi Dimitris,
I am moving my questions about obcs and seaice to the devel list.
In both obcs_apply_uvice and obsc_apply_seaice seaice open boundary
conditions are only computed and applied when the corresponding input
fields are available. That makes little sense to me, but maybe you can
give me an explanation. Ad hoc (and this is how it is done in the
other parts of obcs), I find this procedure useful:
1. compute some default values for the open boundaries
2. read open boundary values from a file, if available, thereby
overwriting the default values
3. if necessary, modify the open boundary values after reading them.
E.g, I am currently experimenting with a OB following Stevens et al
(1990), that's a standard MOM open boundary condition, where the input
fields are combined with some sort of simplyfied radition condition.
4. apply the computed/read/modified boundary values
Now I can understand, that one might want OBCS but for some reason not
for seaice. For this case I found the CPP-Flag DISABLE_SEAICE_OBCS,
actually there could also be runtime flag for this, just like
useOrlanskiEast, etc.
What happens in obcs_apply_uvice/seaice (for example at the eastern
boundary):
If (and only if) there is file OBEuiceFile, boundary conditions for
uice and vice are applied. Under certain circumstances they are
computed, overwriting the read parameters. These circumstances are
governed by numerous CPP-flags:
DISABLE_SEAICE_OBCS
OBCS_SEAICE_COMPUTE_UVICE
OBCS_SEAICE_AVOID_CONVERGENCE
OBCS_SEAICE_SMOOTH_UVICE_PERP
OBCS_SEAICE_SMOOTH_UVICE_PAR
OBCS_SEAICE_SMOOTH_EDGE
While I believe that all of what these flags is useful, it still makes
the code very difficult to understand and use.
I suggest this:
1. introduce a runtime flag, that decides if obcs for seaice is
applied at all (maybe for each boundary), default is true
2. I would replace DISABLE_SEAICE_OBCS with a defined
ALLOW_SEAICE_OBCS (in OBCS_OPTIONS.h or in SEAICE_OPTIONS.h?, I think
the former)
3. in obcs_apply_uvice/seaice, if not earlier in obcs_calc, compute
boundary values, possibly only if there is no corresponding file, as
default behavior: ice can leave the domain, but not enter (i.e.
grad(UICE)=0 and HEFF etc=0 if UICE is directed into domain.
4. apply all this smoothing, etc regardless of boundary value files
What do you think? What should be done about the current behavior/want
to keep the results?
Martin
More information about the MITgcm-devel
mailing list