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) |
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 |
|
|
61 |
|
|
62 |
delta = matmul(deriv_v, deriv_u) ! second derivative at v longitudes |
delta = matmul(deriv_v, deriv_u) ! second derivative at v longitudes |
63 |
CALL jacobi(delta, 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 |
delta = matmul(deriv_u, deriv_v) ! second derivative at u longitudes |
delta = matmul(deriv_u, deriv_v) ! second derivative at u longitudes |
67 |
CALL jacobi(delta, 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 |