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

Annotation of /trunk/filtrez/inifgn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 81 - (hide 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 guez 3
2 guez 81 ! $Header: /home/cvsroot/LMDZ4/libf/filtrez/inifgn.F,v 1.1.1.1 2004/05/19
3     ! 12:53:09 lmdzadmin Exp $
4 guez 3
5 guez 81 SUBROUTINE inifgn(dv)
6 guez 3
7 guez 81 ! ... H.Upadyaya , O.Sharma ...
8 guez 3
9 guez 81 USE dimens_m
10     USE paramet_m
11     USE comgeom
12     USE serre
13     USE coefils
14     IMPLICIT NONE
15 guez 3
16    
17    
18 guez 81 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