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

Contents of /trunk/filtrez/test_inifilr.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 167 - (show annotations)
Mon Aug 24 16:30:33 2015 UTC (8 years, 8 months ago) by guez
Original Path: trunk/Sources/filtrez/test_inifilr.f
File size: 4052 byte(s)
Added program test_inifilr.

Encapsulated ppm3d into a module and added implicit none. Removed
unused argument dum.

Encountered a problem in procedure invert_zoom_x. With grossismx=2.9,
DZOOMX=0.3, taux=5, for xuv = -0.25, for i = 1, rtsafe fails because
fval is about 1e-16 instead of 0 at xval = pi. So distinguished the
cases abs_y = 0 or pi. Needed then to add argument beta to
invert_zoom_x.

Moved the output of eignvalues of differentiation matrix from inifilr
to inifgn, where they are computed.

Simpler definition of j1 in inifilr.

1 program test_inifilr
2
3 use dimens_m, only: iim, jjm
4 use dynetat0_m, only: xprimp025, xprimm025, rlatu1, rlatu2, rlatu, rlatv, &
5 yprimu1, yprimu2, rlonu, rlonv, xprimu, xprimv
6 use fxhyp_m, only: fxhyp
7 use fyhyp_m, only: fyhyp
8 use inifilr_m, only: inifilr, jfiltnu, jfiltnv, jfiltsu, jfiltsv, &
9 matriceun, matrinvn, matricevn, matriceus, matrinvs, matricevs
10 use jumble, only: new_unit
11 use netcdf, only: NF90_CLOBBER, NF90_FLOAT
12 use netcdf95, only: nf95_create, NF95_DEF_DIM, NF95_DEF_VAR, NF95_ENDDEF, &
13 NF95_PUT_VAR, NF95_CLOSE, nf95_put_att
14
15 use nr_util, only: pi
16 use unit_nml_m, only: unit_nml
17 use read_serre_m, only: read_serre
18
19 IMPLICIT NONE
20
21 integer ncid, dimid_longitude
22 integer dimid_rlatu_north, dimid_rlatv_north
23 integer dimid_rlatu_south, dimid_rlatv_south
24 integer varid_matriceun, varid_matrinvn, varid_matricevn
25 integer varid_matriceus, varid_matrinvs, varid_matricevs
26 integer varid_rlatu_north, varid_rlatv_north
27 integer varid_rlatu_south, varid_rlatv_south
28
29 !-----------------------------------------------------------------------
30
31 call new_unit(unit_nml)
32 open(unit_nml, file="used_namelists.txt", status="replace", action="write")
33 call read_serre
34
35 CALL fyhyp(rlatu, rlatv, rlatu2, yprimu2, rlatu1, yprimu1)
36 CALL fxhyp(xprimm025, rlonv, xprimv, rlonu, xprimu, xprimp025)
37 rlatu(1) = pi / 2.
38 rlatu(jjm + 1) = -rlatu(1)
39
40 CALL inifilr
41 close(unit_nml)
42
43 call nf95_create("test_inifilr_out.nc", NF90_CLOBBER, ncid)
44
45 call NF95_DEF_DIM(ncid, "longitude", iim, dimid_longitude)
46 call NF95_DEF_DIM(ncid, "rlatu_north", jfiltnu - 1, dimid_rlatu_north)
47 call NF95_DEF_DIM(ncid, "rlatv_north", jfiltnv, dimid_rlatv_north)
48 call NF95_DEF_DIM(ncid, "rlatu_south", jjm - jfiltsu + 1, dimid_rlatu_south)
49 call NF95_DEF_DIM(ncid, "rlatv_south", jjm - jfiltsv + 1, dimid_rlatv_south)
50
51 call NF95_DEF_VAR(ncid, "rlatu_north", NF90_FLOAT, dimid_rlatu_north, &
52 varid_rlatu_north)
53 call nf95_put_att(ncid, varid_rlatu_north, "units", "degrees_north")
54
55 call NF95_DEF_VAR(ncid, "rlatv_north", NF90_FLOAT, dimid_rlatv_north, &
56 varid_rlatv_north)
57 call nf95_put_att(ncid, varid_rlatv_north, "units", "degrees_north")
58
59 call NF95_DEF_VAR(ncid, "rlatu_south", NF90_FLOAT, dimid_rlatu_south, &
60 varid_rlatu_south)
61 call nf95_put_att(ncid, varid_rlatu_south, "units", "degrees_north")
62
63 call NF95_DEF_VAR(ncid, "rlatv_south", NF90_FLOAT, dimid_rlatv_south, &
64 varid_rlatv_south)
65 call nf95_put_att(ncid, varid_rlatv_south, "units", "degrees_north")
66
67
68 call NF95_DEF_VAR(ncid, "matriceun", NF90_FLOAT, &
69 (/dimid_longitude, dimid_longitude, dimid_rlatu_north/), varid_matriceun)
70 call NF95_DEF_VAR(ncid, "matrinvn", NF90_FLOAT, &
71 (/dimid_longitude, dimid_longitude, dimid_rlatu_north/), varid_matrinvn)
72 call NF95_DEF_VAR(ncid, "matricevn", NF90_FLOAT, &
73 (/dimid_longitude, dimid_longitude, dimid_rlatv_north/), varid_matricevn)
74 call NF95_DEF_VAR(ncid, "matriceus", NF90_FLOAT, &
75 (/dimid_longitude, dimid_longitude, dimid_rlatu_south/), varid_matriceus)
76 call NF95_DEF_VAR(ncid, "matrinvs", NF90_FLOAT, &
77 (/dimid_longitude, dimid_longitude, dimid_rlatu_south/), varid_matrinvs)
78 call NF95_DEF_VAR(ncid, "matricevs", NF90_FLOAT, &
79 (/dimid_longitude, dimid_longitude, dimid_rlatv_south/), varid_matricevs)
80
81 call NF95_ENDDEF(ncid)
82
83 call NF95_PUT_VAR(ncid, varid_rlatu_north, rlatu(2:jfiltnu) / pi * 180.)
84 call NF95_PUT_VAR(ncid, varid_rlatv_north, rlatv(:jfiltnv) / pi * 180.)
85 call NF95_PUT_VAR(ncid, varid_rlatu_south, rlatu(jfiltsu:jjm) / pi * 180.)
86 call NF95_PUT_VAR(ncid, varid_rlatv_south, rlatv(jfiltsv:) / pi * 180.)
87
88 call NF95_PUT_VAR(ncid, varid_matriceun, matriceun)
89 call NF95_PUT_VAR(ncid, varid_matrinvn, matrinvn)
90 call NF95_PUT_VAR(ncid, varid_matricevn, matricevn)
91 call NF95_PUT_VAR(ncid, varid_matriceus, matriceus)
92 call NF95_PUT_VAR(ncid, varid_matrinvs, matrinvs)
93 call NF95_PUT_VAR(ncid, varid_matricevs, matricevs)
94
95 call NF95_CLOSE(ncid)
96
97 end program test_inifilr

  ViewVC Help
Powered by ViewVC 1.1.21