ROMS Kernels - myroms/roms GitHub Wiki

image

ROMS encompasses various submodel kernels that enhance the physical and discretized governing equations, integrate interdisciplinary processes, and enable coupling frameworks with other geophysical systems. Some of these kernels are described below.

Estuarine Carbon Biogeochemistry Model

The Estuarine Carbon Biogeochemical (ECB) model was developed by colleagues (Feng et al., 2015, and follow-ups) at the Virginia Institute of Marine Science (VIMS), William & Mary. It is currently operational over the Chesapeake Bay estuary system and is referred to as ChesROMS-ECB.

The ECB model is similar in formulation and structure to the BIO_FENNEL kernel (Fennel et al., 2008). Still, multiple processes have been added by Druon et al. (2010), and Feng et al. (2015); numerous follow-ups are cited in the references section below. It is activated with the ECB and its configuration parameters are set in bio_ECB.in. It includes the following CPP options:

CPP Option Description
ECB Activates the Estuarine Carbon Biogeochemical model
BIO_SEDIMENT Restores fallen particulate material to the nutrient pool
CARBON Adds Carbon constituents
DENITRIFICATION Adds denitrification processes
DIAGNOSTICS_BIO Activates writing of 2D and 3D output ECB diagnostics terms
NET_SULFATE_REDUCTION Includes total alkalinity and DIC fluxes from sediment sulfate reduction
OCMIP_OXYGEN_SC Computes O2 Schmidt number from Keeling et al. (1998)
OXYGEN Adds oxygen dynamics
PCO2AIR_DATA. To use pCO2 gas exchange climatology from St-Laurent et al. (2020)
PCO2AIR_SECULAR If alternative pCO2 gas exchange time-depedent evolution
PO4 If using Phosphorus to limit the phytoplankton growth
pCO2_RZ_CAIWANG_1998 To use Cai and Wang dissociation constants when computing pCO2
pCO2_RZ_MILLERO_2010 To use Millero (2010) dissociation constants when computing pCO2
RW14_CO2_SC if CO2 Schmidt number from Wanninkhof (2014)
RW14_OXYGEN_SC if O2 Schmidt number from Wanninkhof (2014)
SANDS_PROXY_ISS Use sediment sands as a proxy for Inorganic Suspended Solids in light attenuation
TALK_NONCONSERV If total alkalinity is affected by changes in nitrate or ammonium

The options BIO_SEDIMENT, CARBON, DENITRIFICATION, and OXYGEN should always be activated.

The ECB model includes a simplified Nitrogen cycle budget with several Carbon variables. Below is the model diagram from Feng et al. (2015):

image

Currently, the ECB model includes 18 state tracer variables:

idbio(:) Tracer Index I/O Variable Description
1 iNO3_ NO3 Nitrate concentration
2 iNH4_ NH4 Ammonium concentration
3 iChlo chlorophyll Chorophyll concentration
4 iPhyt phytoplankton Phytoplankton biomass
5 iZoop zooplankton Zooplankton biomass
6 iLDeN LdetritusN Large Detritus Nitrogen concentration
7 ISDeN SdetritusN Small Detritus Nitrogen concentration
8 iDON_ semilabileDON Semilabile Dissolved Organic Nitrogen concentration
9 iPO4_ PO4 Phosphate concentration
10 iLDeC LdetritusC Large Detritus Carbon concentration
11 iSDeC SdetritusC Small Detritus Carbon concentration
12 iTIC_ TIC Total Inorganic Carbon concentration
13 TAlk alkalinity Total Alkalinity concentration
14 iDOC semilabileDOC Semilabile Dissolved Organic Carbon concentration
15 iOxyg oxygen Dissolved Oxygen concentration
16 irDON refractoryDON Refractory Dissolved Organic Nitrogen concentration
17 irDOC refractoryDOC Refractory Dissolved Organic Carbon concentration
18 iCalc calcium Ca2+ functional concentration

