/[MITgcm]/MITgcm/pkg/zonal_filt/zonal_filt_init.F
ViewVC logotype

Contents of /MITgcm/pkg/zonal_filt/zonal_filt_init.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Fri Feb 2 21:36:30 2001 UTC (23 years, 5 months ago) by adcroft
Branch: MAIN
Changes since 1.1: +93 -0 lines
Merged changes from branch "branch-atmos-merge" into MAIN (checkpoint34)
 - substantial modifications to algorithm sequence (dynamics.F)
 - packaged OBCS, Shapiro filter, Zonal filter, Atmospheric Physics

1 C $Header: /u/gcmpack/models/MITgcmUV/pkg/zonal_filt/Attic/zonal_filt_init.F,v 1.1.2.3 2001/01/29 02:13:17 adcroft Exp $
2
3 #include "ZONAL_FILT_OPTIONS.h"
4
5 SUBROUTINE ZONAL_FILT_INIT(myThid)
6
7 C /==========================================================\
8 C | S/R ZONAL_FILT_INIT |
9 C | o Initialise FFT filter for latitude circle. |
10 C |==========================================================|
11 C | The details of particular FFT libraries may differ. |
12 C | Changing to a different library may entail modifying the |
13 C | code here. However, the broad process is usually the |
14 C | same. |
15 C | Note - Fourier modes for sNx and sNx+1 are damped in the |
16 C | same way. This is because we have not implemented |
17 C | a scheme that sets the damping factor for the |
18 C | highest wave number for odd sNx. Instead the |
19 C | highest wave number for odd sNx. Instead only |
20 C | wave numbers 1:INT(sNx/2) are partially damped. |
21 C | Wave number sNx/2 (if it exists) is removed |
22 C | altogether. |
23 C \==========================================================/
24 IMPLICIT NONE
25
26 C == Global data ==
27 #include "SIZE.h"
28 #include "EEPARAMS.h"
29 #include "PARAMS.h"
30 #include "GRID.h"
31 #include "ZONAL_FILT.h"
32 #include "FFTPACK.h"
33
34 C == Routine arguments ==
35 C myThid - Thread number of this instance of FILTER_LATCIRC_FFT_INIT
36 INTEGER myThid
37
38 #ifdef ALLOW_ZONAL_FILT
39
40 C == Local variables ==
41 C alpha - Used to evaluate frequency and latitude dependent
42 C amplitude damping factor.
43 C wvNum - Wave number
44 C lat - Temporary holding latitude
45 C nWv - No. of waves that fit on grid.
46 _RL alpha, wvNum, lat
47 INTEGER I, J, bi, bj, nPoints, nWv
48 _RL one
49 PARAMETER( one = 1.0 )
50 _RS ampfact,Y
51 ampfact(Y,I) = min( one,
52 & ( cos( abs(Y)*deg2rad )
53 & /cos( zonal_filt_lat*deg2rad ) )**zonal_filt_cospow
54 & /(sin( PI*float(I)/float(Nx) ) )**zonal_filt_sinpow
55 & )
56
57 C o Initialise specific library FFT package
58 DO bj=1,nSy
59 C CALL R8FFTI( Nx, FFTPACKWS(1,bj) )
60 CALL R8FFTI1( Nx, FFTPACKWS2(1,bj), FFTPACKWS3(1,bj) )
61 ENDDO
62
63 C o Set amplitude scale factor as function of latitude and mode number
64 DO bj=1,nSy
65 DO bi=1,nSx
66 DO j=1-oLy,sNy+Oly
67 ampFactor(1,J,bi,bj) = one
68 ampFactorV(1,J,bi,bj) = one
69 DO i=1,Nx/2-1
70 ampFactor(2*I,J,bi,bj) = ampfact( yC(1,J,bi,bj) , I )
71 C IF (ampFactor(2*I,J,bi,bj).LE..9) ampFactor(2*I,J,bi,bj)=0.
72 ampFactor(2*I+1,J,bi,bj) = ampFactor(2*I,J,bi,bj)
73 ampFactorV(2*I,J,bi,bj) = ampfact( yG(1,J,bi,bj) , I )
74 C IF (ampFactorV(2*I,J,bi,bj).LE..9) ampFactorV(2*I,J,bi,bj)=0.
75 ampFactorV(2*I+1,J,bi,bj) = ampFactorV(2*I,J,bi,bj)
76 ENDDO
77 I=Nx/2
78 Cajatest
79 ampFactor(Nx,J,bi,bj) = 0.
80 ampFactorV(Nx,J,bi,bj) = 0.
81 C ampFactor(Nx,J,bi,bj) = ampfact( yC(1,J,bi,bj) , I )
82 C ampFactorV(Nx,J,bi,bj) = ampfact( yG(1,J,bi,bj) , I )
83 Cajatest
84 ENDDO
85 ENDDO
86 ENDDO
87
88 CALL WRITE_REC_XY_RL( 'ampFactor', ampFactor, 1, 0, myThid )
89
90 #endif /* ALLOW_ZONAL_FILT */
91
92 RETURN
93 END

  ViewVC Help
Powered by ViewVC 1.1.22