/************************************************************************ | |
* * | |
* 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 * | |
* * | |
************************************************************************/ | |
#include "decs.h" | |
void calcuvzh(jstart,jend,p,u,v,cu,cv,h,z,fsdx,fsdy) | |
int jstart,jend; | |
float p[n][m]; | |
float u[n][m]; | |
float v[n][m]; | |
float cu[n][m]; | |
float cv[n][m]; | |
float h[n][m]; | |
float z[n][m]; | |
float fsdx, fsdy; | |
{ | |
int i,j,ip,jp; | |
for(j=jstart;j<=jend;j++) { | |
jp = (j+1) % n; | |
for (i = 0; i < m; i++){ | |
ip = (i+1) % m; | |
cu[j][ip] = 0.5*(p[j][ip]+p[j][i])*u[j][ip]; | |
cv[jp][i] = 0.5*(p[jp][i]+p[j][i])*v[jp][i]; | |
z[jp][ip] = (fsdx*(v[jp][ip]-v[jp][i])-fsdy*(u[jp][ip] | |
-u[j][ip]))/(p[j][i]+p[j][ip]+p[jp][ip]+p[jp][i]); | |
h[j][i] = p[j][i]+0.25*(u[j][ip]*u[j][ip]+u[j][i]*u[j][i] | |
+v[jp][i]*v[jp][i]+v[j][i]*v[j][i]); | |
} | |
} | |
} |