Ignore:
Timestamp:
Oct 26, 2015 4:17:44 PM (9 years ago)
Author:
maronga
Message:

various bugfixes and modifications of the atmosphere-land-surface-radiation interaction. Completely re-written routine to calculate surface fluxes (surface_layer_fluxes.f90) that replaces prandtl_fluxes. Minor formatting corrections and renamings

File:
1 edited

Legend:

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

    r1683 r1691  
    1414! PALM. If not, see <http://www.gnu.org/licenses/>.
    1515!
    16 ! Copyright 1997-2014 Leibniz Universitaet Hannover
     16! Copyright 1997-2015 Leibniz Universitaet Hannover
    1717!--------------------------------------------------------------------------------!
    1818!
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Added output of Obukhov length and radiative heating rates for RRTMG.
     22! Corrected output of LWC.
    2223!
    2324! Former revisions:
     
    8485
    8586    USE arrays_3d,                                                             &
    86         ONLY:  dzw, e, nr, p, pt, q, qc, ql, ql_c, ql_v, qr, qsws, rho, sa,    &
     87        ONLY:  dzw, e, nr, ol, p, pt, q, qc, ql, ql_c, ql_v, qr, qsws, rho, sa,&
    8788               shf, ts, u, us, v, vpt, w, z0, z0h
    8889
    8990    USE averaging,                                                             &
    90         ONLY:  e_av, lpt_av, lwp_av, nr_av, p_av, pc_av, pr_av, prr_av,        &
     91        ONLY:  e_av, lpt_av, lwp_av, nr_av, ol_av, p_av, pc_av, pr_av, prr_av, &
    9192               precipitation_rate_av, pt_av, q_av, qc_av, ql_av, ql_c_av,      &
    9293               ql_v_av, ql_vp_av, qr_av, qsws_av, qv_av, rho_av, s_av, sa_av,  &
     
    9798
    9899    USE control_parameters,                                                    &
    99         ONLY:  average_count_3d, cloud_physics, doav, doav_n
     100        ONLY:  average_count_3d, cloud_physics, doav, doav_n, rho_surface
    100101
    101102    USE cpulog,                                                                &
     
    120121    USE radiation_model_mod,                                                   &
    121122        ONLY:  rad_net, rad_net_av, rad_sw_in, rad_sw_in_av, rad_sw_out,       &
    122                rad_sw_out_av, rad_lw_in, rad_lw_in_av, rad_lw_out,             &
    123                rad_lw_out_av
     123               rad_sw_out_av, rad_sw_cs_hr, rad_sw_cs_hr_av, rad_sw_hr,        &
     124               rad_sw_hr_av, rad_lw_in, rad_lw_in_av, rad_lw_out,              &
     125               rad_lw_out_av, rad_lw_cs_hr, rad_lw_cs_hr_av, rad_lw_hr,        &
     126               rad_lw_hr_av
     127
    124128
    125129    IMPLICIT NONE
     
    215219                nr_av = 0.0_wp
    216220
     221             CASE ( 'ol*' )
     222                IF ( .NOT. ALLOCATED( ol_av ) )  THEN
     223                   ALLOCATE( ol_av(nysg:nyng,nxlg:nxrg) )
     224                ENDIF
     225                ol_av = 0.0_wp
     226
    217227             CASE ( 'p' )
    218228                IF ( .NOT. ALLOCATED( p_av ) )  THEN
     
    347357                rad_lw_out_av = 0.0_wp
    348358
     359             CASE ( 'rad_lw_cs_hr' )
     360                IF ( .NOT. ALLOCATED( rad_lw_cs_hr_av ) )  THEN
     361                   ALLOCATE( rad_lw_cs_hr_av(nzb+1:nzt+1,nysg:nyng,nxlg:nxrg) )
     362                ENDIF
     363                rad_lw_cs_hr_av = 0.0_wp
     364
     365             CASE ( 'rad_lw_hr' )
     366                IF ( .NOT. ALLOCATED( rad_lw_hr_av ) )  THEN
     367                   ALLOCATE( rad_lw_hr_av(nzb+1:nzt+1,nysg:nyng,nxlg:nxrg) )
     368                ENDIF
     369                rad_lw_hr_av = 0.0_wp
     370
    349371             CASE ( 'rad_sw_in' )
    350372                IF ( .NOT. ALLOCATED( rad_sw_in_av ) )  THEN
     
    359381                rad_sw_out_av = 0.0_wp
    360382
     383             CASE ( 'rad_sw_cs_hr' )
     384                IF ( .NOT. ALLOCATED( rad_sw_cs_hr_av ) )  THEN
     385                   ALLOCATE( rad_sw_cs_hr_av(nzb+1:nzt+1,nysg:nyng,nxlg:nxrg) )
     386                ENDIF
     387                rad_sw_cs_hr_av = 0.0_wp
     388
     389             CASE ( 'rad_sw_hr' )
     390                IF ( .NOT. ALLOCATED( rad_sw_hr_av ) )  THEN
     391                   ALLOCATE( rad_sw_hr_av(nzb+1:nzt+1,nysg:nyng,nxlg:nxrg) )
     392                ENDIF
     393                rad_sw_hr_av = 0.0_wp
     394
    361395             CASE ( 'rho' )
    362396                IF ( .NOT. ALLOCATED( rho_av ) )  THEN
     
    530564             DO  i = nxlg, nxrg
    531565                DO  j = nysg, nyng
    532                    lwp_av(j,i) = lwp_av(j,i) + SUM( ql(nzb:nzt,j,i) * &
    533                                                     dzw(1:nzt+1) )
     566                   lwp_av(j,i) = lwp_av(j,i) + SUM( ql(nzb:nzt,j,i)           &
     567                                               * dzw(1:nzt+1) ) * rho_surface
    534568                ENDDO
    535569             ENDDO
     
    557591                      nr_av(k,j,i) = nr_av(k,j,i) + nr(k,j,i)
    558592                   ENDDO
     593                ENDDO
     594             ENDDO
     595
     596          CASE ( 'ol*' )
     597             DO  i = nxlg, nxrg
     598                DO  j = nysg, nyng
     599                   ol_av(j,i) = ol_av(j,i) + ol(j,i)
    559600                ENDDO
    560601             ENDDO
     
    777818             ENDDO
    778819
     820          CASE ( 'rad_lw_cs_hr' )
     821             DO  i = nxlg, nxrg
     822                DO  j = nysg, nyng
     823                   DO  k = nzb, nzt+1
     824                      rad_lw_cs_hr_av(k,j,i) = rad_lw_cs_hr_av(k,j,i) + rad_lw_cs_hr(k,j,i)
     825                   ENDDO
     826                ENDDO
     827             ENDDO
     828
     829          CASE ( 'rad_lw_hr' )
     830             DO  i = nxlg, nxrg
     831                DO  j = nysg, nyng
     832                   DO  k = nzb, nzt+1
     833                      rad_lw_hr_av(k,j,i) = rad_lw_hr_av(k,j,i) + rad_lw_hr(k,j,i)
     834                   ENDDO
     835                ENDDO
     836             ENDDO
    779837
    780838          CASE ( 'rad_sw_in' )
     
    792850                   DO  k = nzb, nzt+1
    793851                      rad_sw_out_av(k,j,i) = rad_sw_out_av(k,j,i) + rad_sw_out(k,j,i)
     852                   ENDDO
     853                ENDDO
     854             ENDDO
     855
     856          CASE ( 'rad_sw_cs_hr' )
     857             DO  i = nxlg, nxrg
     858                DO  j = nysg, nyng
     859                   DO  k = nzb, nzt+1
     860                      rad_sw_cs_hr_av(k,j,i) = rad_sw_cs_hr_av(k,j,i) + rad_sw_cs_hr(k,j,i)
     861                   ENDDO
     862                ENDDO
     863             ENDDO
     864
     865          CASE ( 'rad_sw_hr' )
     866             DO  i = nxlg, nxrg
     867                DO  j = nysg, nyng
     868                   DO  k = nzb, nzt+1
     869                      rad_sw_hr_av(k,j,i) = rad_sw_hr_av(k,j,i) + rad_sw_hr(k,j,i)
    794870                   ENDDO
    795871                ENDDO
Note: See TracChangeset for help on using the changeset viewer.