Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OBCS_SEAICE_NEUMANN flag, more store directives, and cleanup #740

Open
wants to merge 39 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
99042a8
avoid division by zero in AD code of SQRT
mjlosch Jun 26, 2023
32b24d5
cleanup and reordering of CPP flags
mjlosch Jun 26, 2023
f3b8229
add cost_mask_file to be specified at runtime
mjlosch Jun 26, 2023
d906bf6
add new flag OBCS_SEAICE_NEUMANN which overrides input files
mjlosch Jun 26, 2023
85ec739
adjust store directives to work with stevens BC and BALANCE_FLOW
mjlosch Jun 26, 2023
ad38f22
avoid multiple divisions by constants, some cleanup
mjlosch Jul 10, 2023
886addf
Merge branch 'upstream/master'into sochic_code_changes
mjlosch Aug 31, 2023
8dc7a3d
fix making the wrong decision during the merge
mjlosch Aug 31, 2023
6694d02
Merge upstream/master into sochic_code_changes
mjlosch Sep 4, 2023
fcb6ccd
Merge branch 'master' into sochic_code_changes
jm-c Apr 10, 2024
96f4ddd
rename "ctrl_dummy.h" --> "CTRL_DUMMY.h"
jm-c Apr 10, 2024
f926ef2
fix indexing bug spotted by jmc
mjlosch Apr 10, 2024
c79648d
fix another bug introduced in commit d906bf6
mjlosch Apr 10, 2024
2a5b546
small format changes to configuration output
mjlosch Apr 15, 2024
d79103a
add minimal documentation to seaice with obcs and a flow chart
mjlosch Apr 15, 2024
668a88d
small change to doc
mjlosch Apr 15, 2024
d8ac131
turn Neumann BC CPP-flag into runtime flag useSeaiceNeumann
mjlosch Apr 16, 2024
6ab305f
remove unnecessary store directives
mjlosch Apr 17, 2024
aa27cd6
fix adjust boundary values
mjlosch Apr 18, 2024
5c100af
test useSeaiceNeumann in seaice_obcs.tides
mjlosch Apr 18, 2024
2ddc06b
small bug fix
mjlosch Apr 18, 2024
4564843
include OBCS_PARAMS.h to be able to compile with pkg/seaice and obcs
mjlosch Apr 18, 2024
33cf716
new store directives necessary for undef EXCLUDE_PCELL_MIX_CODE
mjlosch Apr 18, 2024
031eb42
adjust store directives to avoid recomputations, fix division by 0
mjlosch Apr 18, 2024
5a4ce7b
only check LSR constants in AD-mode if SEAICEuseLSR=T
mjlosch Apr 19, 2024
16d4706
add TAF-AD verification experiment that test obcs + seaice
mjlosch Apr 19, 2024
aa8c23c
simplify test: do not deal with Visbeck AD now
mjlosch Apr 22, 2024
fe4a92e
small adjustments in store directives with a big effect
mjlosch Apr 22, 2024
37f160e
AD verification experiment now with tides code (only compiled)
mjlosch Apr 22, 2024
9c0b37f
new secondary test with 4 open boundaries
mjlosch May 23, 2024
5c3878b
remove AD-configuration of seaice_obcs
mjlosch May 23, 2024
33f3fc7
back to original version
jm-c May 23, 2024
7f73d3e
Merge branch 'master' into sochic_code_changes
jm-c May 23, 2024
05b89b8
bring back useSeaiceNeumann test
jm-c May 23, 2024
0794cb5
update comments
jm-c May 23, 2024
848d369
update comments
jm-c May 24, 2024
6603bd3
adjust some CPP-flags
mjlosch May 24, 2024
edb53a4
more consistent upper/lower case
jm-c May 24, 2024
bd45a19
Update some adm & tlm ref. output
jm-c May 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
101 changes: 77 additions & 24 deletions doc/phys_pkgs/obcs.rst
Expand Up @@ -548,10 +548,10 @@ OBCS\_APPLY\_*:
:filelink:`OBCS\_SPONGE <pkg/obcs/obcs_sponge.F>`:
##################################################

The sponge layer code (turned on with CPP option :varlink:`ALLOW_OBCS_SPONGE` and run-time parameter
:varlink:`useOBCSsponge`) adds a relaxation term to the right-hand-side of
the momentum and tracer equations. The variables are relaxed towards
the boundary values with a relaxation time scale that increases
The sponge layer code (turned on with CPP option :varlink:`ALLOW_OBCS_SPONGE`
and run-time parameter :varlink:`useOBCSsponge`) adds a relaxation term to the
right-hand-side of the momentum and tracer equations. The variables are relaxed
towards the boundary values with a relaxation time scale that increases
linearly with distance from the boundary

