57 |
|
|
58 |
REAL dlatu(jjm) |
REAL dlatu(jjm) |
59 |
REAL rlamda(2:iim) ! > 0, in descending order |
REAL rlamda(2:iim) ! > 0, in descending order |
60 |
real eignvl(iim) ! eigenvalues sorted in descending order (<= 0) |
real eignvl(iim) ! eigenvalues (<= 0) sorted in descending order |
61 |
INTEGER j, unit |
INTEGER j, unit |
62 |
REAL colat0 ! > 0 |
REAL colat0 ! > 0 |
63 |
integer j1 ! index of smallest positive latitude |
integer j1 ! index of smallest positive latitude |
77 |
PRINT *, 'colat0 = ', colat0 |
PRINT *, 'colat0 = ', colat0 |
78 |
|
|
79 |
rlamda = iim / (pi * colat0 / grossismx) / sqrt(- eignvl(2: iim)) |
rlamda = iim / (pi * colat0 / grossismx) / sqrt(- eignvl(2: iim)) |
80 |
|
print *, "1 / rlamda(iim) = ", 1. / rlamda(iim) |
81 |
call new_unit(unit) |
call new_unit(unit) |
|
open(unit, file = "inifilr_out.txt", status = "replace", action = "write") |
|
|
write(unit, fmt = *) '"EIGNVL"', eignvl |
|
|
close(unit) |
|
82 |
open(unit, file = "modfrst.csv", status = "replace", action = "write") |
open(unit, file = "modfrst.csv", status = "replace", action = "write") |
83 |
write(unit, fmt = *) '"rlat (degrees)" modfrst' ! title line |
write(unit, fmt = *) '"rlat (degrees)" modfrst' ! title line |
84 |
|
|
85 |
! D\'etermination de jfilt[ns][uv] : |
j1 = ifirstloc(rlatu <= 0.) |
|
|
|
|
j1 = jjm + 1 - ifirstloc(rlatu(jjm:1:- 1) >= 0.) |
|
86 |
|
|
87 |
call inifilr_hemisph(rlatu(j1:2:- 1), colat0, rlamda, unit, eignfnv, & |
call inifilr_hemisph(rlatu(j1 - 1:2:- 1), colat0, rlamda, unit, eignfnv, & |
88 |
jfiltnu, matriceun, matrinvn) |
jfiltnu, matriceun, matrinvn) |
89 |
jfiltnu = j1 + 1 - jfiltnu |
jfiltnu = j1 - jfiltnu |
90 |
matriceun = matriceun(:, :, jfiltnu - 1:1:- 1) |
matriceun = matriceun(:, :, jfiltnu - 1:1:- 1) |
91 |
matrinvn = matrinvn(:, :, jfiltnu - 1:1:- 1) |
matrinvn = matrinvn(:, :, jfiltnu - 1:1:- 1) |
92 |
|
|
93 |
call inifilr_hemisph(- rlatu(j1 + 1:jjm), colat0, rlamda, unit, eignfnv, & |
call inifilr_hemisph(- rlatu(j1:jjm), colat0, rlamda, unit, eignfnv, & |
94 |
jfiltsu, matriceus, matrinvs) |
jfiltsu, matriceus, matrinvs) |
95 |
jfiltsu = j1 + jfiltsu |
jfiltsu = j1 - 1 + jfiltsu |
96 |
|
|
97 |
j1 = jjm + 1 - ifirstloc(rlatv(jjm:1:- 1) >= 0.) |
j1 = ifirstloc(rlatv <= 0.) |
98 |
|
|
99 |
call inifilr_hemisph(rlatv(j1:1:- 1), colat0, rlamda, unit, eignfnu, & |
call inifilr_hemisph(rlatv(j1 - 1:1:- 1), colat0, rlamda, unit, eignfnu, & |
100 |
jfiltnv, matricevn) |
jfiltnv, matricevn) |
101 |
jfiltnv = j1 + 1 - jfiltnv |
jfiltnv = j1 - jfiltnv |
102 |
matricevn = matricevn(:, :, jfiltnv:1:- 1) |
matricevn = matricevn(:, :, jfiltnv:1:- 1) |
103 |
|
|
104 |
call inifilr_hemisph(- rlatv(j1 + 1:jjm), colat0, rlamda, unit, eignfnu, & |
call inifilr_hemisph(- rlatv(j1:jjm), colat0, rlamda, unit, eignfnu, & |
105 |
jfiltsv, matricevs) |
jfiltsv, matricevs) |
106 |
jfiltsv = j1 + jfiltsv |
jfiltsv = j1 - 1 + jfiltsv |
107 |
|
|
108 |
close(unit) |
close(unit) |
109 |
PRINT *, 'jfiltnu =', jfiltnu |
PRINT *, 'jfiltnu =', jfiltnu |