POP can be configured to use a variety of grids, because it is written to allow any logically rectangular, orthogonal coordinate system on a sphere. Generation grids and topography can be time consuming, but it only needs to be done once for a given run-sequence (or even for a set of run-sequences based on the same grid). Consequently, grids and topography are usually generated off-line and grid information is stored in files that are read in during initialization of each job. A graphical tool for generating and modifying grids and topography will soon be released and can be obtained on request. This tool supports almost-global Mercator grids, global displaced-pole grids, global tripole grids and regional grids.
When generating the grid off-line, a horizontal grid file is created containing arrays of double precision values for:
|Input/Generation of grid and bottom topography|
|horiz_grid_opt||'internal'||'file'||'file', 'internal'||read horizontal grid from a file OR create simple lat/lon grid|
|horiz_grid_file||'unknown_grid_file'||auto-filled by CESM1 POP2 scripts||string ≤ 256 characters||filename (with path) of file containing horizontal grid info|
|sfc_layer_opt||'varthick'||'varthick'||'varthick', 'rigid', 'oldfree'||surface layer is variable thickness OR rigid lid OR old free surface formulation|
|vert_grid_opt||'internal'||'file'||'file', 'internal'||read vertical grid structure from file OR compute vertical grid internally|
|vert_grid_file||'unknown_vert_grid_file'||auto-filled by CESM1 POP2 scripts||string ≤ 256 characters||file containing thickness (cm) of each vertical layer|
|topography_opt||'internal'||'file'||'file', 'internal', 'bathymetry'(CESM1 only)||read discretized bottom topography from file or compute idealized flat-bottom topography internally|
|kmt_kmin (CESM1 only)||N/A||3||(1,kmt)||minimum allowed non-zero KMT value|
|topography_file||'unknown_topography_file'||auto-filled by CESM1 POP2 scripts||string ≤ 256 characters||file containing index of deepest level at each gridpoint|
|region_mask_file||'unknown_region_mask'||auto-filled by CESM1 POP2 scripts||string ≤ 256 characters||file containing region number at each gridpoint|
|N/A||auto-filled by CESM1 POP2 scripts||string ≤ 256 characters||file containing region ids at each gridpoint. The information in this file associates region ids with a region name; a negative region id indicates a marginal sea|
|partial_bottom_cells||.false.||.false. (gx1 & gx3)
|.true., .false.||if .true., use partial bottom cells|
|bottom_cell_file||'unknown_bottom_cell'||auto-filled by CESM1 POP2 scripts||string ≤ 256 characters||file containing thickness (cm) of partial bottom cell for each column|
|.false.||N/A||.true., .false.||if .true., smooth topography using 9-point averaging stencil|
|N/A||0||≥ 0||number of topography smoothing passes|
|flat_bottom||.false.||.false.||.true., .false.||if .true., flat bottom is used|
.true. if topography_opt = 'bathymetry'
|.true., .false.||if .true., remove isolated or disconnected ocean points|
Options exist to generate both horizontal and vertical grids internally ('internal'). Because any grid size can be easily produced and IO is unnecessary, this option is used for the LANL POP benchmark test problem. The horizontal grid in this case is a simple latitude-longitude grid. The vertical grid uses an algorithm identical to the off-line vertical grid generator located in the tools/grid directory; vertical grids are generated which have relatively shallow surface layers and increasing thickness with depth.
The bottom topography is defined by a field of integers (KMT) which gives the index of the deepest vertical level at each horizontal grid point. This field should also be generated off-line because it often requires modification for narrow channels and other small-scale features. For off-line generated topography, the code expects a binary file with the integer KMT field. Topography can be generated internally, but this option currently only creates an idealized continental outline with a flat bottom; it should not be used for serious ocean simulations. Bottom topography can be modified to include partial bottom cells. If partial bottom cells are selected, the thickness of the bottom cell in each column can be less than the full thickness of the bottom model layer, giving a better representation of the actual bottom topography. For this option, an array containing the thickness of each bottom cell (in cm) must be read from a bottom cell input file.
At present, POP does not support in-flow/out-flow boundary conditions for regional grids. For such regional simulations, closed boudaries are used with buffer zones whose thermohaline properties are maintained by restoring to climatology.
Three options are available for the surface layer. The default is now a variable thickness surface layer ('varthick') in which the thickness of the surface layer adjusts to fresh water input/export. Note that in this formulation, an assumption remains that the changes in thickness should be much smaller than the thickness of the surface layer itself. A second option is the original free surface formulation ('oldfree') where the thickness remains constant, but changes in the free surface height are used in forcing terms. In this case, fresh water fluxes are treated as virtual salinity fluxes and conservation of tracers is not exact (though the residual tracer flux is globally very small). The last option is the rigid lid option ('rigid'). As it implies, there is no variation is surface height with this option. Note that when using this option, the barotropic solver takes much longer to converge so the maximum iteration parameter must be increased to account for this slower convergence. The rigid lid option is not recommended for typical ocean simulations.
For some forcing options (and in future versions for regional diagnostics and river runoff), a region mask is necessary to define various regions. This mask is a simple two-dimensional integer mask that assigns a region number for each horizontal grid point. Negative values of the region number are used to indicate marginal seas. If such a region mask is necessary, it is read from the region_mask_file. If the mask is not necessary, region_mask_file must be set to 'unknown_region_mask'.