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

preliminary version of modified boundary conditions at top

File:
1 edited

Legend:

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

    r4 r19  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Calculation of e, q, and pt extended for gridpoint nzt,
     7! handling of given temperature/humidity/scalar fluxes at top surface
    78!
    89! Former revisions:
     
    2223! Description:
    2324! ------------
    24 ! Solving the prognostic equations and advecting particles.
     25! Solving the prognostic equations.
    2526!------------------------------------------------------------------------------!
    2627
     
    333334!--       Tendency terms
    334335          IF ( scalar_advec == 'bc-scheme' )  THEN
    335              CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tend )
     336             CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tswst, tend )
    336337          ELSE
    337338             IF ( tsc(2) == 2.0  .OR.  timestep_scheme(1:5) == 'runge' )  THEN
     
    346347             IF ( tsc(2) == 2.0  .AND.  timestep_scheme(1:8) == 'leapfrog' ) &
    347348             THEN
    348                 CALL diffusion_s( i, j, ddzu, ddzw, kh_m, pt_m, shf_m, tend )
     349                CALL diffusion_s( i, j, ddzu, ddzw, kh_m, pt_m, shf_m, &
     350                                  tswst_m, tend )
    349351             ELSE
    350                 CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tend )
     352                CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tswst, tend )
    351353             ENDIF
    352354          ENDIF
     
    368370!
    369371!--       Prognostic equation for potential temperature
    370           DO  k = nzb_s_inner(j,i)+1, nzt-1
     372          DO  k = nzb_s_inner(j,i)+1, nzt
    371373             pt_p(k,j,i) = ( 1 - sat ) * pt_m(k,j,i) + sat * pt(k,j,i) + &
    372374                           dt_3d * (                                           &
     
    380382          IF ( timestep_scheme(1:5) == 'runge' )  THEN
    381383             IF ( intermediate_timestep_count == 1 )  THEN
    382                 DO  k = nzb_s_inner(j,i)+1, nzt-1
     384                DO  k = nzb_s_inner(j,i)+1, nzt
    383385                   tpt_m(k,j,i) = tend(k,j,i)
    384386                ENDDO
    385387             ELSEIF ( intermediate_timestep_count < &
    386388                      intermediate_timestep_count_max )  THEN
    387                 DO  k = nzb_s_inner(j,i)+1, nzt-1
     389                DO  k = nzb_s_inner(j,i)+1, nzt
    388390                   tpt_m(k,j,i) = -9.5625 * tend(k,j,i) + 5.3125 * tpt_m(k,j,i)
    389391                ENDDO
     
    429431!--          Tendency-terms
    430432             IF ( scalar_advec == 'bc-scheme' )  THEN
    431                 CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, tend )
     433                CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, qswst, tend )
    432434             ELSE
    433435                IF ( tsc(2) == 2.0  .OR.  timestep_scheme(1:5) == 'runge' ) THEN
     
    443445                THEN
    444446                   CALL diffusion_s( i, j, ddzu, ddzw, kh_m, q_m, qsws_m, &
     447                                     qswst_m, tend )
     448                ELSE
     449                   CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, qswst, &
    445450                                     tend )
    446                 ELSE
    447                    CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, tend )
    448451                ENDIF
    449452             ENDIF
     
    459462!
    460463!--          Prognostic equation for total water content / scalar
    461              DO  k = nzb_s_inner(j,i)+1, nzt-1
     464             DO  k = nzb_s_inner(j,i)+1, nzt
    462465                q_p(k,j,i) = ( 1 - sat ) * q_m(k,j,i) + sat * q(k,j,i) +       &
    463466                             dt_3d * (                                         &
     
    471474             IF ( timestep_scheme(1:5) == 'runge' )  THEN
    472475                IF ( intermediate_timestep_count == 1 )  THEN
    473                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     476                   DO  k = nzb_s_inner(j,i)+1, nzt
    474477                      tq_m(k,j,i) = tend(k,j,i)
    475478                   ENDDO
    476479                ELSEIF ( intermediate_timestep_count < &
    477480                         intermediate_timestep_count_max )  THEN
    478                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     481                   DO  k = nzb_s_inner(j,i)+1, nzt
    479482                      tq_m(k,j,i) = -9.5625 * tend(k,j,i) + 5.3125 * tq_m(k,j,i)
    480483                   ENDDO
     
    577580!--          reasons in the course of the integration. In such cases the old TKE
    578581!--          value is reduced by 90%.
    579              DO  k = nzb_s_inner(j,i)+1, nzt-1
     582             DO  k = nzb_s_inner(j,i)+1, nzt
    580583                e_p(k,j,i) = ( 1 - sat ) * e_m(k,j,i) + sat * e(k,j,i) +       &
    581584                             dt_3d * (                                         &
     
    589592             IF ( timestep_scheme(1:5) == 'runge' )  THEN
    590593                IF ( intermediate_timestep_count == 1 )  THEN
    591                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     594                   DO  k = nzb_s_inner(j,i)+1, nzt
    592595                      te_m(k,j,i) = tend(k,j,i)
    593596                   ENDDO
    594597                ELSEIF ( intermediate_timestep_count < &
    595598                         intermediate_timestep_count_max )  THEN
    596                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     599                   DO  k = nzb_s_inner(j,i)+1, nzt
    597600                      te_m(k,j,i) = -9.5625 * tend(k,j,i) + 5.3125 * te_m(k,j,i)
    598601                   ENDDO
     
    809812             IF ( tsc(2) == 2.0  .AND.  timestep_scheme(1:8) == 'leapfrog' ) &
    810813             THEN
    811                 CALL diffusion_s( i, j, ddzu, ddzw, kh_m, pt_m, shf_m, tend )
     814                CALL diffusion_s( i, j, ddzu, ddzw, kh_m, pt_m, shf_m, &
     815                                  tswst_m, tend )
    812816             ELSE
    813                 CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tend )
     817                CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tswst, tend )
    814818             ENDIF
    815819
     
    830834!
    831835!--          Prognostic equation for potential temperature
    832              DO  k = nzb_s_inner(j,i)+1, nzt-1
     836             DO  k = nzb_s_inner(j,i)+1, nzt
    833837                pt_p(k,j,i) = ( 1.0-tsc(1) ) * pt_m(k,j,i) + tsc(1)*pt(k,j,i) +&
    834838                              dt_3d * (                                        &
     
    842846             IF ( timestep_scheme(1:5) == 'runge' )  THEN
    843847                IF ( intermediate_timestep_count == 1 )  THEN
    844                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     848                   DO  k = nzb_s_inner(j,i)+1, nzt
    845849                      tpt_m(k,j,i) = tend(k,j,i)
    846850                   ENDDO
    847851                ELSEIF ( intermediate_timestep_count < &
    848852                         intermediate_timestep_count_max )  THEN
    849                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     853                   DO  k = nzb_s_inner(j,i)+1, nzt
    850854                      tpt_m(k,j,i) = -9.5625 * tend(k,j,i) + &
    851855                                      5.3125 * tpt_m(k,j,i)
     
    870874                IF ( tsc(2) == 2.0  .AND.  timestep_scheme(1:8) == 'leapfrog' )&
    871875                THEN
    872                    CALL diffusion_s( i, j, ddzu, ddzw, kh_m, q_m, qsws_m, tend )
     876                   CALL diffusion_s( i, j, ddzu, ddzw, kh_m, q_m, qsws_m, &
     877                                     qswst_m, tend )
    873878                ELSE
    874                    CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, tend )
     879                   CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, qswst, &
     880                                     tend )
    875881                ENDIF
    876882       
     
    885891!
    886892!--             Prognostic equation for total water content / scalar
    887                 DO  k = nzb_s_inner(j,i)+1, nzt-1
     893                DO  k = nzb_s_inner(j,i)+1, nzt
    888894                   q_p(k,j,i) = ( 1.0-tsc(1) ) * q_m(k,j,i) + tsc(1)*q(k,j,i) +&
    889895                                dt_3d * (                                      &
     
    897903                IF ( timestep_scheme(1:5) == 'runge' )  THEN
    898904                   IF ( intermediate_timestep_count == 1 )  THEN
    899                       DO  k = nzb_s_inner(j,i)+1, nzt-1
     905                      DO  k = nzb_s_inner(j,i)+1, nzt
    900906                         tq_m(k,j,i) = tend(k,j,i)
    901907                      ENDDO
    902908                   ELSEIF ( intermediate_timestep_count < &
    903909                            intermediate_timestep_count_max )  THEN
    904                       DO  k = nzb_s_inner(j,i)+1, nzt-1
     910                      DO  k = nzb_s_inner(j,i)+1, nzt
    905911                         tq_m(k,j,i) = -9.5625 * tend(k,j,i) + &
    906912                                        5.3125 * tq_m(k,j,i)
     
    951957!--             reasons in the course of the integration. In such cases the old
    952958!--             TKE value is reduced by 90%.
    953                 DO  k = nzb_s_inner(j,i)+1, nzt-1
     959                DO  k = nzb_s_inner(j,i)+1, nzt
    954960                   e_p(k,j,i) = ( 1.0-tsc(1) ) * e_m(k,j,i) + tsc(1)*e(k,j,i) +&
    955961                                dt_3d * (                                      &
     
    963969                IF ( timestep_scheme(1:5) == 'runge' )  THEN
    964970                   IF ( intermediate_timestep_count == 1 )  THEN
    965                       DO  k = nzb_s_inner(j,i)+1, nzt-1
     971                      DO  k = nzb_s_inner(j,i)+1, nzt
    966972                         te_m(k,j,i) = tend(k,j,i)
    967973                      ENDDO
    968974                   ELSEIF ( intermediate_timestep_count < &
    969975                            intermediate_timestep_count_max )  THEN
    970                       DO  k = nzb_s_inner(j,i)+1, nzt-1
     976                      DO  k = nzb_s_inner(j,i)+1, nzt
    971977                         te_m(k,j,i) = -9.5625 * tend(k,j,i) + &
    972978                                        5.3125 * te_m(k,j,i)
     
    12521258!-- pt-tendency terms with no communication
    12531259    IF ( scalar_advec == 'bc-scheme' )  THEN
    1254        CALL diffusion_s( ddzu, ddzw, kh, pt, shf, tend )
     1260       CALL diffusion_s( ddzu, ddzw, kh, pt, shf, tswst, tend )
    12551261    ELSE
    12561262       IF ( tsc(2) == 2.0  .OR.  timestep_scheme(1:5) == 'runge' )  THEN
     
    12641270       ENDIF
    12651271       IF ( tsc(2) == 2.0  .AND.  timestep_scheme(1:8) == 'leapfrog' )  THEN
    1266           CALL diffusion_s( ddzu, ddzw, kh_m, pt_m, shf_m, tend )
     1272          CALL diffusion_s( ddzu, ddzw, kh_m, pt_m, shf_m, tswst_m, tend )
    12671273       ELSE
    1268           CALL diffusion_s( ddzu, ddzw, kh, pt, shf, tend )
     1274          CALL diffusion_s( ddzu, ddzw, kh, pt, shf, tswst, tend )
    12691275       ENDIF
    12701276    ENDIF
     
    12881294    DO  i = nxl, nxr
    12891295       DO  j = nys, nyn
    1290           DO  k = nzb_s_inner(j,i)+1, nzt-1
     1296          DO  k = nzb_s_inner(j,i)+1, nzt
    12911297             pt_p(k,j,i) = ( 1 - sat ) * pt_m(k,j,i) + sat * pt(k,j,i) +       &
    12921298                           dt_3d * (                                           &
     
    13041310          DO  i = nxl, nxr
    13051311             DO  j = nys, nyn
    1306                 DO  k = nzb_s_inner(j,i)+1, nzt-1
     1312                DO  k = nzb_s_inner(j,i)+1, nzt
    13071313                   tpt_m(k,j,i) = tend(k,j,i)
    13081314                ENDDO
     
    13131319          DO  i = nxl, nxr
    13141320             DO  j = nys, nyn
    1315                 DO  k = nzb_s_inner(j,i)+1, nzt-1
     1321                DO  k = nzb_s_inner(j,i)+1, nzt
    13161322                   tpt_m(k,j,i) = -9.5625 * tend(k,j,i) + 5.3125 * tpt_m(k,j,i)
    13171323                ENDDO
     
    13521358!--    Scalar/q-tendency terms with no communication
    13531359       IF ( scalar_advec == 'bc-scheme' )  THEN
    1354           CALL diffusion_s( ddzu, ddzw, kh, q, qsws, tend )
     1360          CALL diffusion_s( ddzu, ddzw, kh, q, qsws, qswst, tend )
    13551361       ELSE
    13561362          IF ( tsc(2) == 2.0  .OR.  timestep_scheme(1:5) == 'runge' )  THEN
     
    13641370          ENDIF
    13651371          IF ( tsc(2) == 2.0  .AND.  timestep_scheme(1:8) == 'leapfrog' )  THEN
    1366              CALL diffusion_s( ddzu, ddzw, kh_m, q_m, qsws_m, tend )
     1372             CALL diffusion_s( ddzu, ddzw, kh_m, q_m, qsws_m, qswst_m, tend )
    13671373          ELSE
    1368              CALL diffusion_s( ddzu, ddzw, kh, q, qsws, tend )
     1374             CALL diffusion_s( ddzu, ddzw, kh, q, qsws, qswst, tend )
    13691375          ENDIF
    13701376       ENDIF
     
    13821388       DO  i = nxl, nxr
    13831389          DO  j = nys, nyn
    1384              DO  k = nzb_s_inner(j,i)+1, nzt-1
     1390             DO  k = nzb_s_inner(j,i)+1, nzt
    13851391                q_p(k,j,i) = ( 1 - sat ) * q_m(k,j,i) + sat * q(k,j,i) +       &
    13861392                             dt_3d * (                                         &
     
    13981404             DO  i = nxl, nxr
    13991405                DO  j = nys, nyn
    1400                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     1406                   DO  k = nzb_s_inner(j,i)+1, nzt
    14011407                      tq_m(k,j,i) = tend(k,j,i)
    14021408                   ENDDO
     
    14071413             DO  i = nxl, nxr
    14081414                DO  j = nys, nyn
    1409                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     1415                   DO  k = nzb_s_inner(j,i)+1, nzt
    14101416                      tq_m(k,j,i) = -9.5625 * tend(k,j,i) + 5.3125 * tq_m(k,j,i)
    14111417                   ENDDO
     
    15031509       DO  i = nxl, nxr
    15041510          DO  j = nys, nyn
    1505              DO  k = nzb_s_inner(j,i)+1, nzt-1
     1511             DO  k = nzb_s_inner(j,i)+1, nzt
    15061512                e_p(k,j,i) = ( 1 - sat ) * e_m(k,j,i) + sat * e(k,j,i) +       &
    15071513                             dt_3d * (                                         &
     
    15191525             DO  i = nxl, nxr
    15201526                DO  j = nys, nyn
    1521                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     1527                   DO  k = nzb_s_inner(j,i)+1, nzt
    15221528                      te_m(k,j,i) = tend(k,j,i)
    15231529                   ENDDO
     
    15281534             DO  i = nxl, nxr
    15291535                DO  j = nys, nyn
    1530                    DO  k = nzb_s_inner(j,i)+1, nzt-1
     1536                   DO  k = nzb_s_inner(j,i)+1, nzt
    15311537                      te_m(k,j,i) = -9.5625 * tend(k,j,i) + 5.3125 * te_m(k,j,i)
    15321538                   ENDDO
Note: See TracChangeset for help on using the changeset viewer.