Ignore:
Timestamp:
Feb 8, 2018 1:24:35 PM (4 years ago)
Author:
suehring
Message:

Output of ground-heat flux at natural- and urban-type surfaces in one output variable; enable restart data of _av variables that belong to both land- and urban-surface model

File:
1 edited

Legend:

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

    r2765 r2797  
    2525! -----------------
    2626! $Id$
     27! Move output of ghf to general 2D output to output ghf also at urban-type
     28! surfaces.
     29! Move restart data of ghf_av to read/write_3d_binary, as this is not a
     30! exclusively LSM variable anymore.   
     31!
     32! 2765 2018-01-22 11:34:58Z maronga
    2733! Major bugfix in calculation of f_shf for vertical surfaces
    2834!
     
    598604              c_soil_av,        & !< average of c_soil
    599605              c_veg_av,         & !< average of c_veg
    600               ghf_av,           & !< average of ghf
    601606              lai_av,           & !< average of lai
    602607              qsws_liq_av,      & !< average of qsws_liq
     
    10441049          unit = 'K'   
    10451050             
    1046        CASE ( 'lai*', 'c_liq*', 'c_soil*', 'c_veg*', 'ghf*', 'm_liq*',         &
     1051       CASE ( 'lai*', 'c_liq*', 'c_soil*', 'c_veg*', 'm_liq*',                 &
    10471052              'qsws_liq*', 'qsws_soil*', 'qsws_veg*', 'r_s*' )
    10481053          IF ( k == 0  .OR.  data_output(i)(ilen-2:ilen) /= '_xy' )  THEN
     
    10721077             CALL message( 'check_parameters', 'PA0404', 1, 2, 0, 6, 0 )
    10731078          ENDIF
    1074           IF ( TRIM( var ) == 'ghf*'  .AND.  .NOT.  land_surface )  THEN
    1075              message_string = 'output of "' // TRIM( var ) // '" requi' //     &
    1076                               'res land_surface = .TRUE.'
    1077              CALL message( 'check_parameters', 'PA0404', 1, 2, 0, 6, 0 )
    1078           ENDIF
    10791079          IF ( TRIM( var ) == 'm_liq*'  .AND.  .NOT.  land_surface )  THEN
    10801080             message_string = 'output of "' // TRIM( var ) // '" requi' //     &
     
    11111111          IF ( TRIM( var ) == 'c_soil*')      unit = 'none'
    11121112          IF ( TRIM( var ) == 'c_veg*' )      unit = 'none'
    1113           IF ( TRIM( var ) == 'ghf*')         unit = 'W/m2'
    11141113          IF ( TRIM( var ) == 'm_liq*'     )  unit = 'm'
    11151114          IF ( TRIM( var ) == 'qsws_liq*'  )  unit = 'W/m2'
     
    50425041                c_veg_av = 0.0_wp
    50435042
    5044              CASE ( 'ghf*' )
    5045                 IF ( .NOT. ALLOCATED( ghf_av ) )  THEN
    5046                    ALLOCATE( ghf_av(nysg:nyng,nxlg:nxrg) )
    5047                 ENDIF
    5048                 ghf_av = 0.0_wp
    5049 
    50505043             CASE ( 'lai*' )
    50515044                IF ( .NOT. ALLOCATED( lai_av ) )  THEN
     
    51245117                j   = surf_lsm_h%j(m)
    51255118                c_veg_av(j,i) = c_veg_av(j,i) + surf_lsm_h%c_veg(m)
    5126              ENDDO
    5127 
    5128           CASE ( 'ghf*' )
    5129              DO  m = 1, surf_lsm_h%ns
    5130                 i   = surf_lsm_h%i(m)           
    5131                 j   = surf_lsm_h%j(m)
    5132                 ghf_av(j,i) = ghf_av(j,i) + surf_lsm_h%ghf(m)
    51335119             ENDDO
    51345120
     
    52265212                   c_veg_av(j,i) = c_veg_av(j,i)                               &
    52275213                                   / REAL( average_count_3d, KIND=wp )
    5228                 ENDDO
    5229              ENDDO
    5230 
    5231           CASE ( 'ghf*' )
    5232              DO  i = nxl, nxr
    5233                 DO  j = nys, nyn
    5234                    ghf_av(j,i) = ghf_av(j,i)                                   &
    5235                                  / REAL( average_count_3d, KIND=wp )
    52365214                ENDDO
    52375215             ENDDO
     
    54395417                DO  j = nys, nyn
    54405418                   local_pf(i,j,nzb+1) = c_veg_av(j,i)
    5441                 ENDDO
    5442              ENDDO
    5443           ENDIF
    5444 
    5445           two_d = .TRUE.
    5446           grid = 'zu1'
    5447 
    5448        CASE ( 'ghf*_xy' )        ! 2d-array
    5449           IF ( av == 0 )  THEN
    5450              DO  m = 1, surf_lsm_h%ns
    5451                 i                   = surf_lsm_h%i(m)           
    5452                 j                   = surf_lsm_h%j(m)
    5453                 local_pf(i,j,nzb+1) = surf_lsm_h%ghf(m)
    5454              ENDDO
    5455           ELSE
    5456              DO  i = nxl, nxr
    5457                 DO  j = nys, nyn
    5458                    local_pf(i,j,nzb+1) = ghf_av(j,i)
    54595419                ENDDO
    54605420             ENDDO
     
    57505710       IF ( ALLOCATED( c_veg_av ) )  THEN
    57515711          WRITE ( 14 )  'c_veg_av            ';  WRITE ( 14 ) c_veg_av
    5752        ENDIF
    5753        IF ( ALLOCATED( ghf_av ) )  THEN
    5754           WRITE ( 14 )  'ghf_av              ';  WRITE ( 14 )  ghf_av
    57555712       ENDIF
    57565713       IF ( ALLOCATED( lai_av ) )  THEN
     
    59935950                                  tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    59945951
    5995                 CASE ( 'ghf_av' )
    5996                    IF ( .NOT. ALLOCATED( ghf_av ) )  THEN
    5997                       ALLOCATE( ghf_av(nysg:nyng,nxlg:nxrg) )
    5998                    ENDIF
    5999                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    6000                    ghf_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) =           &
    6001                                   tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    6002 
    60035952                CASE ( 'lai_av' )
    60045953                   IF ( .NOT. ALLOCATED( lai_av ) )  THEN
Note: See TracChangeset for help on using the changeset viewer.