Ignore:
Timestamp:
Oct 14, 2020 3:11:02 PM (4 years ago)
Author:
schwenkel
Message:

Implement snow and graupel (bulk microphysics)

File:
1 edited

Legend:

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

    r4697 r4742  
    2424! -----------------
    2525! $Id$
     26! Implement snow and graupel (bulk microphysics)
     27!
     28! 4697 2020-09-25 08:24:29Z suehring
    2629! To avoid numerical oscillations which may lead to a built-up of passive scalar near non-cyclic
    2730! boundaries, employ a first-order scheme at the 3 grid points next to the boundary for passive
     
    252255               sums_wsqis_ws_l,                                                                    &
    253256               sums_wsnis_ws_l,                                                                    &
     257               sums_wsqgs_ws_l,                                                                    &
     258               sums_wsngs_ws_l,                                                                    &
     259               sums_wsqss_ws_l,                                                                    &
     260               sums_wsnss_ws_l,                                                                    &
    254261               sums_wssas_ws_l,                                                                    &
    255262               sums_wsus_ws_l,                                                                     &
     
    18281835          ENDDO
    18291836
     1837       CASE ( 'qg' )
     1838
     1839          DO  k = nzb, nzt
     1840             sums_wsqgs_ws_l(k,tn)  = sums_wsqgs_ws_l(k,tn) +                                      &
     1841                                      ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )    &
     1842                                                  * ( w(k,j,i) - hom(k,1,3,0)                 )    &
     1843                                      + diss_t(k) / ( ABS(w(k,j,i)) + 1.0E-20_wp              )    &
     1844                                                  *   ABS( w(k,j,i) - hom(k,1,3,0)            )    &
     1845                                      ) * weight_substep(intermediate_timestep_count)
     1846          ENDDO
    18301847
    18311848       CASE ( 'qi' )
     
    18511868          ENDDO
    18521869
     1870       CASE ( 'qs' )
     1871
     1872          DO  k = nzb, nzt
     1873             sums_wsqss_ws_l(k,tn)  = sums_wsqss_ws_l(k,tn) +                                      &
     1874                                      ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )    &
     1875                                                  * ( w(k,j,i) - hom(k,1,3,0)                 )    &
     1876                                      + diss_t(k) / ( ABS(w(k,j,i)) + 1.0E-20_wp              )    &
     1877                                                  *   ABS( w(k,j,i) - hom(k,1,3,0)            )    &
     1878                                      ) * weight_substep(intermediate_timestep_count)
     1879          ENDDO
     1880
    18531881       CASE ( 'nc' )
    18541882
     
    18621890          ENDDO
    18631891
     1892       CASE ( 'ng' )
     1893
     1894          DO  k = nzb, nzt
     1895             sums_wsngs_ws_l(k,tn)  = sums_wsngs_ws_l(k,tn) +                                      &
     1896                                      ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )    &
     1897                                                  * ( w(k,j,i) - hom(k,1,3,0)                 )    &
     1898                                      + diss_t(k) / ( ABS(w(k,j,i)) + 1.0E-20_wp              )    &
     1899                                                  *   ABS( w(k,j,i) - hom(k,1,3,0)            )    &
     1900                                      ) * weight_substep(intermediate_timestep_count)
     1901          ENDDO
     1902
     1903
    18641904       CASE ( 'ni' )
    18651905
     
    18771917          DO  k = nzb, nzt
    18781918             sums_wsnrs_ws_l(k,tn)  = sums_wsnrs_ws_l(k,tn) +                                      &
     1919                                      ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )    &
     1920                                                  * ( w(k,j,i) - hom(k,1,3,0)                 )    &
     1921                                      + diss_t(k) / ( ABS(w(k,j,i)) + 1.0E-20_wp              )    &
     1922                                                  *   ABS( w(k,j,i) - hom(k,1,3,0)            )    &
     1923                                      ) * weight_substep(intermediate_timestep_count)
     1924          ENDDO
     1925
     1926       CASE ( 'ns' )
     1927
     1928          DO  k = nzb, nzt
     1929             sums_wsnss_ws_l(k,tn)  = sums_wsnss_ws_l(k,tn) +                                      &
    18791930                                      ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )    &
    18801931                                                  * ( w(k,j,i) - hom(k,1,3,0)                 )    &
     
    34503501        CASE ( 'qi' )
    34513502           sk_num = 11
     3503        CASE ( 'ng' )
     3504           sk_num = 12
     3505        CASE ( 'qg' )
     3506           sk_num = 13
     3507        CASE ( 'ns' )
     3508           sk_num = 14
     3509        CASE ( 'qs' )
     3510           sk_num = 15
    34523511        CASE DEFAULT
    34533512           sk_num = 0
     
    34773536    !$ACC PRESENT(sums_wsnrs_ws_l, sums_wsss_ws_l) &
    34783537    !$ACC PRESENT(sums_wsnis_ws_l, sums_wsqis_ws_l) &
     3538    !$ACC PRESENT(sums_wsngs_ws_l, sums_wsqgs_ws_l) &
     3539    !$ACC PRESENT(sums_wsnss_ws_l, sums_wsqss_ws_l) &
    34793540    !$ACC PRESENT(sums_salsa_ws_l)
    34803541    DO  i = nxl, nxr
     
    41234184                                                *   ABS(w(k,j,i) - hom(k,1,3,0)             )      &
    41244185                                            ) * weight_substep(intermediate_timestep_count)
     4186                CASE ( 12 )
     4187                   !$ACC ATOMIC
     4188                   sums_wsngs_ws_l(k,tn)  = sums_wsngs_ws_l(k,tn) +                                &
     4189                                            ( flux_t(k)                                            &
     4190                                                / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )      &
     4191                                                * ( w(k,j,i) - hom(k,1,3,0)                 )      &
     4192                                            + diss_t(k)                                            &
     4193                                                / ( ABS(w(k,j,i)) + 1.0E-20_wp              )      &
     4194                                                *   ABS(w(k,j,i) - hom(k,1,3,0)             )      &
     4195                                            ) * weight_substep(intermediate_timestep_count)
     4196                CASE ( 13 )
     4197                   !$ACC ATOMIC
     4198                   sums_wsqgs_ws_l(k,tn)  = sums_wsqgs_ws_l(k,tn) +                                &
     4199                                            ( flux_t(k)                                            &
     4200                                                / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )      &
     4201                                                * ( w(k,j,i) - hom(k,1,3,0)                 )      &
     4202                                            + diss_t(k)                                            &
     4203                                                / ( ABS(w(k,j,i)) + 1.0E-20_wp              )      &
     4204                                                *   ABS(w(k,j,i) - hom(k,1,3,0)             )      &
     4205                                            ) * weight_substep(intermediate_timestep_count)
     4206
     4207                CASE ( 14 )
     4208                   !$ACC ATOMIC
     4209                   sums_wsnss_ws_l(k,tn)  = sums_wsnss_ws_l(k,tn) +                                &
     4210                                            ( flux_t(k)                                            &
     4211                                                / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )      &
     4212                                                * ( w(k,j,i) - hom(k,1,3,0)                 )      &
     4213                                            + diss_t(k)                                            &
     4214                                                / ( ABS(w(k,j,i)) + 1.0E-20_wp              )      &
     4215                                                *   ABS(w(k,j,i) - hom(k,1,3,0)             )      &
     4216                                            ) * weight_substep(intermediate_timestep_count)
     4217                CASE ( 15 )
     4218                   !$ACC ATOMIC
     4219                   sums_wsqss_ws_l(k,tn)  = sums_wsqss_ws_l(k,tn) +                                &
     4220                                            ( flux_t(k)                                            &
     4221                                                / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) )      &
     4222                                                * ( w(k,j,i) - hom(k,1,3,0)                 )      &
     4223                                            + diss_t(k)                                            &
     4224                                                / ( ABS(w(k,j,i)) + 1.0E-20_wp              )      &
     4225                                                *   ABS(w(k,j,i) - hom(k,1,3,0)             )      &
     4226                                            ) * weight_substep(intermediate_timestep_count)
     4227
    41254228
    41264229             END SELECT
Note: See TracChangeset for help on using the changeset viewer.