.. math::
Expand All @@ -563,27 +563,42 @@ linearly with distance from the boundary
{[(1-l)\tau_{b}+l\tau_{i}]}

where :math:`\chi` is the model variable (U/V/T/S) in the interior,
:math:`\chi_{BC}` the boundary value, :math:`L` the thickness of the
sponge layer (runtime parameter :varlink:`spongeThickness` in number
of grid points), :math:`\delta{L}\in[0,L]`
(:math:`\frac{\delta{L}}{L}=l\in[0,1]`) the distance from the boundary
(also in grid points), and :math:`\tau_{b}` (runtime parameters
:varlink:`Urelaxobcsbound` and :varlink:`Vrelaxobcsbound`) and
:math:`\chi_{BC}` the boundary value, :math:`L` the thickness of the sponge
layer (runtime parameter :varlink:`spongeThickness` in number of grid points),
:math:`\delta{L}\in[0,L]` (:math:`\frac{\delta{L}}{L}=l\in[0,1]`) the distance
from the boundary (also in grid points), and :math:`\tau_{b}` (runtime
parameters :varlink:`Urelaxobcsbound` and :varlink:`Vrelaxobcsbound`) and
:math:`\tau_{i}` (runtime parameters :varlink:`Urelaxobcsinner` and
:varlink:`Vrelaxobcsinner`) the relaxation time scales on the boundary
and at the interior termination of the sponge layer. The parameters
:varlink:`Urelaxobcsbound` and :varlink:`Urelaxobcsinner` set the relaxation time scales for
the Eastern and Western boundaries, :varlink:`Vrelaxobcsbound` and :varlink:`Vrelaxobcsinner`
for the Northern and Southern boundaries.
:varlink:`Vrelaxobcsinner`) the relaxation time scales on the boundary and at
the interior termination of the sponge layer. The parameters
:varlink:`Urelaxobcsbound` and :varlink:`Urelaxobcsinner` set the relaxation
time scales for the Eastern and Western boundaries, :varlink:`Vrelaxobcsbound`
and :varlink:`Vrelaxobcsinner` for the Northern and Southern boundaries.


OB's with nonlinear free surface
################################


OB's with sea ice
#################

Simple Dirichlet boundary conditions for sea ice parameters can be specified in
anology to the ocean variables via filenames ``OB[N/S/E/W][a/h/sl/sn/u/v]File``
(sea ice concentration, cell averaged sea ice thickness, salinity, cell
averaged snow thickness, ice drift components). With CPP-flag
:varlink:`ALLOW_OBCS_SEAICE_SPONGE` and runtime flags
:varlink:`useSeaiceSponge`, :varlink:`seaiceSpongeThickness`, and
``[A/H/SL/SN]relaxobcs[inner/bound]`` are available in analogy to the sponge
parameters for the ocean variables.

Neumann boundary conditions :math:`\frac{\partial\phi}{\partial{n}}=0` for all
sea ice variables can be applied with runtime flag
:varlink:`SEAICEuseNeumannBC`, which overrides the input files for the
Dirichlet values.

Defining CPP-flag :varlink:`OBCS_SEAICE_SMOOTH_EDGE` allows to smooth the
tracer sea-ice variables near the edges.


.. _ssub_phys_pkg_obcs_flowchart:

Expand All @@ -595,21 +610,59 @@ Flow chart


