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

Annotation of /trunk/filtrez/test_inifilr.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 167 - (hide annotations)
Mon Aug 24 16:30:33 2015 UTC (8 years, 9 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 guez 167 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