7 LOGICAL,
SAVE :: use_filtre_fft
8 REAL,
SAVE,
ALLOCATABLE :: Filtre_u(:,:)
9 REAL,
SAVE,
ALLOCATABLE :: Filtre_v(:,:)
10 REAL,
SAVE,
ALLOCATABLE :: Filtre_inv(:,:)
14 SUBROUTINE init_filtre_fft(coeffu,modfrstu,jfiltnu,jfiltsu,coeffv,modfrstv,jfiltnv,jfiltsv)
17 include
'dimensions.h'
18 REAL,
INTENT(IN) :: coeffu(
iim,jjm)
22 REAL,
INTENT(IN) :: coeffv(
iim,jjm)
27 INTEGER :: index_vp(
iim)
40 ALLOCATE(filtre_u(
iim,jjm))
41 ALLOCATE(filtre_v(
iim,jjm))
42 ALLOCATE(filtre_inv(
iim,jjm))
50 filtre_u(
i,
j)=coeffu(index_vp(
i),
j)
60 filtre_u(
i,
j)=coeffu(index_vp(
i),
j)
70 filtre_v(
i,
j)=coeffv(index_vp(
i),
j)
80 filtre_v(
i,
j)=coeffv(index_vp(
i),
j)
90 filtre_inv(
i,
j)=coeffu(index_vp(
i),
j)/(1.+coeffu(index_vp(
i),
j))
100 filtre_inv(
i,
j)=coeffu(index_vp(
i),
j)/(1.+coeffu(index_vp(
i),
j))
107 WRITE (*,*)
"COTH jfiltnu,jfiltsu,jfiltnv,jjm-jfiltsv"
123 include
'dimensions.h'
124 INTEGER,
INTENT(IN) :: nlat
125 INTEGER,
INTENT(IN) :: jj_begin
126 INTEGER,
INTENT(IN) :: jj_end
127 INTEGER,
INTENT(IN) :: nbniv
128 REAL,
INTENT(INOUT) :: vect_inout(
iim+1,nlat,nbniv)
130 REAL :: vect(
iim+inc,jj_end-jj_begin+1,nbniv)
131 COMPLEX :: tf_vect(
iim/2+1,jj_end-jj_begin+1,nbniv)
140 DO j=1,jj_end-jj_begin+1
142 vect(
i,
j,ll_nb)=vect_inout(
i,
j+jj_begin-1,
l)
148 nb_vect=(jj_end-jj_begin+1)*ll_nb
153 DO j=1,jj_end-jj_begin+1
155 tf_vect(
i,
j,
l)=tf_vect(
i,
j,
l)*filtre_u(
i,jj_begin+
j-1)
167 DO j=1,jj_end-jj_begin+1
169 vect_inout(
i,
j+jj_begin-1,
l)=vect(
i,
j,ll_nb)
184 include
'dimensions.h'
185 INTEGER,
INTENT(IN) :: nlat
186 INTEGER,
INTENT(IN) :: jj_begin
187 INTEGER,
INTENT(IN) :: jj_end
188 INTEGER,
INTENT(IN) :: nbniv
189 REAL,
INTENT(INOUT) :: vect_inout(
iim+1,nlat,nbniv)
191 REAL :: vect(
iim+inc,jj_end-jj_begin+1,nbniv)
192 COMPLEX :: tf_vect(
iim/2+1,jj_end-jj_begin+1,nbniv)
201 DO j=1,jj_end-jj_begin+1
203 vect(
i,
j,ll_nb)=vect_inout(
i,
j+jj_begin-1,
l)
210 nb_vect=(jj_end-jj_begin+1)*ll_nb
215 DO j=1,jj_end-jj_begin+1
217 tf_vect(
i,
j,
l)=tf_vect(
i,
j,
l)*filtre_v(
i,jj_begin+
j-1)
229 DO j=1,jj_end-jj_begin+1
231 vect_inout(
i,
j+jj_begin-1,
l)=vect(
i,
j,ll_nb)
246 include
'dimensions.h'
247 INTEGER,
INTENT(IN) :: nlat
248 INTEGER,
INTENT(IN) :: jj_begin
249 INTEGER,
INTENT(IN) :: jj_end
250 INTEGER,
INTENT(IN) :: nbniv
251 REAL,
INTENT(INOUT) :: vect_inout(
iim+1,nlat,nbniv)
253 REAL :: vect(
iim+inc,jj_end-jj_begin+1,nbniv)
254 COMPLEX :: tf_vect(
iim/2+1,jj_end-jj_begin+1,nbniv)
263 DO j=1,jj_end-jj_begin+1
265 vect(
i,
j,ll_nb)=vect_inout(
i,
j+jj_begin-1,
l)
271 nb_vect=(jj_end-jj_begin+1)*ll_nb
276 DO j=1,jj_end-jj_begin+1
278 tf_vect(
i,
j,
l)=tf_vect(
i,
j,
l)*filtre_inv(
i,jj_begin+
j-1)
289 DO j=1,jj_end-jj_begin+1
291 vect_inout(
i,
j+jj_begin-1,
l)=vect(
i,
j,ll_nb)