/[lmdze]/trunk/libf/phylmd/Orography/mva9.f90
ViewVC logotype

Contents of /trunk/libf/phylmd/Orography/mva9.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 47 - (show annotations)
Fri Jul 1 15:00:48 2011 UTC (12 years, 10 months ago) by guez
File size: 1560 byte(s)
Split "thermcell.f" and "cv3_routines.f".
Removed copies of files that are now in "L_util".
Moved "mva9" and "diagetpq" to their own files.
Unified variable names across procedures.

1 module MVA9_m
2
3 implicit none
4
5 contains
6
7 SUBROUTINE MVA9(X)
8
9 ! From dyn3d/grid_noro.F, version 1.1.1.1 2004/05/19 12:53:06
10
11 ! Make a moving average over 9 gridpoints of the x fields.
12
13 REAL, intent(inout):: X(:, :) ! (IMAR, JMAR)
14
15 ! Local:
16 integer imar, jmar
17 real XF(size(x, 1), size(x, 2))
18 real WEIGHTpb(-1:1, -1:1)
19 real my_sum
20 integer i, is, js, j
21
22 !---------------------------------------------------------------
23
24 imar = size(x, 1)
25 jmar = size(x, 2)
26
27 MY_SUM=0.
28 DO IS=-1, 1
29 DO JS=-1, 1
30 WEIGHTpb(IS, JS) = 1. / REAL((1 + IS**2) * (1 + JS**2))
31 MY_SUM=MY_SUM+WEIGHTpb(IS, JS)
32 ENDDO
33 ENDDO
34
35 DO IS=-1, 1
36 DO JS=-1, 1
37 WEIGHTpb(IS, JS)=WEIGHTpb(IS, JS)/MY_SUM
38 ENDDO
39 ENDDO
40
41 DO J=2, JMAR-1
42 DO I=2, IMAR-1
43 XF(I, J)=0.
44 DO IS=-1, 1
45 DO JS=-1, 1
46 XF(I, J)=XF(I, J)+X(I+IS, J+JS)*WEIGHTpb(IS, JS)
47 ENDDO
48 ENDDO
49 ENDDO
50 ENDDO
51
52 DO J=2, JMAR-1
53 XF(1, J)=0.
54 IS=IMAR-1
55 DO JS=-1, 1
56 XF(1, J)=XF(1, J)+X(IS, J+JS)*WEIGHTpb(-1, JS)
57 ENDDO
58 DO IS=0, 1
59 DO JS=-1, 1
60 XF(1, J)=XF(1, J)+X(1+IS, J+JS)*WEIGHTpb(IS, JS)
61 ENDDO
62 ENDDO
63 XF(IMAR, J)=XF(1, J)
64 ENDDO
65
66 DO I=1, IMAR
67 XF(I, 1)=XF(I, 2)
68 XF(I, JMAR)=XF(I, JMAR-1)
69 ENDDO
70
71 DO I=1, IMAR
72 DO J=1, JMAR
73 X(I, J)=XF(I, J)
74 ENDDO
75 ENDDO
76
77 END SUBROUTINE MVA9
78
79 end module MVA9_m

  ViewVC Help
Powered by ViewVC 1.1.21