Ignore:
Timestamp:
Sep 24, 2018 3:42:55 PM (6 years ago)
Author:
knoop
Message:

Modularization of all bulk cloud physics code components

File:
1 edited

Legend:

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

    r2718 r3274  
    2525! -----------------
    2626! $Id$
     27! Modularization of all bulk cloud physics code components
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    7780 MODULE calc_radiation_mod
    7881 
     82
     83    USE arrays_3d,                                                             &
     84        ONLY:  dzw, pt, ql, tend, d_exner, exner
     85
     86    USE basic_constants_and_equations_mod,                                     &
     87        ONLY:  c_p, lv_d_cp, sigma_sb
     88
     89    USE control_parameters,                                                    &
     90        ONLY:  rho_surface
     91
     92    USE indices,                                                               &
     93        ONLY:  nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0
     94
    7995    USE kinds
    80    
     96
     97    USE pegrid
     98
    8199    PRIVATE
    82100    PUBLIC calc_radiation
    83    
     101
    84102    LOGICAL, SAVE ::  first_call = .TRUE. !<
    85     REAL(wp), SAVE ::  sigma = 5.67E-08_wp   !<
    86103
    87104    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  lwp_ground         !<
     
    103120!------------------------------------------------------------------------------!
    104121    SUBROUTINE calc_radiation
    105 
    106        USE arrays_3d,                                                          &
    107            ONLY:  dzw, pt, ql, tend
    108 
    109        USE cloud_parameters,                                                   &
    110            ONLY:  cp, l_d_cp, pt_d_t, t_d_pt
    111 
    112        USE control_parameters,                                                 &
    113            ONLY:  rho_surface
    114 
    115        USE indices,                                                            &
    116            ONLY:  nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0
    117 
    118        USE kinds
    119 
    120        USE pegrid
    121 
    122122
    123123       IMPLICIT NONE
     
    159159             lwp_top(nzt+1)  = rho_surface * ql(nzt+1,j,i) * dzw(nzt+1)
    160160
    161              temperature     = pt(nzb,j,i) * t_d_pt(nzb) + l_d_cp * ql(nzb,j,i)
    162              blackbody_emission(nzb) = sigma * temperature**4
     161             temperature     = pt(nzb,j,i) * exner(nzb) + lv_d_cp * ql(nzb,j,i)
     162             blackbody_emission(nzb) = sigma_sb * temperature**4
    163163
    164164             DO  k = nzb+1, nzt
     
    171171                                  rho_surface * ql(k_help,j,i) * dzw(k_help)
    172172
    173                 temperature     = pt(k,j,i) * t_d_pt(k) + l_d_cp * ql(k,j,i)
    174                 blackbody_emission(k) = sigma * temperature**4                 &
     173                temperature     = pt(k,j,i) * exner(k) + lv_d_cp * ql(k,j,i)
     174                blackbody_emission(k) = sigma_sb * temperature**4              &
    175175                                      * MERGE( 1.0_wp, 0.0_wp,                 &
    176176                                               BTEST( wall_flags_0(k,j,i), 0 ) )
     
    182182             lwp_top(nzb)      = lwp_top(nzb+1)
    183183
    184              temperature       = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp *      &
     184             temperature       = pt(nzt+1,j,i) * exner(nzt+1) + lv_d_cp *      &
    185185                                 ql(nzt+1,j,i)
    186              blackbody_emission(nzt+1) = sigma * temperature**4
     186             blackbody_emission(nzt+1) = sigma_sb * temperature**4
    187187
    188188!
     
    232232!--                Compute tendency term         
    233233                   tend(k,j,i) = tend(k,j,i) -                                 &
    234                                 ( pt_d_t(k) / ( rho_surface * cp ) *           &
     234                                ( d_exner(k) / ( rho_surface * c_p ) *         &
    235235                                  ( df_p - df_m ) / dzw(k) )                   &
    236236                                      * MERGE( 1.0_wp, 0.0_wp,                 &
     
    253253    SUBROUTINE calc_radiation_ij( i, j )
    254254
    255        USE arrays_3d,                                                          &
    256            ONLY:  dzw, pt, ql, tend
    257 
    258        USE cloud_parameters,                                                   &
    259            ONLY:  cp, l_d_cp, pt_d_t, t_d_pt
    260 
    261        USE control_parameters,                                                 &
    262            ONLY:  rho_surface
    263 
    264        USE indices,                                                            &
    265            ONLY:  nzb, nzt, wall_flags_0
    266 
    267        USE kinds
    268 
    269        USE pegrid
    270 
    271    
    272255       IMPLICIT NONE
    273256
     
    305288       lwp_top(nzt+1)  = rho_surface * ql(nzt+1,j,i) * dzw(nzt+1)
    306289
    307        temperature     = pt(nzb,j,i) * t_d_pt(nzb) + l_d_cp * ql(nzb,j,i)
    308        blackbody_emission(nzb) = sigma * temperature**4
     290       temperature     = pt(nzb,j,i) * exner(nzb) + lv_d_cp * ql(nzb,j,i)
     291       blackbody_emission(nzb) = sigma_sb * temperature**4
    309292
    310293       DO  k = nzb+1, nzt
     
    315298                            rho_surface * ql(k_help,j,i) * dzw(k_help)
    316299
    317           temperature     = pt(k,j,i) * t_d_pt(k) + l_d_cp * ql(k,j,i)
    318           blackbody_emission(k) = sigma * temperature**4                       &
     300          temperature     = pt(k,j,i) * exner(k) + lv_d_cp * ql(k,j,i)
     301          blackbody_emission(k) = sigma_sb * temperature**4                    &
    319302                                      * MERGE( 1.0_wp, 0.0_wp,                 &
    320303                                               BTEST( wall_flags_0(k,j,i), 0 ) )
     
    325308       lwp_top(nzb)      = lwp_top(nzb+1)
    326309
    327        temperature       = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp *            &
     310       temperature       = pt(nzt+1,j,i) * exner(nzt+1) + lv_d_cp *            &
    328311                           ql(nzt+1,j,i)
    329        blackbody_emission(nzt+1) = sigma * temperature**4
     312       blackbody_emission(nzt+1) = sigma_sb * temperature**4
    330313
    331314!
     
    370353!
    371354!--          Compute tendency term         
    372              tend(k,j,i) = tend(k,j,i) - ( pt_d_t(k) / ( rho_surface * cp ) *  &
    373                                          ( df_p - df_m ) / dzw(k) )            &
     355             tend(k,j,i) = tend(k,j,i) - ( d_exner(k) / ( rho_surface * c_p )  &
     356                                      *  ( df_p - df_m ) / dzw(k) )            &
    374357                                      * MERGE( 1.0_wp, 0.0_wp,                 &
    375358                                               BTEST( wall_flags_0(k,j,i), 0 ) )
Note: See TracChangeset for help on using the changeset viewer.