Ignore:
Timestamp:
Apr 30, 2015 7:05:52 AM (6 years ago)
Author:
maronga
Message:

Added support for RRTMG radiation code

File:
1 edited

Legend:

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

    r1572 r1585  
    2121! Current revisions:
    2222! -----------------
    23 !
     23! Added output of timeseries and profiles for RRTMG
    2424!
    2525! Former revisions:
     
    178178
    179179    USE radiation_model_mod,                                                   &
    180         ONLY :  dots_rad, rad_net, rad_sw_in, radiation
    181    
     180        ONLY:  dots_rad, radiation, radiation_scheme, rad_net,                 &
     181               rad_lw_in, rad_lw_out, rad_sw_in, rad_sw_out
     182
     183#if defined ( __rrtmg )
     184    USE radiation_model_mod,                                                   &
     185        ONLY:  rrtm_aldif, rrtm_aldir, rrtm_asdif, rrtm_asdir
     186#endif
     187 
    182188    USE statistics
    183189
     
    741747             IF ( radiation )  THEN
    742748                sums_l(nzb,101,tn)  = sums_l(nzb,101,tn)  + rad_net(j,i)
    743                 sums_l(nzb,102,tn) = sums_l(nzb,102,tn) + rad_sw_in(j,i)
     749                sums_l(nzb,102,tn)  = sums_l(nzb,102,tn)  + rad_lw_in(nzb,j,i)
     750                sums_l(nzb,103,tn)  = sums_l(nzb,103,tn)  + rad_lw_out(nzb,j,i)
     751                sums_l(nzb,104,tn)  = sums_l(nzb,104,tn)  + rad_sw_in(nzb,j,i)
     752                sums_l(nzb,105,tn)  = sums_l(nzb,105,tn)  + rad_sw_out(nzb,j,i)
     753
     754#if defined ( __rrtmg )
     755                IF ( radiation_scheme == 'rrtmg' )  THEN
     756                   sums_l(nzb,106,tn)  = sums_l(nzb,106,tn)  + rrtm_aldif(0,j,i)
     757                   sums_l(nzb,107,tn)  = sums_l(nzb,107,tn)  + rrtm_aldir(0,j,i)
     758                   sums_l(nzb,108,tn)  = sums_l(nzb,108,tn)  + rrtm_asdif(0,j,i)
     759                   sums_l(nzb,109,tn)  = sums_l(nzb,109,tn)  + rrtm_asdir(0,j,i)
     760                ENDIF
     761#endif
     762
    744763             ENDIF
    745764
     
    11261145       ENDIF
    11271146       
    1128 
     1147       IF ( radiation .AND. radiation_scheme == 'rrtmg' )  THEN
     1148          !$OMP DO
     1149          DO  i = nxl, nxr
     1150             DO  j =  nys, nyn
     1151                DO  k = nzb_s_inner(j,i)+1, nzt+1
     1152                   sums_l(k,102,tn)  = sums_l(k,102,tn)  + rad_lw_in(k,j,i) * rmask(j,i,sr)
     1153                   sums_l(k,103,tn)  = sums_l(k,103,tn)  + rad_lw_out(k,j,i) * rmask(j,i,sr)
     1154                   sums_l(k,104,tn)  = sums_l(k,104,tn)  + rad_sw_in(k,j,i) * rmask(j,i,sr)
     1155                   sums_l(k,105,tn)  = sums_l(k,105,tn)  + rad_sw_out(k,j,i) * rmask(j,i,sr)
     1156                ENDDO
     1157             ENDDO
     1158          ENDDO
     1159       ENDIF
    11291160!
    11301161!--    Calculate the user-defined profiles
     
    11861217          sums(k,70:80)           = sums(k,70:80)       / ngp_2dh_s_inner(k,sr)
    11871218          sums(k,81:88)           = sums(k,81:88)       / ngp_2dh(sr)
    1188           sums(k,89:100)           = sums(k,89:100)     / ngp_2dh(sr)
    1189           sums(k,101:pr_palm-2)    = sums(k,101:pr_palm-2)/ ngp_2dh_s_inner(k,sr)
     1219          sums(k,89:105)           = sums(k,89:105)     / ngp_2dh(sr)
     1220          sums(k,106:pr_palm-2)    = sums(k,106:pr_palm-2)/ ngp_2dh_s_inner(k,sr)
    11901221       ENDDO
    11911222
     
    13191350
    13201351       IF ( radiation )  THEN
    1321           hom(:,1,101 ,sr) = sums(:,101)            ! rad_net
    1322           hom(:,1,102,sr)  = sums(:,102)            ! rad_sw_in
     1352          hom(:,1,101,sr) = sums(:,101)            ! rad_net
     1353          hom(:,1,102,sr) = sums(:,102)            ! rad_lw_in
     1354          hom(:,1,103,sr) = sums(:,103)            ! rad_lw_out
     1355          hom(:,1,104,sr) = sums(:,104)            ! rad_sw_in
     1356          hom(:,1,105,sr) = sums(:,105)            ! rad_sw_out
     1357
     1358#if defined ( __rrtmg )
     1359          IF ( radiation_scheme == 'rrtmg' )  THEN
     1360             hom(:,1,106,sr) = sums(:,106)            ! rrtm_aldif
     1361             hom(:,1,107,sr) = sums(:,107)            ! rrtm_aldir
     1362             hom(:,1,108,sr) = sums(:,108)            ! rrtm_asdif
     1363             hom(:,1,109,sr) = sums(:,109)            ! rrtm_asdir
     1364          ENDIF
     1365#endif
     1366
    13231367       ENDIF
    13241368
     
    14831527!--    Collect radiation model timeseries
    14841528       IF ( radiation )  THEN
    1485           ts_value(dots_rad,sr)   = hom(nzb,1,101,sr)           ! rad_net
    1486           ts_value(dots_rad+1,sr) = hom(nzb,1,102,sr)          ! rad_sw_in
     1529          ts_value(dots_rad,sr)   = hom(nzb,1,101,sr)          ! rad_net
     1530          ts_value(dots_rad+1,sr) = hom(nzb,1,102,sr)          ! rad_lw_in
     1531          ts_value(dots_rad+2,sr) = hom(nzb,1,103,sr)          ! rad_lw_out
     1532          ts_value(dots_rad+3,sr) = hom(nzb,1,104,sr)          ! rad_lw_in
     1533          ts_value(dots_rad+4,sr) = hom(nzb,1,105,sr)          ! rad_lw_out
     1534
     1535#if defined ( __rrtmg )
     1536          IF ( radiation_scheme == 'rrtmg' )  THEN
     1537             ts_value(dots_rad+5,sr) = hom(nzb,1,106,sr)          ! rrtm_aldif
     1538             ts_value(dots_rad+6,sr) = hom(nzb,1,107,sr)          ! rrtm_aldir
     1539             ts_value(dots_rad+7,sr) = hom(nzb,1,108,sr)          ! rrtm_asdif
     1540             ts_value(dots_rad+8,sr) = hom(nzb,1,109,sr)          ! rrtm_asdir
     1541          ENDIF
     1542#endif
     1543
    14871544       ENDIF
    14881545
     
    29513008
    29523009
     3010       IF ( radiation .AND. radiation_scheme == 'rrtmg' )  THEN
     3011          !$OMP DO
     3012          DO  i = nxl, nxr
     3013             DO  j =  nys, nyn
     3014                DO  k = nzb_s_inner(j,i)+1, nzt+1
     3015                   sums_l(k,102,tn)  = sums_l(k,102,tn)  + rad_lw_in(k,j,i) * rmask(j,i,sr)
     3016                   sums_l(k,103,tn)  = sums_l(k,103,tn)  + rad_lw_out(k,j,i) * rmask(j,i,sr)
     3017                   sums_l(k,104,tn)  = sums_l(k,104,tn)  + rad_sw_in(k,j,i) * rmask(j,i,sr)
     3018                   sums_l(k,105,tn)  = sums_l(k,105,tn)  + rad_sw_out(k,j,i) * rmask(j,i,sr)
     3019                ENDDO
     3020             ENDDO
     3021          ENDDO
     3022       ENDIF
     3023
    29533024!
    29543025!--    Calculate the user-defined profiles
     
    30123083          sums(k,70:80)           = sums(k,70:80)       / ngp_2dh_s_inner(k,sr)
    30133084          sums(k,81:88)           = sums(k,81:88)       / ngp_2dh(sr)
    3014           sums(k,89:100)           = sums(k,89:100)     / ngp_2dh(sr)
    3015           sums(k,101:pr_palm-2)    = sums(k,101:pr_palm-2)/ ngp_2dh_s_inner(k,sr)
     3085          sums(k,89:105)           = sums(k,89:105)     / ngp_2dh(sr)
     3086          sums(k,106:pr_palm-2)    = sums(k,106:pr_palm-2)/ ngp_2dh_s_inner(k,sr)
    30163087       ENDDO
    30173088
     
    32883359!--    Collect radiation model timeseries
    32893360       IF ( radiation )  THEN
    3290           ts_value(dots_rad,sr)   = hom(nzb,1,101,sr)           ! rad_net
    3291           ts_value(dots_rad+1,sr) = hom(nzb,1,102,sr)          ! rad_sw_in
     3361          ts_value(dots_rad,sr)   = hom(nzb,1,101,sr)          ! rad_net
     3362          ts_value(dots_rad+1,sr) = hom(nzb,1,102,sr)          ! rad_lw_in
     3363          ts_value(dots_rad+2,sr) = hom(nzb,1,103,sr)          ! rad_lw_out
     3364          ts_value(dots_rad+3,sr) = hom(nzb,1,104,sr)          ! rad_lw_in
     3365          ts_value(dots_rad+4,sr) = hom(nzb,1,105,sr)          ! rad_lw_out
     3366
     3367#if defined ( __rrtmg )
     3368          IF ( radiation_scheme == 'rrtmg' )  THEN
     3369             ts_value(dots_rad+5,sr) = hom(nzb,1,106,sr)          ! rrtm_aldif
     3370             ts_value(dots_rad+6,sr) = hom(nzb,1,107,sr)          ! rrtm_aldir
     3371             ts_value(dots_rad+7,sr) = hom(nzb,1,108,sr)          ! rrtm_asdif
     3372             ts_value(dots_rad+8,sr) = hom(nzb,1,109,sr)          ! rrtm_asdir
     3373          ENDIF
     3374#endif
     3375
    32923376       ENDIF
    32933377
Note: See TracChangeset for help on using the changeset viewer.