Open Boundaries Implementation in MITgcmUV These are some quick explanatory notes regards implementation of open boundaries (OB) and the example configuration found in .../verification/exp4/ Input and control of OBs * The open boundaries code is used only if the LOGICAL parameter openBondaries is .TRUE. * Four 1-dimensional INTEGER arrays indicate the position of an OB: OB_Jnorth, OB_Jsouth, OB_Ieast and OB_Iwest. The values of OB_* indicate the absolute computational coordinate of an open boundary. eg. OB_Jsouth(3)=4 means that in the column I=3 there is a "southern" OB at tracer point J=4. Similarly OB_Iwest(2)=1 means that the tracer point (2,1) is an OB point. This structure for specifying OBs assumes that there will be only one northern and southern OB per column and similar in the other direction. An entry of 0 (zero) means there is now OB in that column/row. The reference to "tracer points" above introduces an important distinction between particular boundaries due to the C-grid staggering of variables. At a northern OB tracer point (i,j) the OB v-velocity point is at (i,j) while at a southern OB tracer point (i,j) the OB v-velocity point is at (i,j+1). This is all taken care of in the code but when specifying OB values it is important to remember the physical coordinates of T,S,U and V are not the same for a given computational index. Changing the type of open boundary The supplied code simply specifies model variables at the appropriate points. The value to be specified can (and should) be determine using a radiative condition. A skeleton code is supplied set_obcs.F to illustrate how this might be done. This is the only routine that needs to be edited. Edit others at your own peril! The examples There are three examples in .../verification/exp4/ 1. A zonal channel (solid side walls) with open boundaries at either end: data.channel 2. A zonal channel with a Gaussian bump and open boundaries at either end: data.bumpchannel 3. An open domain (OBs on four sides) with a Gaussian bump: data.bump Each data file has a corresponding topog.* file which is specified through the variable bathyFile in data.* The physical problem has a flow of U=25 cm/s specified at all open boundaries. The details of the experiment can be found in Adcroft's thesis (Imperial College) and in Adcroft, Hill and Marshall, MWR 1997. The differences between the supplied data.* files also show how to turn particular OBs on and off. Compiling and running the examples The examples supplied are the barotropic zonal flow over a Gaussian bump in a channel. * Header files: Copy or link SIZE.h, CPP_OPTIONS.h and CP_EEOPTIONS.h from .../verification/exp4/code/ to .../model/inc/, .../model/inc/ and .../eesupp.inc/ respectively * Modified source: Copy set_obcs.F to .../model/src/ Now compile the code as usual: * cd bin * ../tools/genmake -makefile * make depend * make To run the code you must first choose a data file to use: * cd ../verification/exp4/input * cp data.bump data * ../../exe/mitgcmuv Happy Open Boundarying!