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

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

further modularization of land surface model (2D/3D output and restart data)

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