FMS Coupler
2022.03
|
FMS Coupler provides the capability to couple component models (atmosphere, land, sea ice, and ocean) on different logically rectangular grids. This repository holds 3 separate directories with driver programs for different usages along with modules with routines for common operations.
There are currently 3 coupler_main
driver programs, each with their own directory:
Additionally, files in the 'shared' directory holds modules used by multiple drivers. The information below is provided for the full coupler, but there is considerable overlap between the other versions. Documentation on all programs and modules is available through the files tab.
coupler_main.F90 couples component models for atmosphere, ocean, land and sea ice on independent grids. It also controls the time integration.
This version couples model components representing atmosphere, ocean, land and sea ice on independent grids. Each model component is represented by a data type giving the instantaneous model state.
The component models are coupled to allow implicit vertical diffusion of heat and moisture at the interfaces of the atmosphere, land, and ice models. As a result, the atmosphere, land, and ice models all use the same time step. The atmospheric model has been separated into down and up calls that correspond to the down and up sweeps of the standard tridiagonal elimination.
The ocean interface uses explicit mixing. Fluxes to and from the ocean must be passed through the ice model. This includes atmospheric fluxes as well as fluxes from the land to the ocean (runoff).
This program contains the model's main time loop. Each iteration of the main time loop is one coupled (slow) time step. Within this slow time step loop is a fast time step loop, using the atmospheric time step, where the tridiagonal vertical diffusion equations are solved. Exchange between sea ice and ocean occurs once every slow timestep.
The three components of coupler: coupler_main , flux_exchange_mod, and surface_flux_mod are configured through three namelists
Below is some pseudo-code to illustrate the runtime loop of the coupler_main drivers.