/[lmdze]/trunk/dyn3d/groupe.f
ViewVC logotype

Contents of /trunk/dyn3d/groupe.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 265 - (show annotations)
Tue Mar 20 09:35:59 2018 UTC (6 years, 1 month ago) by guez
File size: 2516 byte(s)
Rename module dimens_m to dimensions.
1 module groupe_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE groupe(pbaru, pbarv, pbarum, pbarvm, wm)
8
9 ! From dyn3d/groupe.F, v 1.1.1.1 2004/05/19 12:53:06
10
11 ! sous-programme servant a fitlrer les champs de flux de masse aux
12 ! poles en "regroupant" les mailles 2 par 2 puis 4 par 4 etc. au fur
13 ! et a mesure qu'on se rapproche du pole.
14
15 ! en entree: pbaru et pbarv
16 ! en sortie: pbarum, pbarvm et wm.
17
18 ! remarque, le wm est recalcule a partir des pbaru pbarv et on n'a
19 ! donc pas besoin de w en entree.
20
21 USE dimensions
22 USE paramet_m
23 USE comconst
24 USE disvert_m
25 USE comgeom
26 use vitvert_m, only: vitvert
27
28 INTEGER, PARAMETER:: ngroup = 3
29
30 REAL pbaru(iip1, jjp1, llm), pbarv(iip1, jjm, llm)
31 REAL, intent(out):: pbarum(iip1, jjp1, llm)
32 real pbarvm(iip1, jjm, llm)
33 REAL wm(iip1, jjp1, llm)
34
35 REAL zconvm(iip1, jjp1, llm), zconvmm(iip1, jjp1, llm)
36 REAL uu
37 INTEGER i, j, l
38 LOGICAL:: firstcall = .TRUE.
39
40 !------------------------------------------------------
41
42 IF (firstcall) THEN
43 IF (mod(iim, 2**ngroup) /= 0) then
44 print *, 'groupe: bad iim'
45 STOP 1
46 end IF
47 firstcall = .FALSE.
48 END IF
49
50 ! Champs 1D
51
52 CALL convflu(pbaru, pbarv, llm, zconvm)
53
54 CALL scopy(ijp1llm, zconvm, 1, zconvmm, 1)
55 CALL scopy(ijmllm, pbarv, 1, pbarvm, 1)
56
57 CALL groupeun(jjp1, llm, zconvmm)
58 CALL groupeun(jjm, llm, pbarvm)
59
60 ! Champs 3D
61
62 DO l = 1, llm
63 DO j = 2, jjm
64 uu = pbaru(iim, j, l)
65 DO i = 1, iim
66 uu = uu + pbarvm(i, j, l) - pbarvm(i, j-1, l) - zconvmm(i, j, l)
67 pbarum(i, j, l) = uu
68 END DO
69 pbarum(iip1, j, l) = pbarum(1, j, l)
70 END DO
71 END DO
72 pbarum(:, 1, :) = 0
73 pbarum(:, jjm + 1, :) = 0
74
75 ! integration de la convergence de masse de haut en bas
76 DO l = 1, llm
77 DO j = 1, jjp1
78 DO i = 1, iip1
79 zconvmm(i, j, l) = zconvmm(i, j, l)
80 END DO
81 END DO
82 END DO
83 DO l = llm - 1, 1, -1
84 DO j = 1, jjp1
85 DO i = 1, iip1
86 zconvmm(i, j, l) = zconvmm(i, j, l) + zconvmm(i, j, l+1)
87 END DO
88 END DO
89 END DO
90
91 wm = vitvert(zconvmm)
92
93 END SUBROUTINE groupe
94
95 end module groupe_m

  ViewVC Help
Powered by ViewVC 1.1.21