Ignore:
Timestamp:
Jan 17, 2018 4:24:59 PM (3 years ago)
Author:
suehring
Message:

Major bugfix in horizontal diffusion of all scalar quantities at vertical surfaces; further bugfix: density is considered for vertical fluxes of passive scalar and salinity

File:
1 edited

Legend:

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

    r2753 r2759  
    2626! -----------------
    2727! $Id$
     28! Bugfix, consider density in vertical fluxes of passive scalar as well as
     29! chemical species.
     30!
     31! 2753 2018-01-16 14:16:49Z suehring
    2832! +r_a_green, r_a_window
    2933!
     
    116120
    117121    USE arrays_3d,                                                             &
    118         ONLY:  zu, zw, heatflux_input_conversion, waterflux_input_conversion,  &
    119                momentumflux_input_conversion
     122        ONLY:  heatflux_input_conversion, momentumflux_input_conversion,       &
     123               rho_air, rho_air_zw, zu, zw, waterflux_input_conversion
    120124
    121125#if defined( __chem )
     
    17531757                      IF ( .NOT. random_heatflux )  THEN
    17541758                         surf%shf(num_h) = surface_heatflux *                  &
    1755                                                  heatflux_input_conversion(nzb)
     1759                                                 heatflux_input_conversion(k-1)
    17561760!
    17571761!--                      Check if surface heat flux might be replaced by
     
    17841788                      IF ( constant_waterflux )  THEN
    17851789                         surf%qsws(num_h) = surface_waterflux *                &
    1786                                                  waterflux_input_conversion(nzb)
     1790                                                 waterflux_input_conversion(k-1)
    17871791                         IF ( k-1 /= 0 )  THEN
    17881792                            surf%qsws(num_h) = wall_humidityflux(0) *          &
     
    18011805                   IF ( upward_facing )  THEN
    18021806                      IF ( constant_scalarflux )  THEN
    1803                          surf%ssws(num_h) = surface_scalarflux
     1807                         surf%ssws(num_h) = surface_scalarflux * rho_air_zw(k-1)
    18041808
    18051809                         IF ( k-1 /= 0 )                                       &
    1806                             surf%ssws(num_h) = wall_scalarflux(0)
     1810                            surf%ssws(num_h) = wall_scalarflux(0) *            &
     1811                                               rho_air_zw(k-1)
    18071812
    18081813                      ELSE
     
    18101815                      ENDIF
    18111816                   ELSE
    1812                       surf%ssws(num_h) = wall_scalarflux(5)
     1817                      surf%ssws(num_h) = wall_scalarflux(5) * rho_air_zw(k)
    18131818                   ENDIF
    18141819                ENDIF
     
    18241829                            IF ( upward_facing )  THEN
    18251830                               IF ( constant_csflux(lsp_pr) )  THEN
    1826                                   surf%cssws(lsp,num_h) = surface_csflux(lsp_pr)
    1827 
    1828                                   IF ( k-1 /= 0 )                                    &
    1829                                      surf%cssws(lsp,num_h) = wall_csflux(lsp,0)
     1831                                  surf%cssws(lsp,num_h) =                      &
     1832                                                       surface_csflux(lsp_pr) *&
     1833                                                       rho_air_zw(k-1)
     1834
     1835                                  IF ( k-1 /= 0 )                              &
     1836                                     surf%cssws(lsp,num_h) =                   &
     1837                                                       wall_csflux(lsp,0) *    &
     1838                                                       rho_air_zw(k-1)
    18301839                               ELSE
    18311840                                  surf%cssws(lsp,num_h) = 0.0_wp
    18321841                               ENDIF
    18331842                            ELSE
    1834                                surf%cssws(lsp,num_h) = wall_csflux(lsp,5)
     1843                               surf%cssws(lsp,num_h) = wall_csflux(lsp,5) *    &
     1844                                                       rho_air_zw(k)
    18351845                            ENDIF
    18361846                         ENDIF
     
    18431853                IF ( ocean )  THEN
    18441854                   IF ( upward_facing )  THEN
    1845                       surf%sasws(num_h) = bottom_salinityflux
     1855                      surf%sasws(num_h) = bottom_salinityflux * rho_air_zw(k-1)
    18461856                   ELSE
    18471857                      surf%sasws(num_h) = 0.0_wp
     
    19071917!--          Prescribe top scalar flux
    19081918             IF ( passive_scalar .AND. constant_top_scalarflux )               &
    1909                 surf%ssws(num_h) = top_scalarflux
     1919                surf%ssws(num_h) = top_scalarflux * rho_air_zw(nzt+1)
    19101920!
    19111921!--          Prescribe top chemical species' flux
     
    19131923             DO  lsp = 1, nvar
    19141924                IF ( air_chemistry  .AND.  constant_top_csflux(lsp) )  THEN
    1915                    surf%cssws(lsp,num_h) = top_csflux(lsp)
     1925                   surf%cssws(lsp,num_h) = top_csflux(lsp) * rho_air_zw(nzt+1)
    19161926                ENDIF
    19171927             ENDDO
     
    19201930!--          Prescribe top salinity flux
    19211931             IF ( ocean .AND. constant_top_salinityflux)                       &
    1922                 surf%sasws(num_h) = top_salinityflux
     1932                surf%sasws(num_h) = top_salinityflux * rho_air_zw(nzt+1)
    19231933!
    19241934!--          Top momentum fluxes
Note: See TracChangeset for help on using the changeset viewer.