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

Last change on this file since 1551 was 1551, checked in by maronga, 9 years ago

land surface model released

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