Changeset 4694


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

Location:
palm/trunk/SOURCE
Files:
5 edited

Legend:

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

    r4671 r4694  
    2525! -----------------
    2626! $Id$
     27! Fix reading of surface data from MPI restart file
     28!
     29! 4671 2020-09-09 20:27:58Z pavelkrc
    2730! Implementation of downward facing USM and LSM surfaces for RTM 4.1
    2831! Author: J. Resler (Institute of Computer Science, Prague)
     
    76117614    INTEGER(iwp) ::  l   !< running index surface orientation
    76127615
    7613     INTEGER(iwp), DIMENSION(nys:nyn,nxl:nxr) ::  end_index
     7616    !INTEGER(iwp), DIMENSION(nys:nyn,nxl:nxr) ::  end_index
    76147617    INTEGER(iwp), DIMENSION(nys:nyn,nxl:nxr) ::  global_start
    7615     INTEGER(iwp), DIMENSION(nys:nyn,nxl:nxr) ::  start_index
     7618    !INTEGER(iwp), DIMENSION(nys:nyn,nxl:nxr) ::  start_index
    76167619
    76177620    LOGICAL      :: array_found
     
    76907693                                          global_start )
    76917694
     7695       IF ( MAXVAL( surf_lsm_h(l)%end_index ) <= 0 )  CYCLE
     7696
    76927697       CALL rrd_mpi_io_surface( 't_soil_h(' // dum // ')', t_soil_h(l)%var_2d )
    76937698       CALL rrd_mpi_io_surface( 'm_soil_h(' // dum // ')',  m_soil_h(l)%var_2d )
     
    77057710!kk    Has to be discussed with the developpers
    77067711
    7707        CALL rrd_mpi_io( 'lsm_start_index_v_' // dum,  start_index )
    7708        CALL rrd_mpi_io( 'lsm_end_index_v_' // dum,  end_index )
     7712       CALL rrd_mpi_io( 'lsm_start_index_v_' // dum,  surf_lsm_v(l)%start_index )
     7713       CALL rrd_mpi_io( 'lsm_end_index_v_' // dum,  surf_lsm_v(l)%end_index )
    77097714       CALL rrd_mpi_io( 'lsm_global_start_index_v_' // dum , global_start )
    77107715
    7711        CALL rd_mpi_io_surface_filetypes( start_index, end_index, ldum, global_start )
    7712 
    7713        IF ( MAXVAL( end_index ) <= 0 )  CYCLE
     7716       CALL rd_mpi_io_surface_filetypes( surf_lsm_v(l)%start_index, surf_lsm_v(l)%end_index, ldum, global_start )
     7717
     7718       IF ( MAXVAL( surf_lsm_v(l)%end_index ) <= 0 )  CYCLE
    77147719
    77157720       CALL rrd_mpi_io_surface( 't_soil_v(' // dum // ')', t_soil_v(l)%var_2d )
  • palm/trunk/SOURCE/radiation_model_mod.f90

    r4686 r4694  
    2828! -----------------
    2929! $Id$
     30! Bugfix for tracing of maximum radiative fluxes
     31!
     32! 4686 2020-09-18 11:59:57Z pavelkrc
    3033! Silence compiler warning about unused variable in serial build
    3134!
     
    64216424            CALL radiation_print_debug_surf( 'surfinl after reflected pass', surfinl, refstep )
    64226425            CALL radiation_print_debug_surf( 'surfins after reflected pass', surfins, refstep )
    6423             CALL radiation_print_debug_pcb( 'pcbinlw after reflected pass', pcbinlw, refstep )
    6424             CALL radiation_print_debug_pcb( 'pcbinsw after reflected pass', pcbinsw, refstep )
     6426            IF ( npcbl > 0 )  THEN
     6427               CALL radiation_print_debug_pcb( 'pcbinlw after reflected pass', pcbinlw, refstep )
     6428               CALL radiation_print_debug_pcb( 'pcbinsw after reflected pass', pcbinsw, refstep )
     6429            ENDIF
    64256430         ENDIF
    64266431
  • palm/trunk/SOURCE/restart_data_mpi_io_mod.f90

    r4629 r4694  
    2525! -----------------
    2626! $Id$
     27! Fix name of subroutine in message
     28!
     29! 4629 2020-07-29 09:37:56Z raasch
    2730! support for MPI Fortran77 interface (mpif.h) removed
    2831!
     
    31363139
    31373140       message_string = 'surface array "' // TRIM( name ) // '" not found in restart file'
    3138        CALL message( 'rrd_mpi_io_global_array_int_1d', 'PA0722', 3, 2, 0, 6, 0 )
     3141       CALL message( 'rrd_mpi_io_surface', 'PA0722', 3, 2, 0, 6, 0 )
    31393142
    31403143    ENDIF
  • 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
  • palm/trunk/SOURCE/urban_surface_mod.f90

    r4693 r4694  
    2727! -----------------
    2828! $Id$
     29! Fix writing and reading of surface data to/from MPI restart file
     30!
     31! 4693 2020-09-22 19:47:04Z maronga
    2932! Bugfix for last commit
    3033!
     
    64986501                                         global_start )
    64996502
     6503       IF ( MAXVAL( surf_usm_h(l)%end_index ) <= 0 )  CYCLE
     6504
    65006505       IF ( .NOT.  ALLOCATED( t_surf_wall_h_1(l)%val ) )                                             &
    65016506          ALLOCATE( t_surf_wall_h_1(l)%val(1:surf_usm_h(l)%ns) )
     
    65106515       CALL rrd_mpi_io_surface( 't_surf_green_h(' // dum // ')', t_surf_green_h_1(l)%val )
    65116516
     6517       IF ( .NOT.  ALLOCATED( m_liq_usm_h_1(l)%val ) )                                            &
     6518          ALLOCATE( m_liq_usm_h_1(l)%val(1:surf_usm_h(l)%ns) )
     6519       CALL rrd_mpi_io_surface( 'm_liq_usm_h(' // dum // ')', m_liq_usm_h_1(l)%val )
     6520
     6521       IF ( indoor_model )  THEN
     6522          IF ( .NOT.  ALLOCATED( surf_usm_h(l)%waste_heat ) )                                     &
     6523             ALLOCATE( surf_usm_h(l)%waste_heat(1:surf_usm_h(l)%ns) )
     6524          CALL rrd_mpi_io_surface( 'waste_heat_h(' // dum // ')', surf_usm_h(l)%waste_heat )
     6525       ENDIF
     6526
    65126527    ENDDO
    65136528    DO  l = 0, 3
     
    65226537                                         global_start )
    65236538
     6539       IF ( MAXVAL( surf_usm_v(l)%end_index ) <= 0 )  CYCLE
     6540
    65246541       IF ( .NOT.  ALLOCATED( t_surf_wall_v_1(l)%val ) )                                             &
    65256542          ALLOCATE( t_surf_wall_v_1(l)%val(1:surf_usm_v(l)%ns) )
     
    65476564                                         global_start )
    65486565
     6566       IF ( MAXVAL( surf_usm_h(l)%end_index ) <= 0 )  CYCLE
     6567
    65496568       IF ( .NOT.  ALLOCATED( t_wall_h_1(l)%val ) )                                                          &
    65506569          ALLOCATE( t_wall_h_1(l)%val(nzb_wall:nzt_wall+1,1:surf_usm_h(l)%ns) )
     
    65586577          ALLOCATE( t_green_h_1(l)%val(nzb_wall:nzt_wall+1,1:surf_usm_h(l)%ns) )
    65596578       CALL rrd_mpi_io_surface( 't_green_h(' // dum // ')', t_green_h_1(l)%val )
     6579
    65606580    ENDDO
    65616581
     
    65706590       CALL rd_mpi_io_surface_filetypes( surf_usm_v(l)%start_index, surf_usm_v(l)%end_index, ldum, &
    65716591                                         global_start )
     6592
     6593       IF ( MAXVAL( surf_usm_v(l)%end_index ) <= 0 )  CYCLE
    65726594
    65736595       IF ( .NOT. ALLOCATED( t_wall_v_1(l)%val ) )                                                   &
     
    73927414          WRITE( dum, '(I1)')  l
    73937415
    7394           END DO
    73957416          CALL rd_mpi_io_surface_filetypes( surf_usm_h(l)%start_index, surf_usm_h(l)%end_index,             &
    73967417                                            surface_data_to_write, global_start_index )
     
    74007421          CALL wrd_mpi_io( 'usm_global_start_h_' // dum, global_start_index )
    74017422
    7402           CALL wrd_mpi_io_surface( 't_surf_wall_h_' // dum,  t_surf_wall_h(l)%val )
    7403           CALL wrd_mpi_io_surface( 't_surf_window_h_' // dum, t_surf_window_h(l)%val )
    7404           CALL wrd_mpi_io_surface( 't_surf_green_h_' // dum, t_surf_green_h(l)%val )
    7405 
    7406           CALL wrd_mpi_io_surface( 'm_liq_usm_h_' // dum, m_liq_usm_h(l)%val )
     7423          IF ( .NOT. surface_data_to_write )  CYCLE
     7424
     7425          CALL wrd_mpi_io_surface( 't_surf_wall_h(' // dum // ')',  t_surf_wall_h(l)%val )
     7426          CALL wrd_mpi_io_surface( 't_surf_window_h(' // dum // ')', t_surf_window_h(l)%val )
     7427          CALL wrd_mpi_io_surface( 't_surf_green_h(' // dum // ')', t_surf_green_h(l)%val )
     7428
     7429          CALL wrd_mpi_io_surface( 'm_liq_usm_h(' // dum // ')', m_liq_usm_h(l)%val )
    74077430          IF ( indoor_model )  THEN
    7408              CALL wrd_mpi_io_surface( 'waste_heat_h_' // dum, surf_usm_h(l)%waste_heat ) ! NEED TO BE CHECKED!!!!!
    7409           ENDIF
     7431             CALL wrd_mpi_io_surface( 'waste_heat_h(' // dum // ')', surf_usm_h(l)%waste_heat ) ! NEED TO BE CHECKED!!!!!
     7432          ENDIF
     7433
     7434       ENDDO
    74107435
    74117436       DO  l = 0, 3
     
    74397464          CALL wrd_mpi_io( 'usm_global_start_h_2_' // dum, global_start_index )
    74407465
    7441           CALL wrd_mpi_io_surface( 't_wall_h_' // dum, t_wall_h(l)%val )
    7442           CALL wrd_mpi_io_surface( 't_window_h_' // dum, t_window_h(l)%val )
    7443           CALL wrd_mpi_io_surface( 't_green_h_' // dum, t_green_h(l)%val )
     7466          IF ( .NOT. surface_data_to_write )  CYCLE
     7467
     7468          CALL wrd_mpi_io_surface( 't_wall_h(' // dum // ')', t_wall_h(l)%val )
     7469          CALL wrd_mpi_io_surface( 't_window_h(' // dum // ')', t_window_h(l)%val )
     7470          CALL wrd_mpi_io_surface( 't_green_h(' // dum // ')', t_green_h(l)%val )
    74447471
    74457472       ENDDO
Note: See TracChangeset for help on using the changeset viewer.