Ignore:
Timestamp:
Aug 16, 2019 11:01:48 AM (2 years ago)
Author:
suehring
Message:

Merge from branch resler: Changed behaviour of masked output over surface to follow terrain and ignore buildings

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE

  • palm/trunk/SOURCE/radiation_model_mod.f90

    r4157 r4167  
    2828! -----------------
    2929! $Id$
     30! Changed behaviour of masked output over surface to follow terrain and ignore
     31! buildings (J.Resler, T.Gronemeier)
     32!
     33! 4157 2019-08-14 09:19:12Z suehring
    3034! Give informative message on raytracing distance only by core zero
    3135!
     
    741745
    742746    CHARACTER(10) :: radiation_scheme = 'clear-sky' ! 'constant', 'clear-sky', or 'rrtmg'
     747
     748    REAL(wp), PARAMETER ::  fill_value = -9999.0_wp       !< value for the _FillValue attribute
    743749
    744750!
     
    1013710143    LOGICAL      ::  two_d !< flag parameter that indicates 2D variables (horizontal cross sections)
    1013810144
    10139     REAL(wp) ::  fill_value = -999.0_wp    !< value for the _FillValue attribute
    10140 
    1014110145    REAL(wp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do) ::  local_pf !<
    1014210146
     
    1053610540    LOGICAL      ::  found       !<
    1053710541
    10538     REAL(wp)     ::  fill_value = -999.0_wp    !< value for the _FillValue attribute
    10539 
    1054010542    REAL(sp), DIMENSION(nxl:nxr,nys:nyn,nzb_do:nzt_do) ::  local_pf !<
    1054110543
     
    1110511107    CHARACTER (LEN=*) ::  variable   !<
    1110611108
    11107     CHARACTER(LEN=5) ::  grid        !< flag to distinquish between staggered grids
    11108 
    1110911109    INTEGER(iwp) ::  av              !<
    1111011110    INTEGER(iwp) ::  i               !<
    1111111111    INTEGER(iwp) ::  j               !<
    11112     INTEGER(iwp) ::  k               !<
     11112    INTEGER(iwp) ::  k               !<
     11113    INTEGER(iwp) ::  im              !< loop index for masked variables
     11114    INTEGER(iwp) ::  jm              !< loop index for masked variables
     11115    INTEGER(iwp) ::  kk              !<
    1111311116    INTEGER(iwp) ::  mid             !< masked output running index
    11114     INTEGER(iwp) ::  topo_top_ind    !< k index of highest horizontal surface
     11117    INTEGER(iwp) ::  ktt             !< k index of highest terrain surface
    1111511118
    1111611119    LOGICAL ::  found                !< true if output array was found
     
    1112411127    REAL(wp), DIMENSION(:,:,:), POINTER ::  to_be_resorted  !< points to array which needs to be resorted for output
    1112511128
    11126 
    11127     found    = .TRUE.
    11128     grid     = 's'
    1112911129    resorted = .FALSE.
     11130    found = .TRUE.
    1113011131
    1113111132    SELECT CASE ( TRIM( variable ) )
     
    1121411215             DO  j = 1, mask_size_l(mid,2)
    1121511216!
    11216 !--             Get k index of highest horizontal surface
    11217                 topo_top_ind = get_topography_top_index_ji( mask_j(mid,j), &
    11218                                                             mask_i(mid,i), &
    11219                                                             grid )
    11220 !
    11221 !--             Save output array
     11217!--             Get k index of the highest terraing surface
     11218                im = mask_i(mid,i)
     11219                jm = mask_j(mid,j)
     11220                ktt = MINLOC( MERGE( 1, 0, BTEST( wall_flags_0(:,jm,im), 5 )), &
     11221                              DIM = 1 ) - 1
    1122211222                DO  k = 1, mask_size_l(mid,3)
    11223                    local_pf(i,j,k) = to_be_resorted(                       &
    11224                                           MIN( topo_top_ind+mask_k(mid,k), &
    11225                                                nzt+1 ),                    &
    11226                                           mask_j(mid,j),                   &
    11227                                           mask_i(mid,i)                     )
     11223                   kk = MIN( ktt+mask_k(mid,k), nzt+1 )
     11224!
     11225!--                Set value if not in building
     11226                   IF ( BTEST( wall_flags_0(kk,jm,im), 6 ) )  THEN
     11227                      local_pf(i,j,k) = fill_value
     11228                   ELSE
     11229                      local_pf(i,j,k) = to_be_resorted(kk,jm,im)
     11230                   ENDIF
    1122811231                ENDDO
    1122911232             ENDDO
Note: See TracChangeset for help on using the changeset viewer.