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 |