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

Annotation of /trunk/filtrez/inifgn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 140 - (hide annotations)
Fri Jun 5 18:58:06 2015 UTC (8 years, 11 months ago) by guez
Original Path: trunk/Sources/filtrez/inifgn.f
File size: 1973 byte(s)
Changed unit of variables lat_min_guide and lat_max_guide from module
conf_guide_m from degrees to rad. Then we do not have to convert the
whole array rlat from rad to degrees in SUBROUTINE tau2alpha.

Removed some useless computations in inigeom.

Removed module coefils. Moved variables sddv, unsddv, sddu, unsddu,
eignfnu, eignfnv of module coefils to module inifgn_m. Downgraded
variables coefilu, coefilu2, coefilv, coefilv2, modfrstu, modfrstv of
module coefils to local variables of SUBROUTINE inifilr.

Write and read a 3-dimensional variable Tsoil in restartphy.nc and
startphy.nc instead of multiple variables for the different
subs-urfaces and soil layers. This does not allow any longer to
provide only the surface value in startphy.nc and spread it to other
layers. Instead, if necessary, pre-process the file startphy.nc to
spread the surface value.

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     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 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 113 ! H.Upadyaya, O.Sharma
22 guez 3
23 guez 113 USE dimens_m, ONLY: iim
24 guez 139 USE dynetat0_m, ONLY: xprimu, xprimv
25 guez 140 use nr_util, only: pi
26 guez 132 use numer_rec_95, only: jacobi
27 guez 3
28 guez 132 real, intent(out):: dv(iim)
29 guez 81
30 guez 113 ! Local:
31     REAL vec(iim, iim), vec1(iim, iim)
32     REAL du(iim)
33     real d(iim)
34 guez 140 INTEGER i, j, k, nrot
35 guez 81
36 guez 132 EXTERNAL acc
37 guez 81
38 guez 113 !----------------------------------------------------------------
39 guez 81
40 guez 140 sddv = sqrt(xprimv(:iim))
41     sddu = sqrt(xprimu(:iim))
42     unsddu = 1. / sddu
43     unsddv = 1. / sddv
44 guez 81
45 guez 113 DO j = 1, iim
46     DO i = 1, iim
47     vec(i, j) = 0.
48     vec1(i, j) = 0.
49     eignfnv(i, j) = 0.
50     eignfnu(i, j) = 0.
51     END DO
52     END DO
53 guez 81
54 guez 140 eignfnv(1, 1) = - 1.
55 guez 113 eignfnv(iim, 1) = 1.
56 guez 140 DO i = 1, iim - 1
57     eignfnv(i+1, i+1) = - 1.
58 guez 113 eignfnv(i, i+1) = 1.
59 guez 81 END DO
60 guez 140
61 guez 113 DO j = 1, iim
62     DO i = 1, iim
63 guez 140 eignfnv(i, j) = eignfnv(i, j) / (sddu(i) * sddv(j))
64 guez 113 END DO
65 guez 81 END DO
66 guez 140
67 guez 113 DO j = 1, iim
68     DO i = 1, iim
69 guez 140 eignfnu(i, j) = - eignfnv(j, i)
70 guez 113 END DO
71     END DO
72 guez 81
73 guez 113 DO j = 1, iim
74     DO i = 1, iim
75     vec(i, j) = 0.0
76     vec1(i, j) = 0.0
77     DO k = 1, iim
78 guez 140 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)
80 guez 113 END DO
81     END DO
82 guez 81 END DO
83    
84 guez 132 CALL jacobi(vec, dv, eignfnv, nrot)
85 guez 113 CALL acc(eignfnv, d, iim)
86     CALL eigen_sort(dv, eignfnv, iim, iim)
87 guez 81
88 guez 132 CALL jacobi(vec1, du, eignfnu, nrot)
89 guez 113 CALL acc(eignfnu, d, iim)
90     CALL eigen_sort(du, eignfnu, iim, iim)
91 guez 81
92 guez 113 END SUBROUTINE inifgn
93 guez 81
94 guez 113 end module inifgn_m

  ViewVC Help
Powered by ViewVC 1.1.21