source: trunk/src/SIMULS_IRCAAM/obsolete/progfiltrage_8_28.f @ 91

Last change on this file since 91 was 57, checked in by pinsard, 15 years ago

unparametrized files in obsolete directory

File size: 2.7 KB
Line 
1c PROGRAM Filtrage
2C
3C+
4C
5C EVOLUTIONS
6C ===========
7C
8C $Id$
9C
10C - fplod 2009-02-10T13:22:27Z aedon.locean-ipsl.upmc.fr (Darwin)
11C
12C   * replaced by progfiltrage_simulation.f modulo dimension
13C
14C-
15
16c   filtrage sur olr JAN-DEC de 1968
17
18      parameter (nb=28.,period1=8.,period2=28.)
19
20       dimension olr(25,17,nb),vb(nb)
21       dimension vvb(nb),vvvb(nb),olrf(25,17,nb)
22
23      open(1,file='olr_noaa_annuel.dat' 
24     *,form='unformatted',access='direct',recl=nb*25*17*4)
25      read(1,rec=1) 
26     *(((olr(i,j,k),i=1,25),j=1,17),k=1,nb)
27      close(1)
28
29c  l'ordre maximal du filtrage est tel que 2*MOR+1 < nb
30c  veuillez changer dans la subroutine FILTRE le parameter MOR
31
32      do lon0=1,25
33      do lat0=1,17
34      do i=1,nb
35      vb(i)=olr(lon0,lat0,i)
36      enddo
37      call filtre(vb,vvb,period1,nb)
38      call filtre(vb,vvvb,period2,nb)
39      do i=1,nb
40      olrf(lon0,lat0,i)=vvb(i)-vvvb(i)
41      enddo
42      enddo
43      enddo
44c      print*,(olrf(1,1,j),j=1,nb)
45
46        open(2,file='olrf8-28_annuel.dat'
47     *,form='unformatted',access='direct',recl=25*17*nb*4)
48        write(2,rec=1)(((olrf(lon0,lat0,l),lon0=1,25), 
49     *                lat0=1,17),l=1,nb)
50      close(2)
51
52        END
53
54      SUBROUTINE FILTRE(F,F1,PERIO,N)
55      PARAMETER(KOR=4,JOR=4,MOR=50)
56      DIMENSION F(N),W(-MOR:mor),G(-MOR:mor),F1(N)
57      PI=ACOS(-1.)
58      FC=1./PERIO
59      CALL KISER(G,MOR)
60      DO 1 I=-MOR,MOR
61      IF (I.EQ.0) THEN
62      W(I)=2.*FC
63      ELSE
64      W(I)=SIN(2.*PI*FC*FLOAT(I))/(PI*FLOAT(I))*G(I)
65      ENDIF
66   1  CONTINUE
67
68      DO 2 I=1,N
69      F1(I)=0.
70      AT=0.
71
72      IF(I.LE.KOR) THEN
73      L1=-KOR
74      L2=I-1
75      ENDIF
76
77      IF((I.GE.KOR+1).AND.(I.LE.MOR)) THEN
78      L1=-I+1
79      L2=I-1
80      ENDIF
81
82      IF((I.GE.MOR+1).AND.(I.LE.N-MOR)) THEN
83      L1=-MOR
84      L2=MOR
85      ENDIF
86
87      IF((I.GE.N-MOR+1).AND.(I.LE.N-JOR)) THEN
88      L1=-N+I
89      L2=N-I
90      ENDIF
91
92      IF(I.GE.N-JOR+1) THEN
93      L1=-N+I
94      L2=JOR
95      ENDIF
96
97      DO 3 K=L1,L2
98      F1(I)=F1(I)+W(K)*F(I-K)
99      AT=AT+W(K)
100   3  CONTINUE
101      F1(I)=F1(I)/AT
102   2  CONTINUE
103
104      RETURN
105      END
106
107      SUBROUTINE KISER(W,MOR)
108      PARAMETER(LOR=100)
109      DIMENSION W(-MOR:MOR),CO(-LOR:LOR)
110
111      A=30.
112
113      IF(A.LE.21.) THEN
114      ALPHA=0.
115      ENDIF
116
117      IF((A.LT.50.).AND.(A.GT.21.)) THEN
118      ALPHA=0.5842*(A-21.)**0.4+0.07886*(A-21.)
119      ENDIF
120
121      IF(A.GE.50.) THEN
122      ALPHA=0.1102*(A-8.7)
123      ENDIF
124
125      DO 2 I=-MOR,MOR
126      CO(I)=ALPHA*SQRT(1.-(FLOAT(I)/FLOAT(MOR))**2)
127
128      N=0
129      AS=1.
130      AU=1.
131      AS1=1.
132      AU1=1.
133
134      DO 10 K=1,200
135      N=N+1
136
137      AU=AU*((CO(I)/2.)/FLOAT(N))**2
138      AS=AS+AU
139
140      AU1=AU1*((ALPHA/2.)/FLOAT(N))**2
141      AS1=AS1+AU1
142  10  CONTINUE
143      W(I)=AS/AS1
144   2  CONTINUE
145      RETURN
146      END
147
148
Note: See TracBrowser for help on using the repository browser.