** Warning **
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.
Last-Modified: Sat, 17 Apr 2026 05:09:20 GMT
Content-Type: text/html; charset=utf-8
MITgcm/MITgcm/pkg/zonal_filt/zonal_filter.F
File indexing completed on 2018-03-02 18:44:41 UTC
view on github raw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
42c525bfb4 Alis* 0001 #include "ZONAL_FILT_OPTIONS.h "
0002
e4b65e705c Jean* 0003
0004
0005
0006
bc49b7aac9 Jean* 0007 SUBROUTINE ZONAL_FILTER (
0008 U field ,
0009 I fieldMask ,
e4b65e705c Jean* 0010 I jMin , jMax , kSize , bi , bj , gridLoc , myThid )
bc49b7aac9 Jean* 0011
e4b65e705c Jean* 0012
bc49b7aac9 Jean* 0013
0014
0015
0016
0017
e4b65e705c Jean* 0018
42c525bfb4 Alis* 0019 IMPLICIT NONE
0020
0021 #include "SIZE.h "
d4c5f8fe62 Jean* 0022 #include "EEPARAMS.h "
0023 #include "PARAMS.h "
0024 #include "GRID.h "
42c525bfb4 Alis* 0025 #include "ZONAL_FILT.h "
0026 #include "FFTPACK.h "
0027
e4b65e705c Jean* 0028
0029
42c525bfb4 Alis* 0030
e4b65e705c Jean* 0031
0032
0033
0034
0035
0036
0037 INTEGER kSize
0038 _RL field (1-OLx :sNx +OLx ,1-OLy :sNy +OLy ,kSize )
0039 _RS fieldMask (1-Olx :sNx +Olx ,1-Oly :sNy +Oly ,kSize )
0040 INTEGER jMin , jMax , bi , bj
bc49b7aac9 Jean* 0041 INTEGER gridLoc
0042 INTEGER myThid
e4b65e705c Jean* 0043
42c525bfb4 Alis* 0044
0045 #ifdef ALLOW_ZONAL_FILT
0046
e4b65e705c Jean* 0047
42c525bfb4 Alis* 0048 Real *8 phi (Nx )
0049 Real *8 phiMask (Nx )
0050 Real *8 avPhi
e4b65e705c Jean* 0051 INTEGER i , j , k
42c525bfb4 Alis* 0052
e4b65e705c Jean* 0053 DO k = 1, kSize
42c525bfb4 Alis* 0054 DO j =jMin , jMax
d4c5f8fe62 Jean* 0055 IF ( (gridLoc .EQ. 1 .AND. ABS(yC (1,j ,bi ,bj )).GE. zonal_filt_lat )
0056 & .OR. (gridLoc .EQ. 2 .AND. ABS(yG (2,j ,bi ,bj )).GE. zonal_filt_lat )
0057 & .OR. zonal_filt_mode2dx .EQ. 2 ) THEN
42c525bfb4 Alis* 0058
0059
0060 DO i =1,sNx
e4b65e705c Jean* 0061 phi (i ) = field (i ,j ,k )
0062 phiMask (i ) = fieldMask (i ,j ,k )
42c525bfb4 Alis* 0063 ENDDO
0064
0065
0066 CALL ZONAL_FILT_PRESMOOTH ( phiMask ,phi ,avPhi ,sNx ,myThid )
0067
0068
0069
0070 CALL R8FFTF1 ( Nx , phi ,
0071 & FFTPACKWS1 (1,bj ), FFTPACKWS2 (1,bj ),FFTPACKWS3 (1,bj ) )
0072
0073
0074 IF (gridLoc .EQ. 1) THEN
0075 DO i =1, Nx
0076 phi (i )=phi (i )*ampFactor (i ,j ,bi ,bj )/float(Nx )
0077 ENDDO
0078 ELSEIF (gridLoc .EQ. 2) THEN
0079 DO i =1, Nx
0080 phi (i )=phi (i )*ampFactorV (i ,j ,bi ,bj )/float(Nx )
0081 ENDDO
0082 ELSE
2cfc9d59a2 Patr* 0083 WRITE (*,*) 'Error: gridLoc = ' ,gridLoc
42c525bfb4 Alis* 0084 STOP 'Error: gridLoc has illegal value'
0085 ENDIF
0086
0087
0088
0089 CALL R8FFTB1 ( Nx , phi ,
0090 & FFTPACKWS1 (1,bj ), FFTPACKWS2 (1,bj ),FFTPACKWS3 (1,bj ) )
0091
0092
0093 CALL ZONAL_FILT_POSTSMOOTH (phiMask ,phi ,avPhi ,sNx ,myThid )
0094
0095
0096 DO i =1-OLx ,0
e4b65e705c Jean* 0097 field (i ,j ,k ) = phi (sNx +i )
42c525bfb4 Alis* 0098 ENDDO
0099 DO i =1,sNx
e4b65e705c Jean* 0100 field (i ,j ,k ) = phi (i )
42c525bfb4 Alis* 0101 ENDDO
0102 DO i =sNx +1,sNx +OLx
e4b65e705c Jean* 0103 field (i ,j ,k ) = phi (i -sNx )
42c525bfb4 Alis* 0104 ENDDO
0105
d4c5f8fe62 Jean* 0106 ENDIF
42c525bfb4 Alis* 0107 ENDDO
0108 ENDDO
0109
0110 #endif /* ALLOW_ZONAL_FILT */
0111
0112 RETURN
0113 END