Ignore:
Timestamp:
Sep 23, 2020 3:09:19 PM (4 years ago)
Author:
pavelkrc
Message:

Fix writing and reading of surface data to/from MPI restart file + small fixes

File:
1 edited

Legend:

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

    r4682 r4694  
    2525! -----------------
    2626! $Id$
     27! Fix reading of surface data from MPI restart file
     28!
     29! 4682 2020-09-17 14:13:27Z pavelkrc
    2730! Fix indexing of horizontal surfaces in write restart for full-3D cases
    2831!
     
    56265629          DO  j = nys, nyn
    56275630             surf_match_def  = surf_def_h(l)%end_index(j,i) >= surf_def_h(l)%start_index(j,i)
     5631             IF ( l < 2 )  THEN
     5632                surf_match_lsm  = surf_lsm_h(l)%end_index(j,i) >= surf_lsm_h(l)%start_index(j,i)
     5633                surf_match_usm  = surf_usm_h(l)%end_index(j,i) >= surf_usm_h(l)%start_index(j,i)
     5634             ELSE
     5635                surf_match_lsm  = .FALSE.
     5636                surf_match_usm  = .FALSE.
     5637             ENDIF
    56285638             IF ( surf_match_def )  THEN
    56295639!
     
    56405650                ENDDO
    56415651             ENDIF
     5652!--          Natural- and urban-like horizontal surfaces.
     5653             IF ( surf_match_lsm )  THEN
     5654                mm = surf_lsm_h(l)%start_index(j,i)
     5655                DO  m = surf_h(l)%start_index(j,i), surf_h(l)%end_index(j,i)
     5656                   IF ( surf_lsm_h(l)%end_index(j,i) >= mm )                                             &
     5657                      CALL restore_surface_elements( surf_lsm_h(l), mm, surf_h(l), m )
     5658                   mm = mm + 1
     5659                ENDDO
     5660             ENDIF
     5661             IF ( surf_match_usm )  THEN
     5662                mm = surf_usm_h(l)%start_index(j,i)
     5663                DO  m = surf_h(l)%start_index(j,i), surf_h(l)%end_index(j,i)
     5664                   IF ( surf_usm_h(l)%end_index(j,i) >= mm )                                             &
     5665                      CALL restore_surface_elements( surf_usm_h(l), mm, surf_h(l), m )
     5666                   mm = mm + 1
     5667                ENDDO
     5668             ENDIF
    56425669          ENDDO
    5643        ENDDO
    5644     ENDDO
    5645 !
    5646 !-- Natural- and urban-like horizontal surfaces.
    5647     DO  i = nxl, nxr
    5648        DO  j = nys, nyn
    5649           surf_match_lsm  = surf_lsm_h(l)%end_index(j,i) >= surf_lsm_h(l)%start_index(j,i)
    5650           surf_match_usm  = surf_usm_h(l)%end_index(j,i) >= surf_usm_h(l)%start_index(j,i)
    5651 
    5652           IF ( surf_match_lsm )  THEN
    5653              mm = surf_lsm_h(l)%start_index(j,i)
    5654              DO  m = surf_h(0)%start_index(j,i), surf_h(0)%end_index(j,i)
    5655                 IF ( surf_lsm_h(l)%end_index(j,i) >= mm )                                             &
    5656                    CALL restore_surface_elements( surf_lsm_h(l), mm, surf_h(0), m )
    5657                 mm = mm + 1
    5658              ENDDO
    5659           ENDIF
    5660 
    5661           IF ( surf_match_usm )  THEN
    5662              mm = surf_usm_h(l)%start_index(j,i)
    5663              DO  m = surf_h(0)%start_index(j,i), surf_h(0)%end_index(j,i)
    5664                 IF ( surf_usm_h(l)%end_index(j,i) >= mm )                                             &
    5665                    CALL restore_surface_elements( surf_usm_h(l), mm, surf_h(0), m )
    5666                 mm = mm + 1
    5667              ENDDO
    5668           ENDIF
    56695670       ENDDO
    56705671    ENDDO
Note: See TracChangeset for help on using the changeset viewer.