GCC Code Coverage Report


Directory: ./
File: dyn3d_common/divgrad2.f
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 21 21 100.0%
Branches: 17 18 94.4%

Line Branch Exec Source
1 !
2 ! $Header$
3 !
4 530 SUBROUTINE divgrad2 ( klevel, h, deltapres, lh, divgra )
5 c
6 c P. Le Van
7 c
8 c ***************************************************************
9 c
10 c ..... calcul de (div( grad )) de ( pext * h ) .....
11 c ****************************************************************
12 c h ,klevel,lh et pext sont des arguments d'entree pour le s-prg
13 c divgra est un argument de sortie pour le s-prg
14 c
15 IMPLICIT NONE
16 c
17 !-----------------------------------------------------------------------
18 ! INCLUDE 'dimensions.h'
19 !
20 ! dimensions.h contient les dimensions du modele
21 ! ndm est tel que iim=2**ndm
22 !-----------------------------------------------------------------------
23
24 INTEGER iim,jjm,llm,ndm
25
26 PARAMETER (iim= 32,jjm=32,llm=39,ndm=1)
27
28 !-----------------------------------------------------------------------
29 !
30 ! $Header$
31 !
32 !
33 ! ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
34 ! veillez n'utiliser que des ! pour les commentaires
35 ! et bien positionner les & des lignes de continuation
36 ! (les placer en colonne 6 et en colonne 73)
37 !
38 !
39 !-----------------------------------------------------------------------
40 ! INCLUDE 'paramet.h'
41
42 INTEGER iip1,iip2,iip3,jjp1,llmp1,llmp2,llmm1
43 INTEGER kftd,ip1jm,ip1jmp1,ip1jmi1,ijp1llm
44 INTEGER ijmllm,mvar
45 INTEGER jcfil,jcfllm
46
47 PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3 &
48 & ,jjp1=jjm+1-1/jjm)
49 PARAMETER( llmp1 = llm+1, llmp2 = llm+2, llmm1 = llm-1 )
50 PARAMETER( kftd = iim/2 -ndm )
51 PARAMETER( ip1jm = iip1*jjm, ip1jmp1= iip1*jjp1 )
52 PARAMETER( ip1jmi1= ip1jm - iip1 )
53 PARAMETER( ijp1llm= ip1jmp1 * llm, ijmllm= ip1jm * llm )
54 PARAMETER( mvar= ip1jmp1*( 2*llm+1) + ijmllm )
55 PARAMETER( jcfil=jjm/2+5, jcfllm=jcfil*llm )
56
57 !-----------------------------------------------------------------------
58 !
59 ! $Header$
60 !
61 !CDK comgeom2
62 COMMON/comgeom/ &
63 & cu(iip1,jjp1),cv(iip1,jjm),unscu2(iip1,jjp1),unscv2(iip1,jjm) , &
64 & aire(iip1,jjp1),airesurg(iip1,jjp1),aireu(iip1,jjp1) , &
65 & airev(iip1,jjm),unsaire(iip1,jjp1),apoln,apols , &
66 & unsairez(iip1,jjm),airuscv2(iip1,jjm),airvscu2(iip1,jjm) , &
67 & aireij1(iip1,jjp1),aireij2(iip1,jjp1),aireij3(iip1,jjp1) , &
68 & aireij4(iip1,jjp1),alpha1(iip1,jjp1),alpha2(iip1,jjp1) , &
69 & alpha3(iip1,jjp1),alpha4(iip1,jjp1),alpha1p2(iip1,jjp1) , &
70 & alpha1p4(iip1,jjp1),alpha2p3(iip1,jjp1),alpha3p4(iip1,jjp1) , &
71 & fext(iip1,jjm),constang(iip1,jjp1), rlatu(jjp1),rlatv(jjm), &
72 & rlonu(iip1),rlonv(iip1),cuvsurcv(iip1,jjm),cvsurcuv(iip1,jjm) , &
73 & cvusurcu(iip1,jjp1),cusurcvu(iip1,jjp1) , &
74 & cuvscvgam1(iip1,jjm),cuvscvgam2(iip1,jjm),cvuscugam1(iip1,jjp1), &
75 & cvuscugam2(iip1,jjp1),cvscuvgam(iip1,jjm),cuscvugam(iip1,jjp1) , &
76 & unsapolnga1,unsapolnga2,unsapolsga1,unsapolsga2 , &
77 & unsair_gam1(iip1,jjp1),unsair_gam2(iip1,jjp1) , &
78 & unsairz_gam(iip1,jjm),aivscu2gam(iip1,jjm),aiuscv2gam(iip1,jjm) &
79 & , xprimu(iip1),xprimv(iip1)
80
81
82 REAL &
83 & cu,cv,unscu2,unscv2,aire,airesurg,aireu,airev,apoln,apols,unsaire &
84 & ,unsairez,airuscv2,airvscu2,aireij1,aireij2,aireij3,aireij4 , &
85 & alpha1,alpha2,alpha3,alpha4,alpha1p2,alpha1p4,alpha2p3,alpha3p4 , &
86 & fext,constang,rlatu,rlatv,rlonu,rlonv,cuvscvgam1,cuvscvgam2 , &
87 & cvuscugam1,cvuscugam2,cvscuvgam,cuscvugam,unsapolnga1 , &
88 & unsapolnga2,unsapolsga1,unsapolsga2,unsair_gam1,unsair_gam2 , &
89 & unsairz_gam,aivscu2gam,aiuscv2gam,cuvsurcv,cvsurcuv,cvusurcu , &
90 & cusurcvu,xprimu,xprimv
91 !
92 ! $Header$
93 !
94 ! Attention : ce fichier include est compatible format fixe/format libre
95 ! veillez à n'utiliser que des ! pour les commentaires
96 ! et à bien positionner les & des lignes de continuation
97 ! (les placer en colonne 6 et en colonne 73)
98 !-----------------------------------------------------------------------
99 ! INCLUDE comdissipn.h
100
101 REAL tetaudiv, tetaurot, tetah, cdivu, crot, cdivh
102 !
103 COMMON/comdissipn/ tetaudiv(llm),tetaurot(llm),tetah(llm) , &
104 & cdivu, crot, cdivh
105
106 !
107 ! Les parametres de ce common proviennent des calculs effectues dans
108 ! Inidissip .
109 !
110 !-----------------------------------------------------------------------
111
112 c ....... variables en arguments .......
113 c
114 INTEGER klevel
115 REAL h( ip1jmp1,klevel ), deltapres( ip1jmp1,klevel )
116 REAL divgra( ip1jmp1,klevel)
117 c
118 c ....... variables locales ..........
119 c
120 REAL signe, nudivgrs, sqrtps( ip1jmp1,llm )
121 INTEGER l,ij,iter,lh
122 c ...................................................................
123
124 c
125 530 signe = (-1.)**lh
126 530 nudivgrs = signe * cdivh
127
128 530 CALL SCOPY ( ip1jmp1 * klevel, h, 1, divgra, 1 )
129
130 c
131 530 CALL laplacien( klevel, divgra, divgra )
132
133
2/2
✓ Branch 0 taken 18770 times.
✓ Branch 1 taken 530 times.
19300 DO l = 1, klevel
134
2/2
✓ Branch 0 taken 20440530 times.
✓ Branch 1 taken 18770 times.
20459830 DO ij = 1, ip1jmp1
135 20459300 sqrtps( ij,l ) = SQRT( deltapres(ij,l) )
136 ENDDO
137 ENDDO
138 c
139
2/2
✓ Branch 0 taken 18770 times.
✓ Branch 1 taken 530 times.
19300 DO l = 1, klevel
140
2/2
✓ Branch 0 taken 20440530 times.
✓ Branch 1 taken 18770 times.
20459830 DO ij = 1, ip1jmp1
141 20459300 divgra(ij,l) = divgra(ij,l) * sqrtps(ij,l)
142 ENDDO
143 ENDDO
144
145 c ........ Iteration de l'operateur laplacien_gam ........
146 c
147
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 530 times.
530 DO iter = 1, lh - 2
148 CALL laplacien_gam ( klevel,cuvscvgam2,cvuscugam2,unsair_gam2,
149 530 * unsapolnga2, unsapolsga2, divgra, divgra )
150 ENDDO
151 c
152 c ...............................................................
153
154
2/2
✓ Branch 0 taken 18770 times.
✓ Branch 1 taken 530 times.
19300 DO l = 1, klevel
155
2/2
✓ Branch 0 taken 20440530 times.
✓ Branch 1 taken 18770 times.
20459830 DO ij = 1, ip1jmp1
156 20459300 divgra(ij,l) = divgra(ij,l) * sqrtps(ij,l)
157 ENDDO
158 ENDDO
159 c
160 530 CALL laplacien ( klevel, divgra, divgra )
161 c
162
2/2
✓ Branch 0 taken 18770 times.
✓ Branch 1 taken 530 times.
19300 DO l = 1,klevel
163
2/2
✓ Branch 0 taken 20440530 times.
✓ Branch 1 taken 18770 times.
20459830 DO ij = 1,ip1jmp1
164 20459300 divgra(ij,l) = nudivgrs * divgra(ij,l) / deltapres(ij,l)
165 ENDDO
166 ENDDO
167
168 530 RETURN
169 END
170