Opened 9 years ago
Last modified 9 years ago
#689 closed upgrade
Important: Big update the Tracer Diffusion Algorithms — at Initial Version
| Reported by: | arango | Owned by: | arango |
|---|---|---|---|
| Priority: | major | Milestone: | Release ROMS/TOMS 3.7 |
| Component: | Nonlinear | Version: | 3.7 |
| Keywords: | Cc: |
Description
In src:ticket:627 update, The CPP option TCLIMATOLOGY that was used to process tracer climatology fields was eliminated and replaced with logical switch LtracerCLM, which is read from input script ocean.in:
! Logical switches (TRUE/FALSE) to read and process climatology fields.
! See glossary below for details.
LsshCLM == F ! sea-surface height
Lm2CLM == F ! 2D momentum
Lm3CLM == F ! 3D momentum
LtracerCLM == T T ! temperature, salinity, inert
This was done to facilitate processing or not climatology fields in multiple nesting grids.
This change affected the horizontal diffusion of tracers in routines t3dmix2_s.h, t3dmix2_geo.h, t3dmix2_iso.h, t3dmix4_s.h, t3dmix4_geo.h, and t3dmix4_iso.h when the tracer climatology is used in the diffusion operator. We need now to provide code to using the LtracelCLM(itrc,ng) logical instead of a CPP option that is now obsolete.
For example, in t3dmix2_s.h we now have:
!
! Compute XI- and ETA-components of diffusive tracer flux (T m3/s).
!
DO j=Jstr,Jend
DO i=Istr,Iend+1
#ifdef DIFF_3DCOEF
cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i-1,j,k))* &
& pmon_u(i,j)
#else
cff=0.25_r8*(diff2(i,j,itrc)+diff2(i-1,j,itrc))* &
& pmon_u(i,j)
#endif
#if defined TS_MIX_STABILITY
FX(i,j)=cff* &
& (Hz(i,j,k)+Hz(i-1,j,k))* &
& (0.75_r8*(t(i ,j,k,nrhs,itrc)- &
& t(i-1,j,k,nrhs,itrc))+ &
& 0.25_r8*(t(i ,j,k,nstp,itrc)- &
& t(i-1,j,k,nstp,itrc)))
#elif defined TS_MIX_CLIMA
IF (LtracerCLM(itrc,ng)) THEN
FX(i,j)=cff* &
& (Hz(i,j,k)+Hz(i-1,j,k))* &
& ((t(i ,j,k,nrhs,itrc)-tclm(i ,j,k,itrc))- &
& (t(i-1,j,k,nrhs,itrc)-tclm(i-1,j,k,itrc)))
ELSE
FX(i,j)=cff* &
& (Hz(i,j,k)+Hz(i-1,j,k))* &
& (t(i,j,k,nrhs,itrc)-t(i-1,j,k,nrhs,itrc))
END IF
#else
FX(i,j)=cff* &
& (Hz(i,j,k)+Hz(i-1,j,k))* &
& (t(i,j,k,nrhs,itrc)-t(i-1,j,k,nrhs,itrc))
#endif
END DO
END DO
This update is complicated because include changes the NLM, TLM, RPM, and ADM versions of these routines. This changes get a little complex in the geopotential and isopycnic (epineutral) diffudion tensors.
Notice that we now have the following CPP options to characterize the tracer diffusion:
- DIFF_3DCOEF: Used internally for spatially dependent horizontal diffusion coefficient, which is currently activated for TS_U3AVD_SPLIT and TS_DIFF4. However, the logic is included in all the tracer diffusion routines to facilitate spatially varying diffusion in the future.
- TS_MIX_CLIMA: Use if diffusion of tracer perturbation (t-tclm). Previously, we used option CLIMA_TS_MIX to achieved this but it was renamed for consistency.
- TS_MIX_MAX_SLOPE: Use if maximum slope in epineutral diffusion in routines t3dmix2_iso.h or t3dmix4_iso.h when MIX_ISO_TS is activated.
- TS_MIX_MIN_STRAT: Use if minimum stratification in epineutral diffusion in routines t3dmix2_iso.h or t3dmix4_iso.h when MIX_ISO_TS is activated.
- TS_MIX_STABILITY: Use if weighting diffusion between two time levels for stability. Previously, we used option MIX_STABILITY to achieved this but it was renamed for uniqueness and consistency.
Many thanks to Dezhou Yang for bringing this issue to my attention.
