-
Notifications
You must be signed in to change notification settings - Fork 19
ROMS Branches
This branch includes the tagged versions and the latest stable release of ROMS. It contains the entire history of ROMS development and evolution.
How to use/download this branch:
git clone https://github.com/myroms/roms.git
git tag
git checkout feature/main
or
git checkout roms-4.1
or
build_roms.sh -j 10 -b feature/main
cbuild_roms.sh -j 10 -b feature/main
This is the main developing branch (default) of ROMS. It contains the latest stable version of ROMS development and is updated via the feature branches. It serves as an integration branch for new features or bug fixes. Notice that the feature branches use develop as the parent branch. Once we are satisfied, it is tagged and merged to the main branch.
git clone https://github.com/myroms/roms.git
or
build_roms.sh -j 10 -b develop
cbuild_roms.sh -j 10 -b develop
This branch includes significant updates to ROMS numerical kernels:
1. The ROMS barotropic kernel (step2d) includes the Generalized Forward-Backward 3rd-order Adams-Bashforth /4th-order Adams-Moulton (FB AB3-AM4) time stepping algorithm (Shchepetkin and McWilliams, 2005; 2009). Use the STEP2D_FB_AB3_AM4
option to activate this time-stepping algorithm. Notice that step2d.F module has the following logic:
#ifdef NONLINEAR
# if defined STEP2D_FB_AB3_AM4
# include "step2d_FB.h"
# elif defined STEP2D_FB_LF_AM3
# include "step2d_FB_LF_AM3.h"
# else
# include "step2d_LF_AM3.h"
# endif
#else
MODULE step2d_mod
END MODULE step2d_mod
#endif
The new routine step2d_FB.h is more efficient, accurate, and compact. No predictor and corrector blocks exist in main2d or main3d. In 3D configurations (SOLVE3D), it suppresses the computation of momentum advection, Coriolis, and lateral viscosity terms because these terms are already included in the baroclinic-to-barotropic forcing arrays rufrc and rvfrc. It does not mean we are entirely omitting them, but it is a choice between recomputing them at every barotropic step or keeping them frozen during the fast-time stepping. However, in some coarse grid applications with larger baroclinic timestep (say, DT around 20 minutes or larger), adding the Coriolis term in the barotropic equations is useful since f*DT is no longer small. In such a case, we recommend activating STEP2D_CORIOLIS
.
Currently, the FB AB3-AM4 only works for the nonlinear kernel. Although the TLM, RPM, and ADM versions are coded, we must determine the correct cycling logic for updating the time-stepping indices in the adjoint model.
How to use/download this branch:
git clone https://github.com/myroms/roms.git
git checkout feature/kernel
or
build_roms.sh -j 10 -b feature/kernel
cbuild_roms.sh -j 10 -b feature/kernel
2. Implemented the adaptive, Courant-number-dependent implicit scheme for vertical advection (Shchepetkin, 2015). The vertical velocity is split into explicit (W) and implicit (Wi) parts that adjust automatically to the local flow conditions based on the Courant number for stability, allowing a larger timestep (DT). It is activated with the OMEGA_IMPLICIT
option. We are still working on the TLM, RPM, and ADM versions of omega.F.
Thus, we cannot yet run variational data assimilation (4D-Var) with the new kernels. It is only possible in the multiple executables split 4D-Var to run the nonlinear trajectory used to linearize the TLM and ADM kernels.
Associated Options:
Option | Description |
---|---|
STEP2D_FB_AB3_AM4 | FB AB3-AM4 2D kernel time-stepping algorithm |
STEP2D_CORIOLIS | To include Coriolis term for DT > 20 minutes |
References:
Shchepetkin, A.F. and J.C. McWilliams, 2005: The regional oceanic modeling system (ROMS): a split-explicit, free-surface, topography-following-coordinate oceanic model, Ocean Modelling, 9, 347-404, doi:10.1016/j.ocemod.2004.08.002.
Shchepetkin, A.F., and J.C. McWilliams, 2009: Computational kernel algorithms for fine-scale, multiprocess, longtime oceanic simulations, pp 121-183. In Handbook of Numerical Analysis: Computational Methods for the Atmosphere and Oceans, R.M. Teman and J.J. Tribbia, eds, Elsevier Science.
Shchepetkin, A.F., 2015: An adaptive, Courant-number-dependent implicit scheme for vertical advection in oceanic modeling, Ocean Modelling, 91, 38-69, doi:10.1016/j.ocemod.2015.03.006.
This branch includes a native sea-ice model to ROMS. It was initially written by Paul Budgell (2005), maintained by Kate Hedstrom, and updated by Scott Durski (Durski and Kurapov, 2019, 2020). It is primarily based on Mellor and Kantha (1989) and Parkinson and Washington (1979).
The sea-ice model has been cleaned, documented, and redesigned to facilitate adjoint-based applications in the future. It has only two state variables, Fi and Si, that can be expanded. The original code has at least 39 arrays. It can be activated with the **ICE_MODEL**
option.
! Define derived-type structure ice model state and internal arrays.
TYPE T_ICE
real(r8), pointer :: Fi(:,:,:) ! [i,j,1:nIceF]
real(r8), pointer :: Si(:,:,:,:) ! [i,j,1:2,1:nIceS]
END TYPE T_ICENgrids
TYPE (T_ICE), allocatable :: ICE(:) ! [Ngrids]
! Ice model state prognostic variables indices.
integer, parameter :: nIceS = 15 ! number of ice state variables
integer :: iSice(nIceS) ! state I/O indices
integer, parameter :: isAice = 1 ! ice concentration
integer, parameter :: isHice = 2 ! ice thickness
integer, parameter :: isHmel = 3 ! melt water thickness on ice
integer, parameter :: isHsno = 4 ! snow thickness
integer, parameter :: isIage = 5 ! ice age
integer, parameter :: isISxx = 6 ! internal ice xx-stress
integer, parameter :: isISxy = 7 ! internal ice xy-stress
integer, parameter :: isISyy = 8 ! internal ice yy-stress
integer, parameter :: isTice = 9 ! ice interior temperature
integer, parameter :: isUice = 10 ! ice U-velocity
integer, parameter :: isVice = 11 ! ice V-velocity
integer, parameter :: isEnth = 12 ! ice/brine enthalpy
integer, parameter :: isHage = 13 ! thickness linked with ice age
integer, parameter :: isUevp = 14 ! EVP ice U-velocity
integer, parameter :: isVevp = 15 ! EVP ice V-velocity
! Ice model internal variables indices.
integer, parameter :: nIceF = 24 ! number of ice field variables
integer :: iFice(nIceF) ! internal fields I/O indices
integer, parameter :: icAIus = 1 ! surface Air-Ice U-stress
integer, parameter :: icAIvs = 2 ! surface Air-Ice V-stress
integer, parameter :: icBvis = 3 ! ice bulk viscosity
integer, parameter :: icHsse = 4 ! sea surface elevation
integer, parameter :: icIOfv = 5 ! Ice-Ocean friction velocity
integer, parameter :: icIOmf = 6 ! Ice-Ocean mass flux
integer, parameter :: icIOmt = 7 ! Ice-Ocean momentum transfer
integer, parameter :: icIOvs = 8 ! Ice-Ocean velocity shear
integer, parameter :: icIsst = 9 ! ice/snow surface temperature
integer, parameter :: icPgrd = 10 ! gridded ice strength
integer, parameter :: icPice = 11 ! ice pressure or strength
integer, parameter :: icQcon = 12 ! ice/snow heat conductivity
integer, parameter :: icQrhs = 13 ! RHS heat flux over ice/snow
integer, parameter :: icSvis = 14 ! ice shear viscosity
integer, parameter :: icS0mk = 15 ! molecular sublayer salinity
integer, parameter :: icT0mk = 16 ! molecular sublayer temperature
integer, parameter :: icUavg = 17 ! average mixed-layer U-velocity
integer, parameter :: icVavg = 18 ! average mixed-layer V-velocity
integer, parameter :: icWdiv = 19 ! ice divergence rate
integer, parameter :: icW_ai = 20 ! melt/freeze rate at Air/Ice
integer, parameter :: icW_ao = 21 ! melt/freeze rate at Air/Ocean
integer, parameter :: icW_fr = 22 ! ice accretion rate by Frazil
integer, parameter :: icW_io = 23 ! melt/freeze rate at Ice/Ocean
integer, parameter :: icW_ro = 24 ! melt/freeze rate runoff
Warning:
It needs testing. We hope the beta testers with some expertise in sea-ice modeling help us with testing and further development.
The data input data management is still missing but can easily be added in get_data.F and set_data.F. It was postponed until we worked on the required atmospheric fields for coupling using the ESMF/NUOPC infrastructure.
How to use/download this branch:
git clone https://github.com/myroms/roms.git
git checkout feature/seaice
or
build_roms.sh -j 10 -b feature/seaice
cbuild_roms.sh -j 10 -b feature/seaice
Associated Options:
Option | Description |
---|---|
ICE_MODEL | To activate ROMS native sea-ice model |
ICE_THERMO | If thermodynamic component |
ICE_MK | If Mellor-Kantha thermodynamics (only choice) |
ICE_ALB_EC92 | If albedo computation from Ebert and Curry |
ICE_MOMENTUM | If momentum component |
ICE_MOM_BULK | If alternate ice-water stress computation |
ICE_EVP | If elastic-viscous-plastic rheology |
ICE_ADVECT | If advection of ice tracers |
ICE_SMOLAR | If MPDATA advection scheme |
ICE_UPWIND | If upwind advection scheme |
ICE_BULK_FLUXES | If ice part of bulk flux computation |
ICE_CONVSNOW | If the conversion of flooded snow to ice |
ICE_STRENGTH_QUAD | If quadratic ice strength, a function of thickness |
NO_SCORRECTION_ICE | If no salinity correction under the ice |
OUTFLOW_MASK | If Hibler-style outflow cells |
References:
Durski, S.M., and A.L. Kurapov, 2019: A high-resolution coupled ice-ocean model of winter circulation on the Bering sea shelf. Part I: Ice model refinements and skill assessments, Ocean Modelling, 133, 145-161, doi:10.1016/j.ocemod.2018.11.004.
Durski, S.M., and A.L. Kurapov, 2020: A high-resolution coupled ice-ocean model of winter circulation on the Bering Sea Shelf. Part II: Polynyas and the shelf salinity distribution, Ocean Modelling, 156, 101696, doi:/10.1016/j.ocemod.2020.101696.
Mellor, G.L. and L. Kantha, 1989: An Ice-Ocean Coupled Model, J. Geophys. Res., 94, 10937-10954.
This branch includes the Vortex Force formulation of Uchiyama et al. (2010) that has been added to the ROMS nonlinear kernel, and it is based on COAWST implementation and improvements (Kumar et al., 2012). It can be used in nearshore or shallow coastal applications to allow the effect of waves on current and vice versa. It is activated with the option WEC_VF
and requires wave-forcing data via an input NetCDF file or coupling to a wave model.
How to use/download this branch:
git clone https://github.com/myroms/roms.git
git checkout feature/wec
or
build_roms.sh -j 10 -b feature/wec
cbuild_roms.sh -j 10 -b feature/wec
Associated Options:
Option | Description |
---|---|
BOTTOM_STREAMING | To activate wave-enhanced bottom streaming |
ROLLER_SVENDSEN | To activate wave roller based on Svendsen |
ROLLER_MONO | To activate wave roller for monochromatic waves |
ROLLER_RENIERS | To activate wave roller based on Reniers |
SURFACE_STREAMING | To activate wave-enhanced surface streaming |
WAVE_MIXING | To activate enhanced vertical viscosity mixing from waves |
WDISS_CHURTHOR | To activate wave dissipation from Church/Thorton |
WDISS_GAMMA | To activate wave dissipation when using InWave model |
WDISS_ROELVINK | To activate wave dissipation Roelvink when using InWave model |
WDISS_THORGUZA | To activate wave dissipation from Thorton/Guza |
WDISS_WAVEMOD | To activate wave dissipation from a wave model |
WEC | Internal ROMS algorithm |
WEC_VF | To activate wave-current stresses from Uchiyama et al. (2020) |
WET_DRY | To activate wetting and drying |
References:
Kumar, N., G. Voulgaris, J.C. Warner, J.C., and M., Olabarrieta, 2012: Implementation of a vortex force formalism in the coupled ocean-atmosphere-wave-sediment transport (COAWST) modeling system for inner-shelf and surf-zone applications, Ocean Modeling, 47, 65-95, doi:10.1016/j.ocemod.2012.01.003
Uchiyama, Y., J.C. McWilliams, and A.F. Shchepetkin, 2010: Wave current interaction in an oceanic circulation model with a vortex-force formalism: Applications to surf zone, Ocean Modeling, 34, 16-35, doi: 10.1016/j.ocemod.2010.04.002.
ROMS Information and Instructions