Opened 15 years ago
Closed 15 years ago
#405 closed upgrade (Done)
Momentun and tracer equations diagnostic terms revisited
Reported by: | arango | Owned by: | arango |
---|---|---|---|
Priority: | major | Milestone: | Release ROMS/TOMS 3.4 |
Component: | Nonlinear | Version: | 3.4 |
Keywords: | Cc: |
Description (last modified by )
The time-averaged, diagnostic terms for the momentum (DIAGNOSTICS_UV) and tracer (DIAGNOSTICS_TS) equations were expanded to include components in the ξ- and η-directions for horizontal advection and horizontal viscosity/diffusion.
- The momentum advection output variables are:
ubar_hadv, vbar_hadv 2D momentum horizontal advection ubar_xadv, vbar_xadv 2D momentum horizontal ξ-advection ubar_yadv, vbar_yadv 2D momentum horizontal η-advection u_hadv, v_hadv 3D momentum horizontal advection u_xadv, v_xadv 3D momentum horizontal ξ-advection u_yadv, v_yadv 3D momentum horizontal η-advection u_vadv, v_vadv 3D momentum vertical advection
- The momentum viscosity (stress tensor) output variables are:
ubar_hvisc, vbar_hvisc 2D momentum horizontal viscosity ubar_xvisc, vbar_xvisc 2D momentum horizontal ξ-viscosity ubar_yvisc, vbar_yvisc 2D momentum horizontal η-viscosity u_hvisc, v_hvisc 3D momentum horizontal viscosity u_xvisc, v_xvisc 3D momentum horizontal ξ-viscosity u_yvisc, v_yvisc 3D momentum horizontal η-viscosity u_vvisc, v_vvisc 3D momentum vertical viscosity
- The tracer advection output variables are: (Tname is typically, temp, salt, ...)
Tname_hadv tracer horizontal advection Tname_xadv tracer horizontal ξ-advection Tname_yadv tracer horizontal η-advection Tname_vadv tracer vertical advection
- The tracer diffusion output variables are: (Tname is typically, temp, salt, ...)
Tname_hdiff tracer horizontal diffusion Tname_xdiff tracer horizontal ξ-diffusion Tname_ydiff tracer horizontal η-diffusion Tname_sdiff tracer horizontal s-diffusion (rotated tensor) Tname_vdiff tracer vertical diffusion
- Vorticity diagnostics output variables (new fields computed in new routine vorticity.F):
rvorticity_bar 2D relative vorticity pvorticity_bar 2D potential vorticity rvorticity 3D relative vorticity pvorticity 3D potential vorticity
Implementation notes:
- In order to split the momentum horizontal advection component, the nonlinear model code was modify a little to facilitate the computation of each term. The Coriolis term is separated from the curvilinear advection term.
- The rotated component of the momentum stress tensor (MIX_GEO_UV) cannot be split because of the coupling between 2D and 3D momentum equations. However, they are added to the ξ- and η-components of the tensor, so it can be used to force the vertically integrated diagnostic equations. See uv3dmix2_geo.h or uv3dmix4_geo.h for details.
- The momentum diagnostic array indices in mod_scalar.F are tricky and need to be assigned in a specific order to allow compact DO-loop structure which improves flexibility.
# ifdef DIAGNOSTICS_UV ! ! Indices for 2D momentum diagnostic variables. In some places in ! the code a compact DO-loop (idiag=1:M2pgrd) is used to improve ! flexibility. Therefore, the order of indices is very important. ! Only those fields that require special treatment are set below ! the M2pgrd index. ! ic=0 # if defined UV_COR M2fcor=ic+1 ic=ic+1 # endif # if defined UV_ADV M2hadv=ic+1 M2xadv=ic+2 M2yadv=ic+3 ic=ic+3 # endif # if defined NEARSHORE_MELLOR M2hrad=ic+1 ic=ic+1 # endif # if defined UV_VIS2 || defined UV_VIS4 M2hvis=ic+1 M2xvis=ic+2 M2yvis=ic+3 ic=ic+3 # endif M2pgrd=ic+1 M2sstr=ic+2 ! These indices need to be M2bstr=ic+3 ! specified last to allow a M2rate=NDM2d ! compact DO-loop structure # ifdef SOLVE3D ! ! Indices for 3D momentum diagnostic variables. In some places in ! the code a compact DO-loop (idiag=1:M3pgrd) is used to improve ! flexibility. Therefore, the order of indices is very important. ! Only those fields that require special treatment are set below ! the M3pgrd index. ! ic=0 # if defined UV_COR M3fcor=ic+1 ic=ic+1 # endif # if defined UV_ADV M3vadv=ic+1 M3hadv=ic+2 M3xadv=ic+3 M3yadv=ic+4 ic=ic+4 # endif # if defined NEARSHORE_MELLOR M3hrad=ic+1 M3vrad=ic+2 ic=ic+2 # endif M3pgrd=ic+1 ! needs to be here, indices below M3vvis=ic+2 ! require special treatment # if defined UV_VIS2 || defined UV_VIS4 M3hvis=ic+3 M3xvis=ic+4 M3yvis=ic+5 # endif M3rate=NDM3d # endif # endif
- WARNING: The order between multiplication, addition, and subtraction changed in the horizontal advection and viscosity/diffusion terms to allow the split of horizontal diagnostic terms. This implies that you will not get identical solutions with previous versions of ROMS due to roundoff. The differences may range between 1E-09 to 1E-17 or smaller.
- The total horizontal term does not add exactly to the ξ- and η-components due to roundoff and accumulated roundoff in the time averages. In some simple application, I get identical numbers. In realistic applications the roundoff if of the order of 1E-17 or smaller.
- The changes in the nonlinear code were not propagated to the tangent linear, representer, and adjoint models for convenience. However, these operators are still self consistent to the linearization and hava the same symmetry properties.
Change History (1)
comment:1 by , 15 years ago
Description: | modified (diff) |
---|---|
Resolution: | → Done |
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.