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

Contents of /trunk/filtrez/inifgn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 81 - (show annotations)
Wed Mar 5 14:38:41 2014 UTC (10 years, 2 months ago) by guez
Original Path: trunk/filtrez/inifgn.f90
File size: 2047 byte(s)
 Converted to free source form files which were still in fixed source
form. The conversion was done using the polish mode of the NAG Fortran
Compiler.

In addition to converting to free source form, the processing of the
files also:

-- indented the code (including comments);

-- set Fortran keywords to uppercase, and set all other identifiers
to lower case;

-- added qualifiers to end statements (for example "end subroutine
conflx", instead of "end");

-- changed the terminating statements of all DO loops so that each
loop ends with an ENDDO statement (instead of a labeled continue).

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

  ViewVC Help
Powered by ViewVC 1.1.21