Ignore:
Timestamp:
Jul 16, 2018 7:45:13 AM (3 years ago)
Author:
gronemeier
Message:

merge with branch rans: update of rans mode and data output

Location:
palm/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk

  • palm/trunk/SOURCE

  • palm/trunk/SOURCE/boundary_conds.f90

    r2938 r3129  
    2525! -----------------
    2626! $Id$
     27! - Use wall function for e_p and diss_p in case of rans_tke_e
     28! - move limitation of diss_p from tcm_prognostic
     29!
     30! 2938 2018-03-27 15:52:42Z suehring
    2731! Set boundary condition for TKE and TKE dissipation rate in case of nesting
    2832! and if parent model operates in RANS mode but child model in LES mode.
     
    182186    USE arrays_3d,                                                             &
    183187        ONLY:  c_u, c_u_m, c_u_m_l, c_v, c_v_m, c_v_m_l, c_w, c_w_m, c_w_m_l,  &
    184                diss_p, dzu, e_p, nc_p, nr_p, pt, pt_p, q, q_p, qc_p, qr_p, s,  &
     188               diss, diss_p, dzu, e_p, nc_p, nr_p, pt, pt_p, q, q_p, qc_p, qr_p, s,  &
    185189               s_p, sa, sa_p, u, ug, u_init, u_m_l, u_m_n, u_m_r, u_m_s, u_p,  &
    186190               v, vg, v_init, v_m_l, v_m_n, v_m_r, v_m_s, v_p,                 &
    187                w, w_p, w_m_l, w_m_n, w_m_r, w_m_s, pt_init
     191               w, w_p, w_m_l, w_m_n, w_m_r, w_m_s, pt_init, ddzu
    188192
    189193    USE chemistry_model_mod,                                                   &
     
    196200               ibc_pt_b, ibc_pt_t, ibc_q_b, ibc_q_t, ibc_s_b, ibc_s_t,         &
    197201               ibc_sa_t, ibc_uv_b, ibc_uv_t, inflow_l, inflow_n, inflow_r,     &
    198                inflow_s, intermediate_timestep_count,                          &
     202               inflow_s, intermediate_timestep_count, kappa,                   &
    199203               microphysics_morrison, microphysics_seifert, nest_domain,       &
    200204               nest_bound_l, nest_bound_n, nest_bound_r, nest_bound_s, nudging,&
     
    217221
    218222    USE surface_mod,                                                           &
    219         ONLY :  bc_h
     223        ONLY :  bc_h, surf_def_h, surf_def_v, surf_lsm_h, surf_lsm_v,          &
     224                surf_usm_h, surf_usm_v
     225
     226    USE turbulence_closure_mod,                                                &
     227        ONLY:  c_0
    220228
    221229    IMPLICIT NONE
     
    344352             ENDDO
    345353          ENDDO
     354       ELSE
     355!
     356!--       Use wall function within constant-flux layer
     357!--       Upward-facing surfaces
     358!--       Default surfaces
     359          DO  m = 1, surf_def_h(0)%ns
     360             i = surf_def_h(0)%i(m)
     361             j = surf_def_h(0)%j(m)
     362             k = surf_def_h(0)%k(m)
     363             e_p(k,j,i) = ( surf_def_h(0)%us(m) / c_0 )**2
     364          ENDDO
     365!
     366!--       Natural surfaces
     367          DO  m = 1, surf_lsm_h%ns
     368             i = surf_lsm_h%i(m)
     369             j = surf_lsm_h%j(m)
     370             k = surf_lsm_h%k(m)
     371             e_p(k,j,i) = ( surf_lsm_h%us(m) / c_0 )**2
     372          ENDDO
     373!
     374!--       Urban surfaces
     375          DO  m = 1, surf_usm_h%ns
     376             i = surf_usm_h%i(m)
     377             j = surf_usm_h%j(m)
     378             k = surf_usm_h%k(m)
     379             e_p(k,j,i) = ( surf_usm_h%us(m) / c_0 )**2
     380          ENDDO
     381!
     382!--       Vertical surfaces
     383          DO  l = 0, 3
     384!
     385!--          Default surfaces
     386             DO  m = 1, surf_def_v(l)%ns
     387                i = surf_def_v(l)%i(m)
     388                j = surf_def_v(l)%j(m)
     389                k = surf_def_v(l)%k(m)
     390                e_p(k,j,i) = ( surf_def_v(l)%us(m) / c_0 )**2
     391             ENDDO
     392!
     393!--          Natural surfaces
     394             DO  m = 1, surf_lsm_v(l)%ns
     395                i = surf_lsm_v(l)%i(m)
     396                j = surf_lsm_v(l)%j(m)
     397                k = surf_lsm_v(l)%k(m)
     398                e_p(k,j,i) = ( surf_lsm_v(l)%us(m) / c_0 )**2
     399             ENDDO
     400!
     401!--          Urban surfaces
     402             DO  m = 1, surf_usm_v(l)%ns
     403                i = surf_usm_v(l)%i(m)
     404                j = surf_usm_v(l)%j(m)
     405                k = surf_usm_v(l)%k(m)
     406                e_p(k,j,i) = ( surf_usm_v(l)%us(m) / c_0 )**2
     407             ENDDO
     408          ENDDO
    346409       ENDIF
    347410
     
    372435!
    373436!-- Boundary conditions for TKE dissipation rate.
    374     IF ( rans_tke_e .AND. .NOT. nest_domain )  THEN
    375        diss_p(nzt+1,:,:) = diss_p(nzt,:,:)
     437    IF ( rans_tke_e )  THEN
     438!
     439!--    Use wall function within constant-flux layer
     440!--    Upward-facing surfaces
     441!--    Default surfaces
     442       DO  m = 1, surf_def_h(0)%ns
     443          i = surf_def_h(0)%i(m)
     444          j = surf_def_h(0)%j(m)
     445          k = surf_def_h(0)%k(m)
     446          diss_p(k,j,i) = surf_def_h(0)%us(m)**3          &
     447                        / ( kappa * surf_def_h(0)%z_mo(m) )
     448       ENDDO
     449!
     450!--    Natural surfaces
     451       DO  m = 1, surf_lsm_h%ns
     452          i = surf_lsm_h%i(m)
     453          j = surf_lsm_h%j(m)
     454          k = surf_lsm_h%k(m)
     455          diss_p(k,j,i) = surf_lsm_h%us(m)**3          &
     456                        / ( kappa * surf_lsm_h%z_mo(m) )
     457       ENDDO
     458!
     459!--    Urban surfaces
     460       DO  m = 1, surf_usm_h%ns
     461          i = surf_usm_h%i(m)
     462          j = surf_usm_h%j(m)
     463          k = surf_usm_h%k(m)
     464          diss_p(k,j,i) = surf_usm_h%us(m)**3          &
     465                        / ( kappa * surf_usm_h%z_mo(m) )
     466       ENDDO
     467!
     468!--    Vertical surfaces
     469       DO  l = 0, 3
     470!
     471!--       Default surfaces
     472          DO  m = 1, surf_def_v(l)%ns
     473             i = surf_def_v(l)%i(m)
     474             j = surf_def_v(l)%j(m)
     475             k = surf_def_v(l)%k(m)
     476             diss_p(k,j,i) = surf_def_v(l)%us(m)**3          &
     477                           / ( kappa * surf_def_v(l)%z_mo(m) )
     478          ENDDO
     479!
     480!--       Natural surfaces
     481          DO  m = 1, surf_lsm_v(l)%ns
     482             i = surf_lsm_v(l)%i(m)
     483             j = surf_lsm_v(l)%j(m)
     484             k = surf_lsm_v(l)%k(m)
     485             diss_p(k,j,i) = surf_lsm_v(l)%us(m)**3          &
     486                           / ( kappa * surf_lsm_v(l)%z_mo(m) )
     487          ENDDO
     488!
     489!--       Urban surfaces
     490          DO  m = 1, surf_usm_v(l)%ns
     491             i = surf_usm_v(l)%i(m)
     492             j = surf_usm_v(l)%j(m)
     493             k = surf_usm_v(l)%k(m)
     494             diss_p(k,j,i) = surf_usm_v(l)%us(m)**3          &
     495                           / ( kappa * surf_usm_v(l)%z_mo(m) )
     496          ENDDO
     497       ENDDO
     498!
     499!--    Limit change of diss to be between -90% and +100%. Also, set an absolute
     500!--    minimum value
     501       DO  i = nxl, nxr
     502          DO  j = nys, nyn
     503             DO  k = nzb, nzt+1
     504                diss_p(k,j,i) = MAX( MIN( diss_p(k,j,i),          &
     505                                          2.0_wp * diss(k,j,i) ), &
     506                                     0.1_wp * diss(k,j,i),        &
     507                                     0.0001_wp )
     508             ENDDO
     509          ENDDO
     510       ENDDO
     511
     512       IF ( .NOT. nest_domain )  THEN
     513          diss_p(nzt+1,:,:) = diss_p(nzt,:,:)
     514       ENDIF
    376515    ENDIF
    377516
Note: See TracChangeset for help on using the changeset viewer.