
/************************************************************************
*									*
* Commonwealth Scientific and Industrial Research Organisation (CSIRO)	*
*	- Division of Information Technology	(DIT)			*
*	- Division of Atmospheric Research	(DAR)			*
*									*
* Shallow water weather model - Distributed Memory Version		*
*									*
* Finite difference model of shallow water equations based on :-	*
* "The dynamics of finite difference models of the shallow water	*
* equations" by R. Sadourney, JAS, 32, 1975.				*
* Code from:-								*
* "An introduction to three-dimensional climate modelling"		*
* by Washington and Parkinson						*
*									*
* Programmers	= David Abramson	(DIT) rcoda@koel.co.rmit.oz	*
*		= Paul Whiting		(DIT) rcopw@koel.co.rmit.oz	*
*		= Martin Dix		(DAR) mrd@koel.co.rmit.oz	*
* Language	= BSD c using Argonne NL macros				*
* O/S		= Unix System V						*
* H/W		= Encore Multimax 320					*
*									*
************************************************************************/

#define	m	32	/* 18 Number of points in x direction */
#define	n	32	/* 18 Number of points in y direction */
#define	a	1.e6	/* Nominally the radius of the earth but here just
			a length scale*/
#define	dt	90.0	/* Time step in seconds */
#define secs_pd	86400.	/* Seconds per day */
#define dx	1.e5	/* Grid spacing in x direction */
#define dy	1.e5	/* Grid spacing in y direction */
#define	alpha	0.001	/* Asselin time filter parameter */
#define itmax	1000	/* Number of time steps in run */
#define mprint	50	/* Print diagnostics every mprint steps */

#define lower	1	/* low bound of range of processors */
#define upper	20	/* hi bound of range of processors */
#define version	0.6	/* version number of program */

/* constants used by dump() to determine what data structure to print */
#define one_dim		1
#define two_dim		2
#define p_label		0
#define u_label		1
#define v_label		2
#define pold_label	3
#define uold_label	4
#define vold_label	5
#define psi_label	6
#define cu_label	7
#define cv_label	8
#define h_label		9
#define z_label		10
#define dudt_label	11
#define dvdt_label	12

/* message types */
#define START_SIGNAL	0
#define END_SIGNAL	4
#define CALC1a		20
#define CALC1b		21
#define CALC1c		22
#define CALC2a		23
#define CALC2b		24
#define	TIME1a		30
#define	TIME1b		31
#define	TIME1c		32
#define	TIME1d		33
#define TIME2		34
#define P_ROW		50
#define U_ROW		51
#define V_ROW		52
#define PSI_ROW		53
#define POLD_ROW	54
#define UOLD_ROW	55
#define VOLD_ROW	56
#define H_ROW		57
#define Z_ROW		58

#define	PREV	0
#define	NEXT	1
#define	JSTART	2
#define	JEND	3

#define debug_data      0x1
#define debug_master    0x2
#define debug_worker    0x4
#define debug_call      0x8
#define debug           0x0

struct res
{
	float	row[m];
	int	indx;
};
