/[lmdze]/trunk/phylmd/phyredem0.f90
ViewVC logotype

Annotation of /trunk/phylmd/phyredem0.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 191 - (hide annotations)
Mon May 9 19:56:28 2016 UTC (8 years ago) by guez
Original Path: trunk/Sources/phylmd/phyredem0.f
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 guez 157 module phyredem0_m
2    
3     IMPLICIT NONE
4    
5     INTEGER ncid_restartphy
6    
7     contains
8    
9 guez 191 SUBROUTINE phyredem0(lmt_pas)
10 guez 157
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 guez 191 use phyetat0_m, only: rlat, rlon, itau_phy
26 guez 157
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