/[lmdze]/trunk/dyn3d/dynredem0.f
ViewVC logotype

Annotation of /trunk/dyn3d/dynredem0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 140 - (hide annotations)
Fri Jun 5 18:58:06 2015 UTC (8 years, 11 months ago) by guez
Original Path: trunk/Sources/dyn3d/dynredem0.f
File size: 8294 byte(s)
Changed unit of variables lat_min_guide and lat_max_guide from module
conf_guide_m from degrees to rad. Then we do not have to convert the
whole array rlat from rad to degrees in SUBROUTINE tau2alpha.

Removed some useless computations in inigeom.

Removed module coefils. Moved variables sddv, unsddv, sddu, unsddu,
eignfnu, eignfnv of module coefils to module inifgn_m. Downgraded
variables coefilu, coefilu2, coefilv, coefilv2, modfrstu, modfrstv of
module coefils to local variables of SUBROUTINE inifilr.

Write and read a 3-dimensional variable Tsoil in restartphy.nc and
startphy.nc instead of multiple variables for the different
subs-urfaces and soil layers. This does not allow any longer to
provide only the surface value in startphy.nc and spread it to other
layers. Instead, if necessary, pre-process the file startphy.nc to
spread the surface value.

1 guez 18 MODULE dynredem0_m
2 guez 3
3 guez 7 IMPLICIT NONE
4 guez 3
5 guez 18 CONTAINS
6 guez 3
7 guez 7 SUBROUTINE dynredem0(fichnom, iday_end, phis)
8 guez 3
9 guez 138 ! From dyn3d/dynredem.F, version 1.2, 2004/06/22 11:45:30
10     ! \'Ecriture du fichier de red\'emarrage au format NetCDF (initialisation)
11 guez 3
12 guez 62 USE comconst, ONLY: cpp, daysec, dtvr, g, kappa, omeg, rad
13     USE dimens_m, ONLY: iim, jjm, llm, nqmx
14 guez 92 USE disvert_m, ONLY: ap, bp, pa, preff, presnivs
15 guez 139 use dynetat0_m, only: day_ref, annee_ref, clat, clon, dzoomx, dzoomy, &
16     grossismx, grossismy, taux, tauy, rlatu, rlatv, rlonu, rlonv, rlatu1, &
17     rlatu2, yprimu1, yprimu2, xprimp025, xprimm025, xprimu, xprimv
18 guez 62 USE ener, ONLY: ang0, etot0, ptot0, stot0, ztot0
19     USE iniadvtrac_m, ONLY: tname, ttext
20 guez 92 USE ju2ymds_m, ONLY: ju2ymds
21     USE netcdf, ONLY: nf90_clobber, nf90_float, nf90_global, nf90_unlimited
22 guez 62 USE netcdf95, ONLY: nf95_close, nf95_create, nf95_def_dim, nf95_def_var, &
23     nf95_enddef, nf95_inq_varid, nf95_put_att, nf95_put_var
24     USE paramet_m, ONLY: iip1, jjp1, llmp1
25 guez 92 use ymds2ju_m, only: ymds2ju
26 guez 5
27 guez 62 CHARACTER(len=*), INTENT(IN):: fichnom
28     INTEGER, INTENT(IN):: iday_end
29     REAL, INTENT(IN):: phis(:, :)
30 guez 5
31 guez 62 ! Local:
32 guez 3
33 guez 139 INTEGER iq
34 guez 22 INTEGER, PARAMETER:: length = 100
35 guez 138 REAL tab_cntrl(length) ! tableau des param\`etres du run
36 guez 5
37 guez 116 ! Pour NetCDF :
38 guez 62 INTEGER idim_index
39     INTEGER idim_rlonu, idim_rlonv, idim_rlatu, idim_rlatv
40     INTEGER idim_s, idim_sig
41 guez 128 INTEGER dimid_temps
42 guez 62 INTEGER ncid, varid
43 guez 140 integer varid_controle, varid_rlonu, varid_rlatu, varid_rlonv, varid_rlatv
44     integer varid_xprimu, varid_xprimv, varid_xprimm025, varid_xprimp025
45     integer varid_rlatu1, varid_rlatu2, varid_yprimu1, varid_yprimu2, varid_ap
46     integer varid_bp, varid_presnivs, varid_phisinit
47 guez 3
48 guez 62 REAL zjulian, hours
49     INTEGER yyears0, jjour0, mmois0
50     CHARACTER(len=30) unites
51 guez 3
52 guez 7 !-----------------------------------------------------------------------
53 guez 3
54 guez 18 PRINT *, 'Call sequence information: dynredem0'
55 guez 3
56 guez 23 CALL ymds2ju(annee_ref, 1, iday_end, 0., zjulian)
57 guez 18 CALL ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
58 guez 5
59 guez 129 tab_cntrl(1) = iim
60     tab_cntrl(2) = jjm
61     tab_cntrl(3) = llm
62     tab_cntrl(4) = day_ref
63     tab_cntrl(5) = annee_ref
64 guez 18 tab_cntrl(6) = rad
65     tab_cntrl(7) = omeg
66     tab_cntrl(8) = g
67     tab_cntrl(9) = cpp
68 guez 7 tab_cntrl(10) = kappa
69     tab_cntrl(11) = daysec
70     tab_cntrl(12) = dtvr
71     tab_cntrl(13) = etot0
72     tab_cntrl(14) = ptot0
73     tab_cntrl(15) = ztot0
74     tab_cntrl(16) = stot0
75     tab_cntrl(17) = ang0
76     tab_cntrl(18) = pa
77     tab_cntrl(19) = preff
78 guez 5
79 guez 138 ! Param\`etres pour le zoom :
80 guez 18 tab_cntrl(20) = clon
81     tab_cntrl(21) = clat
82     tab_cntrl(22) = grossismx
83     tab_cntrl(23) = grossismy
84 guez 113 tab_cntrl(24) = 1.
85     tab_cntrl(25) = dzoomx
86     tab_cntrl(26) = dzoomy
87     tab_cntrl(27) = 0.
88     tab_cntrl(28) = taux
89     tab_cntrl(29) = tauy
90 guez 5
91 guez 129 tab_cntrl(30) = iday_end
92 guez 138 tab_cntrl(31:) = 0.
93 guez 5
94 guez 39 CALL nf95_create(fichnom, nf90_clobber, ncid)
95     CALL nf95_put_att(ncid, nf90_global, 'title', &
96 guez 138 'start file for the dynamics code')
97 guez 5
98 guez 7 ! Definir les dimensions du fichiers:
99 guez 5
100 guez 39 CALL nf95_def_dim(ncid, 'index', length, idim_index)
101     CALL nf95_def_dim(ncid, 'rlonu', iip1, idim_rlonu)
102     CALL nf95_def_dim(ncid, 'rlatu', jjp1, idim_rlatu)
103     CALL nf95_def_dim(ncid, 'rlonv', iip1, idim_rlonv)
104     CALL nf95_def_dim(ncid, 'rlatv', jjm, idim_rlatv)
105     CALL nf95_def_dim(ncid, 'sigs', llm, idim_s)
106     CALL nf95_def_dim(ncid, 'sig', llmp1, idim_sig)
107 guez 128 CALL nf95_def_dim(ncid, 'temps', nf90_unlimited, dimid_temps)
108 guez 5
109 guez 7 ! Definir et enregistrer certains champs invariants:
110 guez 5
111 guez 140 CALL nf95_def_var(ncid, 'controle', nf90_float, idim_index, varid_controle)
112     CALL nf95_put_att(ncid, varid_controle, 'title', 'Parametres de controle')
113 guez 5
114 guez 140 CALL nf95_def_var(ncid, 'rlonu', nf90_float, idim_rlonu, varid_rlonu)
115     CALL nf95_put_att(ncid, varid_rlonu, 'title', 'Longitudes des points U')
116 guez 5
117 guez 140 CALL nf95_def_var(ncid, 'rlatu', nf90_float, idim_rlatu, varid_rlatu)
118     CALL nf95_put_att(ncid, varid_rlatu, 'title', 'Latitudes des points U')
119 guez 5
120 guez 140 CALL nf95_def_var(ncid, 'rlonv', nf90_float, idim_rlonv, varid_rlonv)
121     CALL nf95_put_att(ncid, varid_rlonv, 'title', 'Longitudes des points V')
122 guez 5
123 guez 140 CALL nf95_def_var(ncid, 'rlatv', nf90_float, idim_rlatv, varid_rlatv)
124     CALL nf95_put_att(ncid, varid_rlatv, 'title', 'Latitudes des points V')
125 guez 5
126 guez 140 CALL nf95_def_var(ncid, 'xprimu', nf90_float, idim_rlonu, varid_xprimu)
127     CALL nf95_put_att(ncid, varid_xprimu, 'title', 'dx / dX aux points u')
128 guez 139
129 guez 140 CALL nf95_def_var(ncid, 'xprimv', nf90_float, idim_rlonv, varid_xprimv)
130     CALL nf95_put_att(ncid, varid_xprimv, 'title', 'dx / dX aux points v')
131 guez 139
132 guez 140 CALL nf95_def_var(ncid, 'xprimm025', nf90_float, idim_rlonu, &
133     varid_xprimm025)
134     CALL nf95_def_var(ncid, 'xprimp025', nf90_float, idim_rlonu, &
135     varid_xprimp025)
136 guez 139
137 guez 140 CALL nf95_def_var(ncid, 'rlatu1', nf90_float, idim_rlatv, varid_rlatu1)
138     CALL nf95_def_var(ncid, 'rlatu2', nf90_float, idim_rlatv, varid_rlatu2)
139     CALL nf95_def_var(ncid, 'yprimu1', nf90_float, idim_rlatv, varid_yprimu1)
140     CALL nf95_def_var(ncid, 'yprimu2', nf90_float, idim_rlatv, varid_yprimu2)
141 guez 139
142 guez 140 CALL nf95_def_var(ncid, 'ap', nf90_float, idim_sig, varid_ap)
143     CALL nf95_put_att(ncid, varid_ap, 'title', 'Coefficient A pour hybride')
144 guez 5
145 guez 140 CALL nf95_def_var(ncid, 'bp', nf90_float, idim_sig, varid_bp)
146     CALL nf95_put_att(ncid, varid_bp, 'title', 'Coefficient B pour hybride')
147 guez 5
148 guez 140 CALL nf95_def_var(ncid, 'presnivs', nf90_float, idim_s, varid_presnivs)
149 guez 5
150 guez 7 ! Geopentiel au sol:
151 guez 5
152 guez 62 CALL nf95_def_var(ncid, 'phisinit', nf90_float, &
153 guez 140 (/idim_rlonv, idim_rlatu/), varid_phisinit)
154     CALL nf95_put_att(ncid, varid_phisinit, 'title', 'Geopotentiel au sol')
155 guez 5
156 guez 7 ! Definir les variables pour pouvoir les enregistrer plus tard:
157 guez 3
158 guez 128 CALL nf95_def_var(ncid, 'temps', nf90_float, dimid_temps, varid)
159 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Temps de simulation')
160 guez 128 WRITE(unites, fmt = 200) yyears0, mmois0, jjour0
161 guez 18 200 FORMAT ('days since ', I4, '-', I2.2, '-', I2.2, ' 00:00:00')
162 guez 39 CALL nf95_put_att(ncid, varid, 'units', unites)
163 guez 7
164 guez 62 CALL nf95_def_var(ncid, 'ucov', nf90_float, &
165 guez 128 (/idim_rlonu, idim_rlatu, idim_s, dimid_temps/), varid)
166 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Vitesse U')
167 guez 5
168 guez 62 CALL nf95_def_var(ncid, 'vcov', nf90_float, &
169 guez 128 (/idim_rlonv, idim_rlatv, idim_s, dimid_temps/), varid)
170 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Vitesse V')
171 guez 5
172 guez 62 CALL nf95_def_var(ncid, 'teta', nf90_float, &
173 guez 128 (/idim_rlonv, idim_rlatu, idim_s, dimid_temps/), varid)
174 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Temperature')
175 guez 5
176 guez 18 DO iq = 1, nqmx
177 guez 62 CALL nf95_def_var(ncid, tname(iq), nf90_float, &
178 guez 128 (/idim_rlonv, idim_rlatu, idim_s, dimid_temps/), varid)
179 guez 39 CALL nf95_put_att(ncid, varid, 'title', ttext(iq))
180 guez 18 END DO
181 guez 5
182 guez 62 CALL nf95_def_var(ncid, 'masse', nf90_float, &
183 guez 128 (/idim_rlonv, idim_rlatu, idim_s, dimid_temps/), varid)
184 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'C est quoi ?')
185 guez 5
186 guez 62 CALL nf95_def_var(ncid, 'ps', nf90_float, &
187 guez 128 (/idim_rlonv, idim_rlatu, dimid_temps/), varid)
188 guez 39 CALL nf95_put_att(ncid, varid, 'title', 'Pression au sol')
189 guez 5
190 guez 39 CALL nf95_enddef(ncid)
191 guez 3
192 guez 140 CALL nf95_put_var(ncid, varid_controle, tab_cntrl)
193     CALL nf95_put_var(ncid, varid_rlonu, rlonu)
194     CALL nf95_put_var(ncid, varid_rlatu, rlatu)
195     CALL nf95_put_var(ncid, varid_rlonv, rlonv)
196     CALL nf95_put_var(ncid, varid_rlatv, rlatv)
197     CALL nf95_put_var(ncid, varid_xprimu, xprimu)
198     CALL nf95_put_var(ncid, varid_xprimv, xprimv)
199     CALL nf95_put_var(ncid, varid_xprimm025, xprimm025)
200     CALL nf95_put_var(ncid, varid_xprimp025, xprimp025)
201     call NF95_PUT_VAR(ncid, varid_rlatu1, rlatu1)
202     call NF95_PUT_VAR(ncid, varid_rlatu2, rlatu2)
203     CALL nf95_put_var(ncid, varid_yprimu1, yprimu1)
204     CALL nf95_put_var(ncid, varid_yprimu2, yprimu2)
205     CALL nf95_put_var(ncid, varid_ap, ap)
206     CALL nf95_put_var(ncid, varid_bp, bp)
207     CALL nf95_put_var(ncid, varid_presnivs, presnivs)
208     CALL nf95_put_var(ncid, varid_phisinit, phis)
209 guez 3
210 guez 139 CALL nf95_close(ncid)
211 guez 18
212     PRINT *, 'iim, jjm, llm, iday_end', iim, jjm, llm, iday_end
213     PRINT *, 'rad, omeg, g, cpp, kappa', rad, omeg, g, cpp, kappa
214    
215 guez 7 END SUBROUTINE dynredem0
216    
217 guez 18 END MODULE dynredem0_m

  ViewVC Help
Powered by ViewVC 1.1.21