/[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 154 by guez, Tue Jul 7 17:49:23 2015 UTC revision 170 by guez, Mon Sep 14 17:25:15 2015 UTC
# Line 23  contains Line 23  contains
23      ! Computes the eigenvalues and eigenvectors of the discrete analog      ! Computes the eigenvalues and eigenvectors of the discrete analog
24      ! of the second derivative with respect to longitude.      ! of the second derivative with respect to longitude.
25    
     use acc_m, only: acc  
26      USE dimens_m, ONLY: iim      USE dimens_m, ONLY: iim
27      USE dynetat0_m, ONLY: xprimu, xprimv      USE dynetat0_m, ONLY: xprimu, xprimv
28        use jumble, only: new_unit
29      use numer_rec_95, only: jacobi, eigsrt      use numer_rec_95, only: jacobi, eigsrt
30    
31      real, intent(out):: eignval_v(:) ! (iim)      real, intent(out):: eignval_v(:) ! (iim)
# Line 35  contains Line 35  contains
35    
36      ! Local:      ! Local:
37    
38      REAL a(iim, iim) ! second derivative, symmetric, elements are angle^{-2}      REAL delta(iim, iim) ! second derivative, symmetric, elements are angle^{-2}
39    
40      REAL deriv_u(iim, iim), deriv_v(iim, iim)      REAL deriv_u(iim, iim), deriv_v(iim, iim)
41      ! first derivative at u and v longitudes, elements are angle^{-1}      ! first derivative at u and v longitudes, elements are angle^{-1}
42    
43      REAL eignval_u(iim)      REAL eignval_u(iim)
44      INTEGER i      INTEGER i, unit
45    
46      !----------------------------------------------------------------      !----------------------------------------------------------------
47    
# Line 59  contains Line 59  contains
59    
60      deriv_v = - transpose(deriv_u)      deriv_v = - transpose(deriv_u)
61    
62      a = matmul(deriv_v, deriv_u) ! second derivative at v longitudes      delta = matmul(deriv_v, deriv_u) ! second derivative at v longitudes
63      CALL jacobi(a, eignval_v, eignfnv)      CALL jacobi(delta, eignval_v, eignfnv)
     CALL acc(eignfnv)  
64      CALL eigsrt(eignval_v, eignfnv)      CALL eigsrt(eignval_v, eignfnv)
65    
66      a = matmul(deriv_u, deriv_v) ! second derivative at u longitudes      delta = matmul(deriv_u, deriv_v) ! second derivative at u longitudes
67      CALL jacobi(a, eignval_u, eignfnu)      CALL jacobi(delta, eignval_u, eignfnu)
     CALL acc(eignfnu)  
68      CALL eigsrt(eignval_u, eignfnu)      CALL eigsrt(eignval_u, eignfnu)
69    
70        call new_unit(unit)
71        open(unit, file = "inifgn_out.txt", status = "replace", action = "write")
72        write(unit, fmt = *) '"eignval_v"', eignval_v
73        close(unit)
74    
75    END SUBROUTINE inifgn    END SUBROUTINE inifgn
76    
77  end module inifgn_m  end module inifgn_m

Legend:
Removed from v.154  
changed lines
  Added in v.170

  ViewVC Help
Powered by ViewVC 1.1.21