Ignore:
Timestamp:
Mar 19, 2007 8:20:46 AM (15 years ago)
Author:
raasch
Message:

preliminary changes for precipitation output

File:
1 edited

Legend:

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

    r39 r72  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Precipitation rate and amount are calculated/stored,
     7! + module control_parameters
    78!
    89! Former revisions:
     
    4849       USE cloud_parameters
    4950       USE constants
     51       USE control_parameters
    5052       USE indices
    5153
     
    5355
    5456       INTEGER ::  i, j, k
    55        REAL    :: precipitation_rate
     57       REAL    ::  dqdt_precip
    5658
     59
     60       precipitation_rate = 0.0
    5761 
    5862       DO  i = nxl, nxr
     
    6165
    6266                IF ( ql(k,j,i) > ql_crit )  THEN
    63                    precipitation_rate = prec_time_const * &
    64                                         ( ql(k,j,i) - ql_crit )
     67                   dqdt_precip = prec_time_const * ( ql(k,j,i) - ql_crit )
    6568                ELSE
    66                    precipitation_rate = 0.0
     69                   dqdt_precip = 0.0
    6770                ENDIF
    68                 tend(k,j,i) = tend(k,j,i) - precipitation_rate
     71                tend(k,j,i) = tend(k,j,i) - dqdt_precip
     72!
     73!--             Precipitation rate in (kg * 0.001) / m**2 / s (because 1kg
     74!--             gives 1 mm)
     75                precipitation_rate(j,i) = precipitation_rate(j,i) + &
     76                                          dqdt_precip * dzw(k) * 0.001
    6977
    7078             ENDDO
     79!
     80!--          Sum up the precipitation amount (unit kg * 0.001 / m**2)
     81             IF ( intermediate_timestep_count ==         &
     82                  intermediate_timestep_count_max  .AND. &
     83                  ( dt_do2d_xy-time_do2d_xy ) < precipitation_amount_interval )&
     84             THEN
     85                precipitation_amount(j,i) = precipitation_amount(j,i) + &
     86                                            precipitation_rate(j,i) * dt_3d
     87             ENDIF
    7188          ENDDO
    7289       ENDDO
     
    83100       USE cloud_parameters
    84101       USE constants
     102       USE control_parameters
    85103       USE indices
    86104   
    87105       IMPLICIT NONE
    88106
    89        INTEGER :: i, j, k
    90        REAL    :: precipitation_rate
     107       INTEGER ::  i, j, k
     108       REAL    ::  dqdt_precip
    91109
    92110
     111       precipitation_rate(j,i) = 0.0
     112 
     113!
     114!--    Ghostpoints are included (although not needed for tend) to avoid a later
     115!--    exchange of these data for the precipitation amount/rate arrays
    93116       DO  k = nzb_2d(j,i)+1, nzt
    94117
    95118          IF ( ql(k,j,i) > ql_crit )  THEN
    96              precipitation_rate = prec_time_const * ( ql(k,j,i) - ql_crit )
     119             dqdt_precip = prec_time_const * ( ql(k,j,i) - ql_crit )
    97120          ELSE
    98              precipitation_rate = 0.0
     121             dqdt_precip = 0.0
    99122          ENDIF
    100           tend(k,j,i) = tend(k,j,i) - precipitation_rate
     123          tend(k,j,i) = tend(k,j,i) - dqdt_precip
     124
     125!
     126!--       Precipitation rate in (kg * 0.001) / m**2 / s (because 1kg gives 1 mm)
     127!          precipitation_rate(j,i) = precipitation_rate(j,i) + dqdt_precip * &
     128!                                                              dzw(k) * 0.001
     129          precipitation_rate(j,i) = 1.0
    101130
    102131       ENDDO
     132
     133!
     134!--    Sum up the precipitation amount (unit kg * 0.001 / m**2)
     135       IF ( intermediate_timestep_count == intermediate_timestep_count_max     &
     136            .AND. ( dt_do2d_xy-time_do2d_xy ) < precipitation_amount_interval )&
     137       THEN
     138          precipitation_amount(j,i) = precipitation_amount(j,i) + &
     139                                      precipitation_rate(j,i) * dt_3d
     140       ENDIF
    103141
    104142    END SUBROUTINE calc_precipitation_ij
Note: See TracChangeset for help on using the changeset viewer.