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

Contents of /trunk/filtrez/test_inifilr.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 169 - (show annotations)
Mon Sep 14 17:13:16 2015 UTC (8 years, 8 months ago) by guez
Original Path: trunk/Sources/filtrez/test_inifilr.f
File size: 2923 byte(s)
In inifilr_hemisph, colat0 is necessarily >= 1. / rlamda(iim) (see
notes) so we simplify the definition of jfilt. No need to keep modfrst
values at other latitudes than the current one, and we can have one
loop on latitudes instead of two.

Just encapsulated transp into a module.

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 use nr_util, only: pi
15 use unit_nml_m, only: unit_nml
16 use read_serre_m, only: read_serre
17
18 IMPLICIT NONE
19
20 integer ncid, dimid_longitude
21 integer dimid_rlatu, dimid_rlatv
22 integer varid_matriceu, varid_matrinv, varid_matricev
23 integer varid_rlatu, varid_rlatv
24
25 !-----------------------------------------------------------------------
26
27 call new_unit(unit_nml)
28 open(unit_nml, file="used_namelists.txt", status="replace", action="write")
29 call read_serre
30
31 CALL fyhyp(rlatu, rlatv, rlatu2, yprimu2, rlatu1, yprimu1)
32 CALL fxhyp(xprimm025, rlonv, xprimv, rlonu, xprimu, xprimp025)
33 rlatu(1) = pi / 2.
34 rlatu(jjm + 1) = -rlatu(1)
35
36 CALL inifilr
37 close(unit_nml)
38
39 call nf95_create("test_inifilr_out.nc", NF90_CLOBBER, ncid)
40
41 call NF95_DEF_DIM(ncid, "longitude", iim, dimid_longitude)
42 call NF95_DEF_DIM(ncid, "rlatu", jfiltnu + jjm - jfiltsu, dimid_rlatu)
43 call NF95_DEF_DIM(ncid, "rlatv", jfiltnv + jjm - jfiltsv + 1, dimid_rlatv)
44
45 call NF95_DEF_VAR(ncid, "rlatu", NF90_FLOAT, dimid_rlatu, varid_rlatu)
46 call nf95_put_att(ncid, varid_rlatu, "units", "degrees_north")
47
48 call NF95_DEF_VAR(ncid, "rlatv", NF90_FLOAT, dimid_rlatv, varid_rlatv)
49 call nf95_put_att(ncid, varid_rlatv, "units", "degrees_north")
50
51 call NF95_DEF_VAR(ncid, "matriceu", NF90_FLOAT, &
52 (/dimid_longitude, dimid_longitude, dimid_rlatu/), varid_matriceu)
53 call NF95_DEF_VAR(ncid, "matrinv", NF90_FLOAT, &
54 (/dimid_longitude, dimid_longitude, dimid_rlatu/), varid_matrinv)
55 call NF95_DEF_VAR(ncid, "matricev", NF90_FLOAT, &
56 (/dimid_longitude, dimid_longitude, dimid_rlatv/), varid_matricev)
57
58 call NF95_ENDDEF(ncid)
59
60 call NF95_PUT_VAR(ncid, varid_rlatu, &
61 (/rlatu(2:jfiltnu), rlatu(jfiltsu:jjm)/) / pi * 180.)
62 call NF95_PUT_VAR(ncid, varid_rlatv, &
63 (/rlatv(:jfiltnv), rlatv(jfiltsv:)/) / pi * 180.)
64
65 call NF95_PUT_VAR(ncid, varid_matriceu, matriceun)
66 call NF95_PUT_VAR(ncid, varid_matrinv, matrinvn)
67 call NF95_PUT_VAR(ncid, varid_matricev, matricevn)
68 call NF95_PUT_VAR(ncid, varid_matriceu, matriceus, start = (/1, 1, jfiltnu/))
69 call NF95_PUT_VAR(ncid, varid_matrinv, matrinvs, start = (/1, 1, jfiltnu/))
70 call NF95_PUT_VAR(ncid, varid_matricev, matricevs, &
71 start = (/1, 1, jfiltnv + 1/))
72
73 call NF95_CLOSE(ncid)
74 print *, 'Created file "test_inifilr_out.nc".'
75
76 end program test_inifilr

  ViewVC Help
Powered by ViewVC 1.1.21