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

Annotation of /trunk/filtrez/inifgn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 153 - (hide annotations)
Tue Jun 23 18:26:18 2015 UTC (8 years, 10 months ago) by guez
Original Path: trunk/Sources/filtrez/inifgn.f
File size: 1365 byte(s)
Changes results.

1 guez 113 module inifgn_m
2 guez 3
3 guez 140 use dimens_m, only: iim
4    
5 guez 113 IMPLICIT NONE
6 guez 3
7 guez 140 private iim
8    
9 guez 151 real sddu(iim), sddv(iim) ! SQRT(dx / di)
10 guez 140 real unsddu(iim), unsddv(iim)
11    
12     real eignfnu(iim, iim), eignfnv(iim, iim)
13 guez 143 ! eigenfunctions of the discrete laplacian
14 guez 140
15 guez 113 contains
16 guez 3
17 guez 113 SUBROUTINE inifgn(dv)
18 guez 3
19 guez 113 ! From LMDZ4/libf/filtrez/inifgn.F, v 1.1.1.1 2004/05/19 12:53:09
20 guez 3
21 guez 143 ! H. Upadyaya, O. Sharma
22 guez 3
23 guez 143 use acc_m, only: acc
24 guez 113 USE dimens_m, ONLY: iim
25 guez 139 USE dynetat0_m, ONLY: xprimu, xprimv
26 guez 143 use numer_rec_95, only: jacobi, eigsrt
27 guez 3
28 guez 151 real, intent(out):: dv(:) ! (iim) eigenvalues sorted in descending order
29 guez 81
30 guez 113 ! Local:
31 guez 152 REAL, dimension(iim, iim):: a, b, c
32 guez 113 REAL du(iim)
33 guez 152 INTEGER i
34 guez 81
35 guez 113 !----------------------------------------------------------------
36 guez 81
37 guez 151 print *, "Call sequence information: inifgn"
38    
39 guez 140 sddv = sqrt(xprimv(:iim))
40     sddu = sqrt(xprimu(:iim))
41     unsddu = 1. / sddu
42     unsddv = 1. / sddv
43 guez 81
44 guez 152 b = 0.
45 guez 153 b(iim, 1) = unsddu(iim) * unsddv(1)
46     forall (i = 1:iim) b(i, i) = - unsddu(i) * unsddv(i)
47     forall (i = 1:iim - 1) b(i, i + 1) = unsddu(i) * unsddv(i + 1)
48 guez 81
49 guez 152 c = - transpose(b)
50 guez 140
51 guez 152 a = matmul(c, b)
52     CALL jacobi(a, dv, eignfnv)
53 guez 143 CALL acc(eignfnv)
54     CALL eigsrt(dv, eignfnv)
55 guez 81
56 guez 152 a = matmul(b, c)
57     CALL jacobi(a, du, eignfnu)
58 guez 143 CALL acc(eignfnu)
59     CALL eigsrt(du, eignfnu)
60 guez 81
61 guez 113 END SUBROUTINE inifgn
62 guez 81
63 guez 113 end module inifgn_m

  ViewVC Help
Powered by ViewVC 1.1.21