blob: b302a9b45042550c7fb3552762f3ebef9dd4e33d [file] [log] [blame]
/************************************************************************
* *
* 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;
};