3 |
|
|
4 |
#include "ZONAL_FILT_OPTIONS.h" |
#include "ZONAL_FILT_OPTIONS.h" |
5 |
|
|
6 |
SUBROUTINE ZONAL_FILTER( |
SUBROUTINE ZONAL_FILTER( |
7 |
U field, fieldMask, |
U field, |
8 |
|
I fieldMask, |
9 |
I jMin, jMax, kMin, kMax, bi, bj, gridLoc, myThid ) |
I jMin, jMax, kMin, kMax, bi, bj, gridLoc, myThid ) |
10 |
C /==========================================================\ |
|
11 |
C | S/R ZONAL_FILTER | |
C *==========================================================* |
12 |
C | o Apply FFT filter to a latitude circle. | |
C | S/R ZONAL_FILTER |
13 |
C \==========================================================/ |
C | o Apply FFT filter to a latitude circle. |
14 |
|
C *==========================================================* |
15 |
|
|
16 |
IMPLICIT NONE |
IMPLICIT NONE |
17 |
|
|
18 |
C == Global data == |
C == Global data == |
19 |
#include "SIZE.h" |
#include "SIZE.h" |
20 |
|
#include "EEPARAMS.h" |
21 |
|
#include "PARAMS.h" |
22 |
|
#include "GRID.h" |
23 |
#include "ZONAL_FILT.h" |
#include "ZONAL_FILT.h" |
24 |
#include "FFTPACK.h" |
#include "FFTPACK.h" |
25 |
|
|
33 |
C myThid - Thread number of this instance of FILTER_LATCIRC_FFT_APPLY |
C myThid - Thread number of this instance of FILTER_LATCIRC_FFT_APPLY |
34 |
C field - Field to filter |
C field - Field to filter |
35 |
C gridLoc - Orientation (U or V) of field. |
C gridLoc - Orientation (U or V) of field. |
36 |
INTEGER myThid |
_RL field (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
37 |
INTEGER gridLoc |
_RS fieldMask(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
|
Real*8 field(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
|
|
Real*8 fieldMask(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
|
38 |
INTEGER jMin, jMax, kMin, kMax, bi, bj |
INTEGER jMin, jMax, kMin, kMax, bi, bj |
39 |
|
INTEGER gridLoc |
40 |
|
INTEGER myThid |
41 |
|
|
42 |
#ifdef ALLOW_ZONAL_FILT |
#ifdef ALLOW_ZONAL_FILT |
43 |
|
|
49 |
|
|
50 |
DO k=kMin, kMax |
DO k=kMin, kMax |
51 |
DO j=jMin, jMax |
DO j=jMin, jMax |
52 |
|
IF ( (gridLoc.EQ.1 .AND.ABS(yC(1,j,bi,bj)).GE.zonal_filt_lat) |
53 |
|
& .OR.(gridLoc.EQ.2 .AND.ABS(yG(2,j,bi,bj)).GE.zonal_filt_lat) |
54 |
|
& .OR. zonal_filt_mode2dx.EQ.2 ) THEN |
55 |
|
|
56 |
C o Copy zonal line of field into local workspace |
C o Copy zonal line of field into local workspace |
57 |
DO i=1,sNx |
DO i=1,sNx |
100 |
field(i,j,k,bi,bj) = phi(i-sNx) |
field(i,j,k,bi,bj) = phi(i-sNx) |
101 |
ENDDO |
ENDDO |
102 |
|
|
103 |
|
ENDIF |
104 |
ENDDO |
ENDDO |
105 |
ENDDO |
ENDDO |
106 |
|
|