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

Annotation of /trunk/filtrez/inifgn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 113 - (hide annotations)
Thu Sep 18 19:56:46 2014 UTC (9 years, 8 months ago) by guez
File size: 1987 byte(s)
Moved the call to read_serre out of conf_gcm so that it can be called
only in the program ce0l, not in gcm. In gcm, variables of module
serre are read from start file. Added reading of dzoomx, dzoomy, taux,
tauy from start file, in dynetat0. Those variables were written by
dynredem0 but not read.

Removed possibility fxyhypb = false, because the geometric part of the
program is such a mess. Could then remove variables transx, transy,
alphax, alphay, pxo, pyo of module serre.

Bug fix in tau2alpha: missing save attributes. The first call to
tau2alpha needs to compute dxdyu and dxdyv regardless of value of
argument type, because they will be needed for subsequent calls to
tau2alpha with various values of argument type.

1 guez 113 module inifgn_m
2 guez 3
3 guez 113 IMPLICIT NONE
4 guez 3
5 guez 113 contains
6 guez 3
7 guez 113 SUBROUTINE inifgn(dv)
8 guez 3
9 guez 113 ! From LMDZ4/libf/filtrez/inifgn.F, v 1.1.1.1 2004/05/19 12:53:09
10 guez 3
11 guez 113 ! H.Upadyaya, O.Sharma
12 guez 3
13 guez 113 USE dimens_m, ONLY: iim
14     USE comgeom, ONLY: xprimu, xprimv
15     USE coefils, ONLY: eignfnu, eignfnv, sddu, sddv, unsddu, unsddv
16 guez 3
17 guez 113 real dv(iim)
18 guez 81
19 guez 113 ! Local:
20     REAL vec(iim, iim), vec1(iim, iim)
21     REAL dlonu(iim), dlonv(iim)
22     REAL du(iim)
23     real d(iim)
24     REAL pi
25     INTEGER i, j, k, imm1, nrot
26 guez 81
27 guez 113 EXTERNAL acc, jacobi
28 guez 81
29 guez 113 !----------------------------------------------------------------
30 guez 81
31 guez 113 imm1 = iim - 1
32     pi = 2.*asin(1.)
33 guez 81
34 guez 113 DO i = 1, iim
35     dlonu(i) = xprimu(i)
36     dlonv(i) = xprimv(i)
37     END DO
38 guez 81
39     DO i = 1, iim
40 guez 113 sddv(i) = sqrt(dlonv(i))
41     sddu(i) = sqrt(dlonu(i))
42     unsddu(i) = 1./sddu(i)
43     unsddv(i) = 1./sddv(i)
44 guez 81 END DO
45    
46 guez 113 DO j = 1, iim
47     DO i = 1, iim
48     vec(i, j) = 0.
49     vec1(i, j) = 0.
50     eignfnv(i, j) = 0.
51     eignfnu(i, j) = 0.
52     END DO
53     END DO
54 guez 81
55 guez 113 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 guez 81 END DO
61 guez 113 DO j = 1, iim
62     DO i = 1, iim
63     eignfnv(i, j) = eignfnv(i, j)/(sddu(i)*sddv(j))
64     END DO
65 guez 81 END DO
66 guez 113 DO j = 1, iim
67     DO i = 1, iim
68     eignfnu(i, j) = -eignfnv(j, i)
69     END DO
70     END DO
71 guez 81
72 guez 113 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 guez 81 END DO
82    
83 guez 113 CALL jacobi(vec, iim, iim, dv, eignfnv, nrot)
84     CALL acc(eignfnv, d, iim)
85     CALL eigen_sort(dv, eignfnv, iim, iim)
86 guez 81
87 guez 113 CALL jacobi(vec1, iim, iim, du, eignfnu, nrot)
88     CALL acc(eignfnu, d, iim)
89     CALL eigen_sort(du, eignfnu, iim, iim)
90 guez 81
91 guez 113 END SUBROUTINE inifgn
92 guez 81
93 guez 113 end module inifgn_m

  ViewVC Help
Powered by ViewVC 1.1.21