Ignore:
Timestamp:
Feb 23, 2007 4:53:48 AM (16 years ago)
Author:
raasch
Message:

preliminary version of modified boundary conditions at top

File:
1 edited

Legend:

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

    r4 r19  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Calculation extended for gridpoint nzt, extended for given temperature /
     7! humidity fluxes at the top
    78!
    89! Former revisions:
     
    6768
    6869          DO  j = nys, nyn
    69              DO  k = nzb_diff_s_outer(j,i), nzt-1
     70             DO  k = nzb_diff_s_outer(j,i), nzt
    7071
    7172                dudx  =        ( u(k,j,i+1) - u(k,j,i)     ) * ddx
     
    327328             DO  j = nys, nyn
    328329
    329                 DO  k = nzb_diff_s_inner(j,i), nzt-1
     330                DO  k = nzb_diff_s_inner(j,i), nzt_diff
    330331                   tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt(k,j,i) * &
    331332                                    ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
    332333                ENDDO
     334
    333335                IF ( use_surface_fluxes )  THEN
    334336                   k = nzb_diff_s_inner(j,i)-1
     
    336338                ENDIF
    337339
     340                IF ( use_top_fluxes )  THEN
     341                   k = nzt
     342                   tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * tswst(j,i)
     343                ENDIF
     344
    338345             ENDDO
    339346
     
    342349             DO  j = nys, nyn
    343350
    344                 DO  k = nzb_diff_s_inner(j,i), nzt-1
     351                DO  k = nzb_diff_s_inner(j,i), nzt_diff
    345352
    346353                   IF ( .NOT. cloud_physics )  THEN
     
    375382                DO  j = nys, nyn
    376383
    377                    k = nzb_diff_s_inner(j,i)-1
     384                   k = nzb_diff_s_inner(j,i)
    378385
    379386                   IF ( .NOT. cloud_physics )  THEN
     
    402409             ENDIF
    403410
     411             IF ( use_top_fluxes )  THEN
     412
     413                DO  j = nys, nyn
     414
     415                   k = nzt
     416
     417                   IF ( .NOT. cloud_physics )  THEN
     418                      k1 = 1.0 + 0.61 * q(k,j,i)
     419                      k2 = 0.61 * pt(k,j,i)
     420                   ELSE
     421                      IF ( ql(k,j,i) == 0.0 )  THEN
     422                         k1 = 1.0 + 0.61 * q(k,j,i)
     423                         k2 = 0.61 * pt(k,j,i)
     424                      ELSE
     425                         theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
     426                         temp  = theta * t_d_pt(k)
     427                         k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
     428                                    ( q(k,j,i) - ql(k,j,i) ) *          &
     429                              ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
     430                              ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
     431                              ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
     432                         k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     433                      ENDIF
     434                   ENDIF
     435
     436                   tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
     437                                         ( k1* tswst(j,i) + k2 * qswst(j,i) )
     438                ENDDO
     439
     440             ENDIF
     441
    404442          ENDIF
    405443
     
    430468!
    431469!--    Calculate TKE production by shear
    432        DO  k = nzb_diff_s_outer(j,i), nzt-1
     470       DO  k = nzb_diff_s_outer(j,i), nzt
    433471
    434472          dudx  =        ( u(k,j,i+1) - u(k,j,i)     ) * ddx
     
    657695       IF ( .NOT. moisture )  THEN
    658696
    659           DO  k = nzb_diff_s_inner(j,i), nzt-1
     697          DO  k = nzb_diff_s_inner(j,i), nzt_diff
    660698             tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt(k,j,i) * &
    661699                                    ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
    662700          ENDDO
     701
    663702          IF ( use_surface_fluxes )  THEN
    664703             k = nzb_diff_s_inner(j,i)-1
     
    666705          ENDIF
    667706
     707          IF ( use_top_fluxes )  THEN
     708             k = nzt
     709             tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * tswst(j,i)
     710          ENDIF
     711
    668712       ELSE
    669713
    670           DO  k = nzb_diff_s_inner(j,i), nzt-1
     714          DO  k = nzb_diff_s_inner(j,i), nzt_diff
    671715
    672716             IF ( .NOT. cloud_physics )  THEN
     
    694738                                      ) * dd2zu(k)
    695739          ENDDO
     740
    696741          IF ( use_surface_fluxes )  THEN
    697742             k = nzb_diff_s_inner(j,i)-1
     
    720765          ENDIF
    721766
     767          IF ( use_top_fluxes )  THEN
     768             k = nzt
     769
     770             IF ( .NOT. cloud_physics ) THEN
     771                k1 = 1.0 + 0.61 * q(k,j,i)
     772                k2 = 0.61 * pt(k,j,i)
     773             ELSE
     774                IF ( ql(k,j,i) == 0.0 )  THEN
     775                   k1 = 1.0 + 0.61 * q(k,j,i)
     776                   k2 = 0.61 * pt(k,j,i)
     777                ELSE
     778                   theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
     779                   temp  = theta * t_d_pt(k)
     780                   k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
     781                              ( q(k,j,i) - ql(k,j,i) ) *          &
     782                        ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
     783                        ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
     784                        ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
     785                   k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     786                ENDIF
     787             ENDIF
     788
     789             tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
     790                                         ( k1* tswst(j,i) + k2 * qswst(j,i) )
     791          ENDIF
     792
    722793       ENDIF
    723794
Note: See TracChangeset for help on using the changeset viewer.