/[lmdze]/trunk/Sources/phylmd/phyredem0.f
ViewVC logotype

Contents of /trunk/Sources/phylmd/phyredem0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 191 - (show annotations)
Mon May 9 19:56:28 2016 UTC (8 years ago) by guez
File size: 7395 byte(s)
Extracted the call to read_comdissnew out of conf_gcm.

Made ok_instan a variable of module clesphys, itau_phy a variable of
module phyetat0_m, nid_ins a variable of module ini_histins_m, itap a
variable of new module time_phylmdz, so that histwrite_phy can be
called from any procedure without the need to cascade those variables
into that procedure. Made itau_w a variable of module time_phylmdz so
that it is computed only once per time step of physics.

Extracted variables of module clesphys which were in namelist
conf_phys_nml into their own namelist, clesphys_nml, and created
procedure read_clesphys reading clesphys_nml, to avoid side effect.

No need for double precision in procedure getso4fromfile. Assume there
is a single variable for the whole year in the NetCDF file instead of
one variable per month.

Created generic procedure histwrite_phy and removed procedure
write_histins, following LMDZ. histwrite_phy has only two arguments,
can be called from anywhere, and should manage the logic of writing or
not writing into various history files with various operations. So the
test on ok_instan goes inside histwrite_phy.

Test for raz_date in phyetat0 instead of physiq to avoid side effect.

Created procedure increment_itap to avoid side effect.

Removed unnecessary differences between procedures readsulfate and
readsulfate_pi.

