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

Annotation of /trunk/filtrez/test_inifilr.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 168 - (hide annotations)
Wed Sep 9 10:41:47 2015 UTC (8 years, 8 months ago) by guez
Original Path: trunk/Sources/filtrez/test_inifilr.f
File size: 2874 byte(s)
In order to be able to choose finer resolutions, set large memory
model in compiler options and use dynamic libraries.

Variables rlatd, rlond, cuphy and cvphy of module comgeomphy were
never used. (In LMDZ, they are used only for Orchid.)

There is a bug in PGI Fortran 13.10 that does not accept the
combination of forall, pack and spread in regr_pr_av and
regr_pr_int. In order to circumvent this bug, created the function
gr_dyn_phy.

In program test_inifilr, use a single latitude coordinate for north
and south.

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    
75     end program test_inifilr

  ViewVC Help
Powered by ViewVC 1.1.21