C !CALLING SEQUENCE:
c ...
C [...]
C | |-MAIN_DO_LOOP :: Open-AD case: Main timestepping loop routine
C | \ otherwise: just call FORWARD_STEP
C | |
C/\ | |-FORWARD_STEP :: Step forward a time-step ( AT LAST !!! )
C [...]
C/\ | | |-DO_OCEANIC_PHYS :: Oceanic (& seaice) physics computation
C/\ | | | |
C/\ | | | |-OBCS_CALC :: Open boundary. package (see pkg/obcs).
C/\ | | | |
C [...]
C/\ | | | |-SEAICE_MODEL :: pkg/seaice
C/\ | | | | |-SEAICE_DYNSOLVER :: pkg/seaice
C/\ | | | | | |-OBCS_APPLY_UVICE :: apply uIce/vIce boudnary conditions
C/\ | | | | |-OBCS_ADJUST_UVICE :: (Only for OBCS_UVICE_OLD)
C/\ | | | | |-SEAICE_GROWTH
C/\ | | | | |-SEAICE_APPLY_SEAICE :: add OBCS for scalar variables
C [...]
C/\ | | |-THERMODYNAMICS :: theta, salt + tracer equations driver.
C/\ | | | | (synchronous time-stepping case)
C [...]
C/\ | | | |-TEMP_INTEGRATE :: Step forward Prognostic Eq for Temperature.
C/\ | | | |
C/\ | | | |-SALT_INTEGRATE :: Step forward Prognostic Eq for Salinity.
C/\ | | | | same sequence of calls as in TEMP_INTEGRATE
C/\ | | | |
C/\ | | | |-PTRACERS_INTEGRATE :: Integrate other tracer(s) (see pkg/ptracers).
C/\ | | | | | same sequence of calls as in TEMP_INTEGRATE
C/\ | | | | |-OBCS_APPLY_PTRACER :: Open boundary package for pTracers
C/\ | | | |
C/\ | | | |-OBCS_APPLY_TS :: Open boundary package (see pkg/obcs ).
C/\ | | |
C [...]
C/\ | | |
C/\ | | |-DYNAMICS :: Momentum equations driver.
C/\ | | | |
C [...]
C/\ | | | |-OBCS_APPLY_UV :: Apply Open bndary Conditions to provisional U,V
C [...]
C/\ | | |-MOMENTUM_CORRECTION_STEP :: Finalise momentum stepping
C [...]
C/\ | | | |-OBCS_APPLY_UV :: Open boundary package (see pkg/obcs).



.. _ssub_phys_pkg_obcs_diagnostics:

OBCS diagnostics
++++++++++++++++

Diagnostics output is available via the diagnostics package (see :numref:`sub_outp_pkg_diagnostics`). Available output fields are summarized below:

::

------------------------------------------------------
<-Name->|Levs|grid|<-- Units -->|<- Tile (max=80c)
------------------------------------------------------
Diagnostics output is available via the diagnostics package (see
:numref:`sub_outp_pkg_diagnostics`). Currently there are no OBCS-specific
diagnostics available.


.. _ssub_phys_pkg_obcs_experiments:
Expand Down
117 changes: 75 additions & 42 deletions model/src/do_oceanic_phys.F
Expand Up @@ -32,6 +32,9 @@
# ifdef ALLOW_EXF
# include "EXF_OPTIONS.h"
# endif
#ifdef ALLOW_OBCS
# include "OBCS_OPTIONS.h"
#endif
#endif /* ALLOW_AUTODIFF */

CBOP
Expand Down Expand Up @@ -188,6 +191,10 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
# ifdef ALLOW_SALT_PLUME
# include "SALT_PLUME.h"
# endif
# ifdef ALLOW_OBCS
# include "OBCS_PARAMS.h"
# include "OBCS_FIELDS.h"
# endif
#endif /* ALLOW_AUTODIFF */

#ifdef ALLOW_TAPENADE
Expand Down Expand Up @@ -238,16 +245,10 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
#endif /* ALLOW_AUTODIFF */
#ifdef ALLOW_AUTODIFF_TAMC
C tkey :: tape key (tile dependent)
C kkey :: tape key (level and tile dependent)
INTEGER kkey, tkey
INTEGER tkey
#endif
CEOP

#ifdef ALLOW_AUTODIFF_TAMC
C-- dummy statement to end declaration part
tkey = 1
#endif /* ALLOW_AUTODIFF_TAMC */

kSrf = 1
IF ( usingPCoords ) kSrf = Nr

