Changeset 2547
- Timestamp:
- Oct 16, 2017 12:41:56 PM (7 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/land_surface_model_mod.f90
r2532 r2547 25 25 ! ----------------- 26 26 ! $Id$ 27 ! extended by cloud_droplets option 28 ! 29 ! 2532 2017-10-11 16:00:46Z scharf 27 30 ! bugfixes in data_output_3d 28 31 ! … … 281 284 282 285 USE control_parameters, & 283 ONLY: cloud_ physics, coupling_start_time, dt_3d, end_time, humidity,&284 intermediate_timestep_count,&286 ONLY: cloud_droplets, cloud_physics, coupling_start_time, dt_3d, & 287 end_time, humidity, intermediate_timestep_count, & 285 288 initializing_actions, intermediate_timestep_count_max, & 286 289 land_surface, max_masks, precipitation, pt_surface, & … … 1531 1534 pt1 = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i) 1532 1535 qv1 = q(k,j,i) - ql(k,j,i) 1536 ELSEIF ( cloud_droplets ) THEN 1537 pt1 = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i) 1538 qv1 = q(k,j,i) 1533 1539 ELSE 1534 1540 pt1 = pt(k,j,i) … … 1950 1956 ! 1951 1957 !-- Calculate specific humidity at saturation 1952 q_s = 0.622_wp * e_s / surface_pressure 1958 q_s = 0.622_wp * e_s / surface_pressure - e_s 1953 1959 1954 1960 resistance = surf%r_a(m) / ( surf%r_a(m) + surf%r_s(m) ) … … 2491 2497 ENDIF 2492 2498 2493 IF ( cloud_physics ) THEN2499 IF ( cloud_physics .OR. cloud_droplets ) THEN 2494 2500 pt1 = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i) 2495 2501 ELSE … … 2585 2591 k = surf_lsm_v(l)%k(m) 2586 2592 2587 IF ( cloud_physics ) THEN2593 IF ( cloud_physics .OR. cloud_droplets ) THEN 2588 2594 pt1 = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i) 2589 2595 ELSE -
palm/trunk/SOURCE/radiation_model_mod.f90
r2544 r2547 25 25 ! ----------------- 26 26 ! $Id$ 27 ! extended by cloud_droplets option, minor bugfix and correct calculation of 28 ! cloud droplet number concentration 29 ! 30 ! 2544 2017-10-13 18:09:32Z maronga 27 31 ! Moved date and time quantitis to separate module date_and_time_mod 28 32 ! … … 173 177 174 178 USE arrays_3d, & 175 ONLY: dzw, hyp, pt, q, ql, zu, zw179 ONLY: dzw, hyp, nc, pt, q, ql, zu, zw 176 180 177 181 USE cloud_parameters, & … … 183 187 USE control_parameters, & 184 188 ONLY: cloud_droplets, cloud_physics, g, initializing_actions, & 185 large_scale_forcing, lsf_surf, phi, pt_surface, rho_surface, & 186 surface_pressure, time_since_reference_point 189 large_scale_forcing, lsf_surf, microphysics_morrison, phi, & 190 pt_surface, rho_surface, surface_pressure, & 191 time_since_reference_point 187 192 188 193 USE date_and_time_mod, & … … 1252 1257 rad_lw_out(0,j,i) = emis(j,i) * sigma_sb * (pt(k,j,i) * exn)**4 1253 1258 1254 IF ( cloud_physics ) THEN1259 IF ( cloud_physics .OR. cloud_droplets ) THEN 1255 1260 pt1 = pt(k+1,j,i) + l_d_cp / exn1 * ql(k+1,j,i) 1256 1261 rad_lw_in(0,j,i) = 0.8_wp * sigma_sb * (pt1 * exn1)**4 … … 1303 1308 exn1 = (hyp(k+1) / 100000.0_wp )**0.286_wp 1304 1309 1305 IF ( cloud_physics ) THEN1310 IF ( cloud_physics .OR. cloud_droplets ) THEN 1306 1311 pt1 = pt(k+1,j,i) + l_d_cp / exn1 * ql(k+1,j,i) 1307 1312 rad_lw_in(0,j,i) = 0.8_wp * sigma_sb * (pt1 * exn1)**4 … … 1450 1455 INTEGER(iwp) :: i, j, k, n !< loop indices 1451 1456 1452 REAL(wp) :: s_r2, & !< weighted sum over all droplets with r^2 1453 s_r3 !< weighted sum over all droplets with r^3 1457 REAL(wp) :: nc_rad, & !< number concentration of cloud droplets 1458 s_r2, & !< weighted sum over all droplets with r^2 1459 s_r3 !< weighted sum over all droplets with r^3 1454 1460 1455 1461 ! … … 1490 1496 rrtm_h2ovmr(0,k) = mol_mass_air_d_wv * (q(k,j,i) - ql(k,j,i)) 1491 1497 ENDDO 1498 ELSEIF ( cloud_droplets ) THEN 1499 DO k = nzb+1, nzt+1 1500 rrtm_tlay(0,k) = pt(k,j,i) * ( (hyp(k) ) / 100000.0_wp & 1501 )**0.286_wp + l_d_cp * ql(k,j,i) 1502 rrtm_h2ovmr(0,k) = mol_mass_air_d_wv * q(k,j,i) 1503 ENDDO 1492 1504 ELSE 1493 1505 DO k = nzb+1, nzt+1 … … 1531 1543 rrtm_icld = 0 1532 1544 1533 IF ( cloud_physics ) THEN1545 IF ( cloud_physics .OR. cloud_droplets ) THEN 1534 1546 DO k = nzb+1, nzt+1 1535 1547 rrtm_cliqwp(0,k) = ql(k,j,i) * 1000.0_wp * & … … 1544 1556 !-- Calculate cloud droplet effective radius 1545 1557 IF ( cloud_physics ) THEN 1558 nc_rad = MERGE( nc(k,j,i), nc_const, microphysics_morrison ) 1546 1559 rrtm_reliq(0,k) = 1.0E6_wp * ( 3.0_wp * ql(k,j,i) & 1547 1560 * rho_surface & 1548 / ( 4.0_wp * pi * nc_ const* rho_l )&1561 / ( 4.0_wp * pi * nc_rad * rho_l )& 1549 1562 )**0.33333333333333_wp & 1550 1563 * EXP( LOG( sigma_gc )**2 ) -
palm/trunk/SOURCE/surface_layer_fluxes_mod.f90
r2321 r2547 25 25 ! ----------------- 26 26 ! $Id$ 27 ! extended by cloud_droplets option 28 ! 29 ! 2321 2017-07-24 15:57:07Z schwenkel 27 30 ! Bugfix: Correct index in lookup table for Obukhov length 28 31 ! … … 201 204 202 205 USE control_parameters, & 203 ONLY: cloud_ physics, constant_heatflux, constant_scalarflux,&204 constant_ waterflux, coupling_mode, g, humidity, ibc_e_b,&205 ibc_pt_b, initializing_actions, kappa,&206 ONLY: cloud_droplets, cloud_physics, constant_heatflux, & 207 constant_scalarflux, constant_waterflux, coupling_mode, g, & 208 humidity, ibc_e_b, ibc_pt_b, initializing_actions, kappa, & 206 209 intermediate_timestep_count, intermediate_timestep_count_max, & 207 210 land_surface, large_scale_forcing, lsf_surf, & … … 291 294 !-- temperature and specific humidity at first grid level from the fields pt 292 295 !-- and q 293 IF ( cloud_physics ) THEN296 IF ( cloud_physics .OR. cloud_droplets ) THEN 294 297 ! 295 298 !-- First call for horizontal default-type surfaces (l=0 - upward facing, … … 1396 1399 1397 1400 ENDDO 1398 ELSEIF ( cloud_physics ) THEN1401 ELSEIF ( cloud_physics .OR. cloud_droplets ) THEN 1399 1402 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo ) 1400 1403 DO m = 1, surf%ns … … 1529 1532 k = surf%k(m) 1530 1533 1531 surf%pt1(m) = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i) 1532 surf%qv1(m) = q(k,j,i) - ql(k,j,i) 1534 IF ( cloud_physics ) THEN 1535 surf%pt1(m) = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i) 1536 surf%qv1(m) = q(k,j,i) - ql(k,j,i) 1537 ELSEIF( cloud_droplets ) THEN 1538 surf%pt1(m) = pt(k,j,i) + l_d_cp * pt_d_t(k) * ql(k,j,i) 1539 surf%qv1(m) = q(k,j,i) 1540 ENDIF 1533 1541 1534 1542 ENDDO … … 1584 1592 ENDIF 1585 1593 1586 IF ( cloud_physics ) THEN1594 IF ( cloud_physics .OR. cloud_droplets ) THEN 1587 1595 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo ) 1588 1596 DO m = 1, surf%ns … … 1685 1693 ENDIF 1686 1694 1687 IF ( cloud_physics ) THEN1695 IF ( cloud_physics .OR. cloud_droplets ) THEN 1688 1696 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo ) 1689 1697 DO m = 1, surf%ns -
palm/trunk/SOURCE/surface_mod.f90
r2508 r2547 25 25 ! ----------------- 26 26 ! $Id$ 27 ! extended by cloud_droplets option 28 ! 29 ! 2508 2017-10-02 08:57:09Z suehring 27 30 ! Minor formatting adjustment 28 31 ! … … 139 142 REAL(wp), DIMENSION(:), ALLOCATABLE :: z0q !< roughness length for humidity 140 143 141 REAL(wp), DIMENSION(:), ALLOCATABLE :: pt1 !< Specific humidity at first grid level (required for cloud_physics = .T. )142 REAL(wp), DIMENSION(:), ALLOCATABLE :: qv1 !< Potential temperature at first grid level (required for cloud_physics = .T. )144 REAL(wp), DIMENSION(:), ALLOCATABLE :: pt1 !< Specific humidity at first grid level (required for cloud_physics = .T. or cloud_droplets = .T.) 145 REAL(wp), DIMENSION(:), ALLOCATABLE :: qv1 !< Potential temperature at first grid level (required for cloud_physics = .T. or cloud_droplets = .T.) 143 146 ! 144 147 !-- Define arrays for surface fluxes … … 745 748 !-- When cloud physics is used, arrays for storing potential temperature and 746 749 !-- specific humidity at first grid level are required. 747 IF ( cloud_physics ) THEN750 IF ( cloud_physics .OR. cloud_droplets ) THEN 748 751 ALLOCATE ( surfaces%pt1(1:surfaces%ns) ) 749 752 ALLOCATE ( surfaces%qv1(1:surfaces%ns) )
Note: See TracChangeset
for help on using the changeset viewer.