Directory: | ./ |
---|---|
File: | dyn/groupe.f |
Date: | 2022-01-11 19:19:34 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 25 | 27 | 92.6% |
Branches: | 19 | 24 | 79.2% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | ! | ||
2 | ! $Header$ | ||
3 | ! | ||
4 | 480 | subroutine groupe(pext,pbaru,pbarv,pbarum,pbarvm,wm) | |
5 | |||
6 | use comconst_mod, only: ngroup | ||
7 | |||
8 | implicit none | ||
9 | |||
10 | c sous-programme servant a fitlrer les champs de flux de masse aux | ||
11 | c poles en "regroupant" les mailles 2 par 2 puis 4 par 4 etc. au fur | ||
12 | c et a mesure qu'on se rapproche du pole. | ||
13 | c | ||
14 | c en entree: pext, pbaru et pbarv | ||
15 | c | ||
16 | c en sortie: pbarum,pbarvm et wm. | ||
17 | c | ||
18 | c remarque, le wm est recalcule a partir des pbaru pbarv et on n'a donc | ||
19 | c pas besoin de w en entree. | ||
20 | |||
21 | include "dimensions.h" | ||
22 | include "paramet.h" | ||
23 | include "comgeom2.h" | ||
24 | |||
25 | ! integer ngroup | ||
26 | ! parameter (ngroup=3) | ||
27 | |||
28 | |||
29 | real pbaru(iip1,jjp1,llm),pbarv(iip1,jjm,llm) | ||
30 | real pext(iip1,jjp1,llm) | ||
31 | |||
32 | real pbarum(iip1,jjp1,llm),pbarvm(iip1,jjm,llm) | ||
33 | real wm(iip1,jjp1,llm) | ||
34 | |||
35 | real zconvm(iip1,jjp1,llm),zconvmm(iip1,jjp1,llm) | ||
36 | |||
37 | real uu | ||
38 | |||
39 | integer i,j,l | ||
40 | |||
41 | logical firstcall,groupe_ok | ||
42 | save firstcall,groupe_ok | ||
43 | |||
44 | data firstcall/.true./ | ||
45 | data groupe_ok/.true./ | ||
46 | |||
47 | if (iim==1) then | ||
48 | groupe_ok=.false. | ||
49 | endif | ||
50 | |||
51 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 479 times.
|
480 | if (firstcall) then |
52 |
1/2✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
|
1 | if (groupe_ok) then |
53 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
1 | if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre de point' |
54 | endif | ||
55 | 1 | firstcall=.false. | |
56 | endif | ||
57 | |||
58 | |||
59 | c Champs 1D | ||
60 | |||
61 | 480 | call convflu(pbaru,pbarv,llm,zconvm) | |
62 | |||
63 | 480 | call scopy(ijp1llm,zconvm,1,zconvmm,1) | |
64 | 480 | call scopy(ijmllm,pbarv,1,pbarvm,1) | |
65 | |||
66 |
1/2✓ Branch 0 taken 480 times.
✗ Branch 1 not taken.
|
480 | if (groupe_ok) then |
67 | 480 | call groupeun(jjp1,llm,zconvmm) | |
68 | 480 | call groupeun(jjm,llm,pbarvm) | |
69 | |||
70 | c Champs 3D | ||
71 |
2/2✓ Branch 0 taken 480 times.
✓ Branch 1 taken 18720 times.
|
19200 | do l=1,llm |
72 |
2/2✓ Branch 0 taken 580320 times.
✓ Branch 1 taken 18720 times.
|
599520 | do j=2,jjm |
73 | 580320 | uu=pbaru(iim,j,l) | |
74 |
2/2✓ Branch 0 taken 18570240 times.
✓ Branch 1 taken 580320 times.
|
19150560 | do i=1,iim |
75 | 18570240 | uu=uu+pbarvm(i,j,l)-pbarvm(i,j-1,l)-zconvmm(i,j,l) | |
76 | 19150560 | pbarum(i,j,l)=uu | |
77 | c zconvm(i,j,l ) = xflu(i-1,j,l)-xflu(i,j,l)+ | ||
78 | c * yflu(i,j,l)-yflu(i,j-1,l) | ||
79 | enddo | ||
80 | 599040 | pbarum(iip1,j,l)=pbarum(1,j,l) | |
81 | enddo | ||
82 | enddo | ||
83 | |||
84 | else | ||
85 | ✗ | pbarum(:,:,:)=pbaru(:,:,:) | |
86 | ✗ | pbarvm(:,:,:)=pbarv(:,:,:) | |
87 | endif | ||
88 | |||
89 | c integration de la convergence de masse de haut en bas ...... | ||
90 | do l=1,llm | ||
91 | 480 | do j=1,jjp1 | |
92 | do i=1,iip1 | ||
93 | zconvmm(i,j,l)=zconvmm(i,j,l) | ||
94 | enddo | ||
95 | enddo | ||
96 | enddo | ||
97 |
2/2✓ Branch 0 taken 18240 times.
✓ Branch 1 taken 480 times.
|
18720 | do l = llm-1,1,-1 |
98 |
2/2✓ Branch 0 taken 601920 times.
✓ Branch 1 taken 18240 times.
|
620640 | do j=1,jjp1 |
99 |
2/2✓ Branch 0 taken 19863360 times.
✓ Branch 1 taken 601920 times.
|
20483520 | do i=1,iip1 |
100 | 20465280 | zconvmm(i,j,l)=zconvmm(i,j,l)+zconvmm(i,j,l+1) | |
101 | enddo | ||
102 | enddo | ||
103 | enddo | ||
104 | |||
105 | 480 | CALL vitvert(zconvmm,wm) | |
106 | |||
107 | 480 | return | |
108 | end | ||
109 | |||
110 |