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

Annotation of /trunk/filtrez/inifgn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 121 - (hide annotations)
Wed Jan 28 16:10:02 2015 UTC (9 years, 4 months ago) by guez
File size: 1871 byte(s)
In procedure fxhyp, extracted the body of the loop on ik into a new
procedure:  fxhyp_loop_ik.

dzoomx and dzoomy must now be fractions of the entire range, they
cannot be ranges in degrees or rad.

In fxhyp, force Xf(2 * nmax) = pi_d instead of possibly doing it in
fxhyp_loop_ik.

In fxhyp_loop_ik, when testing whether xvrai is between -pi and pi,
changed the boundaries from -pi - 0.1 to - pi_d - 1d-5 and from pi +
0.1 to pi_d + 1d-5. This reveals a misconception of the
code. Therefore, this version does not work.

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 du(iim)
22     real d(iim)
23     REAL pi
24     INTEGER i, j, k, imm1, nrot
25 guez 81
26 guez 113 EXTERNAL acc, jacobi
27 guez 81
28 guez 113 !----------------------------------------------------------------
29 guez 81
30 guez 113 imm1 = iim - 1
31     pi = 2.*asin(1.)
32 guez 81
33 guez 113 DO i = 1, iim
34 guez 121 sddv(i) = sqrt(xprimv(i))
35     sddu(i) = sqrt(xprimu(i))
36 guez 113 unsddu(i) = 1./sddu(i)
37     unsddv(i) = 1./sddv(i)
38 guez 81 END DO
39    
40 guez 113 DO j = 1, iim
41     DO i = 1, iim
42     vec(i, j) = 0.
43     vec1(i, j) = 0.
44     eignfnv(i, j) = 0.
45     eignfnu(i, j) = 0.
46     END DO
47     END DO
48 guez 81
49 guez 113 eignfnv(1, 1) = -1.
50     eignfnv(iim, 1) = 1.
51     DO i = 1, imm1
52     eignfnv(i+1, i+1) = -1.
53     eignfnv(i, i+1) = 1.
54 guez 81 END DO
55 guez 113 DO j = 1, iim
56     DO i = 1, iim
57     eignfnv(i, j) = eignfnv(i, j)/(sddu(i)*sddv(j))
58     END DO
59 guez 81 END DO
60 guez 113 DO j = 1, iim
61     DO i = 1, iim
62     eignfnu(i, j) = -eignfnv(j, i)
63     END DO
64     END DO
65 guez 81
66 guez 113 DO j = 1, iim
67     DO i = 1, iim
68     vec(i, j) = 0.0
69     vec1(i, j) = 0.0
70     DO k = 1, iim
71     vec(i, j) = vec(i, j) + eignfnu(i, k)*eignfnv(k, j)
72     vec1(i, j) = vec1(i, j) + eignfnv(i, k)*eignfnu(k, j)
73     END DO
74     END DO
75 guez 81 END DO
76    
77 guez 113 CALL jacobi(vec, iim, iim, dv, eignfnv, nrot)
78     CALL acc(eignfnv, d, iim)
79     CALL eigen_sort(dv, eignfnv, iim, iim)
80 guez 81
81 guez 113 CALL jacobi(vec1, iim, iim, du, eignfnu, nrot)
82     CALL acc(eignfnu, d, iim)
83     CALL eigen_sort(du, eignfnu, iim, iim)
84 guez 81
85 guez 113 END SUBROUTINE inifgn
86 guez 81
87 guez 113 end module inifgn_m

  ViewVC Help
Powered by ViewVC 1.1.21