Changeset 4305
- Timestamp:
- Nov 25, 2019 11:15:40 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/urban_surface_mod.f90
r4267 r4305 23 23 ! Current revisions: 24 24 ! ------------------ 25 ! 26 ! 25 ! - Bugfix, include m_liq into restarts 26 ! - Remove unused arrays for liquid water and saturation moisture at vertical 27 ! walls 28 ! 27 29 ! Former revisions: 28 30 ! ----------------- … … 548 550 m_liq_usm_h_2 !< 549 551 550 TYPE(surf_type_usm), DIMENSION(:), POINTER :: &551 m_liq_usm_v, & !< liquid water reservoir (m), vertical surface elements552 m_liq_usm_v_p !< progn. liquid water reservoir (m), vertical surface elements553 554 TYPE(surf_type_usm), DIMENSION(0:3), TARGET :: &555 m_liq_usm_v_1, & !<556 m_liq_usm_v_2 !<557 558 552 TYPE(surf_type_usm), TARGET :: tm_liq_usm_h_m !< liquid water reservoir tendency (m), horizontal surface elements 559 TYPE(surf_type_usm), DIMENSION(0:3), TARGET :: tm_liq_usm_v_m !< liquid water reservoir tendency (m),560 !< vertical surface elements561 562 553 ! 563 554 !-- anthropogenic heat sources … … 647 638 TYPE(t_wall_vertical), DIMENSION(:), POINTER :: t_green_v, t_green_v_p 648 639 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_green_v_1, t_green_v_2 649 TYPE(t_wall_vertical), DIMENSION(:), POINTER :: swc_v, swc_v_p650 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: swc_v_1, swc_v_2651 652 640 ! 653 641 !-- Surface and material parameters classes (surface_type) … … 1077 1065 IF ( .NOT. ALLOCATED( t_green_v_2(l)%t ) ) & 1078 1066 ALLOCATE ( t_green_v_2(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) ) 1079 IF ( .NOT. ALLOCATED( m_liq_usm_v_1(l)%var_usm_1d ) ) &1080 ALLOCATE ( m_liq_usm_v_1(l)%var_usm_1d(1:surf_usm_v(l)%ns) )1081 IF ( .NOT. ALLOCATED( m_liq_usm_v_2(l)%var_usm_1d ) ) &1082 ALLOCATE ( m_liq_usm_v_2(l)%var_usm_1d(1:surf_usm_v(l)%ns) )1083 IF ( .NOT. ALLOCATED( swc_v_1(l)%t ) ) &1084 ALLOCATE ( swc_v_1(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1085 IF ( .NOT. ALLOCATED( swc_v_2(l)%t ) ) &1086 ALLOCATE ( swc_v_2(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1087 1067 ENDDO 1088 1068 ! … … 1094 1074 t_surf_window_v => t_surf_window_v_1; t_surf_window_v_p => t_surf_window_v_2 1095 1075 t_surf_green_v => t_surf_green_v_1; t_surf_green_v_p => t_surf_green_v_2 1096 m_liq_usm_v => m_liq_usm_v_1; m_liq_usm_v_p => m_liq_usm_v_21097 swc_v => swc_v_1; swc_v_p => swc_v_21098 1076 1099 1077 ! … … 1110 1088 !-- Horizontal surfaces 1111 1089 ALLOCATE ( tm_liq_usm_h_m%var_usm_1d(1:surf_usm_h%ns) ) 1112 ! 1113 !-- Horizontal surfaces 1114 DO l = 0, 3 1115 ALLOCATE ( tm_liq_usm_v_m(l)%var_usm_1d(1:surf_usm_v(l)%ns) ) 1116 ENDDO 1117 1090 tm_liq_usm_h_m%var_usm_1d = 0.0_wp 1118 1091 ! 1119 1092 !-- Set inital values for prognostic quantities … … 1819 1792 !-- soil water content for iwl layer of walls and land 1820 1793 IF ( l == -1 ) THEN 1821 DO m = 1, surf_usm_h%ns1822 surf_usm_h%swc_av(iwl,m) = &1823 surf_usm_h%swc_av(iwl,m) + &1824 swc_h(iwl,m)1825 ENDDO1794 DO m = 1, surf_usm_h%ns 1795 surf_usm_h%swc_av(iwl,m) = & 1796 surf_usm_h%swc_av(iwl,m) + & 1797 swc_h(iwl,m) 1798 ENDDO 1826 1799 ELSE 1827 DO m = 1, surf_usm_v(l)%ns1828 surf_usm_v(l)%swc_av(iwl,m) = &1829 surf_usm_v(l)%swc_av(iwl,m) + &1830 swc_v(l)%t(iwl,m)1831 ENDDO1832 1800 ENDIF 1833 1801 … … 3167 3135 ENDDO 3168 3136 ELSE 3169 l = idsidx 3170 DO m = 1, surf_usm_v(l)%ns 3171 i = surf_usm_v(l)%i(m) 3172 j = surf_usm_v(l)%j(m) 3173 k = surf_usm_v(l)%k(m) 3174 temp_pf(k,j,i) = swc_v(l)%t(iwl,m) 3175 ENDDO 3137 3176 3138 ENDIF 3177 3139 ELSE … … 5284 5246 t_window_v(l)%t(k,m) = ( 1.0_wp - c ) * t_surf_window_v(l)%t(m) + c * twin 5285 5247 t_green_v(l)%t(k,m) = t_surf_wall_v(l)%t(m) 5286 swc_v(l)%t(k,m) = 0.5_wp5287 5248 ENDDO 5288 5249 ENDDO … … 5315 5276 5316 5277 ! 5317 !-- Adjust radiative fluxes for urban surface at model start 5318 !CALL radiation_interaction 5319 !-- TODO: interaction should be called once before first output, 5320 !-- that is not yet possible. 5321 5322 m_liq_usm_h_p = m_liq_usm_h 5323 m_liq_usm_v_p = m_liq_usm_v 5278 !-- Set initial values for prognostic soil quantities 5279 IF ( TRIM( initializing_actions ) /= 'read_restart_data' ) THEN 5280 m_liq_usm_h%var_usm_1d = 0.0_wp 5281 ENDIF 5282 m_liq_usm_h_p = m_liq_usm_h 5324 5283 ! 5325 5284 !-- Set initial values for prognostic quantities 5326 5285 !-- Horizontal surfaces 5327 tm_liq_usm_h_m%var_usm_1d = 0.0_wp 5328 surf_usm_h%c_liq = 0.0_wp 5329 5286 surf_usm_h%c_liq = 0.0_wp 5330 5287 surf_usm_h%qsws_liq = 0.0_wp 5331 5288 surf_usm_h%qsws_veg = 0.0_wp … … 5334 5291 !-- Do the same for vertical surfaces 5335 5292 DO l = 0, 3 5336 tm_liq_usm_v_m(l)%var_usm_1d = 0.0_wp 5337 surf_usm_v(l)%c_liq = 0.0_wp 5338 5293 surf_usm_v(l)%c_liq = 0.0_wp 5339 5294 surf_usm_v(l)%qsws_liq = 0.0_wp 5340 5295 surf_usm_v(l)%qsws_veg = 0.0_wp 5341 5296 ENDDO 5342 5297 5343 ! 5344 !-- Set initial values for prognostic soil quantities 5345 IF ( TRIM( initializing_actions ) /= 'read_restart_data' ) THEN 5346 m_liq_usm_h%var_usm_1d = 0.0_wp 5347 5348 DO l = 0, 3 5349 m_liq_usm_v(l)%var_usm_1d = 0.0_wp 5350 ENDDO 5351 ENDIF 5298 5352 5299 5353 5300 CALL cpu_log( log_point_s(78), 'usm_init', 'stop' ) … … 6359 6306 6360 6307 INTEGER(iwp) :: ns_v_on_file_usm(0:3) !< number of vertical surface elements (urban type) on file 6361 6308 ! 6309 !-- Note, the save attribute in the following array declaration is necessary, 6310 !-- in order to keep the number of urban surface elements on file during 6311 !-- rrd_local calls. 6362 6312 INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE, SAVE :: start_index_on_file 6363 6313 INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE, SAVE :: end_index_on_file 6364 6314 6365 6315 LOGICAL, INTENT(OUT) :: found 6366 !!! suehring: Why the SAVE attribute? 6367 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_wall_h 6368 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_window_h 6369 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_green_h 6370 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_waste_h 6316 ! MS: Why are there individual temporary arrays that all have the same size? 6317 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_wall_h 6318 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_window_h 6319 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_green_h 6320 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_mliq_h 6321 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: tmp_surf_waste_h 6371 6322 6372 6323 REAL(wp), DIMENSION(:,:), ALLOCATABLE, SAVE :: tmp_wall_h … … 6387 6338 6388 6339 6389 SELECT CASE ( restart_string(1:length) ) 6390 6391 CASE ( 'ns_h_on_file_usm') 6392 IF ( k == 1 ) THEN 6393 READ ( 13 ) ns_h_on_file_usm 6340 SELECT CASE ( restart_string(1:length) ) 6341 6342 CASE ( 'ns_h_on_file_usm') 6343 IF ( k == 1 ) THEN 6344 READ ( 13 ) ns_h_on_file_usm 6345 6346 IF ( ALLOCATED( tmp_surf_wall_h ) ) DEALLOCATE( tmp_surf_wall_h ) 6347 IF ( ALLOCATED( tmp_wall_h ) ) DEALLOCATE( tmp_wall_h ) 6348 IF ( ALLOCATED( tmp_surf_window_h ) ) & 6349 DEALLOCATE( tmp_surf_window_h ) 6350 IF ( ALLOCATED( tmp_window_h) ) DEALLOCATE( tmp_window_h ) 6351 IF ( ALLOCATED( tmp_surf_green_h) ) & 6352 DEALLOCATE( tmp_surf_green_h ) 6353 IF ( ALLOCATED( tmp_green_h) ) DEALLOCATE( tmp_green_h ) 6354 IF ( ALLOCATED( tmp_surf_mliq_h) ) & 6355 DEALLOCATE( tmp_surf_mliq_h ) 6356 IF ( ALLOCATED( tmp_surf_waste_h) ) & 6357 DEALLOCATE( tmp_surf_waste_h ) 6358 6359 ! 6360 !-- Allocate temporary arrays for reading data on file. Note, 6361 !-- the size of allocated surface elements do not necessarily 6362 !-- need to match the size of present surface elements on 6363 !-- current processor, as the number of processors between 6364 !-- restarts can change. 6365 ALLOCATE( tmp_surf_wall_h(1:ns_h_on_file_usm) ) 6366 ALLOCATE( tmp_wall_h(nzb_wall:nzt_wall+1, & 6367 1:ns_h_on_file_usm) ) 6368 ALLOCATE( tmp_surf_window_h(1:ns_h_on_file_usm) ) 6369 ALLOCATE( tmp_window_h(nzb_wall:nzt_wall+1, & 6370 1:ns_h_on_file_usm) ) 6371 ALLOCATE( tmp_surf_green_h(1:ns_h_on_file_usm) ) 6372 ALLOCATE( tmp_green_h(nzb_wall:nzt_wall+1, & 6373 1:ns_h_on_file_usm) ) 6374 ALLOCATE( tmp_surf_mliq_h(1:ns_h_on_file_usm) ) 6375 ALLOCATE( tmp_surf_waste_h(1:ns_h_on_file_usm) ) 6376 6377 ENDIF 6378 6379 CASE ( 'ns_v_on_file_usm') 6380 IF ( k == 1 ) THEN 6381 READ ( 13 ) ns_v_on_file_usm 6382 6383 DO l = 0, 3 6384 IF ( ALLOCATED( tmp_surf_wall_v(l)%t ) ) & 6385 DEALLOCATE( tmp_surf_wall_v(l)%t ) 6386 IF ( ALLOCATED( tmp_wall_v(l)%t ) ) & 6387 DEALLOCATE( tmp_wall_v(l)%t ) 6388 IF ( ALLOCATED( tmp_surf_window_v(l)%t ) ) & 6389 DEALLOCATE( tmp_surf_window_v(l)%t ) 6390 IF ( ALLOCATED( tmp_window_v(l)%t ) ) & 6391 DEALLOCATE( tmp_window_v(l)%t ) 6392 IF ( ALLOCATED( tmp_surf_green_v(l)%t ) ) & 6393 DEALLOCATE( tmp_surf_green_v(l)%t ) 6394 IF ( ALLOCATED( tmp_green_v(l)%t ) ) & 6395 DEALLOCATE( tmp_green_v(l)%t ) 6396 IF ( ALLOCATED( tmp_surf_waste_v(l)%t ) ) & 6397 DEALLOCATE( tmp_surf_waste_v(l)%t ) 6398 ENDDO 6399 6400 ! 6401 !-- Allocate temporary arrays for reading data on file. Note, 6402 !-- the size of allocated surface elements do not necessarily 6403 !-- need to match the size of present surface elements on 6404 !-- current processor, as the number of processors between 6405 !-- restarts can change. 6406 DO l = 0, 3 6407 ALLOCATE( tmp_surf_wall_v(l)%t(1:ns_v_on_file_usm(l)) ) 6408 ALLOCATE( tmp_wall_v(l)%t(nzb_wall:nzt_wall+1, & 6409 1:ns_v_on_file_usm(l) ) ) 6410 ALLOCATE( tmp_surf_window_v(l)%t(1:ns_v_on_file_usm(l)) ) 6411 ALLOCATE( tmp_window_v(l)%t(nzb_wall:nzt_wall+1, & 6412 1:ns_v_on_file_usm(l) ) ) 6413 ALLOCATE( tmp_surf_green_v(l)%t(1:ns_v_on_file_usm(l)) ) 6414 ALLOCATE( tmp_green_v(l)%t(nzb_wall:nzt_wall+1, & 6415 1:ns_v_on_file_usm(l) ) ) 6416 ALLOCATE( tmp_surf_waste_v(l)%t(1:ns_v_on_file_usm(l)) ) 6417 ENDDO 6418 6419 ENDIF 6420 6421 CASE ( 'usm_start_index_h', 'usm_start_index_v' ) 6422 IF ( k == 1 ) THEN 6423 6424 IF ( ALLOCATED( start_index_on_file ) ) & 6425 DEALLOCATE( start_index_on_file ) 6426 6427 ALLOCATE ( start_index_on_file(nys_on_file:nyn_on_file, & 6428 nxl_on_file:nxr_on_file) ) 6429 6430 READ ( 13 ) start_index_on_file 6431 6432 ENDIF 6433 6434 CASE ( 'usm_end_index_h', 'usm_end_index_v' ) 6435 IF ( k == 1 ) THEN 6436 6437 IF ( ALLOCATED( end_index_on_file ) ) & 6438 DEALLOCATE( end_index_on_file ) 6439 6440 ALLOCATE ( end_index_on_file(nys_on_file:nyn_on_file, & 6441 nxl_on_file:nxr_on_file) ) 6442 6443 READ ( 13 ) end_index_on_file 6444 6445 ENDIF 6446 6447 CASE ( 't_surf_wall_h' ) 6448 IF ( k == 1 ) THEN 6449 IF ( .NOT. ALLOCATED( t_surf_wall_h_1 ) ) & 6450 ALLOCATE( t_surf_wall_h_1(1:surf_usm_h%ns) ) 6451 READ ( 13 ) tmp_surf_wall_h 6452 ENDIF 6453 CALL surface_restore_elements( & 6454 t_surf_wall_h_1, tmp_surf_wall_h, & 6455 surf_usm_h%start_index, & 6456 start_index_on_file, & 6457 end_index_on_file, & 6458 nxlc, nysc, & 6459 nxlf, nxrf, nysf, nynf, & 6460 nys_on_file, nyn_on_file, & 6461 nxl_on_file,nxr_on_file ) 6462 6463 CASE ( 't_surf_wall_v(0)' ) 6464 IF ( k == 1 ) THEN 6465 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(0)%t ) ) & 6466 ALLOCATE( t_surf_wall_v_1(0)%t(1:surf_usm_v(0)%ns) ) 6467 READ ( 13 ) tmp_surf_wall_v(0)%t 6468 ENDIF 6469 CALL surface_restore_elements( & 6470 t_surf_wall_v_1(0)%t, tmp_surf_wall_v(0)%t, & 6471 surf_usm_v(0)%start_index, & 6472 start_index_on_file, & 6473 end_index_on_file, & 6474 nxlc, nysc, & 6475 nxlf, nxrf, nysf, nynf, & 6476 nys_on_file, nyn_on_file, & 6477 nxl_on_file,nxr_on_file ) 6478 6479 CASE ( 't_surf_wall_v(1)' ) 6480 IF ( k == 1 ) THEN 6481 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(1)%t ) ) & 6482 ALLOCATE( t_surf_wall_v_1(1)%t(1:surf_usm_v(1)%ns) ) 6483 READ ( 13 ) tmp_surf_wall_v(1)%t 6484 ENDIF 6485 CALL surface_restore_elements( & 6486 t_surf_wall_v_1(1)%t, tmp_surf_wall_v(1)%t, & 6487 surf_usm_v(1)%start_index, & 6488 start_index_on_file, & 6489 end_index_on_file, & 6490 nxlc, nysc, & 6491 nxlf, nxrf, nysf, nynf, & 6492 nys_on_file, nyn_on_file, & 6493 nxl_on_file,nxr_on_file ) 6494 6495 CASE ( 't_surf_wall_v(2)' ) 6496 IF ( k == 1 ) THEN 6497 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(2)%t ) ) & 6498 ALLOCATE( t_surf_wall_v_1(2)%t(1:surf_usm_v(2)%ns) ) 6499 READ ( 13 ) tmp_surf_wall_v(2)%t 6500 ENDIF 6501 CALL surface_restore_elements( & 6502 t_surf_wall_v_1(2)%t, tmp_surf_wall_v(2)%t, & 6503 surf_usm_v(2)%start_index, & 6504 start_index_on_file, & 6505 end_index_on_file, & 6506 nxlc, nysc, & 6507 nxlf, nxrf, nysf, nynf, & 6508 nys_on_file, nyn_on_file, & 6509 nxl_on_file,nxr_on_file ) 6510 6511 CASE ( 't_surf_wall_v(3)' ) 6512 IF ( k == 1 ) THEN 6513 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(3)%t ) ) & 6514 ALLOCATE( t_surf_wall_v_1(3)%t(1:surf_usm_v(3)%ns) ) 6515 READ ( 13 ) tmp_surf_wall_v(3)%t 6516 ENDIF 6517 CALL surface_restore_elements( & 6518 t_surf_wall_v_1(3)%t, tmp_surf_wall_v(3)%t, & 6519 surf_usm_v(3)%start_index, & 6520 start_index_on_file, & 6521 end_index_on_file, & 6522 nxlc, nysc, & 6523 nxlf, nxrf, nysf, nynf, & 6524 nys_on_file, nyn_on_file, & 6525 nxl_on_file,nxr_on_file ) 6526 6527 CASE ( 't_surf_green_h' ) 6528 IF ( k == 1 ) THEN 6529 IF ( .NOT. ALLOCATED( t_surf_green_h_1 ) ) & 6530 ALLOCATE( t_surf_green_h_1(1:surf_usm_h%ns) ) 6531 READ ( 13 ) tmp_surf_green_h 6532 ENDIF 6533 CALL surface_restore_elements( & 6534 t_surf_green_h_1, tmp_surf_green_h, & 6535 surf_usm_h%start_index, & 6536 start_index_on_file, & 6537 end_index_on_file, & 6538 nxlc, nysc, & 6539 nxlf, nxrf, nysf, nynf, & 6540 nys_on_file, nyn_on_file, & 6541 nxl_on_file,nxr_on_file ) 6542 6543 CASE ( 't_surf_green_v(0)' ) 6544 IF ( k == 1 ) THEN 6545 IF ( .NOT. ALLOCATED( t_surf_green_v_1(0)%t ) ) & 6546 ALLOCATE( t_surf_green_v_1(0)%t(1:surf_usm_v(0)%ns) ) 6547 READ ( 13 ) tmp_surf_green_v(0)%t 6548 ENDIF 6549 CALL surface_restore_elements( & 6550 t_surf_green_v_1(0)%t, & 6551 tmp_surf_green_v(0)%t, & 6552 surf_usm_v(0)%start_index, & 6553 start_index_on_file, & 6554 end_index_on_file, & 6555 nxlc, nysc, & 6556 nxlf, nxrf, nysf, nynf, & 6557 nys_on_file, nyn_on_file, & 6558 nxl_on_file,nxr_on_file ) 6394 6559 6395 IF ( ALLOCATED( tmp_surf_wall_h ) ) DEALLOCATE( tmp_surf_wall_h ) 6396 IF ( ALLOCATED( tmp_wall_h ) ) DEALLOCATE( tmp_wall_h ) 6397 IF ( ALLOCATED( tmp_surf_window_h ) ) & 6398 DEALLOCATE( tmp_surf_window_h ) 6399 IF ( ALLOCATED( tmp_window_h) ) DEALLOCATE( tmp_window_h ) 6400 IF ( ALLOCATED( tmp_surf_green_h) ) & 6401 DEALLOCATE( tmp_surf_green_h ) 6402 IF ( ALLOCATED( tmp_green_h) ) DEALLOCATE( tmp_green_h ) 6403 IF ( ALLOCATED( tmp_surf_waste_h) ) & 6404 DEALLOCATE( tmp_surf_waste_h ) 6405 6406 ! 6407 !-- Allocate temporary arrays for reading data on file. Note, 6408 !-- the size of allocated surface elements do not necessarily 6409 !-- need to match the size of present surface elements on 6410 !-- current processor, as the number of processors between 6411 !-- restarts can change. 6412 ALLOCATE( tmp_surf_wall_h(1:ns_h_on_file_usm) ) 6413 ALLOCATE( tmp_wall_h(nzb_wall:nzt_wall+1, & 6414 1:ns_h_on_file_usm) ) 6415 ALLOCATE( tmp_surf_window_h(1:ns_h_on_file_usm) ) 6416 ALLOCATE( tmp_window_h(nzb_wall:nzt_wall+1, & 6417 1:ns_h_on_file_usm) ) 6418 ALLOCATE( tmp_surf_green_h(1:ns_h_on_file_usm) ) 6419 ALLOCATE( tmp_green_h(nzb_wall:nzt_wall+1, & 6420 1:ns_h_on_file_usm) ) 6421 ALLOCATE( tmp_surf_waste_h(1:ns_h_on_file_usm) ) 6422 6423 ENDIF 6424 6425 CASE ( 'ns_v_on_file_usm') 6426 IF ( k == 1 ) THEN 6427 READ ( 13 ) ns_v_on_file_usm 6428 6429 DO l = 0, 3 6430 IF ( ALLOCATED( tmp_surf_wall_v(l)%t ) ) & 6431 DEALLOCATE( tmp_surf_wall_v(l)%t ) 6432 IF ( ALLOCATED( tmp_wall_v(l)%t ) ) & 6433 DEALLOCATE( tmp_wall_v(l)%t ) 6434 IF ( ALLOCATED( tmp_surf_window_v(l)%t ) ) & 6435 DEALLOCATE( tmp_surf_window_v(l)%t ) 6436 IF ( ALLOCATED( tmp_window_v(l)%t ) ) & 6437 DEALLOCATE( tmp_window_v(l)%t ) 6438 IF ( ALLOCATED( tmp_surf_green_v(l)%t ) ) & 6439 DEALLOCATE( tmp_surf_green_v(l)%t ) 6440 IF ( ALLOCATED( tmp_green_v(l)%t ) ) & 6441 DEALLOCATE( tmp_green_v(l)%t ) 6442 IF ( ALLOCATED( tmp_surf_waste_v(l)%t ) ) & 6443 DEALLOCATE( tmp_surf_waste_v(l)%t ) 6444 ENDDO 6445 6446 ! 6447 !-- Allocate temporary arrays for reading data on file. Note, 6448 !-- the size of allocated surface elements do not necessarily 6449 !-- need to match the size of present surface elements on 6450 !-- current processor, as the number of processors between 6451 !-- restarts can change. 6452 DO l = 0, 3 6453 ALLOCATE( tmp_surf_wall_v(l)%t(1:ns_v_on_file_usm(l)) ) 6454 ALLOCATE( tmp_wall_v(l)%t(nzb_wall:nzt_wall+1, & 6455 1:ns_v_on_file_usm(l) ) ) 6456 ALLOCATE( tmp_surf_window_v(l)%t(1:ns_v_on_file_usm(l)) ) 6457 ALLOCATE( tmp_window_v(l)%t(nzb_wall:nzt_wall+1, & 6458 1:ns_v_on_file_usm(l) ) ) 6459 ALLOCATE( tmp_surf_green_v(l)%t(1:ns_v_on_file_usm(l)) ) 6460 ALLOCATE( tmp_green_v(l)%t(nzb_wall:nzt_wall+1, & 6461 1:ns_v_on_file_usm(l) ) ) 6462 ALLOCATE( tmp_surf_waste_v(l)%t(1:ns_v_on_file_usm(l)) ) 6463 ENDDO 6464 6465 ENDIF 6466 6467 CASE ( 'usm_start_index_h', 'usm_start_index_v' ) 6468 IF ( k == 1 ) THEN 6469 6470 IF ( ALLOCATED( start_index_on_file ) ) & 6471 DEALLOCATE( start_index_on_file ) 6472 6473 ALLOCATE ( start_index_on_file(nys_on_file:nyn_on_file, & 6474 nxl_on_file:nxr_on_file) ) 6475 6476 READ ( 13 ) start_index_on_file 6477 6478 ENDIF 6560 CASE ( 't_surf_green_v(1)' ) 6561 IF ( k == 1 ) THEN 6562 IF ( .NOT. ALLOCATED( t_surf_green_v_1(1)%t ) ) & 6563 ALLOCATE( t_surf_green_v_1(1)%t(1:surf_usm_v(1)%ns) ) 6564 READ ( 13 ) tmp_surf_green_v(1)%t 6565 ENDIF 6566 CALL surface_restore_elements( & 6567 t_surf_green_v_1(1)%t, & 6568 tmp_surf_green_v(1)%t, & 6569 surf_usm_v(1)%start_index, & 6570 start_index_on_file, & 6571 end_index_on_file, & 6572 nxlc, nysc, & 6573 nxlf, nxrf, nysf, nynf, & 6574 nys_on_file, nyn_on_file, & 6575 nxl_on_file,nxr_on_file ) 6576 6577 CASE ( 't_surf_green_v(2)' ) 6578 IF ( k == 1 ) THEN 6579 IF ( .NOT. ALLOCATED( t_surf_green_v_1(2)%t ) ) & 6580 ALLOCATE( t_surf_green_v_1(2)%t(1:surf_usm_v(2)%ns) ) 6581 READ ( 13 ) tmp_surf_green_v(2)%t 6582 ENDIF 6583 CALL surface_restore_elements( & 6584 t_surf_green_v_1(2)%t, & 6585 tmp_surf_green_v(2)%t, & 6586 surf_usm_v(2)%start_index, & 6587 start_index_on_file, & 6588 end_index_on_file, & 6589 nxlc, nysc, & 6590 nxlf, nxrf, nysf, nynf, & 6591 nys_on_file, nyn_on_file, & 6592 nxl_on_file,nxr_on_file ) 6479 6593 6480 CASE ( 'usm_end_index_h', 'usm_end_index_v' ) 6481 IF ( k == 1 ) THEN 6482 6483 IF ( ALLOCATED( end_index_on_file ) ) & 6484 DEALLOCATE( end_index_on_file ) 6485 6486 ALLOCATE ( end_index_on_file(nys_on_file:nyn_on_file, & 6487 nxl_on_file:nxr_on_file) ) 6488 6489 READ ( 13 ) end_index_on_file 6490 6491 ENDIF 6492 6493 CASE ( 't_surf_wall_h' ) 6494 IF ( k == 1 ) THEN 6495 IF ( .NOT. ALLOCATED( t_surf_wall_h_1 ) ) & 6496 ALLOCATE( t_surf_wall_h_1(1:surf_usm_h%ns) ) 6497 READ ( 13 ) tmp_surf_wall_h 6498 ENDIF 6499 CALL surface_restore_elements( & 6500 t_surf_wall_h_1, tmp_surf_wall_h, & 6501 surf_usm_h%start_index, & 6502 start_index_on_file, & 6503 end_index_on_file, & 6504 nxlc, nysc, & 6505 nxlf, nxrf, nysf, nynf, & 6506 nys_on_file, nyn_on_file, & 6507 nxl_on_file,nxr_on_file ) 6508 6509 CASE ( 't_surf_wall_v(0)' ) 6510 IF ( k == 1 ) THEN 6511 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(0)%t ) ) & 6512 ALLOCATE( t_surf_wall_v_1(0)%t(1:surf_usm_v(0)%ns) ) 6513 READ ( 13 ) tmp_surf_wall_v(0)%t 6514 ENDIF 6515 CALL surface_restore_elements( & 6516 t_surf_wall_v_1(0)%t, tmp_surf_wall_v(0)%t, & 6517 surf_usm_v(0)%start_index, & 6518 start_index_on_file, & 6519 end_index_on_file, & 6520 nxlc, nysc, & 6521 nxlf, nxrf, nysf, nynf, & 6522 nys_on_file, nyn_on_file, & 6523 nxl_on_file,nxr_on_file ) 6524 6525 CASE ( 't_surf_wall_v(1)' ) 6526 IF ( k == 1 ) THEN 6527 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(1)%t ) ) & 6528 ALLOCATE( t_surf_wall_v_1(1)%t(1:surf_usm_v(1)%ns) ) 6529 READ ( 13 ) tmp_surf_wall_v(1)%t 6530 ENDIF 6531 CALL surface_restore_elements( & 6532 t_surf_wall_v_1(1)%t, tmp_surf_wall_v(1)%t, & 6533 surf_usm_v(1)%start_index, & 6534 start_index_on_file, & 6535 end_index_on_file, & 6536 nxlc, nysc, & 6537 nxlf, nxrf, nysf, nynf, & 6538 nys_on_file, nyn_on_file, & 6539 nxl_on_file,nxr_on_file ) 6540 6541 CASE ( 't_surf_wall_v(2)' ) 6542 IF ( k == 1 ) THEN 6543 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(2)%t ) ) & 6544 ALLOCATE( t_surf_wall_v_1(2)%t(1:surf_usm_v(2)%ns) ) 6545 READ ( 13 ) tmp_surf_wall_v(2)%t 6546 ENDIF 6547 CALL surface_restore_elements( & 6548 t_surf_wall_v_1(2)%t, tmp_surf_wall_v(2)%t, & 6549 surf_usm_v(2)%start_index, & 6550 start_index_on_file, & 6551 end_index_on_file, & 6552 nxlc, nysc, & 6553 nxlf, nxrf, nysf, nynf, & 6554 nys_on_file, nyn_on_file, & 6555 nxl_on_file,nxr_on_file ) 6556 6557 CASE ( 't_surf_wall_v(3)' ) 6558 IF ( k == 1 ) THEN 6559 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(3)%t ) ) & 6560 ALLOCATE( t_surf_wall_v_1(3)%t(1:surf_usm_v(3)%ns) ) 6561 READ ( 13 ) tmp_surf_wall_v(3)%t 6562 ENDIF 6563 CALL surface_restore_elements( & 6564 t_surf_wall_v_1(3)%t, tmp_surf_wall_v(3)%t, & 6565 surf_usm_v(3)%start_index, & 6566 start_index_on_file, & 6567 end_index_on_file, & 6568 nxlc, nysc, & 6569 nxlf, nxrf, nysf, nynf, & 6570 nys_on_file, nyn_on_file, & 6571 nxl_on_file,nxr_on_file ) 6572 6573 CASE ( 't_surf_green_h' ) 6574 IF ( k == 1 ) THEN 6575 IF ( .NOT. ALLOCATED( t_surf_green_h_1 ) ) & 6576 ALLOCATE( t_surf_green_h_1(1:surf_usm_h%ns) ) 6577 READ ( 13 ) tmp_surf_green_h 6578 ENDIF 6579 CALL surface_restore_elements( & 6580 t_surf_green_h_1, tmp_surf_green_h, & 6581 surf_usm_h%start_index, & 6582 start_index_on_file, & 6583 end_index_on_file, & 6584 nxlc, nysc, & 6585 nxlf, nxrf, nysf, nynf, & 6586 nys_on_file, nyn_on_file, & 6587 nxl_on_file,nxr_on_file ) 6588 6589 CASE ( 't_surf_green_v(0)' ) 6590 IF ( k == 1 ) THEN 6591 IF ( .NOT. ALLOCATED( t_surf_green_v_1(0)%t ) ) & 6592 ALLOCATE( t_surf_green_v_1(0)%t(1:surf_usm_v(0)%ns) ) 6593 READ ( 13 ) tmp_surf_green_v(0)%t 6594 ENDIF 6595 CALL surface_restore_elements( & 6596 t_surf_green_v_1(0)%t, & 6597 tmp_surf_green_v(0)%t, & 6598 surf_usm_v(0)%start_index, & 6599 start_index_on_file, & 6600 end_index_on_file, & 6601 nxlc, nysc, & 6602 nxlf, nxrf, nysf, nynf, & 6603 nys_on_file, nyn_on_file, & 6604 nxl_on_file,nxr_on_file ) 6594 CASE ( 't_surf_green_v(3)' ) 6595 IF ( k == 1 ) THEN 6596 IF ( .NOT. ALLOCATED( t_surf_green_v_1(3)%t ) ) & 6597 ALLOCATE( t_surf_green_v_1(3)%t(1:surf_usm_v(3)%ns) ) 6598 READ ( 13 ) tmp_surf_green_v(3)%t 6599 ENDIF 6600 CALL surface_restore_elements( & 6601 t_surf_green_v_1(3)%t, & 6602 tmp_surf_green_v(3)%t, & 6603 surf_usm_v(3)%start_index, & 6604 start_index_on_file, & 6605 end_index_on_file, & 6606 nxlc, nysc, & 6607 nxlf, nxrf, nysf, nynf, & 6608 nys_on_file, nyn_on_file, & 6609 nxl_on_file,nxr_on_file ) 6610 6611 CASE ( 't_surf_window_h' ) 6612 IF ( k == 1 ) THEN 6613 IF ( .NOT. ALLOCATED( t_surf_window_h_1 ) ) & 6614 ALLOCATE( t_surf_window_h_1(1:surf_usm_h%ns) ) 6615 READ ( 13 ) tmp_surf_window_h 6616 ENDIF 6617 CALL surface_restore_elements( & 6618 t_surf_window_h_1, & 6619 tmp_surf_window_h, & 6620 surf_usm_h%start_index, & 6621 start_index_on_file, & 6622 end_index_on_file, & 6623 nxlc, nysc, & 6624 nxlf, nxrf, nysf, nynf, & 6625 nys_on_file, nyn_on_file, & 6626 nxl_on_file,nxr_on_file ) 6627 6628 CASE ( 't_surf_window_v(0)' ) 6629 IF ( k == 1 ) THEN 6630 IF ( .NOT. ALLOCATED( t_surf_window_v_1(0)%t ) ) & 6631 ALLOCATE( t_surf_window_v_1(0)%t(1:surf_usm_v(0)%ns) ) 6632 READ ( 13 ) tmp_surf_window_v(0)%t 6633 ENDIF 6634 CALL surface_restore_elements( & 6635 t_surf_window_v_1(0)%t, & 6636 tmp_surf_window_v(0)%t, & 6637 surf_usm_v(0)%start_index, & 6638 start_index_on_file, & 6639 end_index_on_file, & 6640 nxlc, nysc, & 6641 nxlf, nxrf, nysf, nynf, & 6642 nys_on_file, nyn_on_file, & 6643 nxl_on_file,nxr_on_file ) 6644 6645 CASE ( 't_surf_window_v(1)' ) 6646 IF ( k == 1 ) THEN 6647 IF ( .NOT. ALLOCATED( t_surf_window_v_1(1)%t ) ) & 6648 ALLOCATE( t_surf_window_v_1(1)%t(1:surf_usm_v(1)%ns) ) 6649 READ ( 13 ) tmp_surf_window_v(1)%t 6650 ENDIF 6651 CALL surface_restore_elements( & 6652 t_surf_window_v_1(1)%t, & 6653 tmp_surf_window_v(1)%t, & 6654 surf_usm_v(1)%start_index, & 6655 start_index_on_file, & 6656 end_index_on_file, & 6657 nxlc, nysc, & 6658 nxlf, nxrf, nysf, nynf, & 6659 nys_on_file, nyn_on_file, & 6660 nxl_on_file,nxr_on_file ) 6661 6662 CASE ( 't_surf_window_v(2)' ) 6663 IF ( k == 1 ) THEN 6664 IF ( .NOT. ALLOCATED( t_surf_window_v_1(2)%t ) ) & 6665 ALLOCATE( t_surf_window_v_1(2)%t(1:surf_usm_v(2)%ns) ) 6666 READ ( 13 ) tmp_surf_window_v(2)%t 6667 ENDIF 6668 CALL surface_restore_elements( & 6669 t_surf_window_v_1(2)%t, & 6670 tmp_surf_window_v(2)%t, & 6671 surf_usm_v(2)%start_index, & 6672 start_index_on_file, & 6673 end_index_on_file, & 6674 nxlc, nysc, & 6675 nxlf, nxrf, nysf, nynf, & 6676 nys_on_file, nyn_on_file, & 6677 nxl_on_file,nxr_on_file ) 6678 6679 CASE ( 't_surf_window_v(3)' ) 6680 IF ( k == 1 ) THEN 6681 IF ( .NOT. ALLOCATED( t_surf_window_v_1(3)%t ) ) & 6682 ALLOCATE( t_surf_window_v_1(3)%t(1:surf_usm_v(3)%ns) ) 6683 READ ( 13 ) tmp_surf_window_v(3)%t 6684 ENDIF 6685 CALL surface_restore_elements( & 6686 t_surf_window_v_1(3)%t, & 6687 tmp_surf_window_v(3)%t, & 6688 surf_usm_v(3)%start_index, & 6689 start_index_on_file, & 6690 end_index_on_file, & 6691 nxlc, nysc, & 6692 nxlf, nxrf, nysf, nynf, & 6693 nys_on_file, nyn_on_file, & 6694 nxl_on_file,nxr_on_file ) 6695 6696 CASE ( 'm_liq_usm_h' ) 6697 IF ( k == 1 ) THEN 6698 IF ( .NOT. ALLOCATED( m_liq_usm_h%var_usm_1d ) ) & 6699 ALLOCATE( m_liq_usm_h%var_usm_1d(1:surf_usm_h%ns) ) 6700 READ ( 13 ) tmp_surf_mliq_h 6701 ENDIF 6702 CALL surface_restore_elements( & 6703 m_liq_usm_h%var_usm_1d, & 6704 tmp_surf_mliq_h, & 6705 surf_usm_h%start_index, & 6706 start_index_on_file, & 6707 end_index_on_file, & 6708 nxlc, nysc, & 6709 nxlf, nxrf, nysf, nynf, & 6710 nys_on_file, nyn_on_file, & 6711 nxl_on_file,nxr_on_file ) 6712 6713 CASE ( 'waste_heat_h' ) 6714 IF ( k == 1 ) THEN 6715 IF ( .NOT. ALLOCATED( surf_usm_h%waste_heat ) ) & 6716 ALLOCATE( surf_usm_h%waste_heat(1:surf_usm_h%ns) ) 6717 READ ( 13 ) tmp_surf_waste_h 6718 ENDIF 6719 CALL surface_restore_elements( & 6720 surf_usm_h%waste_heat, & 6721 tmp_surf_waste_h, & 6722 surf_usm_h%start_index, & 6723 start_index_on_file, & 6724 end_index_on_file, & 6725 nxlc, nysc, & 6726 nxlf, nxrf, nysf, nynf, & 6727 nys_on_file, nyn_on_file, & 6728 nxl_on_file,nxr_on_file ) 6729 6730 CASE ( 'waste_heat_v(0)' ) 6731 IF ( k == 1 ) THEN 6732 IF ( .NOT. ALLOCATED( surf_usm_v(0)%waste_heat ) ) & 6733 ALLOCATE( surf_usm_v(0)%waste_heat(1:surf_usm_v(0)%ns) ) 6734 READ ( 13 ) tmp_surf_waste_v(0)%t 6735 ENDIF 6736 CALL surface_restore_elements( & 6737 surf_usm_v(0)%waste_heat, & 6738 tmp_surf_waste_v(0)%t, & 6739 surf_usm_v(0)%start_index, & 6740 start_index_on_file, & 6741 end_index_on_file, & 6742 nxlc, nysc, & 6743 nxlf, nxrf, nysf, nynf, & 6744 nys_on_file, nyn_on_file, & 6745 nxl_on_file,nxr_on_file ) 6605 6746 6606 CASE ( 't_surf_green_v(1)' )6607 6608 IF ( .NOT. ALLOCATED( t_surf_green_v_1(1)%t ) )&6609 ALLOCATE( t_surf_green_v_1(1)%t(1:surf_usm_v(1)%ns) )6610 READ ( 13 ) tmp_surf_green_v(1)%t6611 6612 6613 t_surf_green_v_1(1)%t,&6614 tmp_surf_green_v(1)%t, &6615 surf_usm_v(1)%start_index, &6616 6617 6618 6619 6620 6621 6622 6623 CASE ( 't_surf_green_v(2)' )6624 6625 IF ( .NOT. ALLOCATED( t_surf_green_v_1(2)%t ) )&6626 ALLOCATE( t_surf_green_v_1(2)%t(1:surf_usm_v(2)%ns) )6627 READ ( 13 ) tmp_surf_green_v(2)%t6628 6629 6630 t_surf_green_v_1(2)%t,&6631 tmp_surf_green_v(2)%t, &6632 surf_usm_v(2)%start_index, &6633 6634 6635 6636 6637 6638 6747 CASE ( 'waste_heat_v(1)' ) 6748 IF ( k == 1 ) THEN 6749 IF ( .NOT. ALLOCATED( surf_usm_v(1)%waste_heat ) ) & 6750 ALLOCATE( surf_usm_v(1)%waste_heat(1:surf_usm_v(1)%ns) ) 6751 READ ( 13 ) tmp_surf_waste_v(1)%t 6752 ENDIF 6753 CALL surface_restore_elements( & 6754 surf_usm_v(1)%waste_heat, & 6755 tmp_surf_waste_v(1)%t, & 6756 surf_usm_v(1)%start_index, & 6757 start_index_on_file, & 6758 end_index_on_file, & 6759 nxlc, nysc, & 6760 nxlf, nxrf, nysf, nynf, & 6761 nys_on_file, nyn_on_file, & 6762 nxl_on_file,nxr_on_file ) 6763 6764 CASE ( 'waste_heat_v(2)' ) 6765 IF ( k == 1 ) THEN 6766 IF ( .NOT. ALLOCATED( surf_usm_v(2)%waste_heat ) ) & 6767 ALLOCATE( surf_usm_v(2)%waste_heat(1:surf_usm_v(2)%ns) ) 6768 READ ( 13 ) tmp_surf_waste_v(2)%t 6769 ENDIF 6770 CALL surface_restore_elements( & 6771 surf_usm_v(2)%waste_heat, & 6772 tmp_surf_waste_v(2)%t, & 6773 surf_usm_v(2)%start_index, & 6774 start_index_on_file, & 6775 end_index_on_file, & 6776 nxlc, nysc, & 6777 nxlf, nxrf, nysf, nynf, & 6778 nys_on_file, nyn_on_file, & 6779 nxl_on_file,nxr_on_file ) 6639 6780 6640 CASE ( 't_surf_green_v(3)' ) 6641 IF ( k == 1 ) THEN 6642 IF ( .NOT. ALLOCATED( t_surf_green_v_1(3)%t ) ) & 6643 ALLOCATE( t_surf_green_v_1(3)%t(1:surf_usm_v(3)%ns) ) 6644 READ ( 13 ) tmp_surf_green_v(3)%t 6645 ENDIF 6646 CALL surface_restore_elements( & 6647 t_surf_green_v_1(3)%t, & 6648 tmp_surf_green_v(3)%t, & 6649 surf_usm_v(3)%start_index, & 6650 start_index_on_file, & 6651 end_index_on_file, & 6652 nxlc, nysc, & 6653 nxlf, nxrf, nysf, nynf, & 6654 nys_on_file, nyn_on_file, & 6655 nxl_on_file,nxr_on_file ) 6656 6657 CASE ( 't_surf_window_h' ) 6658 IF ( k == 1 ) THEN 6659 IF ( .NOT. ALLOCATED( t_surf_window_h_1 ) ) & 6660 ALLOCATE( t_surf_window_h_1(1:surf_usm_h%ns) ) 6661 READ ( 13 ) tmp_surf_window_h 6662 ENDIF 6663 CALL surface_restore_elements( & 6664 t_surf_window_h_1, & 6665 tmp_surf_window_h, & 6666 surf_usm_h%start_index, & 6667 start_index_on_file, & 6668 end_index_on_file, & 6669 nxlc, nysc, & 6670 nxlf, nxrf, nysf, nynf, & 6671 nys_on_file, nyn_on_file, & 6672 nxl_on_file,nxr_on_file ) 6673 6674 CASE ( 't_surf_window_v(0)' ) 6675 IF ( k == 1 ) THEN 6676 IF ( .NOT. ALLOCATED( t_surf_window_v_1(0)%t ) ) & 6677 ALLOCATE( t_surf_window_v_1(0)%t(1:surf_usm_v(0)%ns) ) 6678 READ ( 13 ) tmp_surf_window_v(0)%t 6679 ENDIF 6680 CALL surface_restore_elements( & 6681 t_surf_window_v_1(0)%t, & 6682 tmp_surf_window_v(0)%t, & 6683 surf_usm_v(0)%start_index, & 6684 start_index_on_file, & 6685 end_index_on_file, & 6686 nxlc, nysc, & 6687 nxlf, nxrf, nysf, nynf, & 6688 nys_on_file, nyn_on_file, & 6689 nxl_on_file,nxr_on_file ) 6690 6691 CASE ( 't_surf_window_v(1)' ) 6692 IF ( k == 1 ) THEN 6693 IF ( .NOT. ALLOCATED( t_surf_window_v_1(1)%t ) ) & 6694 ALLOCATE( t_surf_window_v_1(1)%t(1:surf_usm_v(1)%ns) ) 6695 READ ( 13 ) tmp_surf_window_v(1)%t 6696 ENDIF 6697 CALL surface_restore_elements( & 6698 t_surf_window_v_1(1)%t, & 6699 tmp_surf_window_v(1)%t, & 6700 surf_usm_v(1)%start_index, & 6701 start_index_on_file, & 6702 end_index_on_file, & 6703 nxlc, nysc, & 6704 nxlf, nxrf, nysf, nynf, & 6705 nys_on_file, nyn_on_file, & 6706 nxl_on_file,nxr_on_file ) 6707 6708 CASE ( 't_surf_window_v(2)' ) 6709 IF ( k == 1 ) THEN 6710 IF ( .NOT. ALLOCATED( t_surf_window_v_1(2)%t ) ) & 6711 ALLOCATE( t_surf_window_v_1(2)%t(1:surf_usm_v(2)%ns) ) 6712 READ ( 13 ) tmp_surf_window_v(2)%t 6713 ENDIF 6714 CALL surface_restore_elements( & 6715 t_surf_window_v_1(2)%t, & 6716 tmp_surf_window_v(2)%t, & 6717 surf_usm_v(2)%start_index, & 6718 start_index_on_file, & 6719 end_index_on_file, & 6720 nxlc, nysc, & 6721 nxlf, nxrf, nysf, nynf, & 6722 nys_on_file, nyn_on_file, & 6723 nxl_on_file,nxr_on_file ) 6724 6725 CASE ( 't_surf_window_v(3)' ) 6726 IF ( k == 1 ) THEN 6727 IF ( .NOT. ALLOCATED( t_surf_window_v_1(3)%t ) ) & 6728 ALLOCATE( t_surf_window_v_1(3)%t(1:surf_usm_v(3)%ns) ) 6729 READ ( 13 ) tmp_surf_window_v(3)%t 6730 ENDIF 6731 CALL surface_restore_elements( & 6732 t_surf_window_v_1(3)%t, & 6733 tmp_surf_window_v(3)%t, & 6734 surf_usm_v(3)%start_index, & 6735 start_index_on_file, & 6736 end_index_on_file, & 6737 nxlc, nysc, & 6738 nxlf, nxrf, nysf, nynf, & 6739 nys_on_file, nyn_on_file, & 6740 nxl_on_file,nxr_on_file ) 6741 6742 CASE ( 'waste_heat_h' ) 6743 IF ( k == 1 ) THEN 6744 IF ( .NOT. ALLOCATED( surf_usm_h%waste_heat ) ) & 6745 ALLOCATE( surf_usm_h%waste_heat(1:surf_usm_h%ns) ) 6746 READ ( 13 ) tmp_surf_waste_h 6747 ENDIF 6748 CALL surface_restore_elements( & 6749 surf_usm_h%waste_heat, & 6750 tmp_surf_waste_h, & 6751 surf_usm_h%start_index, & 6752 start_index_on_file, & 6753 end_index_on_file, & 6754 nxlc, nysc, & 6755 nxlf, nxrf, nysf, nynf, & 6756 nys_on_file, nyn_on_file, & 6757 nxl_on_file,nxr_on_file ) 6758 6759 CASE ( 'waste_heat_v(0)' ) 6760 IF ( k == 1 ) THEN 6761 IF ( .NOT. ALLOCATED( surf_usm_v(0)%waste_heat ) ) & 6762 ALLOCATE( surf_usm_v(0)%waste_heat(1:surf_usm_v(0)%ns) ) 6763 READ ( 13 ) tmp_surf_waste_v(0)%t 6764 ENDIF 6765 CALL surface_restore_elements( & 6766 surf_usm_v(0)%waste_heat, & 6767 tmp_surf_waste_v(0)%t, & 6768 surf_usm_v(0)%start_index, & 6769 start_index_on_file, & 6770 end_index_on_file, & 6771 nxlc, nysc, & 6772 nxlf, nxrf, nysf, nynf, & 6773 nys_on_file, nyn_on_file, & 6774 nxl_on_file,nxr_on_file ) 6775 6776 CASE ( 'waste_heat_v(1)' ) 6777 IF ( k == 1 ) THEN 6778 IF ( .NOT. ALLOCATED( surf_usm_v(1)%waste_heat ) ) & 6779 ALLOCATE( surf_usm_v(1)%waste_heat(1:surf_usm_v(1)%ns) ) 6780 READ ( 13 ) tmp_surf_waste_v(1)%t 6781 ENDIF 6782 CALL surface_restore_elements( & 6783 surf_usm_v(1)%waste_heat, & 6784 tmp_surf_waste_v(1)%t, & 6785 surf_usm_v(1)%start_index, & 6786 start_index_on_file, & 6787 end_index_on_file, & 6788 nxlc, nysc, & 6789 nxlf, nxrf, nysf, nynf, & 6790 nys_on_file, nyn_on_file, & 6791 nxl_on_file,nxr_on_file ) 6792 6793 CASE ( 'waste_heat_v(2)' ) 6794 IF ( k == 1 ) THEN 6795 IF ( .NOT. ALLOCATED( surf_usm_v(2)%waste_heat ) ) & 6796 ALLOCATE( surf_usm_v(2)%waste_heat(1:surf_usm_v(2)%ns) ) 6797 READ ( 13 ) tmp_surf_waste_v(2)%t 6798 ENDIF 6799 CALL surface_restore_elements( & 6800 surf_usm_v(2)%waste_heat, & 6801 tmp_surf_waste_v(2)%t, & 6802 surf_usm_v(2)%start_index, & 6803 start_index_on_file, & 6804 end_index_on_file, & 6805 nxlc, nysc, & 6806 nxlf, nxrf, nysf, nynf, & 6807 nys_on_file, nyn_on_file, & 6808 nxl_on_file,nxr_on_file ) 6809 6810 CASE ( 'waste_heat_v(3)' ) 6811 IF ( k == 1 ) THEN 6812 IF ( .NOT. ALLOCATED( surf_usm_v(3)%waste_heat ) ) & 6813 ALLOCATE( surf_usm_v(3)%waste_heat(1:surf_usm_v(3)%ns) ) 6814 READ ( 13 ) tmp_surf_waste_v(3)%t 6815 ENDIF 6816 CALL surface_restore_elements( & 6817 surf_usm_v(3)%waste_heat, & 6818 tmp_surf_waste_v(3)%t, & 6819 surf_usm_v(3)%start_index, & 6820 start_index_on_file, & 6821 end_index_on_file, & 6822 nxlc, nysc, & 6823 nxlf, nxrf, nysf, nynf, & 6824 nys_on_file, nyn_on_file, & 6825 nxl_on_file,nxr_on_file ) 6826 6827 CASE ( 't_wall_h' ) 6828 IF ( k == 1 ) THEN 6829 IF ( .NOT. ALLOCATED( t_wall_h_1 ) ) & 6830 ALLOCATE( t_wall_h_1(nzb_wall:nzt_wall+1, & 6831 1:surf_usm_h%ns) ) 6832 READ ( 13 ) tmp_wall_h 6833 ENDIF 6834 CALL surface_restore_elements( & 6835 t_wall_h_1, tmp_wall_h, & 6836 surf_usm_h%start_index, & 6837 start_index_on_file, & 6838 end_index_on_file, & 6839 nxlc, nysc, & 6840 nxlf, nxrf, nysf, nynf, & 6841 nys_on_file, nyn_on_file, & 6842 nxl_on_file,nxr_on_file ) 6843 6844 CASE ( 't_wall_v(0)' ) 6845 IF ( k == 1 ) THEN 6846 IF ( .NOT. ALLOCATED( t_wall_v_1(0)%t ) ) & 6847 ALLOCATE( t_wall_v_1(0)%t(nzb_wall:nzt_wall+1, & 6848 1:surf_usm_v(0)%ns) ) 6849 READ ( 13 ) tmp_wall_v(0)%t 6850 ENDIF 6851 CALL surface_restore_elements( & 6852 t_wall_v_1(0)%t, tmp_wall_v(0)%t, & 6853 surf_usm_v(0)%start_index, & 6854 start_index_on_file, & 6855 end_index_on_file, & 6856 nxlc, nysc, & 6857 nxlf, nxrf, nysf, nynf, & 6858 nys_on_file, nyn_on_file, & 6859 nxl_on_file,nxr_on_file ) 6860 6861 CASE ( 't_wall_v(1)' ) 6862 IF ( k == 1 ) THEN 6863 IF ( .NOT. ALLOCATED( t_wall_v_1(1)%t ) ) & 6864 ALLOCATE( t_wall_v_1(1)%t(nzb_wall:nzt_wall+1, & 6865 1:surf_usm_v(1)%ns) ) 6866 READ ( 13 ) tmp_wall_v(1)%t 6867 ENDIF 6868 CALL surface_restore_elements( & 6869 t_wall_v_1(1)%t, tmp_wall_v(1)%t, & 6870 surf_usm_v(1)%start_index, & 6871 start_index_on_file, & 6872 end_index_on_file, & 6873 nxlc, nysc, & 6874 nxlf, nxrf, nysf, nynf, & 6875 nys_on_file, nyn_on_file, & 6876 nxl_on_file,nxr_on_file ) 6877 6878 CASE ( 't_wall_v(2)' ) 6879 IF ( k == 1 ) THEN 6880 IF ( .NOT. ALLOCATED( t_wall_v_1(2)%t ) ) & 6881 ALLOCATE( t_wall_v_1(2)%t(nzb_wall:nzt_wall+1, & 6882 1:surf_usm_v(2)%ns) ) 6883 READ ( 13 ) tmp_wall_v(2)%t 6884 ENDIF 6885 CALL surface_restore_elements( & 6886 t_wall_v_1(2)%t, tmp_wall_v(2)%t, & 6887 surf_usm_v(2)%start_index, & 6888 start_index_on_file, & 6889 end_index_on_file , & 6890 nxlc, nysc, & 6891 nxlf, nxrf, nysf, nynf, & 6892 nys_on_file, nyn_on_file, & 6893 nxl_on_file,nxr_on_file ) 6894 6895 CASE ( 't_wall_v(3)' ) 6896 IF ( k == 1 ) THEN 6897 IF ( .NOT. ALLOCATED( t_wall_v_1(3)%t ) ) & 6898 ALLOCATE( t_wall_v_1(3)%t(nzb_wall:nzt_wall+1, & 6899 1:surf_usm_v(3)%ns) ) 6900 READ ( 13 ) tmp_wall_v(3)%t 6901 ENDIF 6902 CALL surface_restore_elements( & 6903 t_wall_v_1(3)%t, tmp_wall_v(3)%t, & 6904 surf_usm_v(3)%start_index, & 6905 start_index_on_file, & 6906 end_index_on_file, & 6907 nxlc, nysc, & 6908 nxlf, nxrf, nysf, nynf, & 6909 nys_on_file, nyn_on_file, & 6910 nxl_on_file,nxr_on_file ) 6911 6912 CASE ( 't_green_h' ) 6913 IF ( k == 1 ) THEN 6914 IF ( .NOT. ALLOCATED( t_green_h_1 ) ) & 6915 ALLOCATE( t_green_h_1(nzb_wall:nzt_wall+1, & 6916 1:surf_usm_h%ns) ) 6917 READ ( 13 ) tmp_green_h 6918 ENDIF 6919 CALL surface_restore_elements( & 6920 t_green_h_1, tmp_green_h, & 6921 surf_usm_h%start_index, & 6922 start_index_on_file, & 6923 end_index_on_file, & 6924 nxlc, nysc, & 6925 nxlf, nxrf, nysf, nynf, & 6926 nys_on_file, nyn_on_file, & 6927 nxl_on_file,nxr_on_file ) 6928 6929 CASE ( 't_green_v(0)' ) 6930 IF ( k == 1 ) THEN 6931 IF ( .NOT. ALLOCATED( t_green_v_1(0)%t ) ) & 6932 ALLOCATE( t_green_v_1(0)%t(nzb_wall:nzt_wall+1, & 6933 1:surf_usm_v(0)%ns) ) 6934 READ ( 13 ) tmp_green_v(0)%t 6935 ENDIF 6936 CALL surface_restore_elements( & 6937 t_green_v_1(0)%t, tmp_green_v(0)%t, & 6938 surf_usm_v(0)%start_index, & 6939 start_index_on_file, & 6940 end_index_on_file, & 6941 nxlc, nysc, & 6942 nxlf, nxrf, nysf, nynf, & 6943 nys_on_file, nyn_on_file, & 6944 nxl_on_file,nxr_on_file ) 6945 6946 CASE ( 't_green_v(1)' ) 6947 IF ( k == 1 ) THEN 6948 IF ( .NOT. ALLOCATED( t_green_v_1(1)%t ) ) & 6949 ALLOCATE( t_green_v_1(1)%t(nzb_wall:nzt_wall+1, & 6950 1:surf_usm_v(1)%ns) ) 6951 READ ( 13 ) tmp_green_v(1)%t 6952 ENDIF 6953 CALL surface_restore_elements( & 6954 t_green_v_1(1)%t, tmp_green_v(1)%t, & 6955 surf_usm_v(1)%start_index, & 6956 start_index_on_file, & 6957 end_index_on_file, & 6958 nxlc, nysc, & 6959 nxlf, nxrf, nysf, nynf, & 6960 nys_on_file, nyn_on_file, & 6961 nxl_on_file,nxr_on_file ) 6962 6963 CASE ( 't_green_v(2)' ) 6964 IF ( k == 1 ) THEN 6965 IF ( .NOT. ALLOCATED( t_green_v_1(2)%t ) ) & 6966 ALLOCATE( t_green_v_1(2)%t(nzb_wall:nzt_wall+1, & 6967 1:surf_usm_v(2)%ns) ) 6968 READ ( 13 ) tmp_green_v(2)%t 6969 ENDIF 6970 CALL surface_restore_elements( & 6971 t_green_v_1(2)%t, tmp_green_v(2)%t, & 6972 surf_usm_v(2)%start_index, & 6973 start_index_on_file, & 6974 end_index_on_file , & 6975 nxlc, nysc, & 6976 nxlf, nxrf, nysf, nynf, & 6977 nys_on_file, nyn_on_file, & 6978 nxl_on_file,nxr_on_file ) 6979 6980 CASE ( 't_green_v(3)' ) 6981 IF ( k == 1 ) THEN 6982 IF ( .NOT. ALLOCATED( t_green_v_1(3)%t ) ) & 6983 ALLOCATE( t_green_v_1(3)%t(nzb_wall:nzt_wall+1, & 6984 1:surf_usm_v(3)%ns) ) 6985 READ ( 13 ) tmp_green_v(3)%t 6986 ENDIF 6987 CALL surface_restore_elements( & 6988 t_green_v_1(3)%t, tmp_green_v(3)%t, & 6989 surf_usm_v(3)%start_index, & 6990 start_index_on_file, & 6991 end_index_on_file, & 6992 nxlc, nysc, & 6993 nxlf, nxrf, nysf, nynf, & 6994 nys_on_file, nyn_on_file, & 6995 nxl_on_file,nxr_on_file ) 6996 6997 CASE ( 't_window_h' ) 6998 IF ( k == 1 ) THEN 6999 IF ( .NOT. ALLOCATED( t_window_h_1 ) ) & 7000 ALLOCATE( t_window_h_1(nzb_wall:nzt_wall+1, & 7001 1:surf_usm_h%ns) ) 7002 READ ( 13 ) tmp_window_h 7003 ENDIF 7004 CALL surface_restore_elements( & 7005 t_window_h_1, tmp_window_h, & 7006 surf_usm_h%start_index, & 7007 start_index_on_file, & 7008 end_index_on_file, & 7009 nxlc, nysc, & 7010 nxlf, nxrf, nysf, nynf, & 7011 nys_on_file, nyn_on_file, & 7012 nxl_on_file, nxr_on_file ) 7013 7014 CASE ( 't_window_v(0)' ) 7015 IF ( k == 1 ) THEN 7016 IF ( .NOT. ALLOCATED( t_window_v_1(0)%t ) ) & 7017 ALLOCATE( t_window_v_1(0)%t(nzb_wall:nzt_wall+1, & 7018 1:surf_usm_v(0)%ns) ) 7019 READ ( 13 ) tmp_window_v(0)%t 7020 ENDIF 7021 CALL surface_restore_elements( & 7022 t_window_v_1(0)%t, & 7023 tmp_window_v(0)%t, & 7024 surf_usm_v(0)%start_index, & 7025 start_index_on_file, & 7026 end_index_on_file, & 7027 nxlc, nysc, & 7028 nxlf, nxrf, nysf, nynf, & 7029 nys_on_file, nyn_on_file, & 7030 nxl_on_file,nxr_on_file ) 7031 7032 CASE ( 't_window_v(1)' ) 7033 IF ( k == 1 ) THEN 7034 IF ( .NOT. ALLOCATED( t_window_v_1(1)%t ) ) & 7035 ALLOCATE( t_window_v_1(1)%t(nzb_wall:nzt_wall+1, & 7036 1:surf_usm_v(1)%ns) ) 7037 READ ( 13 ) tmp_window_v(1)%t 7038 ENDIF 7039 CALL surface_restore_elements( & 7040 t_window_v_1(1)%t, & 7041 tmp_window_v(1)%t, & 7042 surf_usm_v(1)%start_index, & 7043 start_index_on_file, & 7044 end_index_on_file, & 7045 nxlc, nysc, & 7046 nxlf, nxrf, nysf, nynf, & 7047 nys_on_file, nyn_on_file, & 7048 nxl_on_file,nxr_on_file ) 7049 7050 CASE ( 't_window_v(2)' ) 7051 IF ( k == 1 ) THEN 7052 IF ( .NOT. ALLOCATED( t_window_v_1(2)%t ) ) & 7053 ALLOCATE( t_window_v_1(2)%t(nzb_wall:nzt_wall+1, & 7054 1:surf_usm_v(2)%ns) ) 7055 READ ( 13 ) tmp_window_v(2)%t 7056 ENDIF 7057 CALL surface_restore_elements( & 7058 t_window_v_1(2)%t, & 7059 tmp_window_v(2)%t, & 7060 surf_usm_v(2)%start_index, & 7061 start_index_on_file, & 7062 end_index_on_file , & 7063 nxlc, nysc, & 7064 nxlf, nxrf, nysf, nynf, & 7065 nys_on_file, nyn_on_file, & 7066 nxl_on_file,nxr_on_file ) 7067 7068 CASE ( 't_window_v(3)' ) 7069 IF ( k == 1 ) THEN 7070 IF ( .NOT. ALLOCATED( t_window_v_1(3)%t ) ) & 7071 ALLOCATE( t_window_v_1(3)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(3)%ns) ) 7072 READ ( 13 ) tmp_window_v(3)%t 7073 ENDIF 7074 CALL surface_restore_elements( & 7075 t_window_v_1(3)%t, & 7076 tmp_window_v(3)%t, & 7077 surf_usm_v(3)%start_index, & 7078 start_index_on_file, & 7079 end_index_on_file, & 7080 nxlc, nysc, & 7081 nxlf, nxrf, nysf, nynf, & 7082 nys_on_file, nyn_on_file, & 7083 nxl_on_file,nxr_on_file ) 7084 7085 CASE DEFAULT 7086 7087 found = .FALSE. 7088 7089 END SELECT 7090 7091 6781 CASE ( 'waste_heat_v(3)' ) 6782 IF ( k == 1 ) THEN 6783 IF ( .NOT. ALLOCATED( surf_usm_v(3)%waste_heat ) ) & 6784 ALLOCATE( surf_usm_v(3)%waste_heat(1:surf_usm_v(3)%ns) ) 6785 READ ( 13 ) tmp_surf_waste_v(3)%t 6786 ENDIF 6787 CALL surface_restore_elements( & 6788 surf_usm_v(3)%waste_heat, & 6789 tmp_surf_waste_v(3)%t, & 6790 surf_usm_v(3)%start_index, & 6791 start_index_on_file, & 6792 end_index_on_file, & 6793 nxlc, nysc, & 6794 nxlf, nxrf, nysf, nynf, & 6795 nys_on_file, nyn_on_file, & 6796 nxl_on_file,nxr_on_file ) 6797 6798 CASE ( 't_wall_h' ) 6799 IF ( k == 1 ) THEN 6800 IF ( .NOT. ALLOCATED( t_wall_h_1 ) ) & 6801 ALLOCATE( t_wall_h_1(nzb_wall:nzt_wall+1, & 6802 1:surf_usm_h%ns) ) 6803 READ ( 13 ) tmp_wall_h 6804 ENDIF 6805 CALL surface_restore_elements( & 6806 t_wall_h_1, tmp_wall_h, & 6807 surf_usm_h%start_index, & 6808 start_index_on_file, & 6809 end_index_on_file, & 6810 nxlc, nysc, & 6811 nxlf, nxrf, nysf, nynf, & 6812 nys_on_file, nyn_on_file, & 6813 nxl_on_file,nxr_on_file ) 6814 6815 CASE ( 't_wall_v(0)' ) 6816 IF ( k == 1 ) THEN 6817 IF ( .NOT. ALLOCATED( t_wall_v_1(0)%t ) ) & 6818 ALLOCATE( t_wall_v_1(0)%t(nzb_wall:nzt_wall+1, & 6819 1:surf_usm_v(0)%ns) ) 6820 READ ( 13 ) tmp_wall_v(0)%t 6821 ENDIF 6822 CALL surface_restore_elements( & 6823 t_wall_v_1(0)%t, tmp_wall_v(0)%t, & 6824 surf_usm_v(0)%start_index, & 6825 start_index_on_file, & 6826 end_index_on_file, & 6827 nxlc, nysc, & 6828 nxlf, nxrf, nysf, nynf, & 6829 nys_on_file, nyn_on_file, & 6830 nxl_on_file,nxr_on_file ) 6831 6832 CASE ( 't_wall_v(1)' ) 6833 IF ( k == 1 ) THEN 6834 IF ( .NOT. ALLOCATED( t_wall_v_1(1)%t ) ) & 6835 ALLOCATE( t_wall_v_1(1)%t(nzb_wall:nzt_wall+1, & 6836 1:surf_usm_v(1)%ns) ) 6837 READ ( 13 ) tmp_wall_v(1)%t 6838 ENDIF 6839 CALL surface_restore_elements( & 6840 t_wall_v_1(1)%t, tmp_wall_v(1)%t, & 6841 surf_usm_v(1)%start_index, & 6842 start_index_on_file, & 6843 end_index_on_file, & 6844 nxlc, nysc, & 6845 nxlf, nxrf, nysf, nynf, & 6846 nys_on_file, nyn_on_file, & 6847 nxl_on_file,nxr_on_file ) 6848 6849 CASE ( 't_wall_v(2)' ) 6850 IF ( k == 1 ) THEN 6851 IF ( .NOT. ALLOCATED( t_wall_v_1(2)%t ) ) & 6852 ALLOCATE( t_wall_v_1(2)%t(nzb_wall:nzt_wall+1, & 6853 1:surf_usm_v(2)%ns) ) 6854 READ ( 13 ) tmp_wall_v(2)%t 6855 ENDIF 6856 CALL surface_restore_elements( & 6857 t_wall_v_1(2)%t, tmp_wall_v(2)%t, & 6858 surf_usm_v(2)%start_index, & 6859 start_index_on_file, & 6860 end_index_on_file , & 6861 nxlc, nysc, & 6862 nxlf, nxrf, nysf, nynf, & 6863 nys_on_file, nyn_on_file, & 6864 nxl_on_file,nxr_on_file ) 6865 6866 CASE ( 't_wall_v(3)' ) 6867 IF ( k == 1 ) THEN 6868 IF ( .NOT. ALLOCATED( t_wall_v_1(3)%t ) ) & 6869 ALLOCATE( t_wall_v_1(3)%t(nzb_wall:nzt_wall+1, & 6870 1:surf_usm_v(3)%ns) ) 6871 READ ( 13 ) tmp_wall_v(3)%t 6872 ENDIF 6873 CALL surface_restore_elements( & 6874 t_wall_v_1(3)%t, tmp_wall_v(3)%t, & 6875 surf_usm_v(3)%start_index, & 6876 start_index_on_file, & 6877 end_index_on_file, & 6878 nxlc, nysc, & 6879 nxlf, nxrf, nysf, nynf, & 6880 nys_on_file, nyn_on_file, & 6881 nxl_on_file,nxr_on_file ) 6882 6883 CASE ( 't_green_h' ) 6884 IF ( k == 1 ) THEN 6885 IF ( .NOT. ALLOCATED( t_green_h_1 ) ) & 6886 ALLOCATE( t_green_h_1(nzb_wall:nzt_wall+1, & 6887 1:surf_usm_h%ns) ) 6888 READ ( 13 ) tmp_green_h 6889 ENDIF 6890 CALL surface_restore_elements( & 6891 t_green_h_1, tmp_green_h, & 6892 surf_usm_h%start_index, & 6893 start_index_on_file, & 6894 end_index_on_file, & 6895 nxlc, nysc, & 6896 nxlf, nxrf, nysf, nynf, & 6897 nys_on_file, nyn_on_file, & 6898 nxl_on_file,nxr_on_file ) 6899 6900 CASE ( 't_green_v(0)' ) 6901 IF ( k == 1 ) THEN 6902 IF ( .NOT. ALLOCATED( t_green_v_1(0)%t ) ) & 6903 ALLOCATE( t_green_v_1(0)%t(nzb_wall:nzt_wall+1, & 6904 1:surf_usm_v(0)%ns) ) 6905 READ ( 13 ) tmp_green_v(0)%t 6906 ENDIF 6907 CALL surface_restore_elements( & 6908 t_green_v_1(0)%t, tmp_green_v(0)%t, & 6909 surf_usm_v(0)%start_index, & 6910 start_index_on_file, & 6911 end_index_on_file, & 6912 nxlc, nysc, & 6913 nxlf, nxrf, nysf, nynf, & 6914 nys_on_file, nyn_on_file, & 6915 nxl_on_file,nxr_on_file ) 6916 6917 CASE ( 't_green_v(1)' ) 6918 IF ( k == 1 ) THEN 6919 IF ( .NOT. ALLOCATED( t_green_v_1(1)%t ) ) & 6920 ALLOCATE( t_green_v_1(1)%t(nzb_wall:nzt_wall+1, & 6921 1:surf_usm_v(1)%ns) ) 6922 READ ( 13 ) tmp_green_v(1)%t 6923 ENDIF 6924 CALL surface_restore_elements( & 6925 t_green_v_1(1)%t, tmp_green_v(1)%t, & 6926 surf_usm_v(1)%start_index, & 6927 start_index_on_file, & 6928 end_index_on_file, & 6929 nxlc, nysc, & 6930 nxlf, nxrf, nysf, nynf, & 6931 nys_on_file, nyn_on_file, & 6932 nxl_on_file,nxr_on_file ) 6933 6934 CASE ( 't_green_v(2)' ) 6935 IF ( k == 1 ) THEN 6936 IF ( .NOT. ALLOCATED( t_green_v_1(2)%t ) ) & 6937 ALLOCATE( t_green_v_1(2)%t(nzb_wall:nzt_wall+1, & 6938 1:surf_usm_v(2)%ns) ) 6939 READ ( 13 ) tmp_green_v(2)%t 6940 ENDIF 6941 CALL surface_restore_elements( & 6942 t_green_v_1(2)%t, tmp_green_v(2)%t, & 6943 surf_usm_v(2)%start_index, & 6944 start_index_on_file, & 6945 end_index_on_file , & 6946 nxlc, nysc, & 6947 nxlf, nxrf, nysf, nynf, & 6948 nys_on_file, nyn_on_file, & 6949 nxl_on_file,nxr_on_file ) 6950 6951 CASE ( 't_green_v(3)' ) 6952 IF ( k == 1 ) THEN 6953 IF ( .NOT. ALLOCATED( t_green_v_1(3)%t ) ) & 6954 ALLOCATE( t_green_v_1(3)%t(nzb_wall:nzt_wall+1, & 6955 1:surf_usm_v(3)%ns) ) 6956 READ ( 13 ) tmp_green_v(3)%t 6957 ENDIF 6958 CALL surface_restore_elements( & 6959 t_green_v_1(3)%t, tmp_green_v(3)%t, & 6960 surf_usm_v(3)%start_index, & 6961 start_index_on_file, & 6962 end_index_on_file, & 6963 nxlc, nysc, & 6964 nxlf, nxrf, nysf, nynf, & 6965 nys_on_file, nyn_on_file, & 6966 nxl_on_file,nxr_on_file ) 6967 6968 CASE ( 't_window_h' ) 6969 IF ( k == 1 ) THEN 6970 IF ( .NOT. ALLOCATED( t_window_h_1 ) ) & 6971 ALLOCATE( t_window_h_1(nzb_wall:nzt_wall+1, & 6972 1:surf_usm_h%ns) ) 6973 READ ( 13 ) tmp_window_h 6974 ENDIF 6975 CALL surface_restore_elements( & 6976 t_window_h_1, tmp_window_h, & 6977 surf_usm_h%start_index, & 6978 start_index_on_file, & 6979 end_index_on_file, & 6980 nxlc, nysc, & 6981 nxlf, nxrf, nysf, nynf, & 6982 nys_on_file, nyn_on_file, & 6983 nxl_on_file, nxr_on_file ) 6984 6985 CASE ( 't_window_v(0)' ) 6986 IF ( k == 1 ) THEN 6987 IF ( .NOT. ALLOCATED( t_window_v_1(0)%t ) ) & 6988 ALLOCATE( t_window_v_1(0)%t(nzb_wall:nzt_wall+1, & 6989 1:surf_usm_v(0)%ns) ) 6990 READ ( 13 ) tmp_window_v(0)%t 6991 ENDIF 6992 CALL surface_restore_elements( & 6993 t_window_v_1(0)%t, & 6994 tmp_window_v(0)%t, & 6995 surf_usm_v(0)%start_index, & 6996 start_index_on_file, & 6997 end_index_on_file, & 6998 nxlc, nysc, & 6999 nxlf, nxrf, nysf, nynf, & 7000 nys_on_file, nyn_on_file, & 7001 nxl_on_file,nxr_on_file ) 7002 7003 CASE ( 't_window_v(1)' ) 7004 IF ( k == 1 ) THEN 7005 IF ( .NOT. ALLOCATED( t_window_v_1(1)%t ) ) & 7006 ALLOCATE( t_window_v_1(1)%t(nzb_wall:nzt_wall+1, & 7007 1:surf_usm_v(1)%ns) ) 7008 READ ( 13 ) tmp_window_v(1)%t 7009 ENDIF 7010 CALL surface_restore_elements( & 7011 t_window_v_1(1)%t, & 7012 tmp_window_v(1)%t, & 7013 surf_usm_v(1)%start_index, & 7014 start_index_on_file, & 7015 end_index_on_file, & 7016 nxlc, nysc, & 7017 nxlf, nxrf, nysf, nynf, & 7018 nys_on_file, nyn_on_file, & 7019 nxl_on_file,nxr_on_file ) 7020 7021 CASE ( 't_window_v(2)' ) 7022 IF ( k == 1 ) THEN 7023 IF ( .NOT. ALLOCATED( t_window_v_1(2)%t ) ) & 7024 ALLOCATE( t_window_v_1(2)%t(nzb_wall:nzt_wall+1, & 7025 1:surf_usm_v(2)%ns) ) 7026 READ ( 13 ) tmp_window_v(2)%t 7027 ENDIF 7028 CALL surface_restore_elements( & 7029 t_window_v_1(2)%t, & 7030 tmp_window_v(2)%t, & 7031 surf_usm_v(2)%start_index, & 7032 start_index_on_file, & 7033 end_index_on_file , & 7034 nxlc, nysc, & 7035 nxlf, nxrf, nysf, nynf, & 7036 nys_on_file, nyn_on_file, & 7037 nxl_on_file,nxr_on_file ) 7038 7039 CASE ( 't_window_v(3)' ) 7040 IF ( k == 1 ) THEN 7041 IF ( .NOT. ALLOCATED( t_window_v_1(3)%t ) ) & 7042 ALLOCATE( t_window_v_1(3)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(3)%ns) ) 7043 READ ( 13 ) tmp_window_v(3)%t 7044 ENDIF 7045 CALL surface_restore_elements( & 7046 t_window_v_1(3)%t, & 7047 tmp_window_v(3)%t, & 7048 surf_usm_v(3)%start_index, & 7049 start_index_on_file, & 7050 end_index_on_file, & 7051 nxlc, nysc, & 7052 nxlf, nxrf, nysf, nynf, & 7053 nys_on_file, nyn_on_file, & 7054 nxl_on_file,nxr_on_file ) 7055 7056 CASE DEFAULT 7057 7058 found = .FALSE. 7059 7060 END SELECT 7061 7092 7062 END SUBROUTINE usm_rrd_local 7093 7063 … … 8970 8940 CALL wrd_write_string( 't_surf_green_h' ) 8971 8941 WRITE ( 14 ) t_surf_green_h 8942 8943 CALL wrd_write_string( 'm_liq_usm_h' ) 8944 WRITE ( 14 ) m_liq_usm_h%var_usm_1d 8972 8945 ! 8973 8946 !-- Write restart data which is especially needed for the urban-surface
Note: See TracChangeset
for help on using the changeset viewer.