Ignore:
Timestamp:
Mar 20, 2014 8:40:49 AM (10 years ago)
Author:
raasch
Message:

ONLY-attribute added to USE-statements,
kind-parameters added to all INTEGER and REAL declaration statements,
kinds are defined in new module kinds,
old module precision_kind is removed,
revision history before 2012 removed,
comment fields (!:) to be used for variable explanations added to all variable declaration statements

File:
1 edited

Legend:

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

    r1310 r1320  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! ONLY-attribute added to USE-statements,
     23! kind-parameters added to all INTEGER and REAL declaration statements,
     24! kinds are defined in new module kinds,
     25! revision history before 2012 removed,
     26! comment fields (!:) to be used for variable explanations added to
     27! all variable declaration statements
    2328!
    2429! Former revisions:
     
    2833! 1036 2012-10-22 13:43:42Z raasch
    2934! code put under GPL (PALM 3.9)
    30 !
    31 ! RCS Log replace by Id keyword, revision history cleaned up
    32 !
    33 ! Revision 1.6  2004/01/30 10:17:03  raasch
    34 ! Scalar lower k index nzb replaced by 2d-array nzb_2d
    3535!
    3636! Revision 1.1  2000/04/13 14:42:45  schroeter
     
    4343! based on the parameterization of the cloud effective emissivity
    4444!------------------------------------------------------------------------------!
    45 
     45    USE kinds
     46   
    4647    PRIVATE
    4748    PUBLIC calc_radiation
    4849   
    49     LOGICAL, SAVE ::  first_call = .TRUE.
    50     REAL, SAVE    ::  sigma = 5.67E-08
    51 
    52     REAL, DIMENSION(:), ALLOCATABLE, SAVE ::  lwp_ground, lwp_top, &
    53                                               blackbody_emission
     50    LOGICAL, SAVE ::  first_call = .TRUE. !:
     51    REAL(wp), SAVE ::  sigma = 5.67E-08   !:
     52
     53    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  lwp_ground         !:
     54    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  lwp_top            !:
     55    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  blackbody_emission !:
    5456
    5557    INTERFACE calc_radiation
     
    6668    SUBROUTINE calc_radiation
    6769
    68        USE arrays_3d
    69        USE cloud_parameters
    70        USE control_parameters
    71        USE indices
     70       USE arrays_3d,                                                          &
     71           ONLY:  dzw, pt, ql, tend
     72
     73       USE cloud_parameters,                                                   &
     74           ONLY:  cp, l_d_cp, pt_d_t, t_d_pt
     75
     76       USE control_parameters,                                                 &
     77           ONLY:  rho_surface
     78
     79       USE indices,                                                            &
     80           ONLY:  nxl, nxr, nyn, nys, nzb, nzb_2d, nzt
     81
     82       USE kinds
     83
    7284       USE pegrid
    7385
     86
    7487       IMPLICIT NONE
    7588
    76        INTEGER ::  i, j, k, k_help
     89       INTEGER(iwp) ::  i      !:
     90       INTEGER(iwp) ::  j      !:
     91       INTEGER(iwp) ::  k      !:
     92       INTEGER(iwp) ::  k_help !:
    7793 
    78        REAL :: df_p, df_m , effective_emission_up_m, effective_emission_up_p, &
    79                effective_emission_down_m, effective_emission_down_p,          &
    80                f_up_m, f_up_p, f_down_m, f_down_p, impinging_flux_at_top,     &
    81                temperature
     94       REAL(wp) :: df_p                      !:
     95       REAL(wp) :: df_m                      !:
     96       REAL(wp) :: effective_emission_up_m   !:
     97       REAL(wp) :: effective_emission_up_p   !:
     98       REAL(wp) :: effective_emission_down_m !:
     99       REAL(wp) :: effective_emission_down_p !:
     100       REAL(wp) :: f_up_m                    !:
     101       REAL(wp) :: f_up_p                    !:
     102       REAL(wp) :: f_down_m                  !:
     103       REAL(wp) :: f_down_p                  !:
     104       REAL(wp) :: impinging_flux_at_top     !:
     105       REAL(wp) :: temperature               !:
    82106
    83107
     
    85109!--    On first call, allocate temporary arrays
    86110       IF ( first_call )  THEN
    87           ALLOCATE( blackbody_emission(nzb:nzt+1), lwp_ground(nzb:nzt+1), &
     111          ALLOCATE( blackbody_emission(nzb:nzt+1), lwp_ground(nzb:nzt+1),      &
    88112                    lwp_top(nzb:nzt+1) )
    89113          first_call = .FALSE.
     
    105129
    106130                k_help = ( nzt+nzb+1 ) - k
    107                 lwp_ground(k)   = lwp_ground(k-1) + rho_surface * ql(k,j,i) * &
     131                lwp_ground(k)   = lwp_ground(k-1) + rho_surface * ql(k,j,i) *  &
    108132                                  dzw(k)
    109133
    110                 lwp_top(k_help) = lwp_top(k_help+1) + &
     134                lwp_top(k_help) = lwp_top(k_help+1) +                          &
    111135                                  rho_surface * ql(k_help,j,i) * dzw(k_help)
    112136
     
    116140             ENDDO
    117141
    118              lwp_ground(nzt+1) = lwp_ground(nzt) + &
     142             lwp_ground(nzt+1) = lwp_ground(nzt) +                             &
    119143                                 rho_surface * ql(nzt+1,j,i) * dzw(nzt+1)
    120144             lwp_top(nzb)      = lwp_top(nzb+1)
    121145
    122              temperature       = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp * &
     146             temperature       = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp *      &
    123147                                 ql(nzt+1,j,i)
    124148             blackbody_emission(nzt+1) = sigma * temperature**4.0
     
    135159!
    136160!--                Compute effective emissivities
    137                    effective_emission_up_p   = 1.0 - &
     161                   effective_emission_up_p   = 1.0 -                           &
    138162                                               EXP( -130.0 * lwp_ground(k+1) )
    139                    effective_emission_up_m   = 1.0 - &
     163                   effective_emission_up_m   = 1.0 -                           &
    140164                                               EXP( -130.0 * lwp_ground(k-1) )
    141                    effective_emission_down_p = 1.0 - &
     165                   effective_emission_down_p = 1.0 -                           &
    142166                                               EXP( -158.0 * lwp_top(k+1) )
    143                    effective_emission_down_m = 1.0 - &
     167                   effective_emission_down_m = 1.0 -                           &
    144168                                               EXP( -158.0 * lwp_top(k-1) ) 
    145169
    146170!
    147171!--                Compute vertical long wave radiation fluxes
    148                    f_up_p = blackbody_emission(nzb) + &
    149                             effective_emission_up_p * &
     172                   f_up_p = blackbody_emission(nzb) +                          &
     173                            effective_emission_up_p *                          &
    150174                           ( blackbody_emission(k) - blackbody_emission(nzb) )
    151175
    152                    f_up_m = blackbody_emission(nzb) + &
    153                             effective_emission_up_m * &
     176                   f_up_m = blackbody_emission(nzb) +                          &
     177                            effective_emission_up_m *                          &
    154178                           ( blackbody_emission(k-1) - blackbody_emission(nzb) )
    155179
    156                    f_down_p = impinging_flux_at_top + &
    157                               effective_emission_down_p * &
     180                   f_down_p = impinging_flux_at_top +                          &
     181                              effective_emission_down_p *                      &
    158182                             ( blackbody_emission(k) - impinging_flux_at_top )
    159183
    160                    f_down_m = impinging_flux_at_top + &
    161                               effective_emission_down_m * &
     184                   f_down_m = impinging_flux_at_top +                          &
     185                              effective_emission_down_m *                      &
    162186                             ( blackbody_emission(k-1) - impinging_flux_at_top )
    163187
     
    169193!
    170194!--                Compute tendency term         
    171                    tend(k,j,i) = tend(k,j,i) - &
    172                                 ( pt_d_t(k) / ( rho_surface * cp ) * &
     195                   tend(k,j,i) = tend(k,j,i) -                                 &
     196                                ( pt_d_t(k) / ( rho_surface * cp ) *           &
    173197                                  ( df_p - df_m ) / dzw(k) )
    174198
     
    187211    SUBROUTINE calc_radiation_ij( i, j )
    188212
    189        USE arrays_3d
    190        USE cloud_parameters
    191        USE control_parameters
    192        USE indices
     213       USE arrays_3d,                                                          &
     214           ONLY:  dzw, pt, ql, tend
     215
     216       USE cloud_parameters,                                                   &
     217           ONLY:  cp, l_d_cp, pt_d_t, t_d_pt
     218
     219       USE control_parameters,                                                 &
     220           ONLY:  rho_surface
     221
     222       USE indices,                                                            &
     223           ONLY:  nzb, nzb_2d, nzt
     224
     225       USE kinds
     226
    193227       USE pegrid
     228
    194229   
    195230       IMPLICIT NONE
    196231
    197        INTEGER :: i, j, k, k_help
    198 
    199        REAL :: df_p, df_m , effective_emission_up_m, effective_emission_up_p, &
    200                effective_emission_down_m, effective_emission_down_p,          &
    201                f_up_m, f_up_p, f_down_m, f_down_p, impinging_flux_at_top,     &
    202                temperature
    203 
     232       INTEGER(iwp) ::  i      !:
     233       INTEGER(iwp) ::  j      !:
     234       INTEGER(iwp) ::  k      !:
     235       INTEGER(iwp) ::  k_help !:
     236
     237       REAL(wp) :: df_p                      !:
     238       REAL(wp) :: df_m                      !:
     239       REAL(wp) :: effective_emission_up_m   !:
     240       REAL(wp) :: effective_emission_up_p   !:
     241       REAL(wp) :: effective_emission_down_m !:
     242       REAL(wp) :: effective_emission_down_p !:
     243       REAL(wp) :: f_up_m                    !:
     244       REAL(wp) :: f_up_p                    !:
     245       REAL(wp) :: f_down_m                  !:
     246       REAL(wp) :: f_down_p                  !:
     247       REAL(wp) :: impinging_flux_at_top     !:
     248       REAL(wp) :: temperature               !:
     249
     250       
    204251!
    205252!--    On first call, allocate temporary arrays
    206253       IF ( first_call )  THEN
    207           ALLOCATE( blackbody_emission(nzb:nzt+1), lwp_ground(nzb:nzt+1), &
     254          ALLOCATE( blackbody_emission(nzb:nzt+1), lwp_ground(nzb:nzt+1),      &
    208255                    lwp_top(nzb:nzt+1) )
    209256          first_call = .FALSE.
     
    223270          lwp_ground(k)   = lwp_ground(k-1) + rho_surface * ql(k,j,i) * dzw(k)
    224271
    225           lwp_top(k_help) = lwp_top(k_help+1) + &
     272          lwp_top(k_help) = lwp_top(k_help+1) +                                &
    226273                            rho_surface * ql(k_help,j,i) * dzw(k_help)
    227274
     
    230277
    231278       ENDDO
    232        lwp_ground(nzt+1) = lwp_ground(nzt) + &
     279       lwp_ground(nzt+1) = lwp_ground(nzt) +                                   &
    233280                           rho_surface * ql(nzt+1,j,i) * dzw(nzt+1)
    234281       lwp_top(nzb)      = lwp_top(nzb+1)
    235282
    236        temperature       = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp * &
     283       temperature       = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp *            &
    237284                           ql(nzt+1,j,i)
    238285       blackbody_emission(nzt+1) = sigma * temperature**4.0
     
    249296!
    250297!--          Compute effective emissivities
    251              effective_emission_up_p   = 1.0 - &
     298             effective_emission_up_p   = 1.0 -                                 &
    252299                                         EXP( -130.0 * lwp_ground(k+1) )
    253              effective_emission_up_m   = 1.0 - &
     300             effective_emission_up_m   = 1.0 -                                 &
    254301                                         EXP( -130.0 * lwp_ground(k-1) )
    255              effective_emission_down_p = 1.0 - &
     302             effective_emission_down_p = 1.0 -                                 &
    256303                                         EXP( -158.0 * lwp_top(k+1) )
    257              effective_emission_down_m = 1.0 - &
     304             effective_emission_down_m = 1.0 -                                 &
    258305                                         EXP( -158.0 * lwp_top(k-1) ) 
    259306             
    260307!
    261308!--          Compute vertical long wave radiation fluxes
    262              f_up_p = blackbody_emission(nzb) + effective_emission_up_p * &
     309             f_up_p = blackbody_emission(nzb) + effective_emission_up_p *      &
    263310                     ( blackbody_emission(k) - blackbody_emission(nzb) )
    264311
    265              f_up_m = blackbody_emission(nzb) + effective_emission_up_m * &
     312             f_up_m = blackbody_emission(nzb) + effective_emission_up_m *      &
    266313                     ( blackbody_emission(k-1) - blackbody_emission(nzb) )
    267314
    268              f_down_p = impinging_flux_at_top + effective_emission_down_p * &
     315             f_down_p = impinging_flux_at_top + effective_emission_down_p *    &
    269316                       ( blackbody_emission(k) - impinging_flux_at_top )
    270317
    271              f_down_m = impinging_flux_at_top + effective_emission_down_m * &
     318             f_down_m = impinging_flux_at_top + effective_emission_down_m *    &
    272319                       ( blackbody_emission(k-1) - impinging_flux_at_top )
    273320
     
    279326!
    280327!--          Compute tendency term         
    281              tend(k,j,i) = tend(k,j,i) - ( pt_d_t(k) / ( rho_surface * cp ) * &
     328             tend(k,j,i) = tend(k,j,i) - ( pt_d_t(k) / ( rho_surface * cp ) *  &
    282329                                         ( df_p - df_m ) / dzw(k) )
    283330
Note: See TracChangeset for help on using the changeset viewer.