Changeset 3233
- Timestamp:
- Sep 7, 2018 1:21:24 PM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/land_surface_model_mod.f90
r3222 r3233 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Adapted for the use of cloud_droplets 28 ! 29 ! 3222 2018-08-30 13:35:35Z suehring 27 30 ! - Introduction of surface array for type and its names 28 31 ! - Bugfix in intialization of pavement surfaces … … 2487 2490 ! 2488 2491 !-- If no cloud physics is used, rho_surface has not been calculated before 2489 IF ( .NOT. cloud_physics ) THEN2492 IF ( .NOT. cloud_physics .AND. .NOT. cloud_droplets ) THEN 2490 2493 CALL calc_mean_profile( pt, 4 ) 2491 2494 rho_surface = surface_pressure * 100.0_wp / ( r_d * hom(topo_min_level+1,1,4,0) * exn ) -
palm/trunk/SOURCE/radiation_model_mod.f90
r3230 r3233 28 28 ! ----------------- 29 29 ! $Id$ 30 ! Adapted for the use of cloud_droplets 31 ! 32 ! 3230 2018-09-05 09:29:05Z schwenkel 30 33 ! Bugfix in radiation_constant_surf: changed (10.0 - emissivity_urb) to 31 34 ! (1.0 - emissivity_urb) … … 1434 1437 ENDIF 1435 1438 1439 IF ( cloud_droplets .AND. radiation_scheme == 'rrtmg' .AND. & 1440 average_radiation ) THEN 1441 message_string = 'average_radiation = .T. with radiation_scheme'// & 1442 '= "rrtmg" in combination cloud_droplets = .T.'// & 1443 'is not implementd' 1444 CALL message( 'check_parameters', 'PA0560', 1, 2, 0, 6, 0 ) 1445 ENDIF 1446 1436 1447 ! 1437 1448 !-- Incialize svf normalization reporting histogram … … 2326 2337 IF ( average_radiation ) THEN 2327 2338 pt1 = 0.0_wp 2328 IF ( cloud_physics ) ql1 = 0.0_wp2339 IF ( cloud_physics .OR. cloud_droplets ) ql1 = 0.0_wp 2329 2340 2330 2341 pt1_l = SUM( pt(nzut,nys:nyn,nxl:nxr) ) 2331 IF ( cloud_physics ) ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) )2342 IF ( cloud_physics .OR. cloud_droplets ) ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) ) 2332 2343 2333 2344 #if defined( __parallel ) 2334 2345 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 2335 2346 CALL MPI_ALLREDUCE( pt1_l, pt1, 1, MPI_REAL, MPI_SUM, comm2d, ierr ) 2336 IF ( cloud_physics )&2347 IF ( cloud_physics .OR. cloud_droplets ) & 2337 2348 CALL MPI_ALLREDUCE( ql1_l, ql1, 1, MPI_REAL, MPI_SUM, comm2d, ierr ) 2338 2349 #else 2339 2350 pt1 = pt1_l 2340 IF ( cloud_physics ) ql1 = ql1_l2351 IF ( cloud_physics .OR. cloud_droplets ) ql1 = ql1_l 2341 2352 #endif 2342 2353 2343 2354 exn1 = ( hyp(nzut) / 100000.0_wp )**0.286_wp 2344 IF ( cloud_physics ) pt1 = pt1 + l_d_cp / exn1 * ql12355 IF ( cloud_physics .OR. cloud_droplets ) pt1 = pt1 + l_d_cp / exn1 * ql1 2345 2356 ! 2346 2357 !-- Finally, divide by number of grid points … … 2447 2458 2448 2459 2449 IF ( cloud_physics ) THEN2460 IF ( cloud_physics .OR. cloud_droplets ) THEN 2450 2461 pt1 = pt(k,j,i) + l_d_cp / exn1 * ql(k,j,i) 2451 2462 surf%rad_lw_in(m) = 0.8_wp * sigma_sb * (pt1 * exn1)**4 … … 2506 2517 IF ( average_radiation ) THEN 2507 2518 pt1 = 0.0_wp 2508 IF ( cloud_physics ) ql1 = 0.0_wp2519 IF ( cloud_physics .OR. cloud_droplets ) ql1 = 0.0_wp 2509 2520 2510 2521 pt1_l = SUM( pt(nzut,nys:nyn,nxl:nxr) ) 2511 IF ( cloud_physics ) ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) )2522 IF ( cloud_physics .OR. cloud_droplets ) ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) ) 2512 2523 2513 2524 #if defined( __parallel ) 2514 2525 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 2515 2526 CALL MPI_ALLREDUCE( pt1_l, pt1, 1, MPI_REAL, MPI_SUM, comm2d, ierr ) 2516 IF ( cloud_physics )&2527 IF ( cloud_physics .OR. cloud_droplets ) & 2517 2528 CALL MPI_ALLREDUCE( ql1_l, ql1, 1, MPI_REAL, MPI_SUM, comm2d, ierr ) 2518 2529 #else 2519 2530 pt1 = pt1_l 2520 IF ( cloud_physics ) ql1 = ql1_l2531 IF ( cloud_physics .OR. cloud_droplets ) ql1 = ql1_l 2521 2532 #endif 2522 IF ( cloud_physics ) pt1 = pt1 + l_d_cp / exn1 * ql12533 IF ( cloud_physics .OR. cloud_droplets ) pt1 = pt1 + l_d_cp / exn1 * ql1 2523 2534 ! 2524 2535 !-- Finally, divide by number of grid points … … 2603 2614 exn1 = (hyp(k) / 100000.0_wp )**0.286_wp 2604 2615 2605 IF ( cloud_physics ) THEN2616 IF ( cloud_physics .OR. cloud_droplets ) THEN 2606 2617 pt1 = pt(k,j,i) + l_d_cp / exn1 * ql(k,j,i) 2607 2618 surf%rad_lw_in(m) = 0.8_wp * sigma_sb * (pt1 * exn1)**4 … … 2973 2984 IF ( cloud_physics ) THEN 2974 2985 DO k = nzb+1, nzt+1 2975 rrtm_cliqwp(0,k) = ql_av(k) * 1000._wp * &2986 rrtm_cliqwp(0,k) = ql_av(k) * 1000._wp * & 2976 2987 (rrtm_plev(0,k) - rrtm_plev(0,k+1)) & 2977 2988 * 100._wp / g … … 2983 2994 ! 2984 2995 !-- Calculate cloud droplet effective radius 2985 IF ( cloud_physics ) THEN 2986 rrtm_reliq(0,k) = 1.0E6_wp * ( 3._wp * ql_av(k) & 2987 * rho_surface & 2988 / ( 4._wp * pi * nc_const * rho_l )& 2989 )**.33333333333333_wp & 2990 * EXP( LOG( sigma_gc )**2 ) 2991 2992 ENDIF 2993 2996 rrtm_reliq(0,k) = 1.0E6_wp * ( 3.0_wp * ql_av(k) & 2997 * rho_surface & 2998 / ( 4.0_wp * pi * nc_const * rho_l ) & 2999 )**0.33333333333333_wp & 3000 * EXP( LOG( sigma_gc )**2 ) 2994 3001 ! 2995 3002 !-- Limit effective radius … … 3157 3164 )**0.286_wp + l_d_cp * ql(k,j,i) 3158 3165 rrtm_h2ovmr(0,k) = mol_mass_air_d_wv * (q(k,j,i) - ql(k,j,i)) 3166 ENDDO 3167 ELSEIF ( cloud_droplets ) THEN 3168 DO k = nzb+1, nzt+1 3169 rrtm_tlay(0,k) = pt(k,j,i) * ( (hyp(k) ) / 100000.0_wp & 3170 )**0.286_wp + l_d_cp * ql(k,j,i) 3171 rrtm_h2ovmr(0,k) = mol_mass_air_d_wv * q(k,j,i) 3159 3172 ENDDO 3160 3173 ELSE
Note: See TracChangeset
for help on using the changeset viewer.