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

Annotation of /trunk/filtrez/test_inifilr.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 169 - (hide 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 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     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 guez 168 integer dimid_rlatu, dimid_rlatv
22     integer varid_matriceu, varid_matrinv, varid_matricev
23     integer varid_rlatu, varid_rlatv
24 guez 167
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 guez 168 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 guez 167
45 guez 168 call NF95_DEF_VAR(ncid, "rlatu", NF90_FLOAT, dimid_rlatu, varid_rlatu)
46     call nf95_put_att(ncid, varid_rlatu, "units", "degrees_north")
47 guez 167
48 guez 168 call NF95_DEF_VAR(ncid, "rlatv", NF90_FLOAT, dimid_rlatv, varid_rlatv)
49     call nf95_put_att(ncid, varid_rlatv, "units", "degrees_north")
50 guez 167
51 guez 168 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 guez 167
58     call NF95_ENDDEF(ncid)
59    
60 guez 168 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 guez 167
65 guez 168 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 guez 167
73     call NF95_CLOSE(ncid)
74 guez 169 print *, 'Created file "test_inifilr_out.nc".'
75 guez 167
76     end program test_inifilr

  ViewVC Help
Powered by ViewVC 1.1.21