Ignore:
Timestamp:
May 3, 2020 2:29:30 PM (14 months ago)
Author:
raasch
Message:

added restart with MPI-IO for reading local arrays

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/surface_mod.f90

    r4502 r4517  
    2626! -----------------
    2727! $Id$
     28! added restart with MPI-IO for reading local arrays
     29!
     30! 4502 2020-04-17 16:14:16Z schwenkel
    2831! Implementation of ice microphysics
    2932!
     
    145148
    146149    USE restart_data_mpi_io_mod,                                                                   &
    147         ONLY:  rd_mpi_io_surface_filetypes, total_number_of_surface_values, wrd_mpi_io,            &
     150        ONLY:  rd_mpi_io_surface_filetypes, rrd_mpi_io, rrd_mpi_io_global_array,                   &
     151               rrd_mpi_io_surface, total_number_of_surface_values, wrd_mpi_io,                     &
    148152               wrd_mpi_io_global_array, wrd_mpi_io_surface
    149153
     
    499503
    500504    INTERFACE surface_rrd_local
    501        MODULE PROCEDURE surface_rrd_local
     505       MODULE PROCEDURE surface_rrd_local_ftn
     506       MODULE PROCEDURE surface_rrd_local_mpi
    502507    END INTERFACE surface_rrd_local
    503508
     
    42364241! Description:
    42374242! ------------
    4238 !> Reads surface-related restart data. Please note, restart data for a certain
     4243!> Reads surface-related restart data in Fortran binary format. Please note, restart data for a certain
    42394244!> surface orientation (e.g. horizontal upward-facing) is stored in one
    42404245!> array, even if surface elements may belong to different surface types
     
    42444249!> of cyclic_fill mode.
    42454250!------------------------------------------------------------------------------!
    4246     SUBROUTINE surface_rrd_local( kk, nxlf, nxlc, nxl_on_file, nxrf,           &
    4247                                   nxr_on_file, nynf, nyn_on_file, nysf,        &
    4248                                   nysc, nys_on_file, found )
     4251    SUBROUTINE surface_rrd_local_ftn( kk, nxlf, nxlc, nxl_on_file, nxrf,           &
     4252                                      nxr_on_file, nynf, nyn_on_file, nysf,        &
     4253                                      nysc, nys_on_file, found )
    42494254
    42504255
     
    51855190       ENDIF
    51865191
    5187 
    5188     CONTAINS
     5192 CONTAINS
    51895193!------------------------------------------------------------------------------!
    51905194! Description:
     
    54035407
    54045408
    5405     END SUBROUTINE surface_rrd_local
     5409    END SUBROUTINE surface_rrd_local_ftn
     5410
     5411
     5412!------------------------------------------------------------------------------!
     5413! Description:
     5414! ------------
     5415!> Reads surface-related restart data in MPI-IO format.
     5416!> TO_DO: this routine needs to be adjusted for cyclic_fill mode
     5417!------------------------------------------------------------------------------!
     5418 SUBROUTINE surface_rrd_local_mpi
     5419
     5420
     5421    IMPLICIT NONE
     5422
     5423    CHARACTER(LEN=1) ::  dum  !< dummy string to create input-variable name
     5424
     5425    INTEGER(iwp) ::  l  !< loop index for surface types
     5426
     5427    INTEGER(iwp), DIMENSION(nys:nyn,nxl:nxr) ::  global_start_index  !< index for surface data (MPI-IO)
     5428
     5429    LOGICAL ::  ldum  !< dummy variable
     5430
     5431    TYPE(surf_type), DIMENSION(0:2) ::  surf_h     !< gathered horizontal surfaces, contains all surface types
     5432    TYPE(surf_type), DIMENSION(0:3) ::  surf_v     !< gathered vertical surfaces, contains all surface types
     5433
     5434!
     5435!-- Get total number of surface points on the file
     5436    CALL rrd_mpi_io_global_array( 'ns_h_on_file', ns_h_on_file )
     5437    CALL rrd_mpi_io_global_array( 'ns_v_on_file', ns_v_on_file )
     5438
     5439
     5440    DO  l = 0, 2
     5441
     5442       IF ( ns_h_on_file(l) == 0 )  CYCLE  !< no data of this surface type on file
     5443
     5444       IF ( ALLOCATED( surf_h(l)%start_index ) )  CALL deallocate_surface_attributes_h( surf_h(l) )
     5445       surf_h(l)%ns = ns_h_on_file(l)
     5446       CALL allocate_surface_attributes_h( surf_h(l), nys, nyn, nxl, nxr )
     5447
     5448       WRITE( dum, '(I1)')  l
     5449
     5450       CALL rrd_mpi_io( 'surf_h(' // dum // ')%start_index',  surf_h(l)%start_index )
     5451       CALL rrd_mpi_io( 'surf_h(' // dum // ')%end_index',  surf_h(l)%end_index )
     5452       CALL rrd_mpi_io( 'global_start_index_h_' // dum , global_start_index )
     5453
     5454       CALL rd_mpi_io_surface_filetypes( surf_h(l)%start_index, surf_h(l)%end_index, ldum, global_start_index )
     5455
     5456       IF ( ALLOCATED ( surf_h(l)%us ) )  THEN
     5457          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%us', surf_h(l)%us )
     5458       ENDIF
     5459
     5460       IF ( ALLOCATED ( surf_h(l)%ts ) )  THEN
     5461          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ts', surf_h(l)%ts )
     5462       ENDIF
     5463
     5464       IF ( ALLOCATED ( surf_h(l)%qs ) )  THEN
     5465          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qs', surf_h(l)%qs )
     5466       ENDIF
     5467
     5468       IF ( ALLOCATED ( surf_h(l)%ss ) )  THEN
     5469          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ss', surf_h(l)%ss )
     5470       ENDIF
     5471
     5472       IF ( ALLOCATED ( surf_h(l)%qcs ) )  THEN
     5473          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qcs', surf_h(l)%qcs )
     5474       ENDIF
     5475
     5476       IF ( ALLOCATED ( surf_h(l)%ncs ) )  THEN
     5477          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ncs', surf_h(l)%ncs )
     5478       ENDIF
     5479
     5480       IF ( ALLOCATED ( surf_h(l)%qis ) )  THEN
     5481          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qis', surf_h(l)%qis )
     5482       ENDIF
     5483
     5484       IF ( ALLOCATED ( surf_h(l)%nis ) )  THEN
     5485          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%nis', surf_h(l)%nis )
     5486       ENDIF
     5487
     5488       IF ( ALLOCATED ( surf_h(l)%qrs ) )  THEN
     5489          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qrs', surf_h(l)%qrs )
     5490       ENDIF
     5491
     5492       IF ( ALLOCATED ( surf_h(l)%nrs ) )  THEN
     5493          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%nrs', surf_h(l)%nrs )
     5494       ENDIF
     5495
     5496       IF ( ALLOCATED ( surf_h(l)%ol ) )  THEN
     5497          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ol', surf_h(l)%ol )
     5498       ENDIF
     5499
     5500       IF ( ALLOCATED ( surf_h(l)%rib ) )  THEN
     5501          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%rib',  surf_h(l)%rib )
     5502       ENDIF
     5503
     5504       IF ( ALLOCATED ( surf_h(l)%pt_surface ) )  THEN
     5505          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%pt_surface', surf_h(l)%pt_surface )
     5506       ENDIF
     5507
     5508       IF ( ALLOCATED ( surf_h(l)%q_surface ) )  THEN
     5509          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%q_surface', surf_h(l)%q_surface )
     5510       ENDIF
     5511
     5512       IF ( ALLOCATED ( surf_h(l)%vpt_surface ) )  THEN
     5513          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%vpt_surface', surf_h(l)%vpt_surface )
     5514       ENDIF
     5515
     5516       IF ( ALLOCATED ( surf_h(l)%usws ) )  THEN
     5517          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%usws', surf_h(l)%usws )
     5518       ENDIF
     5519
     5520       IF ( ALLOCATED ( surf_h(l)%vsws ) )  THEN
     5521          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%vsws', surf_h(l)%vsws )
     5522       ENDIF
     5523
     5524       IF ( ALLOCATED ( surf_h(l)%shf ) )  THEN
     5525          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%shf', surf_h(l)%shf )
     5526       ENDIF
     5527
     5528       IF ( ALLOCATED ( surf_h(l)%qsws ) )  THEN
     5529          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qsws', surf_h(l)%qsws )
     5530       ENDIF
     5531
     5532       IF ( ALLOCATED ( surf_h(l)%ssws ) )  THEN
     5533          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ssws', surf_h(l)%ssws )
     5534       ENDIF
     5535
     5536       IF ( ALLOCATED ( surf_h(l)%css ) )  THEN
     5537          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%css', surf_h(l)%css )
     5538       ENDIF
     5539
     5540       IF ( ALLOCATED ( surf_h(l)%cssws ) )  THEN
     5541          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%cssws', surf_h(l)%cssws )
     5542       ENDIF
     5543
     5544       IF ( ALLOCATED ( surf_h(l)%qcsws ) )  THEN
     5545          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qcsws', surf_h(l)%qcsws )
     5546       ENDIF
     5547
     5548       IF ( ALLOCATED ( surf_h(l)%ncsws ) )  THEN
     5549          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ncsws', surf_h(l)%ncsws )
     5550       ENDIF
     5551
     5552       IF ( ALLOCATED ( surf_h(l)%qisws ) )  THEN
     5553          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qisws', surf_h(l)%qisws )
     5554       ENDIF
     5555
     5556       IF ( ALLOCATED ( surf_h(l)%nisws ) )  THEN
     5557          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%nisws', surf_h(l)%nisws )
     5558       ENDIF
     5559
     5560       IF ( ALLOCATED ( surf_h(l)%qrsws ) )  THEN
     5561          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qrsws', surf_h(l)%qrsws )
     5562       ENDIF
     5563
     5564       IF ( ALLOCATED ( surf_h(l)%nrsws ) )  THEN
     5565          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%nrsws', surf_h(l)%nrsws )
     5566       ENDIF
     5567
     5568       IF ( ALLOCATED ( surf_h(l)%sasws ) )  THEN
     5569          CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%sasws', surf_h(l)%sasws )
     5570       ENDIF
     5571
     5572    ENDDO
     5573
     5574!
     5575!-- Read vertical surfaces
     5576    DO  l = 0, 3
     5577
     5578       IF ( ns_v_on_file(l) == 0 )  CYCLE  !< no data of this surface type on file
     5579
     5580       IF ( ALLOCATED( surf_v(l)%start_index ) )  CALL deallocate_surface_attributes_v( surf_v(l) )
     5581       surf_v(l)%ns = ns_v_on_file(l)
     5582       CALL allocate_surface_attributes_v( surf_v(l), nys, nyn, nxl, nxr )
     5583
     5584       WRITE( dum, '(I1)' )  l
     5585
     5586       CALL rrd_mpi_io( 'surf_v(' // dum // ')%start_index', surf_v(l)%start_index )
     5587       CALL rrd_mpi_io( 'surf_v(' // dum // ')%end_index', surf_v(l)%end_index )
     5588       CALL rrd_mpi_io( 'global_start_index_v_' // dum , global_start_index )
     5589
     5590       CALL rd_mpi_io_surface_filetypes( surf_v(l)%start_index, surf_v(l)%end_index, ldum,         &
     5591                                         global_start_index )
     5592
     5593       IF ( ALLOCATED ( surf_v(l)%us ) )  THEN
     5594          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%us',  surf_v(l)%us )
     5595       ENDIF
     5596
     5597       IF ( ALLOCATED ( surf_v(l)%ts ) )  THEN
     5598          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ts', surf_v(l)%ts )
     5599       ENDIF
     5600
     5601       IF ( ALLOCATED ( surf_v(l)%qs ) )  THEN
     5602          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qs',  surf_v(l)%qs )
     5603       ENDIF
     5604
     5605       IF ( ALLOCATED ( surf_v(l)%ss ) )  THEN
     5606          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ss',  surf_v(l)%ss )
     5607       ENDIF
     5608
     5609       IF ( ALLOCATED ( surf_v(l)%qcs ) )  THEN
     5610          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qcs', surf_v(l)%qcs )
     5611       ENDIF
     5612
     5613       IF ( ALLOCATED ( surf_v(l)%ncs ) )  THEN
     5614          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ncs', surf_v(l)%ncs )
     5615       ENDIF
     5616
     5617       IF ( ALLOCATED ( surf_v(l)%qis ) )  THEN
     5618          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qis', surf_v(l)%qis )
     5619       ENDIF
     5620
     5621       IF ( ALLOCATED ( surf_v(l)%nis ) )  THEN
     5622          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%nis', surf_v(l)%nis )
     5623       ENDIF
     5624
     5625       IF ( ALLOCATED ( surf_v(l)%qrs ) )  THEN
     5626          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qrs', surf_v(l)%qrs )
     5627       ENDIF
     5628
     5629       IF ( ALLOCATED ( surf_v(l)%nrs ) )  THEN
     5630          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%nrs', surf_v(l)%nrs )
     5631       ENDIF
     5632
     5633       IF ( ALLOCATED ( surf_v(l)%ol ) )  THEN
     5634          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ol', surf_v(l)%ol )
     5635       ENDIF
     5636
     5637       IF ( ALLOCATED ( surf_v(l)%rib ) )  THEN
     5638          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%rib', surf_v(l)%rib )
     5639       ENDIF
     5640
     5641       IF ( ALLOCATED ( surf_v(l)%pt_surface ) )  THEN
     5642          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%pt_surface', surf_v(l)%pt_surface )
     5643       ENDIF
     5644
     5645       IF ( ALLOCATED ( surf_v(l)%q_surface ) )  THEN
     5646          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%q_surface', surf_v(l)%q_surface )
     5647       ENDIF
     5648
     5649       IF ( ALLOCATED ( surf_v(l)%vpt_surface ) )  THEN
     5650          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%vpt_surface', surf_v(l)%vpt_surface )
     5651       ENDIF
     5652
     5653       IF ( ALLOCATED ( surf_v(l)%shf ) )  THEN
     5654          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%shf', surf_v(l)%shf )
     5655       ENDIF
     5656
     5657       IF ( ALLOCATED ( surf_v(l)%qsws ) )  THEN
     5658          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qsws', surf_v(l)%qsws )
     5659       ENDIF
     5660
     5661       IF ( ALLOCATED ( surf_v(l)%ssws ) )  THEN
     5662          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ssws', surf_v(l)%ssws )
     5663       ENDIF
     5664
     5665       IF ( ALLOCATED ( surf_v(l)%css ) )  THEN
     5666          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%css', surf_v(l)%css )
     5667       ENDIF
     5668
     5669       IF ( ALLOCATED ( surf_v(l)%cssws ) )  THEN
     5670          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%cssws', surf_v(l)%cssws )
     5671       ENDIF
     5672
     5673       IF ( ALLOCATED ( surf_v(l)%qcsws ) )  THEN
     5674          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qcsws', surf_v(l)%qcsws )
     5675       ENDIF
     5676
     5677       IF ( ALLOCATED ( surf_v(l)%ncsws ) )  THEN
     5678          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ncsws', surf_v(l)%ncsws )
     5679       ENDIF
     5680
     5681       IF ( ALLOCATED ( surf_v(l)%qisws ) )  THEN
     5682          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qisws', surf_v(l)%qisws )
     5683       ENDIF
     5684
     5685       IF ( ALLOCATED ( surf_v(l)%nisws ) )  THEN
     5686          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%nisws', surf_v(l)%nisws )
     5687       ENDIF
     5688
     5689       IF ( ALLOCATED ( surf_v(l)%qrsws ) )  THEN
     5690          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qrsws', surf_v(l)%qrsws )
     5691       ENDIF
     5692
     5693       IF ( ALLOCATED ( surf_v(l)%nrsws ) )  THEN
     5694          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%nrsws', surf_v(l)%nrsws )
     5695       ENDIF
     5696
     5697       IF ( ALLOCATED ( surf_v(l)%sasws ) )  THEN
     5698          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%sasws', surf_v(l)%sasws )
     5699       ENDIF
     5700
     5701       IF ( ALLOCATED ( surf_v(l)%mom_flux_uv ) )  THEN
     5702          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%mom_uv', surf_v(l)%mom_flux_uv)
     5703       ENDIF
     5704
     5705       IF ( ALLOCATED ( surf_v(l)%mom_flux_w ) )  THEN
     5706          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%mom_w',  surf_v(l)%mom_flux_w)
     5707       ENDIF
     5708
     5709       IF ( ALLOCATED ( surf_v(l)%mom_flux_tke ) )  THEN
     5710          CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%mom_tke', surf_v(l)%mom_flux_tke)
     5711       ENDIF
     5712
     5713    ENDDO
     5714
     5715!
     5716!-- Redistribute surface elements on its respective type.
     5717
     5718    DO  l = 0 , 2
     5719       CALL restore_surface_elements( surf_def_h(l), surf_h(l) )
     5720       CALL restore_surface_elements( surf_lsm_h, surf_h(l) )
     5721       CALL restore_surface_elements( surf_usm_h, surf_h(l) )
     5722    ENDDO
     5723
     5724    DO  l = 0 , 3
     5725       CALL restore_surface_elements( surf_def_v(l), surf_v(l) )
     5726       CALL restore_surface_elements( surf_lsm_v(l), surf_v(l) )
     5727       CALL restore_surface_elements( surf_usm_v(l), surf_v(l) )
     5728    ENDDO
     5729
     5730 CONTAINS
     5731
     5732          SUBROUTINE restore_surface_elements( surf_target, surf_file )
     5733
     5734             IMPLICIT NONE
     5735
     5736             INTEGER(iwp)      ::  lsp         !< running index chemical species
     5737
     5738             TYPE( surf_type ) ::  surf_target !< target surface type
     5739             TYPE( surf_type ) ::  surf_file   !< surface type on file
     5740
     5741
     5742             IF ( ALLOCATED( surf_target%us )  .AND. ALLOCATED( surf_file%us   ) )      THEN
     5743                surf_target%us = surf_file%us
     5744             ENDIF
     5745
     5746             IF ( ALLOCATED( surf_target%ol )  .AND.                        &
     5747                ALLOCATED( surf_file%ol   ) )                             &
     5748                surf_target%ol = surf_file%ol
     5749
     5750             IF ( ALLOCATED( surf_target%pt_surface )  .AND.                &
     5751                ALLOCATED( surf_file%pt_surface   ) )                     &
     5752                surf_target%pt_surface = surf_file%pt_surface
     5753
     5754             IF ( ALLOCATED( surf_target%q_surface )  .AND.                 &
     5755                ALLOCATED( surf_file%q_surface   ) )                      &
     5756                surf_target%q_surface = surf_file%q_surface
     5757
     5758             IF ( ALLOCATED( surf_target%vpt_surface )  .AND.               &
     5759                ALLOCATED( surf_file%vpt_surface   ) )                    &
     5760                surf_target%vpt_surface = surf_file%vpt_surface
     5761
     5762             IF ( ALLOCATED( surf_target%usws )  .AND.                      &
     5763                ALLOCATED( surf_file%usws   ) )                           &
     5764                surf_target%usws = surf_file%usws
     5765
     5766             IF ( ALLOCATED( surf_target%vsws )  .AND.                      &
     5767                ALLOCATED( surf_file%vsws   ) )                           &
     5768                surf_target%vsws = surf_file%vsws
     5769
     5770             IF ( ALLOCATED( surf_target%ts )  .AND.                        &
     5771                ALLOCATED( surf_file%ts   ) )                             &
     5772                surf_target%ts = surf_file%ts
     5773
     5774             IF ( ALLOCATED( surf_target%shf )  .AND.                       &
     5775                ALLOCATED( surf_file%shf   ) )                            &
     5776                surf_target%shf = surf_file%shf
     5777
     5778             IF ( ALLOCATED( surf_target%qs )  .AND.                        &
     5779                ALLOCATED( surf_file%qs   ) )                             &
     5780                surf_target%qs = surf_file%qs
     5781
     5782             IF ( ALLOCATED( surf_target%qsws )  .AND.                      &
     5783                ALLOCATED( surf_file%qsws   ) )                           &
     5784                surf_target%qsws = surf_file%qsws
     5785
     5786             IF ( ALLOCATED( surf_target%ss )  .AND.                        &
     5787                ALLOCATED( surf_file%ss   ) )                             &
     5788                surf_target%ss = surf_file%ss
     5789
     5790             IF ( ALLOCATED( surf_target%ssws )  .AND.                      &
     5791                ALLOCATED( surf_file%ssws   ) )                           &
     5792                surf_target%ssws = surf_file%ssws
     5793
     5794             IF ( ALLOCATED( surf_target%css )  .AND.                     &
     5795                ALLOCATED( surf_file%css   ) )  THEN
     5796                DO  lsp = 1, nvar
     5797                   surf_target%css(lsp,:) = surf_file%css(lsp,:)
     5798                ENDDO
     5799             ENDIF
     5800
     5801             IF ( ALLOCATED( surf_target%cssws )  .AND.                     &
     5802                ALLOCATED( surf_file%cssws   ) )  THEN
     5803                DO  lsp = 1, nvar
     5804                   surf_target%cssws(lsp,:) = surf_file%cssws(lsp,:)
     5805                ENDDO
     5806             ENDIF
     5807             IF ( ALLOCATED( surf_target%qcs )  .AND.                       &
     5808                ALLOCATED( surf_file%qcs   ) )                            &
     5809                surf_target%qcs = surf_file%qcs
     5810             IF ( ALLOCATED( surf_target%qcsws )  .AND.                     &
     5811                ALLOCATED( surf_file%qcsws   ) )                          &
     5812                surf_target%qcsws = surf_file%qcsws
     5813             IF ( ALLOCATED( surf_target%ncs )  .AND.                       &
     5814                ALLOCATED( surf_file%ncs   ) )                            &
     5815                surf_target%ncs = surf_file%ncs
     5816             IF ( ALLOCATED( surf_target%ncsws )  .AND.                     &
     5817                ALLOCATED( surf_file%ncsws   ) )                          &
     5818                surf_target%ncsws = surf_file%ncsws
     5819             IF ( ALLOCATED( surf_target%qrs )  .AND.                       &
     5820                ALLOCATED( surf_file%qrs   ) )                            &
     5821                surf_target%qrs = surf_file%qrs
     5822             IF ( ALLOCATED( surf_target%qrsws )  .AND.                     &
     5823                ALLOCATED( surf_file%qrsws   ) )                          &
     5824                surf_target%qrsws = surf_file%qrsws
     5825             IF ( ALLOCATED( surf_target%nrs )  .AND.                       &
     5826                ALLOCATED( surf_file%nrs   ) )                            &
     5827                surf_target%nrs = surf_file%nrs
     5828
     5829             IF ( ALLOCATED( surf_target%nrsws )  .AND.                     &
     5830                ALLOCATED( surf_file%nrsws   ) )                          &
     5831                surf_target%nrsws = surf_file%nrsws
     5832             IF ( ALLOCATED( surf_target%sasws )  .AND.                     &
     5833                ALLOCATED( surf_file%sasws   ) )                          &
     5834                surf_target%sasws = surf_file%sasws
     5835             IF ( ALLOCATED( surf_target%mom_flux_uv )  .AND.               &
     5836                ALLOCATED( surf_file%mom_flux_uv   ) )                    &
     5837                surf_target%mom_flux_uv =                         &
     5838                surf_file%mom_flux_uv
     5839             IF ( ALLOCATED( surf_target%mom_flux_w )  .AND.                &
     5840                ALLOCATED( surf_file%mom_flux_w   ) )                     &
     5841                surf_target%mom_flux_w =                          &
     5842                surf_file%mom_flux_w
     5843             IF ( ALLOCATED( surf_target%mom_flux_tke )  .AND.              &
     5844                ALLOCATED( surf_file%mom_flux_tke   ) )                   &
     5845                surf_target%mom_flux_tke(0:1,:) =                    &
     5846                surf_file%mom_flux_tke(0:1,:)
     5847
     5848
     5849          END SUBROUTINE restore_surface_elements
     5850
     5851 END SUBROUTINE surface_rrd_local_mpi
     5852
     5853
     5854
    54065855
    54075856
Note: See TracChangeset for help on using the changeset viewer.