source: palm/trunk/SOURCE/read_3d_binary.f90 @ 1973

Last change on this file since 1973 was 1973, checked in by maronga, 8 years ago

last commit documented

  • Property svn:keywords set to Id
File size: 58.3 KB
RevLine 
[1682]1!> @file read_3d_binary.f90
[1036]2!--------------------------------------------------------------------------------!
3! This file is part of PALM.
4!
5! PALM is free software: you can redistribute it and/or modify it under the terms
6! of the GNU General Public License as published by the Free Software Foundation,
7! either version 3 of the License, or (at your option) any later version.
8!
9! PALM is distributed in the hope that it will be useful, but WITHOUT ANY
10! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11! A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
12!
13! You should have received a copy of the GNU General Public License along with
14! PALM. If not, see <http://www.gnu.org/licenses/>.
15!
[1818]16! Copyright 1997-2016 Leibniz Universitaet Hannover
[1036]17!--------------------------------------------------------------------------------!
18!
[257]19! Current revisions:
[1]20! -----------------
[1834]21!
[1973]22!
[1321]23! Former revisions:
24! -----------------
25! $Id: read_3d_binary.f90 1973 2016-07-26 07:52:45Z maronga $
26!
[1973]27! 1972 2016-07-26 07:52:02Z maronga
28! Land surface parts are now done in the respective module
29!
[1852]30! 1849 2016-04-08 11:33:18Z hoffmann
[1851]31! prr, precipitation_amount moved to arrays_3d
[1852]32!
[1834]33! 1833 2016-04-07 14:23:03Z raasch
34! statistics module replaced by spectra module
35!
[1809]36! 1808 2016-04-05 19:44:00Z raasch
37! test output removed
38!
[1789]39! 1788 2016-03-10 11:01:04Z maronga
40! Added z0q and z0q_av
41!
[1758]42! 1757 2016-02-22 15:49:32Z maronga
43! Bugfix in allocation of radiative heating rates
44!
[1710]45! 1709 2015-11-04 14:47:01Z maronga
46! Added rad_lw_out_change_0, increased binary_version
47!
[1692]48! 1691 2015-10-26 16:17:44Z maronga
49! Added output of radiative heating rates and Obukhov length. Removed output of
50! rif.
51!
[1683]52! 1682 2015-10-07 23:56:08Z knoop
53! Code annotations made doxygen readable
54!
[1586]55! 1585 2015-04-30 07:05:52Z maronga
56! Adapted for RRTMG
57!
[1552]58! 1551 2015-03-03 14:18:16Z maronga
59! Added support for binary input of land surface and radiation model data. In the
60! course of this work, new temporary arrays tmp_3d_soil1, tmp_3d_soil2 were
61! required.
62!
[1469]63! 1468 2014-09-24 14:06:57Z maronga
64! Adapted for use on up to 6-digit processor cores
65!
[1401]66! 1400 2014-05-09 14:03:54Z knoop
67! reading of arrays for random_generator_parallel added
68!
[1321]69! 1320 2014-03-20 08:40:49Z raasch
[1320]70! ONLY-attribute added to USE-statements,
71! kind-parameters added to all INTEGER and REAL declaration statements,
72! kinds are defined in new module kinds,
73! old module precision_kind is removed,
74! revision history before 2012 removed,
75! comment fields (!:) to be used for variable explanations added to
76! all variable declaration statements
[226]77!
[1319]78! 1318 2014-03-17 13:35:16Z raasch
79! module interfaces removed
80!
[1116]81! 1115 2013-03-26 18:16:16Z hoffmann
82! unused variables removed
83!
[1054]84! 1053 2012-11-13 17:11:03Z hoffmann
85! necessary expansions according to the two new prognostic equations (nr, qr)
86! of the two-moment cloud physics scheme:
87! +prr, prr_av, *, *_av, *s, *sws, *swst
88!
[1037]89! 1036 2012-10-22 13:43:42Z raasch
90! code put under GPL (PALM 3.9)
91!
[1002]92! 1001 2012-09-13 14:08:46Z raasch
93! all actions concerning leapfrog scheme removed
94!
[979]95! 978 2012-08-09 08:28:32Z fricke
96! +z0h, z0h_av
97!
[1]98! Revision 1.1  2004/04/30 12:47:27  raasch
99! Initial revision
100!
101!
102! Description:
103! ------------
[1682]104!> Binary input of variables and arrays from restart file
[1]105!------------------------------------------------------------------------------!
[1682]106 SUBROUTINE read_3d_binary
107 
[1]108
[1320]109    USE arrays_3d,                                                             &
[1849]110        ONLY:  e, kh, km, ol, p, pt, q, ql, qc, nr, nrs, nrsws, nrswst,        &
111               prr, precipitation_amount, qr,                                  &
[1960]112               qrs, qrsws, qrswst, qs, qsws, qswst, s, sa, saswsb, saswst,     &
113               ss, ssws, sswst, rif_wall, shf, ss, ts, tswst, u, u_m_l, u_m_n, &
114               u_m_r, u_m_s, us, usws, uswst, v, v_m_l, v_m_n, v_m_r, v_m_s,   &
115               vpt, vsws, vswst, w, w_m_l, w_m_n, w_m_r, w_m_s, z0, z0h, z0q
[1320]116
[1]117    USE averaging
[1320]118
119    USE control_parameters,                                                    &
[1359]120        ONLY:  iran, message_string, outflow_l, outflow_n, outflow_r, outflow_s
[1320]121
122    USE cpulog,                                                                &
123        ONLY:  cpu_log, log_point_s
124
125    USE indices,                                                               &
126        ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, nx_on_file, ny, nys, nysg, nyn, &
127               nyng, ny_on_file, nzb, nzt
128
129    USE kinds
130
[1551]131    USE land_surface_model_mod,                                                &
[1972]132        ONLY:  land_surface, lsm_read_restart_data
[1551]133
[1320]134    USE particle_attributes,                                                   &
135        ONLY:  iran_part
136
[1]137    USE pegrid
138
[1551]139    USE radiation_model_mod,                                                   &
[1585]140        ONLY: rad_net, rad_net_av, rad_lw_in, rad_lw_in_av, rad_lw_out,        &
[1691]141              rad_lw_cs_hr, rad_lw_cs_hr_av, rad_lw_hr, rad_lw_hr_av,          &
[1709]142              rad_lw_out_av, rad_lw_out_change_0, rad_sw_in, rad_sw_in_av,     &
143              rad_sw_out, rad_sw_out_av, rad_sw_cs_hr, rad_sw_cs_hr_av,        &
144              rad_sw_hr, rad_sw_hr_av
[1551]145
[1320]146    USE random_function_mod,                                                   &
147        ONLY:  random_iv, random_iy
148
[1400]149    USE random_generator_parallel,                                             &
150        ONLY:  id_random_array, seq_random_array
151
[1833]152    USE spectra_mod,                                                           &
[1320]153        ONLY:  spectrum_x, spectrum_y
154
155
[1]156    IMPLICIT NONE
157
[1468]158    CHARACTER (LEN=7)  ::  myid_char_save
[1320]159    CHARACTER (LEN=10) ::  binary_version
160    CHARACTER (LEN=10) ::  version_on_file
[1]161    CHARACTER (LEN=20) ::  field_chr
162
[1682]163    INTEGER(iwp) ::  files_to_be_opened  !<
164    INTEGER(iwp) ::  i                   !<
165    INTEGER(iwp) ::  j                   !<
166    INTEGER(iwp) ::  k                   !<
167    INTEGER(iwp) ::  myid_on_file        !<
168    INTEGER(iwp) ::  numprocs_on_file    !<
169    INTEGER(iwp) ::  nxlc                !<
170    INTEGER(iwp) ::  nxlf                !<
171    INTEGER(iwp) ::  nxlpr               !<
172    INTEGER(iwp) ::  nxl_on_file         !<
173    INTEGER(iwp) ::  nxrc                !<
174    INTEGER(iwp) ::  nxrf                !<
175    INTEGER(iwp) ::  nxrpr               !<
176    INTEGER(iwp) ::  nxr_on_file         !<
177    INTEGER(iwp) ::  nync                !<
178    INTEGER(iwp) ::  nynf                !<
179    INTEGER(iwp) ::  nynpr               !<
180    INTEGER(iwp) ::  nyn_on_file         !<
181    INTEGER(iwp) ::  nysc                !<
182    INTEGER(iwp) ::  nysf                !<
183    INTEGER(iwp) ::  nyspr               !<
184    INTEGER(iwp) ::  nys_on_file         !<
185    INTEGER(iwp) ::  nzb_on_file         !<
186    INTEGER(iwp) ::  nzt_on_file         !<
187    INTEGER(iwp) ::  offset_x            !<
188    INTEGER(iwp) ::  offset_y            !<
189    INTEGER(iwp) ::  shift_x             !<
190    INTEGER(iwp) ::  shift_y             !<
[1]191
[1682]192    INTEGER(iwp), DIMENSION(numprocs_previous_run) ::  file_list       !<
193    INTEGER(iwp), DIMENSION(numprocs_previous_run) ::  overlap_count   !<
[146]194
[1682]195    INTEGER(iwp), DIMENSION(numprocs_previous_run,1000) ::  nxlfa      !<
196    INTEGER(iwp), DIMENSION(numprocs_previous_run,1000) ::  nxrfa      !<
197    INTEGER(iwp), DIMENSION(numprocs_previous_run,1000) ::  nynfa      !<
198    INTEGER(iwp), DIMENSION(numprocs_previous_run,1000) ::  nysfa      !<
199    INTEGER(iwp), DIMENSION(numprocs_previous_run,1000) ::  offset_xa  !<
200    INTEGER(iwp), DIMENSION(numprocs_previous_run,1000) ::  offset_ya  !<
[216]201
[1320]202    REAL(wp) ::  rdummy
[146]203
[1682]204    REAL(wp), DIMENSION(:,:), ALLOCATABLE     ::  tmp_2d      !< temporary array for storing 2D data
205    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3d      !< temporary array for storing 3D data
206    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwul   !<
207    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwun   !<
208    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwur   !<
209    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwus   !<
210    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwvl   !<
211    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwvn   !<
212    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwvr   !<
213    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwvs   !<
214    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwwl   !<
215    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwwn   !<
216    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwwr   !<
217    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE   ::  tmp_3dwws   !<
[146]218
[1682]219    REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::  tmp_4d     !<
[1320]220
221
[1]222!
[146]223!-- Read data from previous model run.
[1]224    CALL cpu_log( log_point_s(14), 'read_3d_binary', 'start' )
225
226!
[146]227!-- Check which of the restart files contain data needed for the subdomain
228!-- of this PE
229    files_to_be_opened = 0
[143]230
[146]231    DO  i = 1, numprocs_previous_run
[216]232!
233!--    Store array bounds of the previous run ("pr") in temporary scalars
[147]234       nxlpr = hor_index_bounds_previous_run(1,i-1)
235       nxrpr = hor_index_bounds_previous_run(2,i-1)
236       nyspr = hor_index_bounds_previous_run(3,i-1)
237       nynpr = hor_index_bounds_previous_run(4,i-1)
238
[143]239!
[147]240!--    Determine the offsets. They may be non-zero in case that the total domain
241!--    on file is smaller than the current total domain.
242       offset_x = ( nxl / ( nx_on_file + 1 ) ) * ( nx_on_file + 1 )
243       offset_y = ( nys / ( ny_on_file + 1 ) ) * ( ny_on_file + 1 )
244
245!
[216]246!--    Start with this offset and then check, if the subdomain on file
247!--    matches another time(s) in the current subdomain by shifting it
248!--    for nx_on_file+1, ny_on_file+1 respectively
[667]249   
[216]250       shift_y = 0
[667]251       j       = 0
252       DO WHILE (  nyspr+shift_y <= nyn-offset_y )
253         
254          IF ( nynpr+shift_y >= nys-offset_y ) THEN
[146]255
[667]256             shift_x = 0
257             DO WHILE ( nxlpr+shift_x <= nxr-offset_x )
258               
259                IF ( nxrpr+shift_x >= nxl-offset_x ) THEN
260                   j = j +1
261                   IF ( j > 1000 )  THEN
[147]262!
[667]263!--                   Array bound exceeded
264                      message_string = 'data from subdomain of previous' // &
265                                       ' run mapped more than 1000 times'
266                      CALL message( 'read_3d_binary', 'PA0284', 2, 2, -1,   &
267                                       6, 1 )
268                   ENDIF
[147]269
[667]270                   IF ( j == 1 )  THEN
271                      files_to_be_opened = files_to_be_opened + 1
272                      file_list(files_to_be_opened) = i-1
273                   ENDIF
274                     
275                   offset_xa(files_to_be_opened,j) = offset_x + shift_x
276                   offset_ya(files_to_be_opened,j) = offset_y + shift_y
[147]277!
[667]278!--                Index bounds of overlapping data
279                   nxlfa(files_to_be_opened,j) = MAX( nxl-offset_x-shift_x, nxlpr )
280                   nxrfa(files_to_be_opened,j) = MIN( nxr-offset_x-shift_x, nxrpr )
281                   nysfa(files_to_be_opened,j) = MAX( nys-offset_y-shift_y, nyspr )
282                   nynfa(files_to_be_opened,j) = MIN( nyn-offset_y-shift_y, nynpr )
[147]283
[667]284                ENDIF
[147]285
[667]286                shift_x = shift_x + ( nx_on_file + 1 )
287             ENDDO
288       
289          ENDIF
290             
291          shift_y = shift_y + ( ny_on_file + 1 )             
[216]292       ENDDO
[667]293         
[216]294       IF ( j > 0 )  overlap_count(files_to_be_opened) = j
[667]295         
[146]296    ENDDO
[667]297   
[147]298!
299!-- Save the id-string of the current process, since myid_char may now be used
300!-- to open files created by PEs with other id.
[1808]301    myid_char_save = myid_char
[146]302
303    IF ( files_to_be_opened /= 1  .OR.  numprocs /= numprocs_previous_run ) &
304    THEN
[274]305       WRITE( message_string, * ) 'number of PEs or virtual PE-grid changed ', &
306                        'in restart run&  PE', myid, ' will read from files ', &
307                         file_list(1:files_to_be_opened)
[257]308       CALL message( 'read_3d_binary', 'PA0285', 0, 0, 0, 6, 0 )
[1]309    ENDIF
310
311!
[146]312!-- Read data from all restart files determined above
313    DO  i = 1, files_to_be_opened
[1]314
[146]315       j = file_list(i)
316!
317!--    Set the filename (underscore followed by four digit processor id)
[1468]318       WRITE (myid_char,'(''_'',I6.6)')  j
[1]319
[146]320!
[1468]321!--    Open the restart file. If this file has been created by PE0 (_000000),
[146]322!--    the global variables at the beginning of the file have to be skipped
323!--    first.
324       CALL check_open( 13 )
325       IF ( j == 0 )  CALL skip_var_list
[1]326
[146]327!
328!--    First compare the version numbers
329       READ ( 13 )  version_on_file
[1972]330       binary_version = '4.4'
[146]331       IF ( TRIM( version_on_file ) /= TRIM( binary_version ) )  THEN
[274]332          WRITE( message_string, * ) 'version mismatch concerning data ',      &
333                      'from prior run',                                        &
334                      '&version on file    = "', TRIM( version_on_file ), '"', &
335                      '&version in program = "', TRIM( binary_version ), '"'
[257]336          CALL message( 'read_3d_binary', 'PA0286', 1, 2, 0, 6, 0 )
[146]337       ENDIF
338
339!
340!--    Read number of processors, processor-id, and array ranges.
341!--    Compare the array ranges with those stored in the index bound array.
342       READ ( 13 )  numprocs_on_file, myid_on_file, nxl_on_file, nxr_on_file, &
343                    nys_on_file, nyn_on_file, nzb_on_file, nzt_on_file
344
345       IF ( nxl_on_file /= hor_index_bounds_previous_run(1,j) )  THEN
[274]346          WRITE( message_string, * ) 'problem with index bound nxl on ',  &
347                            'restart file "', myid_char, '"',             &
348                            '&nxl = ', nxl_on_file, ' but it should be',  &
349                            '&= ', hor_index_bounds_previous_run(1,j),    &
350                            '&from the index bound information array'
[277]351          CALL message( 'read_3d_binary', 'PA0287', 2, 2, -1, 6, 1 )
[146]352       ENDIF
[1]353
[146]354       IF ( nxr_on_file /= hor_index_bounds_previous_run(2,j) )  THEN
[274]355           WRITE( message_string, * ) 'problem with index bound nxr on ',   &
356                               'restart file "', myid_char, '"'  ,          &
357                               '&nxr = ', nxr_on_file, ' but it should be', &
358                               '&= ', hor_index_bounds_previous_run(2,j),   &
359                               '&from the index bound information array' 
[277]360          CALL message( 'read_3d_binary', 'PA0288', 2, 2, -1, 6, 1 )
[257]361
[146]362       ENDIF
[1]363
[146]364       IF ( nys_on_file /= hor_index_bounds_previous_run(3,j) )  THEN
[274]365          WRITE( message_string, * ) 'problem with index bound nys on ',      &
366                                 'restart file "', myid_char, '"',            &
367                                 '&nys = ', nys_on_file, ' but it should be', &
368                                 '&= ', hor_index_bounds_previous_run(3,j),   &
[257]369                                     '&from the index bound information array'
[277]370          CALL message( 'read_3d_binary', 'PA0289', 2, 2, -1, 6, 1 ) 
[146]371       ENDIF
[1]372
[146]373       IF ( nyn_on_file /= hor_index_bounds_previous_run(4,j) )  THEN
[274]374          WRITE( message_string, * ) 'problem with index bound nyn on ',    &
375                               'restart file "', myid_char, '"',            &
376                               '&nyn = ', nyn_on_file, ' but it should be', &
377                               '&= ', hor_index_bounds_previous_run(4,j),   &
378                               '&from the index bound information array'
[277]379          CALL message( 'read_3d_binary', 'PA0290', 2, 2, -1, 6, 1 ) 
[146]380       ENDIF
[1]381
[146]382       IF ( nzb_on_file /= nzb )  THEN
[257]383          WRITE( message_string, * ) 'mismatch between actual data and data ', &
384                                     '&from prior run on PE ', myid,           &
385                                     '&nzb on file = ', nzb_on_file,           &
386                                     '&nzb         = ', nzb
387          CALL message( 'read_3d_binary', 'PA0291', 1, 2, 0, 6, 0 ) 
[146]388       ENDIF
[1]389
[146]390       IF ( nzt_on_file /= nzt )  THEN
[257]391          WRITE( message_string, * ) 'mismatch between actual data and data ', &
392                                     '&from prior run on PE ', myid,           &
393                                     '&nzt on file = ', nzt_on_file,           &
394                                     '&nzt         = ', nzt
395          CALL message( 'read_3d_binary', 'PA0292', 1, 2, 0, 6, 0 ) 
[146]396       ENDIF
[1]397
398!
[146]399!--    Allocate temporary arrays sized as the arrays on the restart file
[1551]400       ALLOCATE( tmp_2d(nys_on_file-nbgp:nyn_on_file+nbgp,                     &
401                        nxl_on_file-nbgp:nxr_on_file+nbgp),                    &
402                 tmp_3d(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp,           &
[667]403                        nxl_on_file-nbgp:nxr_on_file+nbgp) )
[1]404
405!
[146]406!--    Read arrays
407!--    ATTENTION: If the following read commands have been altered, the
408!--    ---------- version number of the variable binary_version must be altered,
409!--               too. Furthermore, the output list of arrays in write_3d_binary
410!--               must also be altered accordingly.
411       READ ( 13 )  field_chr
412       DO  WHILE ( TRIM( field_chr ) /= '*** end ***' )
[1]413
[216]414!
415!--       Map data on file as often as needed (data are read only for k=1)
416          DO  k = 1, overlap_count(i)
[1]417
[216]418!
419!--          Get the index range of the subdomain on file which overlap with the
420!--          current subdomain
421             nxlf = nxlfa(i,k)
422             nxlc = nxlfa(i,k) + offset_xa(i,k)
423             nxrf = nxrfa(i,k)
424             nxrc = nxrfa(i,k) + offset_xa(i,k)
425             nysf = nysfa(i,k)
426             nysc = nysfa(i,k) + offset_ya(i,k)
427             nynf = nynfa(i,k)
428             nync = nynfa(i,k) + offset_ya(i,k)
429
430
431             SELECT CASE ( TRIM( field_chr ) )
432
433                CASE ( 'e' )
434                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]435                   e(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
436                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[1]437
[216]438                CASE ( 'e_av' )
439                   IF ( .NOT. ALLOCATED( e_av ) )  THEN
[667]440                      ALLOCATE( e_av(nzb:nzt+1,nys-nbgp:nyn+nbgp,nxl-nbgp:nxr+nbgp) )
[216]441                   ENDIF
442                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]443                   e_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
444                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]445
[216]446                CASE ( 'iran' ) ! matching random numbers is still unresolved
447                                ! issue
448                   IF ( k == 1 )  READ ( 13 )  iran, iran_part
[146]449
[216]450                CASE ( 'kh' )
451                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]452                   kh(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
453                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]454
[216]455                CASE ( 'km' )
456                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]457                   km(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
458                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]459
[771]460                CASE ( 'lpt_av' )
461                   IF ( .NOT. ALLOCATED( lpt_av ) )  THEN
462                      ALLOCATE( lpt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg ))
463                   ENDIF
464                   IF ( k == 1 )  READ ( 13 )  tmp_3d
465                   lpt_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
466                                tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
467
[216]468                CASE ( 'lwp_av' )
469                   IF ( .NOT. ALLOCATED( lwp_av ) )  THEN
[667]470                      ALLOCATE( lwp_av(nysg:nyng,nxlg:nxrg) )
[216]471                   ENDIF
472                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]473                   lwp_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
474                                  tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]475
[1115]476                CASE ( 'nr' )
477                   IF ( k == 1 )  READ ( 13 )  tmp_3d
478                   nr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
479                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
480
481                CASE ( 'nr_av' )
482                   IF ( .NOT. ALLOCATED( nr_av ) )  THEN
483                      ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
484                   ENDIF
485                   IF ( k == 1 )  READ ( 13 )  tmp_3d
486                   nr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
487                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
488
489                CASE ( 'nrs' )
490                   IF ( k == 1 )  READ ( 13 )  tmp_2d
491                   nrs(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
492                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
493
494                CASE ( 'nrsws' )
495                   IF ( k == 1 )  READ ( 13 )  tmp_2d
496                   nrsws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
497                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
498
499                CASE ( 'nrswst' )
500                   IF ( k == 1 )  READ ( 13 )  tmp_2d
501                   nrswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
502                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[1691]503                CASE ( 'ol' )
504                   IF ( k == 1 )  READ ( 13 )  tmp_2d
505                   ol(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
506                                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[1115]507
[216]508                CASE ( 'p' )
509                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]510                   p(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
511                                 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]512
[216]513                CASE ( 'p_av' )
514                   IF ( .NOT. ALLOCATED( p_av ) )  THEN
[667]515                      ALLOCATE( p_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]516                   ENDIF
517                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]518                   p_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
519                                  tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]520
[216]521                CASE ( 'pc_av' )
522                   IF ( .NOT. ALLOCATED( pc_av ) )  THEN
[667]523                      ALLOCATE( pc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]524                   ENDIF
525                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]526                   pc_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
527                                  tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]528
[216]529                CASE ( 'pr_av' )
530                   IF ( .NOT. ALLOCATED( pr_av ) )  THEN
[667]531                      ALLOCATE( pr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]532                   ENDIF
533                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]534                   pr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
535                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]536
[1053]537                CASE ( 'prr' )
538                   IF ( .NOT. ALLOCATED( prr ) )  THEN
539                      ALLOCATE( prr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
540                   ENDIF
541                   IF ( k == 1 )  READ ( 13 )  tmp_3d
542                   prr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
543                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
544
545                CASE ( 'prr_av' )
546                   IF ( .NOT. ALLOCATED( prr_av ) )  THEN
547                      ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
548                   ENDIF
549                   IF ( k == 1 )  READ ( 13 )  tmp_3d
550                   prr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
551                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
552
[216]553                CASE ( 'precipitation_amount' )
554                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]555                   precipitation_amount(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
556                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]557
[216]558                CASE ( 'precipitation_rate_a' )
559                   IF ( .NOT. ALLOCATED( precipitation_rate_av ) )  THEN
[667]560                      ALLOCATE( precipitation_rate_av(nysg:nyng,nxlg:nxrg) )
[216]561                   ENDIF
562                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]563                   precipitation_rate_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
564                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]565
[216]566                CASE ( 'pt' )
567                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]568                   pt(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
569                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]570
[216]571                CASE ( 'pt_av' )
572                   IF ( .NOT. ALLOCATED( pt_av ) )  THEN
[667]573                      ALLOCATE( pt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]574                   ENDIF
575                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]576                   pt_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
577                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]578
[216]579                CASE ( 'q' )
580                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]581                   q(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
582                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]583
[216]584                CASE ( 'q_av' )
585                   IF ( .NOT. ALLOCATED( q_av ) )  THEN
[667]586                      ALLOCATE( q_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg ))
[216]587                   ENDIF
588                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]589                   q_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
590                                     tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]591
[1115]592                CASE ( 'qc' )
593                   IF ( k == 1 )  READ ( 13 )  tmp_3d
594                   qc(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
595                                       tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
596
597                CASE ( 'qc_av' )
598                   IF ( .NOT. ALLOCATED( qc_av ) )  THEN
599                      ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
600                   ENDIF
601                   IF ( k == 1 )  READ ( 13 )  tmp_3d
602                   qc_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
603                                       tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
604
[216]605                CASE ( 'ql' )
606                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]607                   ql(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
608                                       tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]609
[216]610                CASE ( 'ql_av' )
611                   IF ( .NOT. ALLOCATED( ql_av ) )  THEN
[667]612                      ALLOCATE( ql_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]613                   ENDIF
614                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]615                   ql_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
616                                       tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]617
[1053]618                CASE ( 'qr' )
619                   IF ( k == 1 )  READ ( 13 )  tmp_3d
620                   qr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
621                                   tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
622
623                CASE ( 'qr_av' )
624                   IF ( .NOT. ALLOCATED( qr_av ) )  THEN
625                      ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
626                   ENDIF
627                   IF ( k == 1 )  READ ( 13 )  tmp_3d
628                   qr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
629                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
630
631                CASE ( 'qrs' )
632                   IF ( k == 1 )  READ ( 13 )  tmp_2d
633                   qrs(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
634                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
635
636                CASE ( 'qrsws' )
637                   IF ( k == 1 )  READ ( 13 )  tmp_2d
638                   qrsws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
639                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
640
641                CASE ( 'qrswst' )
642                   IF ( k == 1 )  READ ( 13 )  tmp_2d
643                   qrswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
644                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
645
[216]646                CASE ( 'ql_c_av' )
647                   IF ( .NOT. ALLOCATED( ql_c_av ) )  THEN
[667]648                      ALLOCATE( ql_c_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]649                   ENDIF
650                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]651                   ql_c_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
652                                        tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]653
[216]654                CASE ( 'ql_v_av' )
655                   IF ( .NOT. ALLOCATED( ql_v_av ) )  THEN
[667]656                      ALLOCATE( ql_v_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]657                   ENDIF
658                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]659                   ql_v_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
660                                        tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]661
[216]662                CASE ( 'ql_vp_av' )
663                   IF ( .NOT. ALLOCATED( ql_vp_av ) )  THEN
[667]664                      ALLOCATE( ql_vp_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]665                   ENDIF
666                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]667                   ql_vp_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
668                                        tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]669
[216]670                CASE ( 'qs' )
671                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]672                   qs(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
673                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]674
[216]675                CASE ( 'qsws' )
676                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]677                   qsws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
678                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]679
[354]680                CASE ( 'qsws_av' )
681                   IF ( .NOT. ALLOCATED( qsws_av ) )  THEN
[667]682                      ALLOCATE( qsws_av(nysg:nyng,nxlg:nxrg) )
[354]683                   ENDIF 
684                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]685                   qsws_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
686                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[354]687
[216]688                CASE ( 'qswst' )
689                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]690                   qswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
691                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]692
[216]693                CASE ( 'qv_av' )
694                   IF ( .NOT. ALLOCATED( qv_av ) )  THEN
[667]695                      ALLOCATE( qv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]696                   ENDIF
697                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]698                   qv_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
699                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]700
[1585]701                CASE ( 'rad_net' )
702                   IF ( .NOT. ALLOCATED( rad_net ) )  THEN
703                      ALLOCATE( rad_net(nysg:nyng,nxlg:nxrg) )
704                   ENDIF 
705                   IF ( k == 1 )  READ ( 13 )  tmp_2d
706                   rad_net(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
707                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
708
[1551]709                CASE ( 'rad_net_av' )
710                   IF ( .NOT. ALLOCATED( rad_net_av ) )  THEN
711                      ALLOCATE( rad_net_av(nysg:nyng,nxlg:nxrg) )
712                   ENDIF 
713                   IF ( k == 1 )  READ ( 13 )  tmp_2d
714                   rad_net_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
715                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[1585]716                CASE ( 'rad_lw_in' )
717                   IF ( .NOT. ALLOCATED( rad_lw_in ) )  THEN
718                      ALLOCATE( rad_lw_in(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
719                   ENDIF 
720                   IF ( k == 1 )  READ ( 13 )  tmp_3d
721                   rad_lw_in(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
722                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[1551]723
[1585]724                CASE ( 'rad_lw_in_av' )
725                   IF ( .NOT. ALLOCATED( rad_lw_in_av ) )  THEN
726                      ALLOCATE( rad_lw_in_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
727                   ENDIF 
728                   IF ( k == 1 )  READ ( 13 )  tmp_3d
729                   rad_lw_in_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
730                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
731
732                CASE ( 'rad_lw_out' )
733                   IF ( .NOT. ALLOCATED( rad_lw_out ) )  THEN
734                      ALLOCATE( rad_lw_out(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
735                   ENDIF 
736                   IF ( k == 1 )  READ ( 13 )  tmp_3d
737                   rad_lw_out(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
738                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
739
740                CASE ( 'rad_lw_out_av' )
741                   IF ( .NOT. ALLOCATED( rad_lw_out_av ) )  THEN
742                      ALLOCATE( rad_lw_out_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
743                   ENDIF 
744                   IF ( k == 1 )  READ ( 13 )  tmp_3d
745                   rad_lw_out_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
746                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
747
[1709]748                CASE ( 'rad_lw_out_change_0' )
749                   IF ( .NOT. ALLOCATED( rad_lw_out_change_0 ) )  THEN
750                      ALLOCATE( rad_lw_out_change_0(nysg:nyng,nxlg:nxrg) )
751                   ENDIF
752                   IF ( k == 1 )  READ ( 13 )  tmp_2d
753                   rad_lw_out_change_0(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)&
754                              = tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
755
[1691]756                CASE ( 'rad_lw_cs_hr' )
757                   IF ( .NOT. ALLOCATED( rad_lw_cs_hr ) )  THEN
758                      ALLOCATE( rad_lw_cs_hr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
759                   ENDIF
760                   IF ( k == 1 )  READ ( 13 )  tmp_3d
761                   rad_lw_cs_hr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
762                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
763
764                CASE ( 'rad_lw_cs_hr_av' )
[1757]765                   IF ( .NOT. ALLOCATED( rad_lw_cs_hr_av ) )  THEN
[1691]766                      ALLOCATE( rad_lw_cs_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
767                   ENDIF
768                   IF ( k == 1 )  READ ( 13 )  tmp_3d
769                   rad_lw_cs_hr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
770                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
771
772                CASE ( 'rad_lw_hr' )
773                   IF ( .NOT. ALLOCATED( rad_lw_hr ) )  THEN
774                      ALLOCATE( rad_lw_hr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
775                   ENDIF
776                   IF ( k == 1 )  READ ( 13 )  tmp_3d
777                   rad_lw_hr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
778                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
779
780                CASE ( 'rad_lw_hr_av' )
781                   IF ( .NOT. ALLOCATED( rad_lw_hr_av ) )  THEN
782                      ALLOCATE( rad_lw_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
783                   ENDIF
784                   IF ( k == 1 )  READ ( 13 )  tmp_3d
785                   rad_lw_hr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
786                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
787
[1585]788                CASE ( 'rad_sw_in' )
789                   IF ( .NOT. ALLOCATED( rad_sw_in ) )  THEN
790                      ALLOCATE( rad_sw_in(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
791                   ENDIF 
792                   IF ( k == 1 )  READ ( 13 )  tmp_3d
793                   rad_sw_in(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
794                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
795
[1551]796                CASE ( 'rad_sw_in_av' )
797                   IF ( .NOT. ALLOCATED( rad_sw_in_av ) )  THEN
[1585]798                      ALLOCATE( rad_sw_in_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[1551]799                   ENDIF 
[1585]800                   IF ( k == 1 )  READ ( 13 )  tmp_3d
801                   rad_sw_in_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
802                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[1551]803
[1585]804                CASE ( 'rad_sw_out' )
805                   IF ( .NOT. ALLOCATED( rad_sw_out ) )  THEN
806                      ALLOCATE( rad_sw_out(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
807                   ENDIF 
808                   IF ( k == 1 )  READ ( 13 )  tmp_3d
809                   rad_sw_out(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
810                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
811
812                CASE ( 'rad_sw_out_av' )
813                   IF ( .NOT. ALLOCATED( rad_sw_out_av ) )  THEN
814                      ALLOCATE( rad_sw_out_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
815                   ENDIF 
816                   IF ( k == 1 )  READ ( 13 )  tmp_3d
817                   rad_sw_out_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
818                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
819
[1691]820                CASE ( 'rad_sw_cs_hr' )
821                   IF ( .NOT. ALLOCATED( rad_sw_cs_hr ) )  THEN
822                      ALLOCATE( rad_sw_cs_hr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
823                   ENDIF
824                   IF ( k == 1 )  READ ( 13 )  tmp_3d
825                   rad_sw_cs_hr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
826                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
827
828                CASE ( 'rad_sw_cs_hr_av' )
[1757]829                   IF ( .NOT. ALLOCATED( rad_sw_cs_hr_av ) )  THEN
[1691]830                      ALLOCATE( rad_sw_cs_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
831                   ENDIF
832                   IF ( k == 1 )  READ ( 13 )  tmp_3d
833                   rad_sw_cs_hr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
834                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
835
836                CASE ( 'rad_sw_hr' )
837                   IF ( .NOT. ALLOCATED( rad_sw_hr ) )  THEN
838                      ALLOCATE( rad_sw_hr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
839                   ENDIF
840                   IF ( k == 1 )  READ ( 13 )  tmp_3d
841                   rad_sw_hr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
842                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
843
844                CASE ( 'rad_sw_hr_av' )
845                   IF ( .NOT. ALLOCATED( rad_sw_hr_av ) )  THEN
846                      ALLOCATE( rad_sw_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
847                   ENDIF
848                   IF ( k == 1 )  READ ( 13 )  tmp_3d
849                   rad_lw_hr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
850                           tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
851
[216]852                CASE ( 'random_iv' )  ! still unresolved issue
853                   IF ( k == 1 )  READ ( 13 )  random_iv
854                   IF ( k == 1 )  READ ( 13 )  random_iy
[1400]855                   
856                CASE ( 'seq_random_array' )  ! still unresolved issue
857                   IF ( k == 1 )  READ ( 13 )  id_random_array
858                   IF ( k == 1 )  READ ( 13 )  seq_random_array
[146]859
[216]860                CASE ( 'rho_av' )
861                   IF ( .NOT. ALLOCATED( rho_av ) )  THEN
[667]862                      ALLOCATE( rho_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]863                   ENDIF
864                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]865                   rho_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
866                                tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]867
[216]868                CASE ( 'rif_wall' )
869                   IF ( k == 1 )  THEN
[667]870                      ALLOCATE( tmp_4d(nzb:nzt+1,nys_on_file-nbgp:nyn_on_file+nbgp, &
871                                       nxl_on_file-nbgp:nxr_on_file+nbgp,1:4) )
[216]872                      READ ( 13 )  tmp_4d
873                   ENDIF
[667]874                   rif_wall(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp,:) = &
875                            tmp_4d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp,:)
[1960]876                           
877                CASE ( 's' )
878                   IF ( k == 1 )  READ ( 13 )  tmp_3d
879                   s(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
880                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]881
[216]882                CASE ( 's_av' )
883                   IF ( .NOT. ALLOCATED( s_av ) )  THEN
[667]884                      ALLOCATE( s_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg))
[216]885                   ENDIF
886                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]887                   s_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
888                                 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]889
[216]890                CASE ( 'sa' )
891                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]892                   sa(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
893                                  tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]894
[216]895                CASE ( 'sa_av' )
896                   IF ( .NOT. ALLOCATED( sa_av ) )  THEN
[667]897                      ALLOCATE( sa_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]898                   ENDIF
899                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]900                   sa_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
901                                    tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]902
[216]903                CASE ( 'saswsb' )
904                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]905                   saswsb(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
906                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]907
[216]908                CASE ( 'saswst' )
909                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]910                   saswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
911                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]912
[216]913                CASE ( 'shf' )
914                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]915                   shf(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
916                      tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]917
[354]918                CASE ( 'shf_av' )
919                   IF ( .NOT. ALLOCATED( shf_av ) )  THEN
[667]920                      ALLOCATE( shf_av(nysg:nyng,nxlg:nxrg) )
[354]921                   ENDIF
922                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]923                   shf_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
924                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[1001]925
[216]926                CASE ( 'spectrum_x' )
927                   IF ( k == 1 )  THEN
928                      IF ( nx_on_file /= nx )  THEN
[274]929                         message_string = 'read_3d_binary: spectrum_x ' // &
930                                     'on restart file ignored because' // &
931                                     '&total numbers of grid points (nx) ' // &
932                                     'do not match'
933                         CALL message( 'read_3d_binary', 'PA0293',&
934                                                                 0, 1, 0, 6, 0 )
[216]935                         READ ( 13 )  rdummy
936                      ELSE
937                         READ ( 13 )  spectrum_x
938                      ENDIF
939                   ENDIF
[146]940
[216]941                CASE ( 'spectrum_y' )
942                   IF ( k == 1 )  THEN
943                      IF ( ny_on_file /= ny )  THEN
[274]944                         message_string = 'read_3d_binary: spectrum_y ' //   &
945                                     'on restart file ignored because' //    &
946                                     '&total numbers of grid points (ny) '// &
947                                     'do not match'
948                         CALL message( 'read_3d_binary', 'PA0294', &
949                                                                 0, 1, 0, 6, 0 )
950                      READ ( 13 )  rdummy
[216]951                      ELSE
952                         READ ( 13 )  spectrum_y
953                      ENDIF
954                   ENDIF
[1960]955                   
956                CASE ( 'ss' )
957                   IF ( k == 1 )  READ ( 13 )  tmp_2d
958                   ss(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
959                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]960
[1960]961                CASE ( 'ssws' )
962                   IF ( k == 1 )  READ ( 13 )  tmp_2d
963                   ssws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
964                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
965
966                CASE ( 'ssws_av' )
967                   IF ( .NOT. ALLOCATED( ssws_av ) )  THEN
968                      ALLOCATE( ssws_av(nysg:nyng,nxlg:nxrg) )
969                   ENDIF 
970                   IF ( k == 1 )  READ ( 13 )  tmp_2d
971                   ssws_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
972                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
973
974                CASE ( 'sswst' )
975                   IF ( k == 1 )  READ ( 13 )  tmp_2d
976                   sswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
977                                          tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 
978                 
[216]979                CASE ( 'ts' )
980                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]981                   ts(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
982                     tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]983
[216]984                CASE ( 'ts_av' )
985                   IF ( .NOT. ALLOCATED( ts_av ) )  THEN
[667]986                      ALLOCATE( ts_av(nysg:nyng,nxlg:nxrg) )
[216]987                   ENDIF
988                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]989                   ts_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
990                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]991
[216]992                CASE ( 'tswst' )
993                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]994                   tswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
995                         tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]996
[216]997                CASE ( 'u' )
998                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]999                   u(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
1000                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1001
[216]1002                CASE ( 'u_av' )
1003                   IF ( .NOT. ALLOCATED( u_av ) )  THEN
[667]1004                      ALLOCATE( u_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]1005                   ENDIF
1006                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]1007                   u_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
1008                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1009
[216]1010                CASE ( 'u_m_l' )
1011                   IF ( k == 1 )  THEN
1012                      ALLOCATE( tmp_3dwul(nzb:nzt+1, &
[667]1013                                          nys_on_file-nbgp:nyn_on_file+nbgp,1:2) )
[216]1014                      READ ( 13 )  tmp_3dwul
1015                   ENDIF
1016                   IF ( outflow_l )  THEN
[667]1017                      u_m_l(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwul(:,nysf-nbgp:nynf+nbgp,:)
[216]1018                   ENDIF
[146]1019
[216]1020                CASE ( 'u_m_n' )
1021                   IF ( k == 1 )  THEN
1022                      ALLOCATE( tmp_3dwun(nzb:nzt+1,ny-1:ny, &
[667]1023                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
[216]1024                      READ ( 13 )  tmp_3dwun
1025                   ENDIF
1026                   IF ( outflow_n )  THEN
[667]1027                      u_m_n(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwun(:,:,nxlf-nbgp:nxrf+nbgp)
[216]1028                   ENDIF
[146]1029
[216]1030                CASE ( 'u_m_r' )
1031                   IF ( k == 1 )  THEN
1032                      ALLOCATE( tmp_3dwur(nzb:nzt+1,&
[667]1033                                          nys_on_file-nbgp:nyn_on_file+nbgp,nx-1:nx) )
[216]1034                      READ ( 13 )  tmp_3dwur
1035                   ENDIF
1036                   IF ( outflow_r )  THEN
[667]1037                      u_m_r(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwur(:,nysf-nbgp:nynf+nbgp,:)
[216]1038                   ENDIF
[146]1039
[216]1040                CASE ( 'u_m_s' )
1041                   IF ( k == 1 )  THEN
1042                      ALLOCATE( tmp_3dwus(nzb:nzt+1,0:1, &
[667]1043                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
[216]1044                      READ ( 13 )  tmp_3dwus
1045                   ENDIF
1046                   IF ( outflow_s )  THEN
[667]1047                      u_m_s(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwus(:,:,nxlf-nbgp:nxrf+nbgp)
[216]1048                   ENDIF
[146]1049
[216]1050                CASE ( 'us' )
1051                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]1052                   us(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1053                     tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1054
[216]1055                CASE ( 'usws' )
1056                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]1057                   usws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1058                       tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1059
[216]1060                CASE ( 'uswst' )
1061                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]1062                   uswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1063                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1064
[216]1065                CASE ( 'us_av' )
1066                   IF ( .NOT. ALLOCATED( us_av ) )  THEN
[667]1067                      ALLOCATE( us_av(nysg:nyng,nxlg:nxrg) )
[216]1068                   ENDIF
1069                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]1070                   us_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1071                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1072
[216]1073                CASE ( 'v' )
1074                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]1075                   v(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
1076                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1077
[216]1078                CASE ( 'v_av' )
1079                   IF ( .NOT. ALLOCATED( v_av ) )  THEN
[667]1080                      ALLOCATE( v_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]1081                   ENDIF
1082                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]1083                   v_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
1084                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1085
[216]1086                CASE ( 'v_m_l' )
1087                   IF ( k == 1 )  THEN
1088                      ALLOCATE( tmp_3dwvl(nzb:nzt+1,&
[667]1089                                          nys_on_file-nbgp:nyn_on_file+nbgp,0:1) )
[216]1090                      READ ( 13 )  tmp_3dwvl
1091                   ENDIF
1092                   IF ( outflow_l )  THEN
[667]1093                      v_m_l(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwvl(:,nysf-nbgp:nynf+nbgp,:)
[216]1094                   ENDIF
[146]1095
[216]1096                CASE ( 'v_m_n' )
1097                   IF ( k == 1 )  THEN
1098                      ALLOCATE( tmp_3dwvn(nzb:nzt+1,ny-1:ny, &
[667]1099                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
[216]1100                      READ ( 13 )  tmp_3dwvn
1101                   ENDIF
1102                   IF ( outflow_n )  THEN
[667]1103                      v_m_n(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwvn(:,:,nxlf-nbgp:nxrf+nbgp)
[216]1104                   ENDIF
[146]1105
[216]1106                CASE ( 'v_m_r' )
1107                   IF ( k == 1 )  THEN
1108                      ALLOCATE( tmp_3dwvr(nzb:nzt+1,&
[667]1109                                          nys_on_file-nbgp:nyn_on_file+nbgp,nx-1:nx) )
[216]1110                      READ ( 13 )  tmp_3dwvr
1111                   ENDIF
1112                   IF ( outflow_r )  THEN
[667]1113                      v_m_r(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwvr(:,nysf-nbgp:nynf+nbgp,:)
[216]1114                   ENDIF
[146]1115
[216]1116                CASE ( 'v_m_s' )
1117                   IF ( k == 1 )  THEN
1118                      ALLOCATE( tmp_3dwvs(nzb:nzt+1,1:2, &
[667]1119                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
[216]1120                      READ ( 13 )  tmp_3dwvs
1121                   ENDIF
1122                   IF ( outflow_s )  THEN
[667]1123                      v_m_s(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwvs(:,:,nxlf-nbgp:nxrf+nbgp)
[216]1124                   ENDIF
[146]1125
[216]1126                CASE ( 'vpt' )
1127                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]1128                   vpt(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
1129                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1130
[216]1131                CASE ( 'vpt_av' )
1132                   IF ( .NOT. ALLOCATED( vpt_av ) )  THEN
[667]1133                      ALLOCATE( vpt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]1134                   ENDIF
1135                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]1136                   vpt_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
1137                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1138
[216]1139                CASE ( 'vsws' )
1140                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]1141                   vsws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1142                       tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1143
[216]1144                CASE ( 'vswst' )
1145                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]1146                   vswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1147                        tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1148
[216]1149                CASE ( 'w' )
1150                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]1151                   w(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
1152                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1153
[216]1154                CASE ( 'w_av' )
1155                   IF ( .NOT. ALLOCATED( w_av ) )  THEN
[667]1156                      ALLOCATE( w_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
[216]1157                   ENDIF
1158                   IF ( k == 1 )  READ ( 13 )  tmp_3d
[667]1159                   w_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
1160                               tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1161
[216]1162                CASE ( 'w_m_l' )
1163                   IF ( k == 1 )  THEN
1164                      ALLOCATE( tmp_3dwwl(nzb:nzt+1,&
[667]1165                                          nys_on_file-nbgp:nyn_on_file+nbgp,0:1) )
[216]1166                      READ ( 13 )  tmp_3dwwl
1167                   ENDIF
1168                   IF ( outflow_l )  THEN
[667]1169                      w_m_l(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwwl(:,nysf-nbgp:nynf+nbgp,:)
[216]1170                   ENDIF
[146]1171
[216]1172                CASE ( 'w_m_n' )
1173                   IF ( k == 1 )  THEN
1174                      ALLOCATE( tmp_3dwwn(nzb:nzt+1,ny-1:ny, &
[667]1175                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
[216]1176                      READ ( 13 )  tmp_3dwwn
1177                   ENDIF
1178                   IF ( outflow_n )  THEN
[667]1179                      w_m_n(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwwn(:,:,nxlf-nbgp:nxrf+nbgp)
[216]1180                   ENDIF
[146]1181
[216]1182                CASE ( 'w_m_r' )
1183                   IF ( k == 1 )  THEN
1184                      ALLOCATE( tmp_3dwwr(nzb:nzt+1,&
[667]1185                                          nys_on_file-nbgp:nyn_on_file+nbgp,nx-1:nx) )
[216]1186                      READ ( 13 )  tmp_3dwwr
1187                   ENDIF
1188                   IF ( outflow_r )  THEN
[667]1189                      w_m_r(:,nysc-nbgp:nync+nbgp,:) = tmp_3dwwr(:,nysf-nbgp:nynf+nbgp,:)
[216]1190                   ENDIF
[146]1191
[216]1192                CASE ( 'w_m_s' )
1193                   IF ( k == 1 )  THEN
1194                      ALLOCATE( tmp_3dwws(nzb:nzt+1,0:1, &
[667]1195                                          nxl_on_file-nbgp:nxr_on_file+nbgp) )
[216]1196                      READ ( 13 )  tmp_3dwws
1197                   ENDIF
1198                   IF ( outflow_s )  THEN
[667]1199                      w_m_s(:,:,nxlc-nbgp:nxrc+nbgp) = tmp_3dwws(:,:,nxlf-nbgp:nxrf+nbgp)
[216]1200                   ENDIF
1201                   DEALLOCATE( tmp_3dwws )
[146]1202
[216]1203                CASE ( 'z0' )
1204                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]1205                   z0(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1206                     tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1207
[216]1208                CASE ( 'z0_av' )
1209                   IF ( .NOT. ALLOCATED( z0_av ) )  THEN
[667]1210                      ALLOCATE( z0_av(nysg:nyng,nxlg:nxrg) )
[216]1211                   ENDIF
1212                   IF ( k == 1 )  READ ( 13 )  tmp_2d
[667]1213                   z0_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1214                       tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
[146]1215
[978]1216                CASE ( 'z0h' )
1217                   IF ( k == 1 )  READ ( 13 )  tmp_2d
1218                   z0h(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1219                     tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
1220
1221                CASE ( 'z0h_av' )
1222                   IF ( .NOT. ALLOCATED( z0h_av ) )  THEN
1223                      ALLOCATE( z0h_av(nysg:nyng,nxlg:nxrg) )
1224                   ENDIF
1225                   IF ( k == 1 )  READ ( 13 )  tmp_2d
1226                   z0h_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1227                       tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
1228
[1788]1229                CASE ( 'z0q' )
1230                   IF ( k == 1 )  READ ( 13 )  tmp_2d
1231                   z0q(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1232                     tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
1233
1234                CASE ( 'z0q_av' )
1235                   IF ( .NOT. ALLOCATED( z0q_av ) )  THEN
1236                      ALLOCATE( z0q_av(nysg:nyng,nxlg:nxrg) )
1237                   ENDIF
1238                   IF ( k == 1 )  READ ( 13 )  tmp_2d
1239                   z0q_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
1240                       tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
1241
[216]1242                CASE DEFAULT
[257]1243                   WRITE( message_string, * ) 'unknown field named "', &
1244                                              TRIM( field_chr ), '" found in', &
1245                                              '&data from prior run on PE ',myid
1246                    CALL message( 'read_3d_binary', 'PA0295', 1, 2, 0, 6, 0 ) 
1247                   
[216]1248             END SELECT
1249
1250          ENDDO  ! overlap loop
1251
[1]1252!
[216]1253!--       Deallocate arrays needed for specific variables only
1254          IF ( ALLOCATED( tmp_3dwul ) )  DEALLOCATE( tmp_3dwul )
1255          IF ( ALLOCATED( tmp_3dwun ) )  DEALLOCATE( tmp_3dwun )
1256          IF ( ALLOCATED( tmp_3dwur ) )  DEALLOCATE( tmp_3dwur )
1257          IF ( ALLOCATED( tmp_3dwus ) )  DEALLOCATE( tmp_3dwus )
1258          IF ( ALLOCATED( tmp_3dwvl ) )  DEALLOCATE( tmp_3dwvl )
1259          IF ( ALLOCATED( tmp_3dwvn ) )  DEALLOCATE( tmp_3dwvn )
1260          IF ( ALLOCATED( tmp_3dwvr ) )  DEALLOCATE( tmp_3dwvr )
1261          IF ( ALLOCATED( tmp_3dwvs ) )  DEALLOCATE( tmp_3dwvs )
1262          IF ( ALLOCATED( tmp_3dwwl ) )  DEALLOCATE( tmp_3dwwl )
1263          IF ( ALLOCATED( tmp_3dwwn ) )  DEALLOCATE( tmp_3dwwn )
1264          IF ( ALLOCATED( tmp_3dwwr ) )  DEALLOCATE( tmp_3dwwr )
1265          IF ( ALLOCATED( tmp_3dwws ) )  DEALLOCATE( tmp_3dwws )
1266          IF ( ALLOCATED( tmp_4d ) )  DEALLOCATE( tmp_4d )
1267
1268!
[146]1269!--       Read next character string
1270          READ ( 13 )  field_chr
[1]1271
[146]1272       ENDDO  ! loop over variables
[1]1273
1274!
[1972]1275!--    Read land surface restart data
1276       CALL lsm_read_restart_data( i, nxlfa, nxl_on_file, nxrfa, nxr_on_file,  &
1277                                    nynfa, nyn_on_file, nysfa, nys_on_file,    &
1278                                    offset_xa, offset_ya, overlap_count(i),    &
1279                                    tmp_2d )
1280
1281!
[146]1282!--    Read user-defined restart data
[220]1283       CALL user_read_restart_data( i, nxlfa, nxl_on_file, nxrfa, nxr_on_file, &
1284                                    nynfa, nyn_on_file, nysfa, nys_on_file,    &
1285                                    offset_xa, offset_ya, overlap_count(i),    &
[216]1286                                    tmp_2d, tmp_3d )
[145]1287
1288!
[146]1289!--    Close the restart file
1290       CALL close_file( 13 )
1291
1292       DEALLOCATE( tmp_2d, tmp_3d )
1293
1294    ENDDO  ! loop over restart files
1295
1296
1297!
1298!-- Restore the original filename for the restart file to be written
1299    myid_char = myid_char_save
1300
1301
1302!
[1]1303!-- End of time measuring for reading binary data
1304    CALL cpu_log( log_point_s(14), 'read_3d_binary', 'stop' )
1305
1306 END SUBROUTINE read_3d_binary
Note: See TracBrowser for help on using the repository browser.