1 module phyredem0_m
2
3 IMPLICIT NONE
4
5 INTEGER ncid_restartphy
6
7 contains
8
9 SUBROUTINE phyredem0(lmt_pas)
10
11 ! From phylmd/phyredem.F, version 1.3, 2005/05/25 13:10:09
12 ! Author: Z. X. Li (LMD/CNRS)
13 ! Date: 1993/08/18
14
15 ! Objet : \'ecriture de l'\'etat de d\'emarrage ou red\'emarrage
16 ! pour la physique
17
18 use conf_gcm_m, only: nday
19 USE dimphy, ONLY: klev, klon
20 USE dimsoil, ONLY: nsoilmx
21 USE indicesol, ONLY: nbsrf
22 USE netcdf, ONLY: nf90_clobber, nf90_global, nf90_float
23 USE netcdf95, ONLY: nf95_create, nf95_put_att, nf95_def_dim, &
24 nf95_def_var, nf95_enddef, nf95_put_var
25 use phyetat0_m, only: rlat, rlon, itau_phy
26
27 INTEGER, intent(in):: lmt_pas ! number of time steps of "physics" per day
28
29 ! Local:
30
31 INTEGER idim2, idim3, dimid_nbsrf, dimid_nsoilmx
32 integer varid, varid_rlon, varid_rlat
33
34 !------------------------------------------------------------
35
36 PRINT *, 'Call sequence information: phyredem0'
37 CALL nf95_create("restartphy.nc", nf90_clobber, ncid_restartphy)
38
39 call nf95_put_att(ncid_restartphy, nf90_global, 'title', &
40 'start file for the physics code')
41 call nf95_put_att(ncid_restartphy, nf90_global, "itau_phy", &
42 itau_phy + nday * lmt_pas)
43
44 call nf95_def_dim(ncid_restartphy, 'points_physiques', klon, idim2)
45 call nf95_def_dim(ncid_restartphy, 'klev', klev, idim3)
46 call nf95_def_dim(ncid_restartphy, 'nbsrf', nbsrf, dimid_nbsrf)
47 call nf95_def_dim(ncid_restartphy, 'nsoilmx', nsoilmx, dimid_nsoilmx)
48
49 call nf95_def_var(ncid_restartphy, 'longitude', nf90_float, idim2, &
50 varid_rlon)
51 call nf95_def_var(ncid_restartphy, 'latitude', nf90_float, idim2, &
52 varid_rlat)
53
54 call nf95_def_var(ncid_restartphy, 'masque', nf90_float, idim2, varid)
55 call nf95_put_att(ncid_restartphy, varid, 'title', 'masque terre mer')
56
57 ! Fractions de chaque sous-surface
58
59 call nf95_def_var(ncid_restartphy, 'FTER', nf90_float, idim2, varid)
60 call nf95_put_att(ncid_restartphy, varid, 'title', 'fraction de continent')
61
62 call nf95_def_var(ncid_restartphy, 'FLIC', nf90_float, idim2, varid)
63 call nf95_put_att(ncid_restartphy, varid, 'title', &
64 'fraction glace de terre')
65
66 call nf95_def_var(ncid_restartphy, 'FOCE', nf90_float, idim2, varid)
67 call nf95_put_att(ncid_restartphy, varid, 'title', 'fraction ocean')
68
69 call nf95_def_var(ncid_restartphy, 'FSIC', nf90_float, idim2, varid)
70 call nf95_put_att(ncid_restartphy, varid, 'title', 'fraction glace mer')
71
72 call nf95_def_var(ncid_restartphy, 'TS', nf90_float, &
73 (/idim2, dimid_nbsrf/), varid)
74 call nf95_put_att(ncid_restartphy, varid, 'title', 'surface temperature')
75
76 call nf95_def_var(ncid_restartphy, 'Tsoil', nf90_float, &
77 (/idim2, dimid_nsoilmx, dimid_nbsrf/), varid)
78 call nf95_put_att(ncid_restartphy, varid, 'title', 'soil temperature')
79
80 call nf95_def_var(ncid_restartphy, 'QS', nf90_float, &
81 (/idim2, dimid_nbsrf/), varid)
82 call nf95_put_att(ncid_restartphy, varid, 'title', 'Humidite de surface')
83
84 call nf95_def_var(ncid_restartphy, 'QSOL', nf90_float, idim2, varid)
85 call nf95_put_att(ncid_restartphy, varid, 'title', 'Eau dans le sol (mm)')
86
87 call nf95_def_var(ncid_restartphy, 'ALBE', nf90_float, &
88 (/idim2, dimid_nbsrf/), varid)
89 call nf95_put_att(ncid_restartphy, varid, 'title', 'albedo de surface')
90
91 call nf95_def_var(ncid_restartphy, 'EVAP', nf90_float, &
92 (/idim2, dimid_nbsrf/), varid)
93 call nf95_put_att(ncid_restartphy, varid, 'title', 'Evaporation de surface')
94
95 call nf95_def_var(ncid_restartphy, 'SNOW', nf90_float, &
96 (/idim2, dimid_nbsrf/), varid)
97 call nf95_put_att(ncid_restartphy, varid, 'title', 'Neige de surface')
98
99 call nf95_def_var(ncid_restartphy, 'RADS', nf90_float, idim2, varid)
100 call nf95_put_att(ncid_restartphy, varid, 'title', &
101 'Rayonnement net a la surface')
102
103 call nf95_def_var(ncid_restartphy, 'solsw', nf90_float, idim2, varid)
104 call nf95_put_att(ncid_restartphy, varid, 'title', &
105 'Rayonnement solaire a la surface')
106
107 call nf95_def_var(ncid_restartphy, 'sollw', nf90_float, idim2, varid)
108 call nf95_put_att(ncid_restartphy, varid, 'title', &
109 'Rayonnement IF a la surface')
110
111 call nf95_def_var(ncid_restartphy, 'fder', nf90_float, idim2, varid)
112 call nf95_put_att(ncid_restartphy, varid, 'title', 'Derive de flux')
113
114 call nf95_def_var(ncid_restartphy, 'rain_f', nf90_float, idim2, varid)
115 call nf95_put_att(ncid_restartphy, varid, 'title', 'precipitation liquide')
116
117 call nf95_def_var(ncid_restartphy, 'snow_f', nf90_float, idim2, varid)
118 call nf95_put_att(ncid_restartphy, varid, 'title', 'precipitation solide')
119
120 call nf95_def_var(ncid_restartphy, 'RUG', nf90_float, &
121 (/idim2, dimid_nbsrf/), varid)
122 call nf95_put_att(ncid_restartphy, varid, 'title', 'rugosite de surface')
123
124 call nf95_def_var(ncid_restartphy, 'AGESNO', nf90_float, &
125 (/idim2, dimid_nbsrf/), varid)
126 call nf95_put_att(ncid_restartphy, varid, 'title', &
127 'Age de la neige surface')
128
129 call nf95_def_var(ncid_restartphy, 'ZMEA', nf90_float, idim2, varid)
130 call nf95_def_var(ncid_restartphy, 'ZSTD', nf90_float, idim2, varid)
131 call nf95_def_var(ncid_restartphy, 'ZSIG', nf90_float, idim2, varid)
132 call nf95_def_var(ncid_restartphy, 'ZGAM', nf90_float, idim2, varid)
133 call nf95_def_var(ncid_restartphy, 'ZTHE', nf90_float, idim2, varid)
134 call nf95_def_var(ncid_restartphy, 'ZPIC', nf90_float, idim2, varid)
135 call nf95_def_var(ncid_restartphy, 'ZVAL', nf90_float, idim2, varid)
136 call nf95_def_var(ncid_restartphy, 'TANCIEN', nf90_float, &
137 (/idim2, idim3/), varid)
138 call nf95_def_var(ncid_restartphy, 'QANCIEN', nf90_float, &
139 (/idim2, idim3/), varid)
140
141 call nf95_def_var(ncid_restartphy, 'RUGMER', nf90_float, idim2, varid)
142 call nf95_put_att(ncid_restartphy, varid, 'title', &
143 'Longueur de rugosite sur mer')
144
145 call nf95_def_var(ncid_restartphy, 'CLWCON', nf90_float, idim2, varid)
146 call nf95_put_att(ncid_restartphy, varid, 'title', 'Eau liquide convective')
147
148 call nf95_def_var(ncid_restartphy, 'RNEBCON', nf90_float, idim2, varid)
149 call nf95_put_att(ncid_restartphy, varid, 'title', 'Nebulosite convective')
150
151 call nf95_def_var(ncid_restartphy, 'RATQS', nf90_float, idim2, varid)
152 call nf95_put_att(ncid_restartphy, varid, 'title', 'Ratqs')
153
154 call nf95_def_var(ncid_restartphy, 'RUNOFFLIC0', nf90_float, idim2, varid)
155 call nf95_put_att(ncid_restartphy, varid, 'title', 'Runofflic0')
156
157 call nf95_def_var(ncid_restartphy, 'sig1', nf90_float, (/idim2, idim3/), &
158 varid)
159 call nf95_put_att(ncid_restartphy, varid, 'long_name', &
160 'section adiabatic updraft')
161
162 call nf95_def_var(ncid_restartphy, 'w01', nf90_float, (/idim2, idim3/), &
163 varid)
164 call nf95_put_att(ncid_restartphy, varid, 'long_name', &
165 'vertical velocity within adiabatic updraft')
166
167 call nf95_def_var(ncid_restartphy, 'trs', nf90_float, idim2, varid)
168 call nf95_put_att(ncid_restartphy, varid, 'long_name', &
169 'radon concentation in soil')
170
171 call nf95_enddef(ncid_restartphy)
172
173 call nf95_put_var(ncid_restartphy, varid_rlon, rlon)
174 call nf95_put_var(ncid_restartphy, varid_rlat, rlat)
175
176 END SUBROUTINE phyredem0
177
178 end module phyredem0_m

  ViewVC Help
Powered by ViewVC 1.1.21