5.4.1  Determining Code


First, we discuss that changes made to the model that modify the actual fortran code and hence require compilation.

1. Give the name for the test case in the file MAIN/ AN_ID.h This must be the same name given in the file PREP/ AN_ID.h Comment out all other define statements with an initial C.

2. If required, alter main.F to override information supplied by prep routine. The user must be careful not to introduce any inconsistencies, but some settings can obviously be modified without any ill effects. For example, the wind stress ( TAUX, TAUY) could be modified. (Remember that the model assumes that TAUX and TAUY are given in dynes cm2.)

3. Set the desired output. In the file MAIN/ Output.h set the data statements according to instructions. To save data for a variable, put a 1 in the column determining the X,Y, or Z space. If two different sections are required, enter a 2 instead of a 1. On the line below this, write in the I,J, or K index for the data slice in the Y-Z, X-Z, or X-Y plane. The third row identifies the section(s) for the second plot if one is requested. The variables used to define section plots are:

IPLP
Pressure plot.

IPLT
Temperature plot.

IPLS
Salinity plot.

IPLU
U velocity plot.

IPLV
V velocity plot.

IPLW
W velocity plot.

For example, to make three temperature plots, for slices in the planes at I = 50, J = 50, K = 6, set the data statement

data iplt / 1, 1, 1,
& 50, 50, 6,
& 0, 0, 0 /

When the model is run, these output files are put in the subdirectory created with the name tag for the present model run. For example, if the name tag for the present model run given in file main.in is NA1.0, then the data is written to subdirectory OUTPUT.NA1/NA1.0.

The file Output.h can also be edited to request plots of surface pressure ( IETAOUT = 1), zonal overturning stream function ( IXIXYOUT = 1), meridional overturning stream function ( IXIYZOUT = 1), or to dump 3D information for P, T, S, RHO, U, V, and/or W (e.g., IPXYZOUT = 1).

4. Modify the file MAIN/ Define.h by setting the choices PARTIAL_CELLS, Free_Surf, Rigid_Lid, BBL, LEVITUS, etc. This is done in an #ifdef block of code for the case name set in files AN_ID.h, just as was done for the file PREP/ Def_prep.h. Be sure that the choices made in MAIN/ Define.h do not conflict with those made in PREP/ Def_prep.h. For example, if PARTIAL_CELLS is defined in Def_prep.h, then PARTIAL_CELLS must also be defined in Define.h. Also, not all these choices can be set simultaneously for the same case. A list of the choices that can be made through the Define.h file is shown below:

#define LINEAR_T
Linearize the updating eqn for T

#define WIND
Include surface wind stress forcing

#define PARTIAL_CELLS
Partical cells on bottom bndry

#define T_RESTORE
Temperature restoring at surface

#define S_RESTORE
Salinity restoring at surface

#define SLIP
Free slip boundary conditions

#define QUAD_BOT_STR
Quadratic bottom stress

#define TS_DIFF
T,S horizontal diffusion

#define UV_DIFF
U,V horizontal diffusion

#define TS_ADV
Horizontal T and S advection

#define UV_ADV
Horizontal momentum advection

#define HMix_SMAG
Smagorinsky horizontal mixing

#define VMix_RICH
Richardson No. dependent vertical mixing

#define IMPLICIT_VERT
Implicit vertical mixing

#define TS_BIHARM2
T,S biharmonic horizontal diffusion

#define UV_BIHARM2
U,V biharmonic horizontal diffusion

#define TRAP_COR
Trapezoidal (implicit) Coriolis terms

#define UV_ACCEL
U,V time step acceleration

#define TS_ACCEL
T and S time step acceleration

#define GRADP_ORDER_4
4-th order pressure gradient

#define UV_ORDER_4
4-th order horizontal momentum fluxes

#define TS_ORDER_4
4-th order horizontal T and S fluxes

#define DIAG
Diagnostic mode, T,S held constant

#define OUTPUT_DD
Save model data for Dietrich's movie

#define OUTPUT_ML
Create output files for cross sections

#define RIGID_LID
Rigid lid

#define BBL
Bottom boundary layer

#define LOG_LAYER
Logarithmic bottom boundary layer

#define PERBC
Periodic boundary conditions

#define VEL_SPEC

#define EXTRA_SLIP

#define LIMITER1
Prevent unphysical advective temp changes

#define OPEN_SOUTH

#define OPEN_NORTH

#define OPEN_WEST

#define OPEN_EAST

#define OBC_THERMAL_WIND

#define SOUTH_SPONGE

#define NORTH_SPONGE

#define MED_SPONGE

#define REAL_CLM

#define SEASONAL

#define SFCE_FLUX

#define OUTPUT_CLM

#define OUTPUT_GRI

#define SHOW_WBOT
Show vertical velocity at bottom

#define BVMix

#define T_FLUX

#define S_FLUX

Note that in the diagnostic mode the temperature, salinity and density fields never change.

The last part of the file Define.h specifies additional default conditions set by the user. For example, if Richardson number mixing is used, then large vertical diffusivities are possible and hence one should use an implicit procedure to accound for the vertical mixing. To make this the default, we include the code:

#ifdef VMix_RICH
#define IMPLICIT_VERT
#endif /* VMix_RICH */

5. If you need any new arrays in the program, dimension them in the file MAIN/SUBS/ Local_Arrays.h, in an #ifdef block for your case. You may also want to add the new arrays to a common block in Local_Arrays.h so that they will be passed to the various subroutines called by main.

6. Make any necessary changes to the file MAIN/SUBS/ initfs.F. As an example, the time step acceleration parameters ALPHA_ACC and GAMMA_ACC(K) and parameters such as OT_RESTORE that control the surface temperature restoring time are set in this file.

7. Compile the main.F program. In the MAIN subdirectory compile the program with the makefile MAIN/ Makefile with the command ``make", or to send the output to a file

make >& Makefile.out

This produces the executable file main. Again, we emphasize that if any changes are made to files ending in .f, .F, or .h, in MAIN or its subdirectories, a new executable main must be created by typing ``make" to recompile the Makefile. If any new files are created to be included in any of the files in MAIN, these files should be added to the target list of the Makefile. The files in directories PREP and MAIN can be changed independently of eachother,unless the array dimensions are changed. As a debugging technique, it is sometimes useful to use the command

f77 -F main.F (on SUN workstations)
f77 -P main.F (on SGI workstations)

which invokes the source file macro preprocessor but does not compile. A file is created that gives a listing of the code in the main.F file with all the code inserted from the INCLUDE statements for the #ifdef options selected.

   



CANDIE Home User Guide Contents Previous Section Top of Page Next Section