1 |
program test_inter_barxy |
2 |
|
3 |
use comconst, only: iniconst |
4 |
use comdissnew, only: read_comdissnew |
5 |
use comgeom, only: inigeom |
6 |
use conf_gcm_m, only: conf_gcm |
7 |
use dimensions, only: iim, jjm |
8 |
USE dynetat0_m, only: rlonu, rlatv, rlatu, rlatu1, rlatu2, rlonv, xprimm025, & |
9 |
xprimp025, xprimu, xprimv, yprimu1, yprimu2, read_serre |
10 |
use fxhyp_m, only: fxhyp |
11 |
use fyhyp_m, only: fyhyp |
12 |
use inter_barxy_m, only: inter_barxy |
13 |
USE nr_util, ONLY : pi |
14 |
|
15 |
implicit none |
16 |
|
17 |
integer:: iml_dyn = 3, jml_dyn = 6 |
18 |
real, allocatable:: lon_rad(:), lon_ini(:) |
19 |
real, allocatable:: lat_rad(:), lat_ini(:) |
20 |
integer i |
21 |
real, allocatable:: var_ana3d(:, :) |
22 |
REAL var_tmp2d(iim, jjm + 1) |
23 |
|
24 |
namelist /main/iml_dyn, jml_dyn |
25 |
|
26 |
!------------------------ |
27 |
|
28 |
print *, "Enter namelist 'main'." |
29 |
read (unit=*, nml=main) |
30 |
write(unit=*, nml=main) |
31 |
|
32 |
allocate(lon_rad(iml_dyn), lon_ini(iml_dyn)) |
33 |
allocate(lat_rad(jml_dyn-1), lat_ini(jml_dyn)) |
34 |
allocate(var_ana3d(iml_dyn, jml_dyn)) |
35 |
|
36 |
CALL conf_gcm |
37 |
call read_comdissnew |
38 |
CALL iniconst |
39 |
call read_serre |
40 |
CALL fyhyp(rlatu, rlatv, rlatu2, yprimu2, rlatu1, yprimu1) |
41 |
CALL fxhyp(xprimm025, rlonv, xprimv, rlonu, xprimu, xprimp025) |
42 |
|
43 |
rlatu(1) = pi / 2. |
44 |
rlatu(jjm + 1) = -rlatu(1) |
45 |
|
46 |
CALL inigeom |
47 |
|
48 |
lon_ini = - pi + 2 * pi / iml_dyn * (/(i, i = 0, iml_dyn - 1)/) |
49 |
|
50 |
forall (i = 1: iml_dyn - 1) lon_rad(i) = (lon_ini(i) + lon_ini(i + 1)) / 2 |
51 |
lon_rad(iml_dyn) = (lon_ini(iml_dyn) + pi) / 2 |
52 |
|
53 |
lat_ini = pi / 2 - pi / (jml_dyn - 1) * (/(i, i = 0, jml_dyn - 1)/) |
54 |
forall (i = 1: jml_dyn - 1) lat_rad(i) = (lat_ini(i) + lat_ini(i + 1)) / 2 |
55 |
|
56 |
!!forall (i = 1: jml_dyn) var_ana3d(:, i) = i |
57 |
forall (i = 1: jml_dyn) var_ana3d(:, i) = 240. + real(i) / 2 |
58 |
|
59 |
call inter_barxy(lon_rad, lat_rad, var_ana3d, rlonu(:iim), rlatv, var_tmp2d) |
60 |
|
61 |
!!print *, "lon_rad * 180. / pi = ", lon_rad * 180. / pi |
62 |
print *, "lat_rad * 180. / pi = ", lat_rad * 180. / pi |
63 |
!!print *, "var_tmp2d = ", var_tmp2d |
64 |
|
65 |
print *, "minval(var_tmp2d, dim=1) = ", minval(var_tmp2d, dim=1) |
66 |
print *, "maxval(var_tmp2d, dim=1) = ", maxval(var_tmp2d, dim=1) |
67 |
|
68 |
end program test_inter_barxy |