/[lmdze]/trunk/libf/filtrez/inifgn.f
ViewVC logotype

Contents of /trunk/libf/filtrez/inifgn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 25 - (show annotations)
Fri Mar 5 16:43:45 2010 UTC (14 years, 2 months ago) by guez
File size: 2215 byte(s)
Simplified "etat0_lim.sh" and "gcm.sh" because the full versions
depended on personal arrangements for directories and machines.

Translated included files into modules. Encapsulated procedures into modules.

Moved variables from module "comgeom" to local variables of
"inigeom". Deleted some unused variables in "comgeom".

Moved variable "day_ini" from module "temps" to module "dynetat0_m".

Removed useless test on variable "time" and useless "close" statement
in procedure "leapfrog".

Removed useless call to "inigeom" in procedure "limit".

1 !
2 ! $Header: /home/cvsroot/LMDZ4/libf/filtrez/inifgn.F,v 1.1.1.1 2004/05/19 12:53:09 lmdzadmin Exp $
3 !
4 SUBROUTINE inifgn(dv)
5 c
6 c ... H.Upadyaya , O.Sharma ...
7 c
8 use dimens_m
9 use paramet_m
10 use comgeom
11 use serre
12 use coefils
13 IMPLICIT NONE
14 c
15
16 c
17 REAL vec(iim,iim),vec1(iim,iim)
18 REAL dlonu(iim),dlonv(iim)
19 REAL du(iim),dv(iim),d(iim)
20 REAL pi
21 INTEGER i,j,k,imm1,nrot
22 C
23 c
24 EXTERNAL SSUM, acc, jacobi
25 CC EXTERNAL eigen
26 REAL SSUM
27 c
28
29 imm1 = iim -1
30 pi = 2.* ASIN(1.)
31 C
32 DO 5 i=1,iim
33 dlonu(i)= xprimu( i )
34 dlonv(i)= xprimv( i )
35 5 CONTINUE
36
37 DO 12 i=1,iim
38 sddv(i) = SQRT(dlonv(i))
39 sddu(i) = SQRT(dlonu(i))
40 unsddu(i) = 1./sddu(i)
41 unsddv(i) = 1./sddv(i)
42 12 CONTINUE
43 C
44 DO 17 j=1,iim
45 DO 17 i=1,iim
46 vec(i,j) = 0.
47 vec1(i,j) = 0.
48 eignfnv(i,j) = 0.
49 eignfnu(i,j) = 0.
50 17 CONTINUE
51 c
52 c
53 eignfnv(1,1) = -1.
54 eignfnv(iim,1) = 1.
55 DO 20 i=1,imm1
56 eignfnv(i+1,i+1)= -1.
57 eignfnv(i,i+1) = 1.
58 20 CONTINUE
59 DO 25 j=1,iim
60 DO 25 i=1,iim
61 eignfnv(i,j) = eignfnv(i,j)/(sddu(i)*sddv(j))
62 25 CONTINUE
63 DO 30 j=1,iim
64 DO 30 i=1,iim
65 eignfnu(i,j) = -eignfnv(j,i)
66 30 CONTINUE
67 c
68 DO j = 1, iim
69 DO i = 1, iim
70 vec (i,j) = 0.0
71 vec1(i,j) = 0.0
72 DO k = 1, iim
73 vec (i,j) = vec(i,j) + eignfnu(i,k) * eignfnv(k,j)
74 vec1(i,j) = vec1(i,j) + eignfnv(i,k) * eignfnu(k,j)
75 ENDDO
76 ENDDO
77 ENDDO
78
79 c
80 CALL jacobi(vec,iim,iim,dv,eignfnv,nrot)
81 CALL acc(eignfnv,d,iim)
82 CALL eigen_sort(dv,eignfnv,iim,iim)
83 c
84 CALL jacobi(vec1,iim,iim,du,eignfnu,nrot)
85 CALL acc(eignfnu,d,iim)
86 CALL eigen_sort(du,eignfnu,iim,iim)
87
88 cc ancienne version avec appels IMSL
89 c
90 c CALL MXM(eignfnu,iim,eignfnv,iim,vec,iim)
91 c CALL MXM(eignfnv,iim,eignfnu,iim,vec1,iim)
92 c CALL EVCSF(iim,vec,iim,dv,eignfnv,iim)
93 c CALL acc(eignfnv,d,iim)
94 c CALL eigen(eignfnv,dv)
95 c
96 c CALL EVCSF(iim,vec1,iim,du,eignfnu,iim)
97 c CALL acc(eignfnu,d,iim)
98 c CALL eigen(eignfnu,du)
99
100 RETURN
101 END
102

  ViewVC Help
Powered by ViewVC 1.1.21