References:

  • Da, F., Friedrichs, M.A.M., St-Laurent, P., 2018: Impacts of atmospheric nitrogen deposition and coastal nitrogen fluxes on oxygen concentrations in Chesapeake Bay, J. Geophys. Res. Oceans, 123, 5004-5025. doi:10.1029/2018JC014009.

  • Da, F., Friedrichs, M.A.M., St-Laurent, P., Shadwick, E.H., Najjar, R.G., Hinson, K.E., 2021: Mechanisms driving decadal changes in the carbonate system of a coastal plain estuary, J. Geophys. Res. Oceans, 126, e2021JC017239 doi:10.1029/2021jc017239.

  • Da, F., Friedrichs, M.A.M., St-Laurent, P., Najjar, R.G., Shadwick, E.H., Stets, E.G., 2024: Influence of Rivers, Tides, and Tidal Wetlands on Estuarine Carbonate System Dynamics, Estuaries Coast., 47, 2283-2305, doi:10.1007/s12237-024-01421-z.

  • Druon, J.N., Mannino, A., Signorini, S., McClain, Friedrich, M., Wilkin, J., and Fennel, K., 2010: Modeling the dynamics and export of dissolved organic matter in the Northeastern U.S. continental shelf, Estuarine, Coastal, and Shelf Science, 88, 488-507, doi:10.1016/j.ecss.2010.05.010.

  • Feng, Y., Fiedricks, M., Wilkin, J., Tian, H., Yang, Q., Hofmann, A.E., Wiggert, J.D., Hood, R.R., 2015: Chesapeake Bay nitrogen fluxes derived from a land-estuarine ocean biogeochemical modeling system: Model description, evaluation, and nitrogen budgets, J. Geophys. Res. Biogeosci., 120, 1666-1695, doi:10.1002/2015JG002931..

  • Fennel, K., Wilkin, J., Levin, J., Moisan, J., O'Reilly, J., Haidvogel, D., 2006: Nitrogen cycling in the Mid Atlantic Bight and implications for the North Atlantic nitrogen budget: Results from a three-dimensional model, Global Biogeochemical Cycles, 20, GB3007, doi:10.1029/2005GB002456.

  • Fennel, K., Wilkin, J., Previdi, M., Najjar, R., 2008: Denitrification effects on air-sea CO2 flux in the coastal ocean: Simulations for the Northwest North Atlantic, Geophys. Res. Letters, 35, L24608, doi:10.1029/2008GL036147.

  • Fennel, K., Hu, J., Laurent, A., Marta-Almeida, M., Hetland, R., 2013: Sensitivity of Hypoxia Predictions for the Northern Gulf of Mexico to Sediment Oxygen Consumption and Model Nesting, J. Geophys. Res. Ocean, 118 (2), 990-1002, doi:10.1002/jgrc.20077.

  • Laurent, A., Fennel, K., Hu, J., Hetland, R. 2012: Simulating the Effects of Phosphorus Limitation in the Mississippi and Atchafalaya River Plumes, Biogeosciences, 9 (11), 4707-4723, doi:10.5194/bg-9-4707-2012.

  • St-Laurent, P., Friedrichs, M.A.M., Najjar, R.G., Shadwick, E.H., Tian, H., and Yao, Y., 2020: Relative impact of global changes on the inorganic carbon balance of the Chesapeake Bay, Biogeosciences, 17, 3779-3796, doi:10.5194/bg-17-3779-2020.

  • Turner, J.S., St-Laurent, P., Friedrichs, M.A.M., Friedrichs, C.T., 2021: Effects of reduced shoreline erosion on Chesapeake Bay water clarity, J. Sci. T. Env., 769, 145157, doi:10.1016/j.scitotenv.2021.145157.

  • Wanninkhof, R. 2014: Relationship between Wind Speed and Gas Exchange over the Ocean Revisited, Limnol. Oceanogr. Methods, 12 (6), 351-362, doi:10.4319/lom.2014.12.351.

  • Yu, L., Fennel, K., Laurent, A., Murrell, M. C., Lehrter, J. C., 2015: Numerical Analysis of the Primary Processes Controlling Oxygen Dynamics on the Louisiana Shelf, Biogeosciences, 12 (7), 2063-2076, doi:10.5194/bg-12-2063-2015.


Sea Ice Model

The single-layer, sea ice model in ROMS 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). Now, the sea ice kernel 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.

! 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

The sea ice model is activated with the C-preprocessing option ICE_MODEL, and there are options for its configuration:

CPP Option Description
ALBEDO_CSIM if CSIM albedo formulation
ALBEDO_CURVE if seawater albedo from curve
ALBEDO_SZO if zenith angle from Briegleb et al. (1986)
ICE_MODEL To activate ROMS native sea-ice model
ICE_THERMO If thermodynamic component
ICE_MK If Mellor-Kantha thermodynamics (only choice)
ICE_ALBEDO if surface albedo over water, snow, or ice
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 is part of the 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

An idealized test case, LAKE_ICE, illustrates how to configure this simple sea ice model in ROMS. For more information and instructions, please check:

https://github.com/myroms/roms_test/blob/main/lake_ice/Forward/Readme.md

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, doi: 10.1029/JC094iC08p10937.


Vegetation Model

ROMS includes a wave-flow-vegetation kernel to parameterize the drag force and wave energy dissipation due to vegetation (Beudin et al., 2017) and marsh dynamics (Kalra et al., 2021). The main available options are:

