Regional Ocean Modeling System
Regional Ocean Modeling System (ROMS) is a free-surface, terrain-following, primitive equations ocean model widely used by the scientific community for a diverse range of applications. The model is developed and supported by researchers at the Rutgers University, University of California Los Angeles and contributors worldwide. ROMS is used to model how a given region of the ocean responds to physical forcings such as heating or wind. It can also be used to model how a given ocean system responds to inputs like sediment, freshwater, ice, or nutrients, requiring coupled models nested within the ROMS  framework. Framework. ROMS is a 4D modeling system. It is a 3-dimensional model (a 2D horizontal grid and a vertical grid) that can be run over a given amount of time, time being the 4th dimension. It is gridded into vertical levels that make up the water column and horizontal cells that make up the coordinates of the 2D cartesian plane of the model region. Kernel. Central to the ROMS framework are four models that form what is called the dynamical/numerical core or kernel: Vertical grid. The vertical grid is a hybrid stretched grid. It is hybrid in  that its stretching intervals fall somewhere between the two extremes of 1) the evenly-spaced sigma grid used by the Princeton Ocean Model and 2) a true z-grid with a static depth interval . The vertical grid can be squeezed or stretched to increase or decrease the resolution for an area of interest, such as a thermocline or bottom boundary layer. Grid stretching in the vertical direction follows bottom topography, allowing for the idealized flow of water over features such as seamounts. The numbering of the vertical grid goes from the bottom waters upward to the air-water interface: the  bottom water level is level 1 and the topmost surface water level is the highest number (such as level 20). With a coupled sediment module, the numbering of the sediment seabed levels goes from the sediment-water interface downward: the topmost seabed level is level 1 and the deepest seabed level is the highest number. Horizontal grid. The horizontal grid is a structured grid, meaning that it has a rectangular 4-sided grid cell structure. The horizontal grid is also an orthogonal curvilinear grid, meaning that it maximizes ocean grid cells of interest and minimizes extra land grid cells. The  horizontal grid is also a staggered grid or Arakawa-C grid, where the velocities in the north-south and east-west directions are calculated at the edges of each grid cell, while the values for scalar variables such as density are calculated at the center of each grid cell, known as "rho-points." Physics. In both the vertical and horizontal directions, the default equations use centered, second-order finite difference schemes. Higher order schemes are available if desired, for example using parabolic spline reconstruction. In general, the physical schemes used by ROMS are based on three governing equations: Equations are  coupled to solve for five unknowns at each location in the model grid using numerical solutions: Source code. ROMS uses an open-access source code that can be downloaded by filling out an online request form. It runs on C-processing and was developed for shared computing uses. To download the source code a user must create an account and file a request with the developers on the ROMS website. Input and output. Input. Boundaries such as coastlines can be specified for a given region using land- and sea-masking. The top vertical boundary, the air-sea interface, uses an  interaction scheme developed by Fairall et al. (1996). The bottom vertical boundary, the sediment-water interface, uses a bottom stress or bottom-boundary-layer scheme developed by Styles and Glenn (2000). Inputs that are needed for an implementer to run ROMS for a specific ocean region include: The programming framework of ROMS is split into three parts: Initialize, Run, and Finalize, which is standard for the Earth System Modeling Framework (ESMF). "Run" is the largest of these three parts, where the user chooses which options they want to use and assimilates data if desired. The model run must be initialized  or compiled before it is run. Output. The output format of model run files is netCDF. Model output is often visualized using independent secondary programming software such as MATLAB or Python. Simple visualization software such as NASA's Panoply Data Viewer can also be used to visualize model output for teaching or demonstration purposes. User options. The general approach of ROMS gives model implementers a high level of freedom and responsibility. One approach cannot meet the needs of all the diverse applications the model is currently used for. Therefore, it is up to each model implementer (either an individual  or a research group) to choose how they want to use each of the available options. Options include choices such as: When using ROMS, if an implementer runs into a problem or bug, they can report it to the ROMS forum. Applications. The versatility of ROMS has been proven in its diverse applications to different systems and regions. It is best applied to mesoscale systems, or those systems that can be mapped at high resolution, such as 1-km to 100-km grid spacing. Coupled model applications. Biogeochemical, bio-optical, sea ice, sediment, and other models can be embedded within  the ROMS framework to study specific processes. These are usually developed for specific regions of the world's oceans but can be applied elsewhere. For example, the sea ice application of ROMS was originally developed for the Barents Sea Region. ROMS modeling efforts are increasingly being coupled with observational platforms, such as buoys, satellites, and ship-mounted underway sampling systems, to provide more accurate forecasting of ocean conditions. Regional applications. There is an ever-growing number of applications of ROMS to particular regions of the world's oceans. These integrated ocean modeling systems use ROMS for the circulation component, and  add other variables and processes of interest. A few examples are: