1 |
molod |
1.2 |
subroutine do_plumes(uplume,vplume,thplume, |
2 |
molod |
1.1 |
. idim,jdim,Nr,Nsx,Nsy,bi,bj,nxperdyn,nyperdyn, |
3 |
molod |
1.2 |
. duplume,dvplume,dthplume) |
4 |
molod |
1.1 |
c----------------------------------------------------------------------- |
5 |
|
|
c Dummy routine to calculate plumes increments - here set them to whatever |
6 |
|
|
c |
7 |
|
|
c----------------------------------------------------------------------- |
8 |
|
|
implicit none |
9 |
|
|
#include "CPP_OPTIONS.h" |
10 |
|
|
|
11 |
|
|
integer idim,jdim,Nr,Nsx,Nsy,bi,bj,nxperdyn,nyperdyn |
12 |
|
|
_RL uplume(idim,jdim,Nr,Nsx,Nsy) |
13 |
|
|
_RL vplume(idim,jdim,Nr,Nsx,Nsy) |
14 |
|
|
_RL thplume(idim,jdim,Nr,Nsx,Nsy) |
15 |
|
|
_RL splume(idim,jdim,Nr,Nsx,Nsy) |
16 |
|
|
_RL duplume(idim,jdim,Nr,Nsx,Nsy) |
17 |
|
|
_RL dvplume(idim,jdim,Nr,Nsx,Nsy) |
18 |
|
|
_RL dthplume(idim,jdim,Nr,Nsx,Nsy) |
19 |
|
|
_RL dsplume(idim,jdim,Nr,Nsx,Nsy) |
20 |
|
|
c |
21 |
|
|
_RL upergrid(nxperdyn,nyperdyn,nr) |
22 |
|
|
_RL vpergrid(nxperdyn,nyperdyn,nr) |
23 |
|
|
_RL tpergrid(nxperdyn,nyperdyn,nr) |
24 |
|
|
_RL spergrid(nxperdyn,nyperdyn,nr) |
25 |
|
|
_RL dupergrid(nxperdyn,nyperdyn,nr) |
26 |
|
|
_RL dvpergrid(nxperdyn,nyperdyn,nr) |
27 |
|
|
_RL dtpergrid(nxperdyn,nyperdyn,nr) |
28 |
|
|
_RL dspergrid(nxperdyn,nyperdyn,nr) |
29 |
|
|
integer i,j,L,ig,jg,iindex,jindex,nxgrids,nygrids |
30 |
|
|
|
31 |
|
|
nxgrids = idim/nxperdyn |
32 |
|
|
nygrids = jdim/nyperdyn |
33 |
|
|
|
34 |
|
|
c Large do-loop, do a plume model at each grid point |
35 |
|
|
do jg = 1,nygrids |
36 |
|
|
do ig = 1,nxgrids |
37 |
|
|
|
38 |
|
|
c Extract per grid point info from large arrays |
39 |
|
|
do L = 1,Nr |
40 |
|
|
do j = 1,nyperdyn |
41 |
|
|
do i = 1,nxperdyn |
42 |
|
|
iindex = (i-1)*nxgrids + i |
43 |
|
|
jindex = (j-1)*nygrids + j |
44 |
|
|
upergrid(i,j,L) = uplume(iindex,jindex,L,bi,bj) |
45 |
|
|
vpergrid(i,j,L) = vplume(iindex,jindex,L,bi,bj) |
46 |
|
|
tpergrid(i,j,L) = thplume(iindex,jindex,L,bi,bj) |
47 |
|
|
spergrid(i,j,L) = splume(iindex,jindex,L,bi,bj) |
48 |
|
|
enddo |
49 |
|
|
enddo |
50 |
|
|
enddo |
51 |
|
|
|
52 |
|
|
c Now call plume model to get tendencies |
53 |
|
|
call plume( ) |
54 |
|
|
|
55 |
|
|
c Put tendencies into large arrays |
56 |
|
|
do L = 1,Nr |
57 |
|
|
do j = 1,nyperdyn |
58 |
|
|
do i = 1,nxperdyn |
59 |
|
|
iindex = (i-1)*nxgrids + i |
60 |
|
|
jindex = (j-1)*nygrids + j |
61 |
|
|
duplume(iindex,jindex,L,bi,bj) = dupergrid(i,j,L) |
62 |
|
|
dvplume(iindex,jindex,L,bi,bj) = dvpergrid(i,j,L) |
63 |
|
|
dthplume(iindex,jindex,L,bi,bj) = dtpergrid(i,j,L) |
64 |
|
|
dsplume(iindex,jindex,L,bi,bj) = dspergrid(i,j,L) |
65 |
|
|
enddo |
66 |
|
|
enddo |
67 |
|
|
enddo |
68 |
|
|
|
69 |
|
|
return |
70 |
|
|
end |