6 REAL,
DIMENSION(:,:,:),
ALLOCATABLE :: matriceun,matriceus,matricevn
7 REAL,
DIMENSION(:,:,:),
ALLOCATABLE :: matricevs,matrinvn,matrinvs
22 #include "dimensions.h"
30 REAL dlonu(
iim),dlatu(jjm)
31 REAL rlamda(
iim ), eignvl(
iim )
36 REAL dymin,dxmin,colat0
39 LOGICAL,
SAVE :: first_call_inifilr = .true.
75 print *,
'inifilr: EIGNVL '
77 250
FORMAT( 1
x,5e14.6)
102 iymin =
ismin( jjm, dlatu, 1 )
104 dymin = dlatu( iymin )
105 dxmin = dlonu( ixmineq )
109 dxmin = min( dxmin,dlonu(
i) )
113 dymin = min( dymin,dlatu(
j) )
124 colat0 = min( 0.5, dymin/dxmin )
126 IF( .NOT.
fxyhypb.AND.ysinus )
THEN
133 50
FORMAT(/15
x,
' Inifilr colat0 alphax ',2e16.7)
136 print *,
' Inifilr alphax doit etre < a 1. Corriger '
145 rlamda(
i ) = lamdamax/ sqrt( abs( eignvl(
i) ) )
154 coefilv2(
i,
j ) = 0.0
168 print *,
'inifilr: TRUNCATION AT ',
imx
177 cof = cos(
rlatu(
j) )/ colat0
178 IF ( cof .LT. 1. )
THEN
179 IF( rlamda(
imx) * cos(
rlatu(
j) ).LT.1. )
THEN
185 IF ( cof .LT. 1. )
THEN
193 cof = cos(
rlatv(
j) )/ colat0
194 IF ( cof .LT. 1. )
THEN
195 IF( rlamda(
imx) * cos(
rlatv(
j) ).LT.1. )
THEN
200 cof = cos(
rlatv(jjm-
j+1) )/ colat0
201 IF ( cof .LT. 1. )
THEN
202 IF( rlamda(
imx) * cos(
rlatv(jjm-
j+1) ).LT.1. )
THEN
209 IF(
jfiltnu.GT. jjm/2 +1 )
THEN
210 print *,
' jfiltnu en dehors des valeurs acceptables ' ,
jfiltnu
215 print *,
' jfiltsu en dehors des valeurs acceptables ' ,
jfiltsu
220 print *,
' jfiltnv en dehors des valeurs acceptables ' ,
jfiltnv
225 print *,
' jfiltsv en dehors des valeurs acceptables ' ,
jfiltsv
229 print *,
'inifilr: jfiltnv jfiltsv jfiltnu jfiltsu ' , &
232 IF(first_call_inifilr)
THEN
239 first_call_inifilr = .
false.
255 cof = rlamda(
k) * cos(
rlatu(
j) )
256 IF ( cof .LT. 1. ) goto 82
263 cof = rlamda(
k) * cos(
rlatu(
j) )
274 cof = rlamda(
k) * cos(
rlatv(
j) )
275 IF ( cof .LT. 1. ) goto 87
282 cof = rlamda(
k) * cos(
rlatv(
j) )
284 coefilv2(
k,
j) = cof*cof - 1.
291 cof = rlamda(
k) * cos(
rlatu(
j) )
292 IF ( cof .LT. 1. ) goto 92
299 cof = rlamda(
k) * cos(
rlatu(
j) )
308 cof = rlamda(
k) * cos(
rlatv(
j) )
309 IF ( cof .LT. 1. ) goto 97
316 cof = rlamda(
k) * cos(
rlatv(
j) )
318 coefilv2(
k,
j) = cof*cof - 1.
330 print *,
'jfiltnv jfiltsv jfiltnu jfiltsu' , &
334 print *,
' Modes premiers v '
336 print *,
' Modes premiers u '
359 CALL sgemm(
'N',
'N',
iim,
iim,
iim, 1.0, &
364 matriceun(
i,
k,
j) = 0.0
366 matriceun(
i,
k,
j) = matriceun(
i,
k,
j) &
389 CALL sgemm(
'N',
'N',
iim,
iim,
iim, 1.0, &
426 CALL sgemm(
'N',
'N',
iim,
iim,
iim, 1.0, &
431 matricevn(
i,
k,
j) = 0.0
433 matricevn(
i,
k,
j) = matricevn(
i,
k,
j) &
456 CALL sgemm(
'N',
'N',
iim,
iim,
iim, 1.0, &
493 CALL sgemm(
'N',
'N',
iim,
iim,
iim, 1.0, &
498 matrinvn(
i,
k,
j) = 0.0
500 matrinvn(
i,
k,
j) = matrinvn(
i,
k,
j) &
523 CALL sgemm(
'N',
'N',
iim,
iim,
iim, 1.0, &
540 IF (use_filtre_fft)
THEN
551 755
FORMAT(1
x,6f10.3,i3)