Expand Down Expand Up @@ -287,13 +288,50 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
# ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE salt = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE etaN = comlev1, key=ikey_dynamics, kind=isbyte
# ifdef ALLOW_OBCS_STEVENS
CADJ STORE uVel = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE vVel = comlev1, key=ikey_dynamics, kind=isbyte
# ifdef ALLOW_OBCS_EAST
CADJ STORE OBEtStevens = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE OBEsStevens = comlev1, key=ikey_dynamics, kind=isbyte
# endif
# ifdef ALLOW_OBCS_WEST
CADJ STORE OBWtStevens = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE OBWsStevens = comlev1, key=ikey_dynamics, kind=isbyte
# endif
# ifdef ALLOW_OBCS_NORTH
CADJ STORE OBNtStevens = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE OBNsStevens = comlev1, key=ikey_dynamics, kind=isbyte
# endif
# ifdef ALLOW_OBCS_SOUTH
CADJ STORE OBStStevens = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE OBSsStevens = comlev1, key=ikey_dynamics, kind=isbyte
# endif
# endif /* ALLOW_OBCS_STEVENS */
# endif
# ifdef ALLOW_DEBUG
IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
# endif
CALL OBCS_CALC( myTime+deltaTClock, myIter+1,
I uVel, vVel, wVel, theta, salt, myThid )
ENDIF
# if ( defined ALLOW_AUTODIFF_TAMC && defined ALLOW_OBCS_BALANCE )
C This needs to be done ***after*** the if-block to avoid calling
C S/R OBCS_CALC in the AD code.
# ifdef ALLOW_OBCS_NORTH
CADJ STORE OBNv = comlev1, key=ikey_dynamics, kind=isbyte
# endif
# ifdef ALLOW_OBCS_SOUTH
CADJ STORE OBSv = comlev1, key=ikey_dynamics, kind=isbyte
# endif
# ifdef ALLOW_OBCS_EAST
CADJ STORE OBEu = comlev1, key=ikey_dynamics, kind=isbyte
# endif
# ifdef ALLOW_OBCS_WEST
CADJ STORE OBWu = comlev1, key=ikey_dynamics, kind=isbyte
# endif
# endif /* ALLOW_AUTODIFF_TAMC and ALLOW_OBCS_BALANCE */
#endif /* ALLOW_OBCS */

#ifdef ALLOW_OCN_COMPON_INTERF
Expand Down Expand Up @@ -364,16 +402,16 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
# ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE qnet = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE qsw = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE salt = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE fu,fv = comlev1, key=ikey_dynamics, kind=isbyte
#if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
# if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
CADJ STORE evap = comlev1, key=ikey_dynamics, kind=isbyte
#endif
# endif /* ALLOW_AUTODIFF_TAMC */
#ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE phiHydLow= comlev1, key=ikey_dynamics, byte=isbyte
#endif
# endif
CADJ STORE etan = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE salt = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE uvel,vvel = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE phiHydLow = comlev1, key=ikey_dynamics, byte=isbyte
# endif
IF ( useSEAICE ) THEN
# ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE uvel,vvel = comlev1, key=ikey_dynamics, kind=isbyte
Expand Down Expand Up @@ -421,7 +459,9 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
# endif
# ifdef ALLOW_AUTODIFF
ELSEIF ( SEAICEadjMODE .EQ. -1 ) THEN
# ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE area = comlev1, key=ikey_dynamics, kind=isbyte
# endif
CALL SEAICE_FAKE( myTime, myIter, myThid )
# endif /* ALLOW_AUTODIFF */
ENDIF
Expand Down Expand Up @@ -505,7 +545,9 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
C--- Determines forcing terms based on external fields
C relaxation terms, etc.
#ifdef ALLOW_AUTODIFF
# ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE salt, theta = comlev1, key=ikey_dynamics, kind=isbyte
# endif
#else /* ALLOW_AUTODIFF */
C-- if fluid is not water, by-pass surfaceForcing, find_rho, gmredi
C and all vertical mixing schemes, but keep OBCS_CALC
Expand All @@ -517,6 +559,11 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
CALL EXTERNAL_FORCING_SURF(
I iMin, iMax, jMin, jMax,
I myTime, myIter, myThid )
#ifdef ALLOW_AUTODIFF_TAMC
C Avoid calling S/R EXTERNAL_FORCING_SURF in AD routine.
CADJ STORE EmPmR = comlev1, key=ikey_dynamics, kind=isbyte
CADJ STORE uvel, vvel = comlev1, key=ikey_dynamics, kind=isbyte
#endif

#ifdef ALLOW_OBCS
IF (useOBCS) THEN
Expand Down Expand Up @@ -653,10 +700,6 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=tkey, kind=isbyte
CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=tkey, kind=isbyte
# endif
# ifdef ALLOW_SALT_PLUME
CADJ STORE saltplumedepth(:,:,bi,bj)= comlev1_bibj,key=tkey,kind=isbyte
CADJ STORE saltplumeflux(:,:,bi,bj) = comlev1_bibj,key=tkey,kind=isbyte
# endif
#endif /* ALLOW_AUTODIFF_TAMC */

