source: palm/trunk/SOURCE/write_3d_binary.f90 @ 75

Last change on this file since 75 was 75, checked in by raasch, 17 years ago

preliminary update for changes concerning non-cyclic boundary conditions

  • Property svn:keywords set to Id
File size: 11.4 KB
RevLine 
[1]1 SUBROUTINE write_3d_binary
2
3!------------------------------------------------------------------------------!
4! Actual revisions:
5! -----------------
[73]6! +precipitation_amount, precipitation_rate_av, rif_wall, u_m_l, u_m_r, etc.,
[75]7! z0_av, moisture renamed humidity
[1]8!
9! Former revisions:
10! -----------------
[3]11! $Id: write_3d_binary.f90 75 2007-03-22 09:54:05Z raasch $
[39]12!
13! 19 2007-02-23 04:53:48Z raasch
14! +qswst, qswst_m, tswst, tswst_m
15!
[3]16! RCS Log replace by Id keyword, revision history cleaned up
17!
[1]18! Revision 1.21  2006/08/04 15:05:11  raasch
19! +iran, iran_part
20!
21! Revision 1.1  1998/03/18 20:20:21  raasch
22! Initial revision
23!
24!
25! Description:
26! ------------
27! Binary output of variables and arrays for restarts.
28!------------------------------------------------------------------------------!
29
30    USE arrays_3d
31    USE averaging
[72]32    USE cloud_parameters
[1]33    USE control_parameters
34    USE cpulog
35    USE indices
36    USE interfaces
37    USE particle_attributes
38    USE pegrid
39    USE profil_parameter
40    USE random_function_mod
41    USE statistics
42
43    IMPLICIT NONE
44
45    CHARACTER (LEN=10) ::  binary_version
46
47
48    CALL cpu_log( log_point(22), 'write_3d_binary', 'start' )
49
50    CALL check_open( 14 )
51   
52!
53!-- Write control parameters and other variables for restart.
54    CALL write_var_list
55
56!
57!-- Write arrays.
58    binary_version = '3.0'
59
60    WRITE ( 14 )  binary_version
61
62    WRITE ( 14 )  numprocs, myid, nxl, nxr, nys, nyn, nzb, nzt
63
64!
65!-- Attention: After changes to the following output commands the version number
66!-- ---------  of the variable binary_version must be changed!
67!--            Also, the list of arrays to be read in read_3d_binary must be
68!--            adjusted accordingly.
69
70    WRITE ( 14 )  'e                   ';  WRITE ( 14 )  e
71    IF ( ALLOCATED( e_av ) )  THEN
72       WRITE ( 14 )  'e_av                ';  WRITE ( 14 )  e_av
73    ENDIF
74    WRITE ( 14 )  'e_m                 ';  WRITE ( 14 )  e_m
75    WRITE ( 14 )  'iran                ';  WRITE ( 14 )  iran, iran_part
76    WRITE ( 14 )  'kh                  ';  WRITE ( 14 )  kh
77    IF ( timestep_scheme(1:5) /= 'runge' )  THEN
78       WRITE ( 14 )  'kh_m                ';  WRITE ( 14 )  kh_m
79    ENDIF
80    WRITE ( 14 )  'km                  ';  WRITE ( 14 )  km
81    IF ( timestep_scheme(1:5) /= 'runge' )  THEN
82       WRITE ( 14 )  'km_m                ';  WRITE ( 14 )  km_m
83    ENDIF
84    IF ( ALLOCATED( lwp_av ) )  THEN
85       WRITE ( 14 )  'lwp_av              ';  WRITE ( 14 )  lwp_av
86    ENDIF
87    WRITE ( 14 )  'p                   ';  WRITE ( 14 )  p
88    IF ( ALLOCATED( p_av ) )  THEN
89       WRITE ( 14 )  'p_av                ';  WRITE ( 14 )  p_av
90    ENDIF
91    IF ( ALLOCATED( pc_av ) )  THEN
92       WRITE ( 14 )  'pc_av               ';  WRITE ( 14 )  pc_av
93    ENDIF
94    IF ( ALLOCATED( pr_av ) )  THEN
95       WRITE ( 14 )  'pr_av               ';  WRITE ( 14 )  pr_av
96    ENDIF
[72]97    IF ( ALLOCATED( precipitation_amount ) )  THEN
98       WRITE ( 14 )  'precipitation_amount';  WRITE ( 14 )  precipitation_amount
99    ENDIF
100    IF ( ALLOCATED( precipitation_rate_av ) )  THEN
101       WRITE ( 14 )  'precipitation_rate_a';  WRITE ( 14 )  &
102                                                           precipitation_rate_av
103    ENDIF
[1]104    WRITE ( 14 )  'pt                  ';  WRITE ( 14 )  pt
105    IF ( ALLOCATED( pt_av ) )  THEN
106       WRITE ( 14 )  'pt_av               ';  WRITE ( 14 )  pt_av
107    ENDIF
108    WRITE ( 14 )  'pt_m                ';  WRITE ( 14 )  pt_m
[75]109    IF ( humidity  .OR. passive_scalar )  THEN
[1]110       WRITE ( 14 )  'q                   ';  WRITE ( 14 )  q 
111       IF ( ALLOCATED( q_av ) )  THEN
112          WRITE ( 14 )  'q_av                ';  WRITE ( 14 )  q_av
113       ENDIF
114       WRITE ( 14 )  'q_m                 ';  WRITE ( 14 ) q_m
115       IF ( cloud_physics ) THEN
116          WRITE ( 14 )  'ql                  ';  WRITE ( 14 ) ql
117          IF ( ALLOCATED( ql_av ) )  THEN
118             WRITE ( 14 )  'ql_av               ';  WRITE ( 14 )  ql_av
119          ENDIF
120       ENDIF
121       WRITE ( 14 )  'qs                  ';  WRITE ( 14 ) qs
122       WRITE ( 14 )  'qsws                ';  WRITE ( 14 ) qsws
123       IF ( timestep_scheme(1:5) /= 'runge' )  THEN
124          WRITE ( 14 )  'qsws_m              ';  WRITE ( 14 ) qsws_m
125       ENDIF
[19]126       WRITE ( 14 )  'qswst               ';  WRITE ( 14 ) qswst
127       IF ( timestep_scheme(1:5) /= 'runge' )  THEN
128          WRITE ( 14 )  'qswst_m             ';  WRITE ( 14 ) qswst_m
129       ENDIF
[1]130    ENDIF
131    IF ( ALLOCATED( ql_c_av ) )  THEN
132       WRITE ( 14 )  'ql_c_av             ';  WRITE ( 14 )  ql_c_av
133    ENDIF
134    IF ( ALLOCATED( ql_v_av ) )  THEN
135       WRITE ( 14 )  'ql_v_av             ';  WRITE ( 14 )  ql_v_av
136    ENDIF
137    IF ( ALLOCATED( ql_vp_av ) )  THEN
138       WRITE ( 14 )  'ql_vp_av            ';  WRITE ( 14 )  ql_vp_av
139    ENDIF
140    IF ( ALLOCATED( qv_av ) )  THEN
141       WRITE ( 14 )  'qv_av               ';  WRITE ( 14 )  qv_av
142    ENDIF
143    WRITE ( 14 )  'random_iv           ';  WRITE ( 14 )  random_iv
144                                           WRITE ( 14 )  random_iy
145    WRITE ( 14 )  'rif                 ';  WRITE ( 14 )  rif
146    IF ( timestep_scheme(1:5) /= 'runge' )  THEN
147       WRITE ( 14 )  'rif_m               ';  WRITE ( 14 )  rif_m
148    ENDIF
[51]149    IF ( topography /= 'flat' )  THEN
150       WRITE ( 14 )  'rif_wall            ';  WRITE ( 14 )  rif_wall
151    ENDIF
[1]152    IF ( ALLOCATED( s_av ) )  THEN
153       WRITE ( 14 )  's_av                ';  WRITE ( 14 )  s_av
154    ENDIF
155    WRITE ( 14 )  'shf                 ';  WRITE ( 14 )  shf
156    IF ( timestep_scheme(1:5) /= 'runge' )  THEN
157       WRITE ( 14 )  'shf_m               ';  WRITE ( 14 )  shf_m
158    ENDIF
159    WRITE ( 14 )  'ts                  ';  WRITE ( 14 )  ts
160    IF ( ALLOCATED( ts_av ) )  THEN
161       WRITE ( 14 )  'ts_av               ';  WRITE ( 14 )  ts_av
162    ENDIF
[19]163    WRITE ( 14 )  'tswst               ';  WRITE ( 14 )  tswst
164    IF ( timestep_scheme(1:5) /= 'runge' )  THEN
165       WRITE ( 14 )  'tswst_m             ';  WRITE ( 14 )  tswst_m
166    ENDIF
[1]167    WRITE ( 14 )  'u                   ';  WRITE ( 14 )  u
168    IF ( ALLOCATED( u_av ) )  THEN
169       WRITE ( 14 )  'u_av                ';  WRITE ( 14 )  u_av
170    ENDIF
171    WRITE ( 14 )  'u_m                 ';  WRITE ( 14 )  u_m
[73]172    IF ( ALLOCATED( u_m_l ) )  THEN
173       WRITE ( 14 )  'u_m_l               ';  WRITE ( 14 )  u_m_l
174    ENDIF
175    IF ( ALLOCATED( u_m_n ) )  THEN
176       WRITE ( 14 )  'u_m_n               ';  WRITE ( 14 )  u_m_n
177    ENDIF
178    IF ( ALLOCATED( u_m_r ) )  THEN
179       WRITE ( 14 )  'u_m_r               ';  WRITE ( 14 )  u_m_r
180    ENDIF
181    IF ( ALLOCATED( u_m_s ) )  THEN
182       WRITE ( 14 )  'u_m_s               ';  WRITE ( 14 )  u_m_s
183    ENDIF
[1]184    WRITE ( 14 )  'us                  ';  WRITE ( 14 )  us
185    WRITE ( 14 )  'usws                ';  WRITE ( 14 )  usws
186    IF ( timestep_scheme(1:5) /= 'runge' )  THEN
187       WRITE ( 14 )  'usws_m              ';  WRITE ( 14 )  usws_m
188    ENDIF
189    IF ( ALLOCATED( us_av ) )  THEN
190       WRITE ( 14 )  'us_av               ';  WRITE ( 14 )  us_av
191    ENDIF
192    WRITE ( 14 )  'v                   ';  WRITE ( 14 )  v
193    WRITE ( 14 )  'volume_flow_area    ';  WRITE ( 14 )  volume_flow_area
194    WRITE ( 14 )  'volume_flow_initial ';  WRITE ( 14 )  volume_flow_initial
195    IF ( ALLOCATED( v_av ) )  THEN
196       WRITE ( 14 )  'v_av                ';  WRITE ( 14 )  v_av
197    ENDIF
198    WRITE ( 14 )  'v_m                 ';  WRITE ( 14 )  v_m
[73]199    IF ( ALLOCATED( v_m_l ) )  THEN
200       WRITE ( 14 )  'v_m_l               ';  WRITE ( 14 )  v_m_l
201    ENDIF
202    IF ( ALLOCATED( v_m_n ) )  THEN
203       WRITE ( 14 )  'v_m_n               ';  WRITE ( 14 )  v_m_n
204    ENDIF
205    IF ( ALLOCATED( v_m_r ) )  THEN
206       WRITE ( 14 )  'v_m_r               ';  WRITE ( 14 )  v_m_r
207    ENDIF
208    IF ( ALLOCATED( v_m_s ) )  THEN
209       WRITE ( 14 )  'v_m_s               ';  WRITE ( 14 )  v_m_s
210    ENDIF
[75]211    IF ( humidity )  THEN
[1]212       WRITE ( 14 )  'vpt                 ';  WRITE ( 14 )  vpt
213       IF ( ALLOCATED( vpt_av ) )  THEN
214          WRITE ( 14 )  'vpt_av              ';  WRITE ( 14 )  vpt_av
215       ENDIF
216       IF ( timestep_scheme(1:5) /= 'runge' )  THEN
217          WRITE ( 14 )  'vpt_m               ';  WRITE ( 14 )  vpt_m
218       ENDIF
219    ENDIF
220    WRITE ( 14 )  'vsws                ';  WRITE ( 14 )  vsws
221    IF ( timestep_scheme(1:5) /= 'runge' )  THEN
222       WRITE ( 14 )  'vsws_m              ';  WRITE ( 14 )  vsws_m
223    ENDIF
224    WRITE ( 14 )  'w                   ';  WRITE ( 14 )  w
225    IF ( ALLOCATED( w_av ) )  THEN
226       WRITE ( 14 )  'w_av                ';  WRITE ( 14 )  w_av
227    ENDIF
228    WRITE ( 14 )  'w_m                 ';  WRITE ( 14 )  w_m
[73]229    IF ( ALLOCATED( w_m_l ) )  THEN
230       WRITE ( 14 )  'w_m_l               ';  WRITE ( 14 )  w_m_l
231    ENDIF
232    IF ( ALLOCATED( w_m_n ) )  THEN
233       WRITE ( 14 )  'w_m_n               ';  WRITE ( 14 )  w_m_n
234    ENDIF
235    IF ( ALLOCATED( w_m_r ) )  THEN
236       WRITE ( 14 )  'w_m_r               ';  WRITE ( 14 )  w_m_r
237    ENDIF
238    IF ( ALLOCATED( w_m_s ) )  THEN
239       WRITE ( 14 )  'w_m_s               ';  WRITE ( 14 )  w_m_s
240    ENDIF
[1]241    WRITE ( 14 )  'z0                  ';  WRITE ( 14 )  z0
[72]242    IF ( ALLOCATED( z0_av ) )  THEN
243       WRITE ( 14 )  'z0_av               ';  WRITE ( 14 )  z0_av
244    ENDIF
[1]245
246    WRITE ( 14 )  'cross_linecolors    ';  WRITE ( 14 )  cross_linecolors
247    WRITE ( 14 )  'cross_linestyles    ';  WRITE ( 14 )  cross_linestyles
248    WRITE ( 14 )  'cross_normalized_x  ';  WRITE ( 14 )  cross_normalized_x
249    WRITE ( 14 )  'cross_normalized_y  ';  WRITE ( 14 )  cross_normalized_y
250    WRITE ( 14 )  'cross_normx_factor  ';  WRITE ( 14 )  cross_normx_factor
251    WRITE ( 14 )  'cross_normy_factor  ';  WRITE ( 14 )  cross_normy_factor
252    WRITE ( 14 )  'cross_profiles      ';  WRITE ( 14 )  cross_profiles
253    WRITE ( 14 )  'cross_profile_n_coun'
254                  WRITE ( 14 )  cross_profile_number_count
255    WRITE ( 14 )  'cross_profile_number';  WRITE ( 14 )  cross_profile_numbers
256    WRITE ( 14 )  'cross_uxmax         ';  WRITE ( 14 )  cross_uxmax
257    WRITE ( 14 )  'cross_uxmax_computed';  WRITE ( 14 )  cross_uxmax_computed
258    WRITE ( 14 )  'cross_uxmax_normaliz';  WRITE ( 14 )  cross_uxmax_normalized
259    WRITE ( 14 )  'cross_uxmax_norm_com'
260                  WRITE ( 14 )  cross_uxmax_normalized_computed
261    WRITE ( 14 )  'cross_uxmin         ';  WRITE ( 14 )  cross_uxmin
262    WRITE ( 14 )  'cross_uxmin_computed';  WRITE ( 14 )  cross_uxmin_computed
263    WRITE ( 14 )  'cross_uxmin_normaliz';  WRITE ( 14 )  cross_uxmin_normalized
264    WRITE ( 14 )  'cross_uxmin_norm_com'
265                  WRITE ( 14 )  cross_uxmin_normalized_computed
266    WRITE ( 14 )  'cross_uymax         ';  WRITE ( 14 )  cross_uymax
267    WRITE ( 14 )  'cross_uymin         ';  WRITE ( 14 )  cross_uymin
268    WRITE ( 14 )  'cross_xtext         ';  WRITE ( 14 )  cross_xtext
269    WRITE ( 14 )  'dopr_crossindex     ';  WRITE ( 14 )  dopr_crossindex
270    WRITE ( 14 )  'dopr_time_count     ';  WRITE ( 14 )  dopr_time_count
271    WRITE ( 14 )  'hom_sum             ';  WRITE ( 14 )  hom_sum
272    WRITE ( 14 )  'profile_columns     ';  WRITE ( 14 )  profile_columns
273    WRITE ( 14 )  'profile_number      ';  WRITE ( 14 )  profile_number
274    WRITE ( 14 )  'profile_rows        ';  WRITE ( 14 )  profile_rows
275    IF ( ALLOCATED( spectrum_x ) )  THEN
276       WRITE ( 14 )  'spectrum_x          ';  WRITE ( 14 )  spectrum_x
277       WRITE ( 14 )  'spectrum_y          ';  WRITE ( 14 )  spectrum_y
278    ENDIF
279
280!
281!-- Write end label. Unit 14 is closed in the main program.
282    WRITE ( 14 )  '*** end ***         '
283
284
285    CALL cpu_log( log_point(22), 'write_3d_binary', 'stop' )
286
287
288 END SUBROUTINE write_3d_binary
Note: See TracBrowser for help on using the repository browser.