# FVCOM

FVCOM is a prognostic, unstructured-grid, finite-volume, free-surface, 3-D primitive equation coastal ocean circulation model developed by UMASSD-WHOI joint efforts.

The model consists of momentum, continuity, temperature, salinity and density equations and is closed physically and mathematically using turbulence closure submodels. The horizontal grid is comprised of unstructured triangular cells and the irregular bottom is preseented using generalized terrain-following coordinates.

The General Ocean Turbulent Model (GOTM) developed by Burchard’s research group in Germany (Burchard, 2002) has been added to FVCOM to provide optional vertical turbulent closure schemes. FVCOM is solved numerically by a second-order accurate discrete flux calculation in the integral form of the governing equations over an unstructured triangular grid. This approach combines the best features of finite-element methods (grid flexibility) and finite-difference methods (numerical efficiency and code simplicity) and provides a much better numerical representation of both local and global momentum, mass, salt, heat, and tracer conservation.

The ability of FVCOM to accurately solve scalar conservation equations in addition to the topological flexibility provided by unstructured meshes and the simplicity of the coding structure has make FVCOM ideally suited for many coastal and interdisciplinary scientific applications.

## Getting FVCOM

FVCOM is hosted by the University of Massachusetts – Dartmouth (UMASS-D) in collaboration with Dr. R. Beardsley at the Woods Hole Oceanographic Institution. The FVCOM website contains a registration form which must be completed before the source code is available for download.

#### Intel Fortran compatibility issues

With Intel Fortran compiler versions 15 and above, the behaviour of pointers has changed and FVCOM experiences problems in some FVCOM modules. To date (2016-10-25), FABM has problems when reading boundary data for ERSEM. Other identified problems appear when running the nesting output (`NCNEST`

). The problems manifest as FVCOM 'hanging' whilst utilising 100% of the CPU(s).

This has been fixed in FVCOM 4.0 (it is to do with initialising pointers) but that change has not been backported to FVCOM 3.x.

## Tools

- VisIt - a free interactive parallel visualization and graphical analysis tool for viewing scientific data on Unix and PC platforms
- fvcom-toolbox - a MATLAB toolbox for generating FVCOM input files and processing output files
- SMS - proprietary Windows software to generate unstructured grids for use in FVCOM
- PyFVCOM - an ever-growing toolbox of tools in Python to read FVCOM model outputs and perform FVCOM post-processing
- PySeidon - a Python post-processing library which performs a number of analyses (e.g. harmonic analysis) of FVCOM outputs.
- MATLAB - An example MATLAB script for plotting FVCOM output

## Configuration

Some aspects of the configuration of FVCOM are outlined below. This includes configuring the model grid, its open boundaries and the surface forcing. The configuration steps outlined here often make use of the (FVCOM matlab toolbox) which simplifies the processes. Where appropriate, example code is included to show how to use the relevant tools. Elsewhere, the functions which are required are enumerated instead.

### Grids

### Open boundaries

### Surface forcing

### Rivers

### Groundwater

### Nesting and outputs

### FVCOM-FABM (ERSEM)

### Lagrangian particles

### Tidal turbines

### Sediment transport

## Tips

- Stability and configuration - A list of tips on configuring FVCOM.
- Domain examples - Summary of domain setup checks
- Nested Domain examples - Summary of steps to generate a high res nested domain

## Data Sets

The pages below outline some useful data sets which have been used with FVCOM. This includes instructions on how to use the FVCOM matlab toolbox to obtain and process these data.

## FVCOM Workshops

Archived presentations and notes from previous workshops.

## Users contributions corner

Users share here their experiences and work flows to setup and run a domain. These range from idealised setups accessible through the gitlab repository to real life implementations