C-- Always compute density (stored in common block) here; even when it is not
Expand All @@ -679,9 +722,10 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
#endif /* ALLOW_DOWN_SLOPE */
#ifdef ALLOW_BBL
IF ( useBBL ) THEN
C pkg/bbl requires in-situ bbl density for depths equal to and deeper than the bbl.
C To reduce computation and storage requirement, these densities are stored in the
C dry grid boxes of rhoInSitu. See BBL_CALC_RHO for details.
C pkg/bbl requires in-situ bbl density for depths equal to and deeper
C than the bbl. To reduce computation and storage requirement,
C these densities are stored in the dry grid boxes of rhoInSitu.
C See BBL_CALC_RHO for details.
DO k=Nr,1,-1
CALL BBL_CALC_RHO(
I theta, salt,
Expand Down Expand Up @@ -722,6 +766,9 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
ENDDO
ENDDO
ENDIF
# ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE rhoInSitu(:,:,:,bi,bj) = comlev1_bibj, key=tkey, kind=isbyte
# endif
#endif /* ALLOW_AUTODIFF */

#ifdef ALLOW_DEBUG
Expand All @@ -735,33 +782,13 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
C-- Start of diagnostic loop
DO k=Nr,1,-1

#ifdef ALLOW_AUTODIFF_TAMC
C? Patrick, is this formula correct now that we change the loop range?
C? Do we still need this?
cph kkey formula corrected.
cph Needed for rhoK, rhoKm1, in the case useGMREDI.
kkey = k + (tkey-1)*Nr
#endif /* ALLOW_AUTODIFF_TAMC */

c#ifdef ALLOW_AUTODIFF_TAMC
cCADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
cCADJ & kind = isbyte
cCADJ STORE salt(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
cCADJ & kind = isbyte
c#endif /* ALLOW_AUTODIFF_TAMC */

C-- Calculate gradients of potential density for isoneutral
C slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
IF ( calcGMRedi .OR. (k.GT.1 .AND. calcConvect)
& .OR. usePP81 .OR. useKL10
& .OR. useMY82 .OR. useGGL90
& .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN
IF (k.GT.1) THEN
#ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,kind=isbyte
CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,kind=isbyte
CADJ STORE rhokm1 (bi,bj) = comlev1_bibj_k, key=kkey,kind=isbyte
#endif /* ALLOW_AUTODIFF_TAMC */
IF ( usingZCoords ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
Expand Down Expand Up @@ -840,6 +867,8 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
ENDDO

#ifdef ALLOW_AUTODIFF_TAMC
C Avoid recomputing sigmaR and IVDConvCount in AD routine.
CADJ STORE sigmaR =comlev1_bibj,key=tkey,kind=isbyte
CADJ STORE IVDConvCount(:,:,:,bi,bj)=comlev1_bibj,key=tkey,kind=isbyte
#endif

Expand Down Expand Up @@ -873,6 +902,10 @@ SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
I myTime, myIter, myThid )
#endif /* SALT_PLUME_VOLUME */
ENDIF
# ifdef ALLOW_AUTODIFF_TAMC
CADJ STORE saltplumedepth(:,:,bi,bj)= comlev1_bibj,key=tkey,kind=isbyte
CADJ STORE saltplumeflux(:,:,bi,bj) = comlev1_bibj,key=tkey,kind=isbyte
# endif /* ALLOW_AUTODIFF_TAMC */
#endif /* ALLOW_SALT_PLUME */

#ifdef ALLOW_DIAGNOSTICS
Expand Down
4 changes: 0 additions & 4 deletions model/src/forward_step.F
Expand Up @@ -640,10 +640,6 @@ SUBROUTINE FORWARD_STEP( iloop, myTime, myIter, myThid )
# ifdef ALLOW_OBCS
CADJ STORE salt = comlev1, key = ikey_dynamics, kind = isbyte
CADJ STORE totphihyd = comlev1, key = ikey_dynamics, kind = isbyte
# ifdef ALLOW_OBCS_STEVENS
CADJ STORE gsNm1 = comlev1, key = ikey_dynamics, kind = isbyte
CADJ STORE gtNm1 = comlev1, key = ikey_dynamics, kind = isbyte
# endif
# endif /* ALLOW_OBCS */
# ifdef ALLOW_PTRACERS
CADJ STORE pTracer = comlev1, key = ikey_dynamics, kind = isbyte
Expand Down