CPP Option Description
ANA_VEGETATION If analytical vegetation initial conditions
MARSH_DYNAMICS If marsh dynamics: erosion, accretion, or retreat
MARSH_SED_EROSION If marsh sediment export via bedload exchange
MARSH_TIDAL_RANGE If tallying marsh mean tidal range
MARSH_VERT_GROWTH If marsh vertical growth through biomass production
MARSH_WAVE_THRUST If lateral wave thrust effects on marsh cells
VEGETATION If activating the submerged and emergent aquatic vegetation model
VEG_DRAG If activating drag effects due to waves and vegetation
WVEG_STREAMING If currents and wave dissipation due to vegetation

It includes two idealized Test Cases in the ROMS test repository to evaluate the options for the vegetation model:

  • Marsh Test: Idealized case to evaluate the marsh dynamics available in the new vegetation kernel. Please check Kalra et al. (2021) for more information about this application.

    https://github.com/myroms/roms_test/blob/main/marsh_test/Readme.md

  • Vegetation Test: Idealized case to evaluate the drag effect of vegetation on currents. Please check Beudin et al. (2017) for detailed information about this case.

https://github.com/myroms/roms_test/blob/main/vegetation_test/Readme.md

References:

  • Beudin, A., Kalra, T.S., Ganju, N.K., Warner, J.C., 2017: Development of a coupled wave-flow-vegetation interaction model, Computers & Geosciences, Vol 100, 76-86, doi: 10.1016/j.cageo.2016.12.010.

  • Kalra, T.S., Ganju, N.K., Aretxabaleta, A.L., Carr, J.A., Zafer, D., Moriarty, J.M., 2021: Modeling Marsh Dynamics Using a 3-D Coupled Wave-Flow-Sediment Model, Front. Mar. Sci., Vol 8, doi: 10.3389/fmars.2021.740921.


Waves Effect on Currents

The Vortex Force formulation of Uchiyama et al. (2010) has been added to the ROMS nonlinear kernel. It is based on COAWST implementation and improvements (Kumar et al., 2012) and activated with the option WEC_VF. It can be used in shallow coastal applications to allow the effect of waves on currents and vice versa.

CPP Option Description
BOTTOM_STREAMING If wave current bottom streaming term
ROLLER_SVENDSEN If wave energy roller based on Svendsen (1984)
ROLLER_MONO if wave energy roller from monochromatic waves
ROLLER_RENIERS If wave energy roller based on Reniers (2004)
SURFACE_STREAMERS If wave current surface streaming term
WAVE_MIXING If enhanced vertical viscosity mixing from waves
WDISS_CHURTHOR If wave dissipation from Church and Thornton (1993)
WDISS_GAMMA If wave dissipation when using the InWave model
WDISS_ROELVINK If wave dissipation from Roelvink when using the InWave model
WDISS_THORGUZA If wave dissipation from Thornton and Guza (1986)
WDISS_WAVEMOD If wave dissipation is acquired from a coupled wave model
WEC_VF If wave-current vortex force from Uchiyma et al. (2010)
WEC ROMS internal option, which is activated in globaldefs.h
WET_DRY If wetting and drying land/sea mask
  • This algorithm is tested using the Shoreface Test. This idealized coastal domain has a north-south periodic channel with a linear sloping shore on its eastern boundary. It is forced with wave data from the SWAN Model, which is read from an input NetCDF file. The figure below shows the free-surface solution at j=5 and time record 8.

    image

    For more information and instructions, please check:

    https://github.com/myroms/roms_test/blob/main/shoreface/Readme.md

  • In more realistic scenarios, the WEC algorithm is tested with an idealized coastal domain with north-south periodic lateral boundary conditions and a sloping beach on the western boundary representing the bathymetry XZ-slice at Duck, North Carolina, USA. Please check the ROMS tests repository for more information and instructions:

    https://github.com/myroms/roms_test/edit/main/DuckNC/Readme.md

    • The figures below show the 2D slices from the history NetCDF file at j=4 and time record 10. It is plotted using plot_ducknc.m Matlab script.
    NLM model WEC model
    image image
    image image
    • The figures below show the 2D slices from the diagnostic NetCDF file at j=4 and time record 10. It plots various right-hand-side terms from the u-momentum governing equation. They are also plotted using the plot_ducknc.m Matlab script.
    u-momentum Diagnostics u-momentum Diagnostics
    image image
    image image

Note

This algorithm is not supported in the Tangent Linear (TLM), Representer (RPM), and Adjoint (ADM) kernels. However, some terms are added to their time-stepping routines for future work, if the option is needed, but it is unlikely.

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.

⚠️ **GitHub.com Fallback** ⚠️