Directory: | ./ |
---|---|
File: | filtrez/inifgn.f |
Date: | 2022-01-11 19:19:34 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 46 | 46 | 100.0% |
Branches: | 24 | 24 | 100.0% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | ! | ||
2 | ! $Header: /home/cvsroot/LMDZ4/libf/filtrez/inifgn.F,v 1.1.1.1 2004-05-19 12:53:09 lmdzadmin Exp $ | ||
3 | ! | ||
4 | 1 | SUBROUTINE inifgn(dv) | |
5 | c | ||
6 | c ... H.Upadyaya , O.Sharma ... | ||
7 | c | ||
8 | IMPLICIT NONE | ||
9 | c | ||
10 | include "dimensions.h" | ||
11 | include "paramet.h" | ||
12 | include "comgeom.h" | ||
13 | |||
14 | c | ||
15 | REAL vec(iim,iim),vec1(iim,iim) | ||
16 | REAL dlonu(iim),dlonv(iim) | ||
17 | REAL du(iim),dv(iim),d(iim) | ||
18 | REAL pi | ||
19 | INTEGER i,j,k,imm1,nrot | ||
20 | C | ||
21 | include "coefils.h" | ||
22 | c | ||
23 | EXTERNAL SSUM, acc,eigen,jacobi | ||
24 | REAL SSUM | ||
25 | c | ||
26 | |||
27 | imm1 = iim -1 | ||
28 | pi = 2.* ASIN(1.) | ||
29 | C | ||
30 |
2/2✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
|
33 | DO 5 i=1,iim |
31 | 32 | dlonu(i)= xprimu( i ) | |
32 | 32 | dlonv(i)= xprimv( i ) | |
33 | 1 | 5 CONTINUE | |
34 | |||
35 |
2/2✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
|
33 | DO 12 i=1,iim |
36 | 32 | sddv(i) = SQRT(dlonv(i)) | |
37 | 32 | sddu(i) = SQRT(dlonu(i)) | |
38 | 32 | unsddu(i) = 1./sddu(i) | |
39 | 32 | unsddv(i) = 1./sddv(i) | |
40 | 1 | 12 CONTINUE | |
41 | C | ||
42 |
2/2✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
|
33 | DO 17 j=1,iim |
43 |
2/2✓ Branch 0 taken 1024 times.
✓ Branch 1 taken 32 times.
|
1057 | DO 17 i=1,iim |
44 | 1024 | vec(i,j) = 0. | |
45 | 1024 | vec1(i,j) = 0. | |
46 | 1024 | eignfnv(i,j) = 0. | |
47 | 1024 | eignfnu(i,j) = 0. | |
48 | 32 | 17 CONTINUE | |
49 | c | ||
50 | c | ||
51 | 1 | eignfnv(1,1) = -1. | |
52 | 1 | eignfnv(iim,1) = 1. | |
53 |
2/2✓ Branch 0 taken 31 times.
✓ Branch 1 taken 1 times.
|
32 | DO 20 i=1,imm1 |
54 | 31 | eignfnv(i+1,i+1)= -1. | |
55 | 31 | eignfnv(i,i+1) = 1. | |
56 | 1 | 20 CONTINUE | |
57 |
2/2✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
|
33 | DO 25 j=1,iim |
58 |
2/2✓ Branch 0 taken 1024 times.
✓ Branch 1 taken 32 times.
|
1057 | DO 25 i=1,iim |
59 | 1024 | eignfnv(i,j) = eignfnv(i,j)/(sddu(i)*sddv(j)) | |
60 | 32 | 25 CONTINUE | |
61 |
2/2✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
|
33 | DO 30 j=1,iim |
62 |
2/2✓ Branch 0 taken 1024 times.
✓ Branch 1 taken 32 times.
|
1057 | DO 30 i=1,iim |
63 | 1024 | eignfnu(i,j) = -eignfnv(j,i) | |
64 | 32 | 30 CONTINUE | |
65 | c | ||
66 |
2/2✓ Branch 0 taken 32 times.
✓ Branch 1 taken 1 times.
|
33 | DO j = 1, iim |
67 |
2/2✓ Branch 0 taken 1024 times.
✓ Branch 1 taken 32 times.
|
1057 | DO i = 1, iim |
68 | 1024 | vec (i,j) = 0.0 | |
69 | 1024 | vec1(i,j) = 0.0 | |
70 |
2/2✓ Branch 0 taken 32768 times.
✓ Branch 1 taken 1024 times.
|
33824 | DO k = 1, iim |
71 | 32768 | vec (i,j) = vec(i,j) + eignfnu(i,k) * eignfnv(k,j) | |
72 | 33792 | vec1(i,j) = vec1(i,j) + eignfnv(i,k) * eignfnu(k,j) | |
73 | ENDDO | ||
74 | ENDDO | ||
75 | ENDDO | ||
76 | |||
77 | c | ||
78 | 1 | CALL jacobi(vec,iim,iim,dv,eignfnv,nrot) | |
79 | 1 | CALL acc(eignfnv,d,iim) | |
80 | 1 | CALL eigen_sort(dv,eignfnv,iim,iim) | |
81 | c | ||
82 | 1 | CALL jacobi(vec1,iim,iim,du,eignfnu,nrot) | |
83 | 1 | CALL acc(eignfnu,d,iim) | |
84 | 1 | CALL eigen_sort(du,eignfnu,iim,iim) | |
85 | |||
86 | cc ancienne version avec appels IMSL | ||
87 | c | ||
88 | c CALL MXM(eignfnu,iim,eignfnv,iim,vec,iim) | ||
89 | c CALL MXM(eignfnv,iim,eignfnu,iim,vec1,iim) | ||
90 | c CALL EVCSF(iim,vec,iim,dv,eignfnv,iim) | ||
91 | c CALL acc(eignfnv,d,iim) | ||
92 | c CALL eigen(eignfnv,dv) | ||
93 | c | ||
94 | c CALL EVCSF(iim,vec1,iim,du,eignfnu,iim) | ||
95 | c CALL acc(eignfnu,d,iim) | ||
96 | c CALL eigen(eignfnu,du) | ||
97 | |||
98 | 1 | RETURN | |
99 | END | ||
100 | |||
101 |