2 |
|
|
3 |
implicit none |
implicit none |
4 |
|
|
5 |
REAL:: clon = 0. ! longitude of the center of the zoom, in degrees |
REAL:: clon = 0. ! longitude of the center of the zoom, in rad |
6 |
real:: clat = 0. ! latitude of the center of the zoom, in degrees |
real:: clat = 0. ! latitude of the center of the zoom, in rad |
|
|
|
|
real, save:: transx, transy |
|
|
real, save:: alphax, alphay ! anciennes formulations des grossissements |
|
|
real, save:: pxo, pyo |
|
|
|
|
|
real:: grossismx = 1. ! facteur de grossissement du zoom, selon la longitude |
|
|
real:: grossismy = 1. ! facteur de grossissement du zoom, selon la latitude |
|
|
|
|
|
real:: dzoomx = 0. |
|
|
! extension en longitude de la zone du zoom (fraction de la zone totale) |
|
|
|
|
|
real:: dzoomy = 0. |
|
|
! extension en latitude de la zone du zoom (fraction de la zone totale) |
|
|
|
|
|
real:: taux = 3. ! raideur du zoom en X |
|
|
real:: tauy = 3. ! raideur du zoom en Y |
|
7 |
|
|
8 |
|
real:: grossismx = 1., grossismy = 1. |
9 |
|
! facteurs de grossissement du zoom, selon la longitude et la latitude |
10 |
|
! = 2 si 2 fois, = 3 si 3 fois, etc. |
11 |
|
|
12 |
|
real:: dzoomx = 0.2, dzoomy = 0.2 |
13 |
|
! extensions en longitude et latitude de la zone du zoom (fractions |
14 |
|
! de la zone totale) |
15 |
|
|
16 |
|
real:: taux = 3., tauy = 3. |
17 |
|
! raideur de la transition de l'intérieur à l'extérieur du zoom |
18 |
|
|
19 |
contains |
contains |
20 |
|
|
21 |
subroutine read_serre |
subroutine read_serre |
22 |
|
|
23 |
use unit_nml_m, only: unit_nml |
use unit_nml_m, only: unit_nml |
24 |
|
use nr_util, only: assert, pi |
25 |
|
|
26 |
|
REAL:: clon_deg = 0. ! longitude of the center of the zoom, in degrees |
27 |
|
real:: clat_deg = 0. ! latitude of the center of the zoom, in degrees |
28 |
|
|
29 |
namelist /serre_nml/ clon, clat, grossismx, grossismy, dzoomx, dzoomy, & |
namelist /serre_nml/ clon_deg, clat_deg, grossismx, grossismy, dzoomx, & |
30 |
taux, tauy |
dzoomy, taux, tauy |
31 |
|
|
32 |
!------------------------------------------------- |
!------------------------------------------------- |
33 |
|
|
35 |
read(unit=*, nml=serre_nml) |
read(unit=*, nml=serre_nml) |
36 |
write(unit_nml, nml=serre_nml) |
write(unit_nml, nml=serre_nml) |
37 |
|
|
38 |
IF (grossismx < 1.) THEN |
call assert(grossismx >= 1. .and. grossismy >= 1., "read_serre grossism") |
39 |
PRINT *, 'Error: grossismx < 1' |
call assert(dzoomx > 0., dzoomx < 1., dzoomy < 1., & |
40 |
STOP 1 |
"read_serre dzoomx dzoomy") |
41 |
ELSE |
clon = clon_deg / 180. * pi |
42 |
alphax = 1. - 1. / grossismx |
clat = clat_deg / 180. * pi |
|
ENDIF |
|
|
IF (grossismy < 1.) THEN |
|
|
PRINT *, 'Error: grossismy < 1' |
|
|
STOP 1 |
|
|
ELSE |
|
|
alphay = 1. - 1. / grossismy |
|
|
ENDIF |
|
|
PRINT *, 'alphax = ', alphax |
|
|
PRINT *, 'alphay = ', alphay |
|
43 |
|
|
44 |
end subroutine read_serre |
end subroutine read_serre |
45 |
|
|