Ignore:
Timestamp:
Sep 9, 2020 8:27:58 PM (4 years ago)
Author:
pavelkrc
Message:

Radiative transfer model RTM version 4.1

File:
1 edited

Legend:

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

    r4559 r4671  
    2121! Current revisions:
    2222! ------------------
    23 ! 
    24 ! 
     23!
     24!
    2525! Former revisions:
    2626! -----------------
    2727! $Id$
     28! Implementation of downward facing USM and LSM surfaces
     29!
     30! 4559 2020-06-11 08:51:48Z raasch
    2831! file re-formatted to follow the PALM coding standard
    2932!
     
    14861489!-- horizontal urban walls that are at k == 0 (building is lower than the first grid point). Hence,
    14871490!-- in order to have only emissions at streets, set the surfaces emissions to zero at urban walls.
    1488              IF  ( surf_usm_h%ns >=1 )  surf_usm_h%cssws = 0.0_wp
     1491             IF  ( surf_usm_h(0)%ns >=1 )  surf_usm_h(0)%cssws = 0.0_wp
    14891492
    14901493!
    14911494!--          Treat land-surfaces.
    1492              DO  m = 1, surf_lsm_h%ns
    1493 
    1494                 i = surf_lsm_h%i(m)
    1495                 j = surf_lsm_h%j(m)
    1496                 k = surf_lsm_h%k(m)
     1495             DO  m = 1, surf_lsm_h(0)%ns
     1496
     1497                i = surf_lsm_h(0)%i(m)
     1498                j = surf_lsm_h(0)%j(m)
     1499                k = surf_lsm_h(0)%k(m)
    14971500
    14981501!
    14991502!--             Set everything to zero then reassign according to street type
    1500                 surf_lsm_h%cssws(:,m) = 0.0_wp
     1503                surf_lsm_h(0)%cssws(:,m) = 0.0_wp
    15011504
    15021505                IF  ( street_type_f%var(j,i) >= main_street_id  .AND.                              &
     
    15151518!
    15161519!--                      kg/(m^2*s) * kg/m^3
    1517                          surf_lsm_h%cssws(match_spec_model(ispec),m) =                             &
     1520                         surf_lsm_h(0)%cssws(match_spec_model(ispec),m) =                          &
    15181521                                   emiss_factor_main(match_spec_input(ispec)) *                    &
    15191522                                   emis_distribution(1,j,i,ispec)             *   &     ! kg/(m^2*s)
     
    15271530!
    15281531!--                      ppm/s *m *kg/m^3
    1529                          surf_lsm_h%cssws(match_spec_model(ispec),m) =                             &
     1532                         surf_lsm_h(0)%cssws(match_spec_model(ispec),m) =                          &
    15301533                                   emiss_factor_main( match_spec_input(ispec) ) *                  &
    15311534                                   emis_distribution(1,j,i,ispec) *       &     ! micromoles/(m^2*s)
     
    15531556!
    15541557!--                      kg/(m^2*s) * kg/m^3
    1555                          surf_lsm_h%cssws(match_spec_model(ispec),m) =                             &
     1558                         surf_lsm_h(0)%cssws(match_spec_model(ispec),m) =                          &
    15561559                                   emiss_factor_side( match_spec_input(ispec) ) *                  &
    15571560                                   emis_distribution(1,j,i,ispec)               * &     ! kg/(m^2*s)
     
    15641567!
    15651568!--                      ppm/s *m *kg/m^3
    1566                          surf_lsm_h%cssws(match_spec_model(ispec),m) =                             &
     1569                         surf_lsm_h(0)%cssws(match_spec_model(ispec),m) =                          &
    15671570                                   emiss_factor_side( match_spec_input(ispec) ) *                  &
    15681571                                   emis_distribution(1,j,i,ispec)        *   &  ! micromoles/(m^2*s)
     
    15791582!                ELSE
    15801583!
    1581 !                   surf_lsm_h%cssws(:,m) = 0.0_wp
     1584!                   surf_lsm_h(0)%cssws(:,m) = 0.0_wp
    15821585
    15831586                ENDIF  ! street type
     
    16491652!
    16501653!--          LSM surfaces
    1651              DO  m = 1, surf_lsm_h%ns
    1652 
    1653                 i = surf_lsm_h%i(m)
    1654                 j = surf_lsm_h%j(m)
    1655                 k = surf_lsm_h%k(m)
     1654             DO  m = 1, surf_lsm_h(0)%ns
     1655
     1656                i = surf_lsm_h(0)%i(m)
     1657                j = surf_lsm_h(0)%j(m)
     1658                k = surf_lsm_h(0)%k(m)
    16561659
    16571660                IF  ( emis_distribution(1,j,i,ispec) > 0.0_wp )  THEN
     
    16631666                         TRIM( spc_names( match_spec_model(ispec) ) ) == "PM10" )  THEN
    16641667
    1665                       surf_lsm_h%cssws(match_spec_model(ispec),m) =           &    ! kg/m2/s * kg/m3
    1666                                              emis_distribution(1,j,i,ispec) * &    ! kg/m2/s
    1667                                              rho_air(k)                            ! kg/m^3
     1668                      surf_lsm_h(0)%cssws(match_spec_model(ispec),m) =           &    ! kg/m2/s * kg/m3
     1669                                             emis_distribution(1,j,i,ispec) *    &    ! kg/m2/s
     1670                                             rho_air(k)                               ! kg/m^3
    16681671
    16691672                   ELSE
     
    16741677                            emt_att%species_name(match_spec_input(ispec)) == "VOC" )  THEN
    16751678
    1676                          surf_lsm_h%cssws(match_spec_model(ispec),m) =      &   ! ppm/s * m * kg/m3
    1677                                emis_distribution(1,j,i,ispec) *             &   ! mole/m2/s
    1678                                conv_to_ratio(k,j,i)           *             &   ! m^3/mole
    1679                                ratio2ppm                      *             &   ! ppm
    1680                                rho_air(k)                                       ! kg/m^3
     1679                         surf_lsm_h(0)%cssws(match_spec_model(ispec),m) =      &   ! ppm/s * m * kg/m3
     1680                               emis_distribution(1,j,i,ispec) *                &   ! mole/m2/s
     1681                               conv_to_ratio(k,j,i)           *                &   ! m^3/mole
     1682                               ratio2ppm                      *                &   ! ppm
     1683                               rho_air(k)                                          ! kg/m^3
    16811684
    16821685!
     
    16841687                      ELSE
    16851688
    1686                          surf_lsm_h%cssws(match_spec_model(ispec),m) =       &   ! ppm/s * m * kg/m3
    1687                                emis_distribution(1,j,i,ispec) *              &   ! kg/m2/s
    1688                                ( 1.0_wp / emt_att%xm(ispec) ) *              &   ! mole/kg
    1689                                conv_to_ratio(k,j,i)           *              &   ! m^3/mole
    1690                                ratio2ppm                      *              &   ! ppm
    1691                                rho_air(k)                                        ! kg/m^3
     1689                         surf_lsm_h(0)%cssws(match_spec_model(ispec),m) =       &   ! ppm/s * m * kg/m3
     1690                               emis_distribution(1,j,i,ispec) *                 &   ! kg/m2/s
     1691                               ( 1.0_wp / emt_att%xm(ispec) ) *                 &   ! mole/kg
     1692                               conv_to_ratio(k,j,i)           *                 &   ! m^3/mole
     1693                               ratio2ppm                      *                 &   ! ppm
     1694                               rho_air(k)                                           ! kg/m^3
    16921695
    16931696                      ENDIF  ! VOC
     
    17031706!
    17041707!--          USM surfaces
    1705              DO  m = 1, surf_usm_h%ns
    1706 
    1707                 i = surf_usm_h%i(m)
    1708                 j = surf_usm_h%j(m)
    1709                 k = surf_usm_h%k(m)
     1708             DO  m = 1, surf_usm_h(0)%ns
     1709
     1710                i = surf_usm_h(0)%i(m)
     1711                j = surf_usm_h(0)%j(m)
     1712                k = surf_usm_h(0)%k(m)
    17101713
    17111714                IF  ( emis_distribution(1,j,i,ispec) > 0.0_wp )  THEN
     
    17171720                         TRIM( spc_names( match_spec_model(ispec) ) ) == "PM10" )  THEN
    17181721
    1719                       surf_usm_h%cssws(match_spec_model(ispec),m) =           &    ! kg/m2/s * kg/m3
    1720                                emis_distribution(1,j,i,ispec) *               &    ! kg/m2/s
    1721                                rho_air(k)                                           ! kg/m^3
     1722                      surf_usm_h(0)%cssws(match_spec_model(ispec),m) =           &    ! kg/m2/s * kg/m3
     1723                               emis_distribution(1,j,i,ispec) *                  &    ! kg/m2/s
     1724                               rho_air(k)                                             ! kg/m^3
    17221725
    17231726                   ELSE
     
    17281731                            emt_att%species_name(match_spec_input(ispec)) == "VOC" )  THEN
    17291732
    1730                          surf_usm_h%cssws(match_spec_model(ispec),m) =       &   ! ppm/s * m * kg/m3
    1731                                emis_distribution(1,j,i,ispec) *              &   ! m2/s
    1732                                conv_to_ratio(k,j,i)           *              &   ! m^3/mole
    1733                                ratio2ppm                      *              &   ! ppm
    1734                                rho_air(k)                                        ! kg/m^3
     1733                         surf_usm_h(0)%cssws(match_spec_model(ispec),m) =       &   ! ppm/s * m * kg/m3
     1734                               emis_distribution(1,j,i,ispec) *                 &   ! m2/s
     1735                               conv_to_ratio(k,j,i)           *                 &   ! m^3/mole
     1736                               ratio2ppm                      *                 &   ! ppm
     1737                               rho_air(k)                                           ! kg/m^3
    17351738
    17361739!
     
    17381741                      ELSE
    17391742
    1740                          surf_usm_h%cssws(match_spec_model(ispec),m) =       &   ! ppm/s * m * kg/m3
    1741                                emis_distribution(1,j,i,ispec) *              &   ! kg/m2/s
    1742                                ( 1.0_wp / emt_att%xm(ispec) ) *              &   ! mole/kg
    1743                                conv_to_ratio(k,j,i)           *              &   ! m^3/mole
    1744                                ratio2ppm                      *              &   ! ppm
    1745                                rho_air(k)                                        ! kg/m^3
     1743                         surf_usm_h(0)%cssws(match_spec_model(ispec),m) =       &   ! ppm/s * m * kg/m3
     1744                               emis_distribution(1,j,i,ispec) *                 &   ! kg/m2/s
     1745                               ( 1.0_wp / emt_att%xm(ispec) ) *                 &   ! mole/kg
     1746                               conv_to_ratio(k,j,i)           *                 &   ! m^3/mole
     1747                               ratio2ppm                      *                 &   ! ppm
     1748                               rho_air(k)                                           ! kg/m^3
    17461749
    17471750
     
    20302033    cssws_def_h = 0.0_wp
    20312034
    2032     ALLOCATE( cssws_lsm_h(n_matched_vars,surf_lsm_h%ns) )
     2035    ALLOCATE( cssws_lsm_h(n_matched_vars,surf_lsm_h(0)%ns) )
    20332036    cssws_lsm_h = 0.0_wp
    20342037
    2035     ALLOCATE( cssws_usm_h(n_matched_vars,surf_usm_h%ns) )
     2038    ALLOCATE( cssws_usm_h(n_matched_vars,surf_usm_h(0)%ns) )
    20362039    cssws_usm_h = 0.0_wp
    20372040
     
    20432046
    20442047
    2045     CALL assign_surface_flux ( cssws_lsm_h, surf_lsm_h%ns,                                         &
    2046                                surf_lsm_h%j, surf_lsm_h%i,                                         &
     2048    CALL assign_surface_flux ( cssws_lsm_h, surf_lsm_h(0)%ns,                                      &
     2049                               surf_lsm_h(0)%j, surf_lsm_h(0)%i,                                   &
    20472050                               emis_distrib, mass2mole )
    20482051
    20492052
    2050     CALL assign_surface_flux ( cssws_usm_h, surf_usm_h%ns,                                         &
    2051                                surf_usm_h%j, surf_usm_h%i,                                         &
     2053    CALL assign_surface_flux ( cssws_usm_h, surf_usm_h(0)%ns,                                      &
     2054                               surf_usm_h(0)%j, surf_usm_h(0)%i,                                   &
    20522055                               emis_distrib, mass2mole )
    20532056
     
    20582061       ENDDO
    20592062
    2060        DO m = 1, surf_lsm_h%ns
    2061           surf_lsm_h%cssws(k,m)    = cssws_lsm_h(k,m)
     2063       DO m = 1, surf_lsm_h(0)%ns
     2064          surf_lsm_h(0)%cssws(k,m)  = cssws_lsm_h(k,m)
    20622065       ENDDO
    20632066
    2064        DO m = 1, surf_usm_h%ns
    2065           surf_usm_h%cssws(k,m)    = cssws_usm_h(k,m)
     2067       DO m = 1, surf_usm_h(0)%ns
     2068          surf_usm_h(0)%cssws(k,m)    = cssws_usm_h(k,m)
    20662069       ENDDO
    20672070
Note: See TracChangeset for help on using the changeset viewer.