Ignore:
Timestamp:
Jul 9, 2012 2:31:00 PM (12 years ago)
Author:
raasch
Message:

temperature equation can be switched off; bugfix of tridia_1dd for current Intel (12.1) compilers

File:
1 edited

Legend:

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

    r760 r940  
    44! Current revisions:
    55! -----------------
    6 !
     6! TKE production by buoyancy can be switched off in case of runs with pure
     7! neutral stratification
    78!
    89! Former revisions:
     
    127128!       ENDIF
    128129
    129 !
    130 !--    Calculate TKE production by shear
     130
    131131       DO  i = nxl, nxr
    132132
     133!
     134!--       Calculate TKE production by shear
    133135          DO  j = nys, nyn
    134136             DO  k = nzb_diff_s_outer(j,i), nzt
     
    453455
    454456!
    455 !--       Calculate TKE production by buoyancy
    456           IF ( .NOT. humidity )  THEN
    457 
    458              IF ( use_reference )  THEN
    459 
    460                 IF ( ocean )  THEN
    461 !
    462 !--                So far in the ocean no special treatment of density flux in
    463 !--                the bottom and top surface layer
    464                    DO  j = nys, nyn
    465                       DO  k = nzb_s_inner(j,i)+1, nzt
    466                          tend(k,j,i) = tend(k,j,i) +                   &
    467                                        kh(k,j,i) * g / rho_reference * &
    468                                        ( rho(k+1,j,i)-rho(k-1,j,i) ) * dd2zu(k)
     457!--       If required, calculate TKE production by buoyancy
     458          IF ( .NOT. neutral )  THEN
     459
     460             IF ( .NOT. humidity )  THEN
     461
     462                IF ( use_reference )  THEN
     463
     464                   IF ( ocean )  THEN
     465!
     466!--                   So far in the ocean no special treatment of density flux
     467!--                   in the bottom and top surface layer
     468                      DO  j = nys, nyn
     469                         DO  k = nzb_s_inner(j,i)+1, nzt
     470                            tend(k,j,i) = tend(k,j,i) +                     &
     471                                          kh(k,j,i) * g / rho_reference *   &
     472                                          ( rho(k+1,j,i) - rho(k-1,j,i) ) * &
     473                                          dd2zu(k)
     474                         ENDDO
    469475                      ENDDO
    470                    ENDDO
     476
     477                   ELSE
     478
     479                      DO  j = nys, nyn
     480                         DO  k = nzb_diff_s_inner(j,i), nzt_diff
     481                            tend(k,j,i) = tend(k,j,i) -                   &
     482                                          kh(k,j,i) * g / pt_reference *  &
     483                                          ( pt(k+1,j,i) - pt(k-1,j,i) ) * &
     484                                          dd2zu(k)
     485                         ENDDO
     486
     487                         IF ( use_surface_fluxes )  THEN
     488                            k = nzb_diff_s_inner(j,i)-1
     489                            tend(k,j,i) = tend(k,j,i) + g / pt_reference * &
     490                                                        shf(j,i)
     491                         ENDIF
     492
     493                         IF ( use_top_fluxes )  THEN
     494                            k = nzt
     495                            tend(k,j,i) = tend(k,j,i) + g / pt_reference * &
     496                                                        tswst(j,i)
     497                         ENDIF
     498                      ENDDO
     499
     500                   ENDIF
    471501
    472502                ELSE
    473503
    474                    DO  j = nys, nyn
    475                       DO  k = nzb_diff_s_inner(j,i), nzt_diff
    476                          tend(k,j,i) = tend(k,j,i) -                  &
    477                                        kh(k,j,i) * g / pt_reference * &
    478                                        ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
     504                   IF ( ocean )  THEN
     505!
     506!--                   So far in the ocean no special treatment of density flux
     507!--                   in the bottom and top surface layer
     508                      DO  j = nys, nyn
     509                         DO  k = nzb_s_inner(j,i)+1, nzt
     510                            tend(k,j,i) = tend(k,j,i) +                     &
     511                                          kh(k,j,i) * g / rho(k,j,i) *      &
     512                                          ( rho(k+1,j,i) - rho(k-1,j,i) ) * &
     513                                          dd2zu(k)
     514                         ENDDO
    479515                      ENDDO
    480516
    481                       IF ( use_surface_fluxes )  THEN
    482                          k = nzb_diff_s_inner(j,i)-1
    483                          tend(k,j,i) = tend(k,j,i) + g / pt_reference * shf(j,i)
    484                       ENDIF
    485 
    486                       IF ( use_top_fluxes )  THEN
    487                          k = nzt
    488                          tend(k,j,i) = tend(k,j,i) + g / pt_reference * &
    489                                                      tswst(j,i)
    490                       ENDIF
    491                    ENDDO
     517                   ELSE
     518
     519                      DO  j = nys, nyn
     520                         DO  k = nzb_diff_s_inner(j,i), nzt_diff
     521                            tend(k,j,i) = tend(k,j,i) -                   &
     522                                          kh(k,j,i) * g / pt(k,j,i) *     &
     523                                          ( pt(k+1,j,i) - pt(k-1,j,i) ) * &
     524                                          dd2zu(k)
     525                         ENDDO
     526
     527                         IF ( use_surface_fluxes )  THEN
     528                            k = nzb_diff_s_inner(j,i)-1
     529                            tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * &
     530                                                        shf(j,i)
     531                         ENDIF
     532
     533                         IF ( use_top_fluxes )  THEN
     534                            k = nzt
     535                            tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * &
     536                                                        tswst(j,i)
     537                         ENDIF
     538                      ENDDO
     539
     540                   ENDIF
    492541
    493542                ENDIF
     
    495544             ELSE
    496545
    497                 IF ( ocean )  THEN
    498 !
    499 !--                So far in the ocean no special treatment of density flux in
    500 !--                the bottom and top surface layer
    501                    DO  j = nys, nyn
    502                       DO  k = nzb_s_inner(j,i)+1, nzt
    503                          tend(k,j,i) = tend(k,j,i) +                &
    504                                        kh(k,j,i) * g / rho(k,j,i) * &
    505                                        ( rho(k+1,j,i)-rho(k-1,j,i) ) * dd2zu(k)
    506                       ENDDO
    507                    ENDDO
    508 
    509                 ELSE
    510 
    511                    DO  j = nys, nyn
    512                       DO  k = nzb_diff_s_inner(j,i), nzt_diff
    513                          tend(k,j,i) = tend(k,j,i) -               &
    514                                        kh(k,j,i) * g / pt(k,j,i) * &
    515                                        ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
    516                       ENDDO
    517 
    518                       IF ( use_surface_fluxes )  THEN
    519                          k = nzb_diff_s_inner(j,i)-1
    520                          tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * shf(j,i)
    521                       ENDIF
    522 
    523                       IF ( use_top_fluxes )  THEN
    524                          k = nzt
    525                          tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * tswst(j,i)
    526                       ENDIF
    527                    ENDDO
    528 
    529                 ENDIF
    530 
    531              ENDIF
    532 
    533           ELSE
    534 
    535              DO  j = nys, nyn
    536 
    537                 DO  k = nzb_diff_s_inner(j,i), nzt_diff
    538 
    539                    IF ( .NOT. cloud_physics )  THEN
    540                       k1 = 1.0 + 0.61 * q(k,j,i)
    541                       k2 = 0.61 * pt(k,j,i)
    542                    ELSE
    543                       IF ( ql(k,j,i) == 0.0 )  THEN
     546                DO  j = nys, nyn
     547
     548                   DO  k = nzb_diff_s_inner(j,i), nzt_diff
     549
     550                      IF ( .NOT. cloud_physics )  THEN
    544551                         k1 = 1.0 + 0.61 * q(k,j,i)
    545552                         k2 = 0.61 * pt(k,j,i)
    546553                      ELSE
    547                          theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
    548                          temp  = theta * t_d_pt(k)
    549                          k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
    550                                     ( q(k,j,i) - ql(k,j,i) ) *          &
    551                               ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
    552                               ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
    553                               ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    554                          k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     554                         IF ( ql(k,j,i) == 0.0 )  THEN
     555                            k1 = 1.0 + 0.61 * q(k,j,i)
     556                            k2 = 0.61 * pt(k,j,i)
     557                         ELSE
     558                            theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
     559                            temp  = theta * t_d_pt(k)
     560                            k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
     561                                       ( q(k,j,i) - ql(k,j,i) ) *          &
     562                                 ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
     563                                 ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
     564                                 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
     565                            k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     566                         ENDIF
    555567                      ENDIF
    556                    ENDIF
    557 
    558                    tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / vpt(k,j,i) * &
    559                                       ( k1 * ( pt(k+1,j,i)-pt(k-1,j,i) ) +  &
    560                                         k2 * ( q(k+1,j,i) - q(k-1,j,i) )    &
    561                                       ) * dd2zu(k)
     568
     569                      tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / vpt(k,j,i) * &
     570                                         ( k1 * ( pt(k+1,j,i)-pt(k-1,j,i) ) +  &
     571                                           k2 * ( q(k+1,j,i) - q(k-1,j,i) )    &
     572                                         ) * dd2zu(k)
     573                   ENDDO
     574
    562575                ENDDO
    563576
    564              ENDDO
    565 
    566              IF ( use_surface_fluxes )  THEN
    567 
    568                 DO  j = nys, nyn
    569 
    570                    k = nzb_diff_s_inner(j,i)-1
    571 
    572                    IF ( .NOT. cloud_physics )  THEN
    573                       k1 = 1.0 + 0.61 * q(k,j,i)
    574                       k2 = 0.61 * pt(k,j,i)
    575                    ELSE
    576                       IF ( ql(k,j,i) == 0.0 )  THEN
     577                IF ( use_surface_fluxes )  THEN
     578
     579                   DO  j = nys, nyn
     580
     581                      k = nzb_diff_s_inner(j,i)-1
     582
     583                      IF ( .NOT. cloud_physics )  THEN
    577584                         k1 = 1.0 + 0.61 * q(k,j,i)
    578585                         k2 = 0.61 * pt(k,j,i)
    579586                      ELSE
    580                          theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
    581                          temp  = theta * t_d_pt(k)
    582                          k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
    583                                     ( q(k,j,i) - ql(k,j,i) ) *          &
    584                               ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
    585                               ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
    586                               ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    587                          k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     587                         IF ( ql(k,j,i) == 0.0 )  THEN
     588                            k1 = 1.0 + 0.61 * q(k,j,i)
     589                            k2 = 0.61 * pt(k,j,i)
     590                         ELSE
     591                            theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
     592                            temp  = theta * t_d_pt(k)
     593                            k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
     594                                       ( q(k,j,i) - ql(k,j,i) ) *          &
     595                                 ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
     596                                 ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
     597                                 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
     598                            k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     599                         ENDIF
    588600                      ENDIF
    589                    ENDIF
    590 
    591                    tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
    592                                          ( k1* shf(j,i) + k2 * qsws(j,i) )
    593                 ENDDO
    594 
    595              ENDIF
    596 
    597              IF ( use_top_fluxes )  THEN
    598 
    599                 DO  j = nys, nyn
    600 
    601                    k = nzt
    602 
    603                    IF ( .NOT. cloud_physics )  THEN
    604                       k1 = 1.0 + 0.61 * q(k,j,i)
    605                       k2 = 0.61 * pt(k,j,i)
    606                    ELSE
    607                       IF ( ql(k,j,i) == 0.0 )  THEN
     601
     602                      tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
     603                                            ( k1* shf(j,i) + k2 * qsws(j,i) )
     604                   ENDDO
     605
     606                ENDIF
     607
     608                IF ( use_top_fluxes )  THEN
     609
     610                   DO  j = nys, nyn
     611
     612                      k = nzt
     613
     614                      IF ( .NOT. cloud_physics )  THEN
    608615                         k1 = 1.0 + 0.61 * q(k,j,i)
    609616                         k2 = 0.61 * pt(k,j,i)
    610617                      ELSE
    611                          theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
    612                          temp  = theta * t_d_pt(k)
    613                          k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
    614                                     ( q(k,j,i) - ql(k,j,i) ) *          &
    615                               ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
    616                               ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
    617                               ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    618                          k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     618                         IF ( ql(k,j,i) == 0.0 )  THEN
     619                            k1 = 1.0 + 0.61 * q(k,j,i)
     620                            k2 = 0.61 * pt(k,j,i)
     621                         ELSE
     622                            theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
     623                            temp  = theta * t_d_pt(k)
     624                            k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
     625                                       ( q(k,j,i) - ql(k,j,i) ) *          &
     626                                 ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
     627                                 ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
     628                                 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
     629                            k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     630                         ENDIF
    619631                      ENDIF
    620                    ENDIF
    621 
    622                    tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
    623                                          ( k1* tswst(j,i) + k2 * qswst(j,i) )
    624                 ENDDO
     632
     633                      tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
     634                                            ( k1* tswst(j,i) + k2 * qswst(j,i) )
     635                   ENDDO
     636
     637                ENDIF
    625638
    626639             ENDIF
     
    950963
    951964!
    952 !--    Calculate TKE production by buoyancy
    953        IF ( .NOT. humidity )  THEN
    954 
    955           IF ( use_reference )  THEN
    956 
    957              IF ( ocean )  THEN
    958 !
    959 !--             So far in the ocean no special treatment of density flux in the
    960 !--             bottom and top surface layer
    961                 DO  k = nzb_s_inner(j,i)+1, nzt
    962                    tend(k,j,i) = tend(k,j,i) + kh(k,j,i) * g / rho_reference * &
    963                                       ( rho(k+1,j,i) - rho(k-1,j,i) ) * dd2zu(k)
    964                 ENDDO
     965!--    If required, calculate TKE production by buoyancy
     966       IF ( .NOT. neutral )  THEN
     967
     968          IF ( .NOT. humidity )  THEN
     969
     970             IF ( use_reference )  THEN
     971
     972                IF ( ocean )  THEN
     973!
     974!--                So far in the ocean no special treatment of density flux in
     975!--                the bottom and top surface layer
     976                   DO  k = nzb_s_inner(j,i)+1, nzt
     977                      tend(k,j,i) = tend(k,j,i) +                   &
     978                                    kh(k,j,i) * g / rho_reference * &
     979                                    ( rho(k+1,j,i) - rho(k-1,j,i) ) * dd2zu(k)
     980                   ENDDO
     981
     982                ELSE
     983
     984                   DO  k = nzb_diff_s_inner(j,i), nzt_diff
     985                      tend(k,j,i) = tend(k,j,i) -                  &
     986                                    kh(k,j,i) * g / pt_reference * &
     987                                    ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
     988                   ENDDO
     989
     990                   IF ( use_surface_fluxes )  THEN
     991                      k = nzb_diff_s_inner(j,i)-1
     992                      tend(k,j,i) = tend(k,j,i) + g / pt_reference * shf(j,i)
     993                   ENDIF
     994
     995                   IF ( use_top_fluxes )  THEN
     996                      k = nzt
     997                      tend(k,j,i) = tend(k,j,i) + g / pt_reference * tswst(j,i)
     998                   ENDIF
     999
     1000                ENDIF
    9651001
    9661002             ELSE
    9671003
    968                 DO  k = nzb_diff_s_inner(j,i), nzt_diff
    969                    tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt_reference * &
    970                                        ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
    971                 ENDDO
    972 
    973                 IF ( use_surface_fluxes )  THEN
    974                    k = nzb_diff_s_inner(j,i)-1
    975                    tend(k,j,i) = tend(k,j,i) + g / pt_reference * shf(j,i)
    976                 ENDIF
    977 
    978                 IF ( use_top_fluxes )  THEN
    979                    k = nzt
    980                    tend(k,j,i) = tend(k,j,i) + g / pt_reference * tswst(j,i)
     1004                IF ( ocean )  THEN
     1005!
     1006!--                So far in the ocean no special treatment of density flux in
     1007!--                the bottom and top surface layer
     1008                   DO  k = nzb_s_inner(j,i)+1, nzt
     1009                      tend(k,j,i) = tend(k,j,i) +                &
     1010                                    kh(k,j,i) * g / rho(k,j,i) * &
     1011                                    ( rho(k+1,j,i) - rho(k-1,j,i) ) * dd2zu(k)
     1012                   ENDDO
     1013
     1014                ELSE
     1015
     1016                   DO  k = nzb_diff_s_inner(j,i), nzt_diff
     1017                      tend(k,j,i) = tend(k,j,i) -               &
     1018                                    kh(k,j,i) * g / pt(k,j,i) * &
     1019                                    ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
     1020                   ENDDO
     1021
     1022                   IF ( use_surface_fluxes )  THEN
     1023                      k = nzb_diff_s_inner(j,i)-1
     1024                      tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * shf(j,i)
     1025                   ENDIF
     1026
     1027                   IF ( use_top_fluxes )  THEN
     1028                      k = nzt
     1029                      tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * tswst(j,i)
     1030                   ENDIF
     1031
    9811032                ENDIF
    9821033
     
    9851036          ELSE
    9861037
    987              IF ( ocean )  THEN
    988 !
    989 !--             So far in the ocean no special treatment of density flux in the
    990 !--             bottom and top surface layer
    991                 DO  k = nzb_s_inner(j,i)+1, nzt
    992                    tend(k,j,i) = tend(k,j,i) + kh(k,j,i) * g / rho(k,j,i) * &
    993                                       ( rho(k+1,j,i) - rho(k-1,j,i) ) * dd2zu(k)
    994                 ENDDO
    995 
    996              ELSE
    997 
    998                 DO  k = nzb_diff_s_inner(j,i), nzt_diff
    999                    tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt(k,j,i) * &
    1000                                        ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
    1001                 ENDDO
    1002 
    1003                 IF ( use_surface_fluxes )  THEN
    1004                    k = nzb_diff_s_inner(j,i)-1
    1005                    tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * shf(j,i)
    1006                 ENDIF
    1007 
    1008                 IF ( use_top_fluxes )  THEN
    1009                    k = nzt
    1010                    tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * tswst(j,i)
    1011                 ENDIF
    1012 
    1013              ENDIF
    1014 
    1015           ENDIF
    1016 
    1017        ELSE
    1018 
    1019           DO  k = nzb_diff_s_inner(j,i), nzt_diff
    1020 
    1021              IF ( .NOT. cloud_physics )  THEN
    1022                 k1 = 1.0 + 0.61 * q(k,j,i)
    1023                 k2 = 0.61 * pt(k,j,i)
    1024              ELSE
    1025                 IF ( ql(k,j,i) == 0.0 )  THEN
     1038             DO  k = nzb_diff_s_inner(j,i), nzt_diff
     1039
     1040                IF ( .NOT. cloud_physics )  THEN
    10261041                   k1 = 1.0 + 0.61 * q(k,j,i)
    10271042                   k2 = 0.61 * pt(k,j,i)
    10281043                ELSE
    1029                    theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
    1030                    temp  = theta * t_d_pt(k)
    1031                    k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
    1032                               ( q(k,j,i) - ql(k,j,i) ) *          &
    1033                         ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
    1034                         ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
    1035                         ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    1036                    k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
    1037                 ENDIF
    1038              ENDIF
    1039 
    1040              tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / vpt(k,j,i) *      &
    1041                                       ( k1 * ( pt(k+1,j,i)-pt(k-1,j,i) ) + &
    1042                                         k2 * ( q(k+1,j,i) - q(k-1,j,i) )   &
    1043                                       ) * dd2zu(k)
    1044           ENDDO
    1045 
    1046           IF ( use_surface_fluxes )  THEN
    1047              k = nzb_diff_s_inner(j,i)-1
    1048 
    1049              IF ( .NOT. cloud_physics ) THEN
    1050                 k1 = 1.0 + 0.61 * q(k,j,i)
    1051                 k2 = 0.61 * pt(k,j,i)
    1052              ELSE
    1053                 IF ( ql(k,j,i) == 0.0 ) THEN
     1044                   IF ( ql(k,j,i) == 0.0 )  THEN
     1045                      k1 = 1.0 + 0.61 * q(k,j,i)
     1046                      k2 = 0.61 * pt(k,j,i)
     1047                   ELSE
     1048                      theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
     1049                      temp  = theta * t_d_pt(k)
     1050                      k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
     1051                                 ( q(k,j,i) - ql(k,j,i) ) *          &
     1052                           ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
     1053                           ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
     1054                           ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
     1055                      k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     1056                   ENDIF
     1057                ENDIF
     1058
     1059                tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / vpt(k,j,i) *      &
     1060                                         ( k1 * ( pt(k+1,j,i)-pt(k-1,j,i) ) + &
     1061                                           k2 * ( q(k+1,j,i) - q(k-1,j,i) )   &
     1062                                         ) * dd2zu(k)
     1063             ENDDO
     1064
     1065             IF ( use_surface_fluxes )  THEN
     1066                k = nzb_diff_s_inner(j,i)-1
     1067
     1068                IF ( .NOT. cloud_physics ) THEN
    10541069                   k1 = 1.0 + 0.61 * q(k,j,i)
    10551070                   k2 = 0.61 * pt(k,j,i)
    10561071                ELSE
    1057                    theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
    1058                    temp  = theta * t_d_pt(k)
    1059                    k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
    1060                               ( q(k,j,i) - ql(k,j,i) ) *          &
    1061                         ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
    1062                         ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
    1063                         ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    1064                    k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
    1065                 ENDIF
     1072                   IF ( ql(k,j,i) == 0.0 )  THEN
     1073                      k1 = 1.0 + 0.61 * q(k,j,i)
     1074                      k2 = 0.61 * pt(k,j,i)
     1075                   ELSE
     1076                      theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
     1077                      temp  = theta * t_d_pt(k)
     1078                      k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
     1079                                 ( q(k,j,i) - ql(k,j,i) ) *          &
     1080                           ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
     1081                           ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
     1082                           ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
     1083                      k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     1084                   ENDIF
     1085                ENDIF
     1086
     1087                tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
     1088                                            ( k1* shf(j,i) + k2 * qsws(j,i) )
    10661089             ENDIF
    10671090
    1068              tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
    1069                                          ( k1* shf(j,i) + k2 * qsws(j,i) )
    1070           ENDIF
    1071 
    1072           IF ( use_top_fluxes )  THEN
    1073              k = nzt
    1074 
    1075              IF ( .NOT. cloud_physics ) THEN
    1076                 k1 = 1.0 + 0.61 * q(k,j,i)
    1077                 k2 = 0.61 * pt(k,j,i)
    1078              ELSE
    1079                 IF ( ql(k,j,i) == 0.0 )  THEN
     1091             IF ( use_top_fluxes )  THEN
     1092                k = nzt
     1093
     1094                IF ( .NOT. cloud_physics ) THEN
    10801095                   k1 = 1.0 + 0.61 * q(k,j,i)
    10811096                   k2 = 0.61 * pt(k,j,i)
    10821097                ELSE
    1083                    theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
    1084                    temp  = theta * t_d_pt(k)
    1085                    k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
    1086                               ( q(k,j,i) - ql(k,j,i) ) *          &
    1087                         ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
    1088                         ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
    1089                         ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
    1090                    k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
    1091                 ENDIF
     1098                   IF ( ql(k,j,i) == 0.0 )  THEN
     1099                      k1 = 1.0 + 0.61 * q(k,j,i)
     1100                      k2 = 0.61 * pt(k,j,i)
     1101                   ELSE
     1102                      theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)
     1103                      temp  = theta * t_d_pt(k)
     1104                      k1 = ( 1.0 - q(k,j,i) + 1.61 *                 &
     1105                                 ( q(k,j,i) - ql(k,j,i) ) *          &
     1106                           ( 1.0 + 0.622 * l_d_r / temp ) ) /        &
     1107                           ( 1.0 + 0.622 * l_d_r * l_d_cp *          &
     1108                           ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) )
     1109                      k2 = theta * ( l_d_cp / temp * k1 - 1.0 )
     1110                   ENDIF
     1111                ENDIF
     1112
     1113                tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
     1114                                            ( k1* tswst(j,i) + k2 * qswst(j,i) )
    10921115             ENDIF
    10931116
    1094              tend(k,j,i) = tend(k,j,i) + g / vpt(k,j,i) * &
    1095                                          ( k1* tswst(j,i) + k2 * qswst(j,i) )
    10961117          ENDIF
    10971118
Note: See TracChangeset for help on using the changeset viewer.