Surface Forcing


Default Surface Forcing

The ocean is driven by the atmosphere in the form of surface boundary conditions, such as wind, rain and heat flux. In turn the ocean drives the atmosphere, primarily through sea surface temperatures. In a true air-sea coupled model each would drive the other. As yet there is no coupling aspect to the SEA model and forcing comes in the form of sea surface stresses and fluxes.

By default, zonally averaged annual mean wind stresses are taken from Hellerman and Rosenstein (1983). Rain is simulated by a salt flux, which, like the heat flux, is formed from zonally averaged annual mean observed sea surface salinities and temperatures, as compiled by Levitus (1982).


Real Surface Forcing

To use alternate real forcing data, suitable datasets must be provided and read by the model. To indicate that these datasets are to be read, the Makefile should be edited prior to compilation and the FORCING variable set. This instructs the model to read in any of three datasets, containing: sea surface temperatures; sea surface salinities; and wind stresses (zonal and meridional). The data that is read will overwrite the default values. However, it is necessary to specify which of these three fields should be read (and which should be left as default) using further compiler directives. It is also necessary to inform the model whether each dataset is a single, constant dataset or multiple, periodic datasets (which will be varied with time). For example, to use periodic sea surface temperatures, constant sea surface salinities and the default wind stress values, the FORCING variable should be set as follows.

When using periodic datasets, the SEA model will automatically read in two adjacent datasets and will linearly interpolate between these as the model progresses. The model will expect the number of periods to be specified and the mid-points of those periods, so that it can determine when to cycle in the dataset of the next period. This is achieved by setting the number of periods parameters (st_nperiod, ss_nperiod and ws_nperiod) in the header file include/cvbc.h and the mid-point arrays (st_period, ss_period and ws_period) in the file src/forcing.F (in the subroutine init_real_forcing).

It is important that the data files are in the correct format, to be read in by the SEA model. Like restarts, snapshots and topography files, when running in parallel each sub-process will read in data pertaining to its own sub-domain only. It is therefore necessary to pre-process the data files to match the current process configuration. The pre-data utility will handle the necessary pre-processing of these data files, provided that they have been stored something like this (where nbytes is the machine precision used; 8 or 4 bytes typically):

The use of direct access files allows for easier access when multiple datasets are stored. For example, if using seasonal sea surface temperatures, four datasets will be used and are stored as follows. Similary for salinities and, for wind stress, zonal datasets are stored at odd numbered records and meridional datasets at even numbered records (i.e. wsx1@rec=1; wsy1@rec=2; wsx2@rec=3; wsy2@rec=4; and so on).

The pre-data program is compiled using the make pre-data process, after the config routine has been compiled and run. When run the pre-data utility will provide menu options to pre-process the various datasets. After pre-processing the data sub-files will reside in the data/model/ directory and will be suffixed with a process number. If running in sequential mode, rather than running the pre processing routine, it is possible to simply copy the datasets to the data/model/ directory with a ".0" suffix. (Note: take care not to make this your only copy, as the make clean procedure (which is a default action of the make procedure) wipes the data/model/ directory clean in preparation for the new process configuration).

It is not expected that all possible surface forcing variables are catered for, but if further variables are required the current implementation should act as a good template for how to pre-process, read and use the data.