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

Diff of /trunk/filtrez/inifgn.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 139 by guez, Tue May 26 17:46:03 2015 UTC revision 140 by guez, Fri Jun 5 18:58:06 2015 UTC
# Line 1  Line 1 
1  module inifgn_m  module inifgn_m
2    
3      use dimens_m, only: iim
4    
5    IMPLICIT NONE    IMPLICIT NONE
6    
7      private iim
8    
9      real sddu(iim), sddv(iim) ! SQRT(dx)
10      real unsddu(iim), unsddv(iim)
11    
12      real eignfnu(iim, iim), eignfnv(iim, iim)
13      ! eignfn eigenfunctions of the discrete laplacian
14    
15  contains  contains
16    
17    SUBROUTINE inifgn(dv)    SUBROUTINE inifgn(dv)
# Line 10  contains Line 20  contains
20    
21      ! H.Upadyaya, O.Sharma      ! H.Upadyaya, O.Sharma
22    
     USE coefils, ONLY: eignfnu, eignfnv, sddu, sddv, unsddu, unsddv  
23      USE dimens_m, ONLY: iim      USE dimens_m, ONLY: iim
24      USE dynetat0_m, ONLY: xprimu, xprimv      USE dynetat0_m, ONLY: xprimu, xprimv
25        use nr_util, only: pi
26      use numer_rec_95, only: jacobi      use numer_rec_95, only: jacobi
27    
28      real, intent(out):: dv(iim)      real, intent(out):: dv(iim)
# Line 21  contains Line 31  contains
31      REAL vec(iim, iim), vec1(iim, iim)      REAL vec(iim, iim), vec1(iim, iim)
32      REAL du(iim)      REAL du(iim)
33      real d(iim)      real d(iim)
34      REAL pi      INTEGER i, j, k, nrot
     INTEGER i, j, k, imm1, nrot  
35    
36      EXTERNAL acc      EXTERNAL acc
37    
38      !----------------------------------------------------------------      !----------------------------------------------------------------
39    
40      imm1 = iim - 1      sddv = sqrt(xprimv(:iim))
41      pi = 2.*asin(1.)      sddu = sqrt(xprimu(:iim))
42        unsddu = 1. / sddu
43      DO i = 1, iim      unsddv = 1. / sddv
        sddv(i) = sqrt(xprimv(i))  
        sddu(i) = sqrt(xprimu(i))  
        unsddu(i) = 1./sddu(i)  
        unsddv(i) = 1./sddv(i)  
     END DO  
44    
45      DO j = 1, iim      DO j = 1, iim
46         DO i = 1, iim         DO i = 1, iim
# Line 47  contains Line 51  contains
51         END DO         END DO
52      END DO      END DO
53    
54      eignfnv(1, 1) = -1.      eignfnv(1, 1) = - 1.
55      eignfnv(iim, 1) = 1.      eignfnv(iim, 1) = 1.
56      DO i = 1, imm1      DO i = 1, iim - 1
57         eignfnv(i+1, i+1) = -1.         eignfnv(i+1, i+1) = - 1.
58         eignfnv(i, i+1) = 1.         eignfnv(i, i+1) = 1.
59      END DO      END DO
60    
61      DO j = 1, iim      DO j = 1, iim
62         DO i = 1, iim         DO i = 1, iim
63            eignfnv(i, j) = eignfnv(i, j)/(sddu(i)*sddv(j))            eignfnv(i, j) = eignfnv(i, j) / (sddu(i) * sddv(j))
64         END DO         END DO
65      END DO      END DO
66    
67      DO j = 1, iim      DO j = 1, iim
68         DO i = 1, iim         DO i = 1, iim
69            eignfnu(i, j) = -eignfnv(j, i)            eignfnu(i, j) = - eignfnv(j, i)
70         END DO         END DO
71      END DO      END DO
72    
# Line 69  contains Line 75  contains
75            vec(i, j) = 0.0            vec(i, j) = 0.0
76            vec1(i, j) = 0.0            vec1(i, j) = 0.0
77            DO k = 1, iim            DO k = 1, iim
78               vec(i, j) = vec(i, j) + eignfnu(i, k)*eignfnv(k, j)               vec(i, j) = vec(i, j) + eignfnu(i, k) * eignfnv(k, j)
79               vec1(i, j) = vec1(i, j) + eignfnv(i, k)*eignfnu(k, j)               vec1(i, j) = vec1(i, j) + eignfnv(i, k) * eignfnu(k, j)
80            END DO            END DO
81         END DO         END DO
82      END DO      END DO

Legend:
Removed from v.139  
changed lines
  Added in v.140

  ViewVC Help
Powered by ViewVC 1.1.21