GCC Code Coverage Report


Directory: ./
File: filtrez/filtreg_mod.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 184 200 92.0%
Branches: 169 208 81.2%

Line Branch Exec Source
1 !
2 ! $Id$
3 !
4 MODULE filtreg_mod
5
6 REAL, DIMENSION(:,:,:), ALLOCATABLE :: matriceun,matriceus,matricevn
7 REAL, DIMENSION(:,:,:), ALLOCATABLE :: matricevs,matrinvn,matrinvs
8
9 CONTAINS
10
11 1 SUBROUTINE inifilr
12 USE serre_mod, ONLY: alphax
13 USE logic_mod, ONLY: fxyhypb, ysinus
14 ! ... H. Upadhyaya, O.Sharma ...
15 !
16 IMPLICIT NONE
17 !
18 ! version 3 .....
19
20 ! Correction le 28/10/97 P. Le Van .
21 ! -------------------------------------------------------------------
22 include "dimensions.h"
23 include "paramet.h"
24 ! -------------------------------------------------------------------
25 include "comgeom.h"
26 include "coefils.h"
27
28 REAL dlonu(iim),dlatu(jjm)
29 REAL rlamda( iim ), eignvl( iim )
30 !
31
32 REAL lamdamax,pi,cof
33 INTEGER i,j,modemax,imx,k,kf,ii
34 REAL dymin,dxmin,colat0
35 REAL eignft(iim,iim), coff
36
37 LOGICAL, SAVE :: first_call_inifilr = .TRUE.
38
39 !
40 ! ------------------------------------------------------------
41 ! This routine computes the eigenfunctions of the laplacien
42 ! on the stretched grid, and the filtering coefficients
43 !
44 ! We designate:
45 ! eignfn eigenfunctions of the discrete laplacien
46 ! eigenvl eigenvalues
47 ! jfiltn indexof the last scalar line filtered in NH
48 ! jfilts index of the first line filtered in SH
49 ! modfrst index of the mode from WHERE modes are filtered
50 ! modemax maximum number of modes ( im )
51 ! coefil filtering coefficients ( lamda_max*COS(rlat)/lamda )
52 ! sdd SQRT( dx )
53 !
54 ! the modes are filtered from modfrst to modemax
55 !
56 !-----------------------------------------------------------
57 !
58
59 pi = 2. * ASIN( 1. )
60
61
2/2
✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
33 DO i = 1,iim
62 33 dlonu(i) = xprimu( i )
63 ENDDO
64 !
65 1 CALL inifgn(eignvl)
66 !
67 1 PRINT *,'inifilr: EIGNVL '
68 1 PRINT 250,eignvl
69 250 FORMAT( 1x,5e14.6)
70 !
71 ! compute eigenvalues and eigenfunctions
72 !
73 !
74 !.................................................................
75 !
76 ! compute the filtering coefficients for scalar lines and
77 ! meridional wind v-lines
78 !
79 ! we filter all those latitude lines WHERE coefil < 1
80 ! NO FILTERING AT POLES
81 !
82 ! colat0 is to be used when alpha (stretching coefficient)
83 ! is set equal to zero for the regular grid CASE
84 !
85 ! ....... Calcul de colat0 .........
86 ! ..... colat0 = minimum de ( 0.5, min dy/ min dx ) ...
87 !
88 !
89
2/2
✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
33 DO j = 1,jjm
90 33 dlatu( j ) = rlatu( j ) - rlatu( j+1 )
91 ENDDO
92 !
93 1 dxmin = dlonu(1)
94
2/2
✓ Branch 0 taken 31 times.
✓ Branch 1 taken 1 times.
32 DO i = 2, iim
95 32 dxmin = MIN( dxmin,dlonu(i) )
96 ENDDO
97 1 dymin = dlatu(1)
98
2/2
✓ Branch 0 taken 31 times.
✓ Branch 1 taken 1 times.
32 DO j = 2, jjm
99 32 dymin = MIN( dymin,dlatu(j) )
100 ENDDO
101 !
102 ! For a regular grid, we want the filter to start at latitudes
103 ! corresponding to lengths dx of the same size as dy (in terms
104 ! of angles: dx=2*dy) => at colat0=0.5 (i.e. colatitude=30 degrees
105 ! <=> latitude=60 degrees).
106 ! Same idea for the zoomed grid: start filtering polewards as soon
107 ! as length dx becomes of the same size as dy
108 !
109 1 colat0 = MIN( 0.5, dymin/dxmin )
110 !
111
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1 IF( .NOT.fxyhypb.AND.ysinus ) THEN
112 colat0 = 0.6
113 ! ...... a revoir pour ysinus ! .......
114 alphax = 0.
115 ENDIF
116 !
117 1 PRINT 50, colat0,alphax
118 50 FORMAT(/15x,' Inifilr colat0 alphax ',2e16.7)
119 !
120
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 IF(alphax.EQ.1. ) THEN
121 PRINT *,' Inifilr alphax doit etre < a 1. Corriger '
122 STOP
123 ENDIF
124 !
125 1 lamdamax = iim / ( pi * colat0 * ( 1. - alphax ) )
126
127 ! ... Correction le 28/10/97 ( P.Le Van ) ..
128 !
129
2/2
✓ Branch 0 taken 31 times.
✓ Branch 1 taken 1 times.
32 DO i = 2,iim
130 32 rlamda( i ) = lamdamax/ SQRT( ABS( eignvl(i) ) )
131 ENDDO
132 !
133
134
2/2
✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
33 DO j = 1,jjm
135
2/2
✓ Branch 0 taken 1024 times.
✓ Branch 1 taken 32 times.
1057 DO i = 1,iim
136 1024 coefilu( i,j ) = 0.0
137 1024 coefilv( i,j ) = 0.0
138 1024 coefilu2( i,j ) = 0.0
139 1056 coefilv2( i,j ) = 0.0
140 ENDDO
141 ENDDO
142
143 !
144 ! ... Determination de jfiltnu,jfiltnv,jfiltsu,jfiltsv ....
145 ! .........................................................
146 !
147 modemax = iim
148
149 !!!! imx = modemax - 4 * (modemax/iim)
150
151 1 imx = iim
152 !
153 1 PRINT *,'inifilr: TRUNCATION AT ',imx
154 !
155 ! Ehouarn: set up some defaults
156 1 jfiltnu=2 ! avoid north pole
157 1 jfiltsu=jjm ! avoid south pole (which is at jjm+1)
158 1 jfiltnv=1 ! NB: no poles on the V grid
159 1 jfiltsv=jjm
160
161
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 1 times.
17 DO j = 2, jjm/2+1
162 16 cof = COS( rlatu(j) )/ colat0
163
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 11 times.
16 IF ( cof .LT. 1. ) THEN
164
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 IF( rlamda(imx) * COS(rlatu(j) ).LT.1. ) THEN
165 5 jfiltnu= j
166 ENDIF
167 ENDIF
168
169 16 cof = COS( rlatu(jjp1-j+1) )/ colat0
170
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 11 times.
17 IF ( cof .LT. 1. ) THEN
171
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 IF( rlamda(imx) * COS(rlatu(jjp1-j+1) ).LT.1. ) THEN
172 5 jfiltsu= jjp1-j+1
173 ENDIF
174 ENDIF
175 ENDDO
176 !
177
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 1 times.
17 DO j = 1, jjm/2
178 16 cof = COS( rlatv(j) )/ colat0
179
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 11 times.
16 IF ( cof .LT. 1. ) THEN
180
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 IF( rlamda(imx) * COS(rlatv(j) ).LT.1. ) THEN
181 5 jfiltnv= j
182 ENDIF
183 ENDIF
184
185 16 cof = COS( rlatv(jjm-j+1) )/ colat0
186
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 11 times.
17 IF ( cof .LT. 1. ) THEN
187
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 IF( rlamda(imx) * COS(rlatv(jjm-j+1) ).LT.1. ) THEN
188 5 jfiltsv= jjm-j+1
189 ENDIF
190 ENDIF
191 ENDDO
192 !
193
194
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 IF( jfiltnu.GT. jjm/2 +1 ) THEN
195 PRINT *,' jfiltnu en dehors des valeurs acceptables ' ,jfiltnu
196 STOP
197 ENDIF
198
199
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 IF( jfiltsu.GT. jjm +1 ) THEN
200 PRINT *,' jfiltsu en dehors des valeurs acceptables ' ,jfiltsu
201 STOP
202 ENDIF
203
204
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 IF( jfiltnv.GT. jjm/2 ) THEN
205 PRINT *,' jfiltnv en dehors des valeurs acceptables ' ,jfiltnv
206 STOP
207 ENDIF
208
209
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 IF( jfiltsv.GT. jjm ) THEN
210 PRINT *,' jfiltsv en dehors des valeurs acceptables ' ,jfiltsv
211 STOP
212 ENDIF
213
214 1 PRINT *,'inifilr: jfiltnv jfiltsv jfiltnu jfiltsu ' , &
215 2 jfiltnv,jfiltsv,jfiltnu,jfiltsu
216
217
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 IF(first_call_inifilr) THEN
218
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
1 ALLOCATE(matriceun(iim,iim,jfiltnu))
219
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
1 ALLOCATE(matriceus(iim,iim,jjm-jfiltsu+1))
220
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
1 ALLOCATE(matricevn(iim,iim,jfiltnv))
221
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
1 ALLOCATE(matricevs(iim,iim,jjm-jfiltsv+1))
222
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
1 ALLOCATE( matrinvn(iim,iim,jfiltnu))
223
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
1 ALLOCATE( matrinvs(iim,iim,jjm-jfiltsu+1))
224 1 first_call_inifilr = .FALSE.
225 ENDIF
226
227 !
228 ! ... Determination de coefilu,coefilv,n=modfrstu,modfrstv ....
229 !................................................................
230 !
231 !
232
2/2
✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
33 DO j = 1,jjm
233 !default initialization: all modes are retained (i.e. no filtering)
234 32 modfrstu( j ) = iim
235 33 modfrstv( j ) = iim
236 ENDDO
237 !
238
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = 2,jfiltnu
239
1/2
✓ Branch 0 taken 69 times.
✗ Branch 1 not taken.
69 DO k = 2,modemax
240 69 cof = rlamda(k) * COS( rlatu(j) )
241
2/2
✓ Branch 0 taken 64 times.
✓ Branch 1 taken 5 times.
69 IF ( cof .LT. 1. ) GOTO 82
242 ENDDO
243 5 GOTO 84
244 5 82 modfrstu( j ) = k
245 !
246 kf = modfrstu( j )
247
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 91 times.
96 DO k = kf , modemax
248 91 cof = rlamda(k) * COS( rlatu(j) )
249 91 coefilu(k,j) = cof - 1.
250 96 coefilu2(k,j) = cof*cof - 1.
251 ENDDO
252 1 84 CONTINUE
253 ENDDO
254 !
255 !
256
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = 1,jfiltnv
257 !
258
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 DO k = 2,modemax
259 57 cof = rlamda(k) * COS( rlatv(j) )
260
2/2
✓ Branch 0 taken 52 times.
✓ Branch 1 taken 5 times.
57 IF ( cof .LT. 1. ) GOTO 87
261 ENDDO
262 5 GOTO 89
263 5 87 modfrstv( j ) = k
264 !
265 kf = modfrstv( j )
266
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 103 times.
108 DO k = kf , modemax
267 103 cof = rlamda(k) * COS( rlatv(j) )
268 103 coefilv(k,j) = cof - 1.
269 108 coefilv2(k,j) = cof*cof - 1.
270 ENDDO
271 1 89 CONTINUE
272 ENDDO
273 !
274
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = jfiltsu,jjm
275
1/2
✓ Branch 0 taken 69 times.
✗ Branch 1 not taken.
69 DO k = 2,modemax
276 69 cof = rlamda(k) * COS( rlatu(j) )
277
2/2
✓ Branch 0 taken 64 times.
✓ Branch 1 taken 5 times.
69 IF ( cof .LT. 1. ) GOTO 92
278 ENDDO
279 5 GOTO 94
280 5 92 modfrstu( j ) = k
281 !
282 kf = modfrstu( j )
283
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 91 times.
96 DO k = kf , modemax
284 91 cof = rlamda(k) * COS( rlatu(j) )
285 91 coefilu(k,j) = cof - 1.
286 96 coefilu2(k,j) = cof*cof - 1.
287 ENDDO
288 1 94 CONTINUE
289 ENDDO
290 !
291
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = jfiltsv,jjm
292
1/2
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
57 DO k = 2,modemax
293 57 cof = rlamda(k) * COS( rlatv(j) )
294
2/2
✓ Branch 0 taken 52 times.
✓ Branch 1 taken 5 times.
57 IF ( cof .LT. 1. ) GOTO 97
295 ENDDO
296 5 GOTO 99
297 5 97 modfrstv( j ) = k
298 !
299 kf = modfrstv( j )
300
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 103 times.
108 DO k = kf , modemax
301 103 cof = rlamda(k) * COS( rlatv(j) )
302 103 coefilv(k,j) = cof - 1.
303 108 coefilv2(k,j) = cof*cof - 1.
304 ENDDO
305 1 99 CONTINUE
306 ENDDO
307 !
308
309
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 IF(jfiltnv.GE.jjm/2 .OR. jfiltnu.GE.jjm/2)THEN
310 ! Ehouarn: and what are these for??? Trying to handle a limit case
311 ! where filters extend to and meet at the equator?
312 IF(jfiltnv.EQ.jfiltsv)jfiltsv=1+jfiltnv
313 IF(jfiltnu.EQ.jfiltsu)jfiltsu=1+jfiltnu
314
315 PRINT *,'jfiltnv jfiltsv jfiltnu jfiltsu' , &
316 jfiltnv,jfiltsv,jfiltnu,jfiltsu
317 ENDIF
318
319 1 PRINT *,' Modes premiers v '
320 1 PRINT 334,modfrstv
321 1 PRINT *,' Modes premiers u '
322 1 PRINT 334,modfrstu
323
324 !
325 ! ...................................................................
326 !
327 ! ... Calcul de la matrice filtre 'matriceu' pour les champs situes
328 ! sur la grille scalaire ........
329 ! ...................................................................
330 !
331
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = 2, jfiltnu
332
333
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
165 DO i=1,iim
334 160 coff = coefilu(i,j)
335
2/2
✓ Branch 0 taken 69 times.
✓ Branch 1 taken 91 times.
160 IF( i.LT.modfrstu(j) ) coff = 0.
336
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO k=1,iim
337 5280 eignft(i,k) = eignfnv(k,i) * coff
338 ENDDO
339 ENDDO ! of DO i=1,iim
340
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
166 DO k = 1, iim
341
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO i = 1, iim
342 5120 matriceun(i,k,j) = 0.0
343
2/2
✓ Branch 0 taken 163840 times.
✓ Branch 1 taken 5120 times.
169120 DO ii = 1, iim
344 matriceun(i,k,j) = matriceun(i,k,j) &
345 168960 + eignfnv(i,ii)*eignft(ii,k)
346 ENDDO
347 ENDDO
348 ENDDO ! of DO k = 1, iim
349
350 ENDDO ! of DO j = 2, jfiltnu
351
352
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = jfiltsu, jjm
353
354
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
165 DO i=1,iim
355 160 coff = coefilu(i,j)
356
2/2
✓ Branch 0 taken 69 times.
✓ Branch 1 taken 91 times.
160 IF( i.LT.modfrstu(j) ) coff = 0.
357
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO k=1,iim
358 5280 eignft(i,k) = eignfnv(k,i) * coff
359 ENDDO
360 ENDDO ! of DO i=1,iim
361
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
166 DO k = 1, iim
362
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO i = 1, iim
363 5120 matriceus(i,k,j-jfiltsu+1) = 0.0
364
2/2
✓ Branch 0 taken 163840 times.
✓ Branch 1 taken 5120 times.
169120 DO ii = 1, iim
365 matriceus(i,k,j-jfiltsu+1) = matriceus(i,k,j-jfiltsu+1) &
366 168960 + eignfnv(i,ii)*eignft(ii,k)
367 ENDDO
368 ENDDO
369 ENDDO ! of DO k = 1, iim
370
371 ENDDO ! of DO j = jfiltsu, jjm
372
373 ! ...................................................................
374 !
375 ! ... Calcul de la matrice filtre 'matricev' pour les champs situes
376 ! sur la grille de V ou de Z ........
377 ! ...................................................................
378 !
379
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = 1, jfiltnv
380
381
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
165 DO i = 1, iim
382 160 coff = coefilv(i,j)
383
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 103 times.
160 IF( i.LT.modfrstv(j) ) coff = 0.
384
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO k = 1, iim
385 5280 eignft(i,k) = eignfnu(k,i) * coff
386 ENDDO
387 ENDDO
388
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
166 DO k = 1, iim
389
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO i = 1, iim
390 5120 matricevn(i,k,j) = 0.0
391
2/2
✓ Branch 0 taken 163840 times.
✓ Branch 1 taken 5120 times.
169120 DO ii = 1, iim
392 matricevn(i,k,j) = matricevn(i,k,j) &
393 168960 + eignfnu(i,ii)*eignft(ii,k)
394 ENDDO
395 ENDDO
396 ENDDO
397
398 ENDDO ! of DO j = 1, jfiltnv
399
400
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = jfiltsv, jjm
401
402
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
165 DO i = 1, iim
403 160 coff = coefilv(i,j)
404
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 103 times.
160 IF( i.LT.modfrstv(j) ) coff = 0.
405
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO k = 1, iim
406 5280 eignft(i,k) = eignfnu(k,i) * coff
407 ENDDO
408 ENDDO
409
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
166 DO k = 1, iim
410
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO i = 1, iim
411 5120 matricevs(i,k,j-jfiltsv+1) = 0.0
412
2/2
✓ Branch 0 taken 163840 times.
✓ Branch 1 taken 5120 times.
169120 DO ii = 1, iim
413 matricevs(i,k,j-jfiltsv+1) = matricevs(i,k,j-jfiltsv+1) &
414 168960 + eignfnu(i,ii)*eignft(ii,k)
415 ENDDO
416 ENDDO
417 ENDDO
418
419 ENDDO ! of DO j = jfiltsv, jjm
420
421 ! ...................................................................
422 !
423 ! ... Calcul de la matrice filtre 'matrinv' pour les champs situes
424 ! sur la grille scalaire , pour le filtre inverse ........
425 ! ...................................................................
426 !
427
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = 2, jfiltnu
428
429
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
165 DO i = 1,iim
430 160 coff = coefilu(i,j)/ ( 1. + coefilu(i,j) )
431
2/2
✓ Branch 0 taken 69 times.
✓ Branch 1 taken 91 times.
160 IF( i.LT.modfrstu(j) ) coff = 0.
432
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO k=1,iim
433 5280 eignft(i,k) = eignfnv(k,i) * coff
434 ENDDO
435 ENDDO
436
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
166 DO k = 1, iim
437
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO i = 1, iim
438 5120 matrinvn(i,k,j) = 0.0
439
2/2
✓ Branch 0 taken 163840 times.
✓ Branch 1 taken 5120 times.
169120 DO ii = 1, iim
440 matrinvn(i,k,j) = matrinvn(i,k,j) &
441 168960 + eignfnv(i,ii)*eignft(ii,k)
442 ENDDO
443 ENDDO
444 ENDDO
445
446 ENDDO ! of DO j = 2, jfiltnu
447
448
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
6 DO j = jfiltsu, jjm
449
450
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
165 DO i = 1,iim
451 160 coff = coefilu(i,j) / ( 1. + coefilu(i,j) )
452
2/2
✓ Branch 0 taken 69 times.
✓ Branch 1 taken 91 times.
160 IF( i.LT.modfrstu(j) ) coff = 0.
453
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO k=1,iim
454 5280 eignft(i,k) = eignfnv(k,i) * coff
455 ENDDO
456 ENDDO
457
2/2
✓ Branch 0 taken 160 times.
✓ Branch 1 taken 5 times.
166 DO k = 1, iim
458
2/2
✓ Branch 0 taken 5120 times.
✓ Branch 1 taken 160 times.
5285 DO i = 1, iim
459 5120 matrinvs(i,k,j-jfiltsu+1) = 0.0
460
2/2
✓ Branch 0 taken 163840 times.
✓ Branch 1 taken 5120 times.
169120 DO ii = 1, iim
461 matrinvs(i,k,j-jfiltsu+1) = matrinvs(i,k,j-jfiltsu+1) &
462 168960 + eignfnv(i,ii)*eignft(ii,k)
463 ENDDO
464 ENDDO
465 ENDDO
466
467 ENDDO ! of DO j = jfiltsu, jjm
468
469 ! ...................................................................
470
471 !
472 334 FORMAT(1x,24i3)
473 755 FORMAT(1x,6f10.3,i3)
474
475 1 RETURN
476 END SUBROUTINE inifilr
477
478 END MODULE filtreg_mod
479