3 LOGICAL,
SAVE :: use_filtre_fft
4 REAL,
SAVE,
ALLOCATABLE :: Filtre_u(:,:)
5 REAL,
SAVE,
ALLOCATABLE :: Filtre_v(:,:)
6 REAL,
SAVE,
ALLOCATABLE :: Filtre_inv(:,:)
10 SUBROUTINE init_filtre_fft(coeffu,modfrstu,jfiltnu,jfiltsu,coeffv,modfrstv,jfiltnv,jfiltsv)
13 include
'dimensions.h'
14 REAL,
INTENT(IN) :: coeffu(
iim,jjm)
18 REAL,
INTENT(IN) :: coeffv(
iim,jjm)
23 INTEGER :: index_vp(
iim)
35 ALLOCATE(filtre_u(
iim,jjm))
36 ALLOCATE(filtre_v(
iim,jjm))
37 ALLOCATE(filtre_inv(
iim,jjm))
45 filtre_u(
i,
j)=coeffu(index_vp(
i),
j)
55 filtre_u(
i,
j)=coeffu(index_vp(
i),
j)
65 filtre_v(
i,
j)=coeffv(index_vp(
i),
j)
75 filtre_v(
i,
j)=coeffv(index_vp(
i),
j)
85 filtre_inv(
i,
j)=coeffu(index_vp(
i),
j)/(1.+coeffu(index_vp(
i),
j))
95 filtre_inv(
i,
j)=coeffu(index_vp(
i),
j)/(1.+coeffu(index_vp(
i),
j))
112 include
'dimensions.h'
113 INTEGER,
INTENT(IN) :: jjb
114 INTEGER,
INTENT(IN) :: jje
115 INTEGER,
INTENT(IN) :: jj_begin
116 INTEGER,
INTENT(IN) :: jj_end
117 INTEGER,
INTENT(IN) :: nbniv
118 REAL,
INTENT(INOUT) :: vect_inout(
iim+1,jjb:jje,nbniv)
120 REAL :: vect(
iim+inc,jj_end-jj_begin+1,nbniv)
121 COMPLEX :: tf_vect(
iim/2+1,jj_end-jj_begin+1,nbniv)
131 DO j=1,jj_end-jj_begin+1
133 vect(
i,
j,ll_nb)=vect_inout(
i,
j+jj_begin-1,
l)
139 nb_vect=(jj_end-jj_begin+1)*ll_nb
154 DO j=1,jj_end-jj_begin+1
156 tf_vect(
i,
j,
l)=tf_vect(
i,
j,
l)*filtre_u(
i,jj_begin+
j-1)
175 DO j=1,jj_end-jj_begin+1
177 vect_inout(
i,
j+jj_begin-1,
l)=vect(
i,
j,ll_nb)
192 include
'dimensions.h'
193 INTEGER,
INTENT(IN) :: jjb
194 INTEGER,
INTENT(IN) :: jje
195 INTEGER,
INTENT(IN) :: jj_begin
196 INTEGER,
INTENT(IN) :: jj_end
197 INTEGER,
INTENT(IN) :: nbniv
198 REAL,
INTENT(INOUT) :: vect_inout(
iim+1,jjb:jje,nbniv)
200 REAL :: vect(
iim+inc,jj_end-jj_begin+1,nbniv)
201 COMPLEX :: tf_vect(
iim/2+1,jj_end-jj_begin+1,nbniv)
210 DO j=1,jj_end-jj_begin+1
212 vect(
i,
j,ll_nb)=vect_inout(
i,
j+jj_begin-1,
l)
219 nb_vect=(jj_end-jj_begin+1)*ll_nb
224 DO j=1,jj_end-jj_begin+1
226 tf_vect(
i,
j,
l)=tf_vect(
i,
j,
l)*filtre_v(
i,jj_begin+
j-1)
238 DO j=1,jj_end-jj_begin+1
240 vect_inout(
i,
j+jj_begin-1,
l)=vect(
i,
j,ll_nb)
255 include
'dimensions.h'
256 INTEGER,
INTENT(IN) :: jjb
257 INTEGER,
INTENT(IN) :: jje
258 INTEGER,
INTENT(IN) :: jj_begin
259 INTEGER,
INTENT(IN) :: jj_end
260 INTEGER,
INTENT(IN) :: nbniv
261 REAL,
INTENT(INOUT) :: vect_inout(
iim+1,jjb:jje,nbniv)
263 REAL :: vect(
iim+inc,jj_end-jj_begin+1,nbniv)
264 COMPLEX :: tf_vect(
iim/2+1,jj_end-jj_begin+1,nbniv)
273 DO j=1,jj_end-jj_begin+1
275 vect(
i,
j,ll_nb)=vect_inout(
i,
j+jj_begin-1,
l)
281 nb_vect=(jj_end-jj_begin+1)*ll_nb
286 DO j=1,jj_end-jj_begin+1
288 tf_vect(
i,
j,
l)=tf_vect(
i,
j,
l)*filtre_inv(
i,jj_begin+
j-1)
299 DO j=1,jj_end-jj_begin+1
301 vect_inout(
i,
j+jj_begin-1,
l)=vect(
i,
j,ll_nb)