Changeset 1115 for palm/trunk/SOURCE
- Timestamp:
- Mar 26, 2013 6:16:16 PM (12 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/advec_ws.f90
r1054 r1115 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! calculation of qr and nr is restricted to precipitation 22 23 ! 23 24 ! Former revisions: … … 210 211 sums_wspts_ws_l = 0.0 211 212 212 IF ( humidity .OR.passive_scalar ) THEN213 IF ( humidity .OR. passive_scalar ) THEN 213 214 ALLOCATE( sums_wsqs_ws_l(nzb:nzt+1,0:threads_per_task-1) ) 214 215 sums_wsqs_ws_l = 0.0 215 216 ENDIF 216 217 217 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 218 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 219 precipitation ) THEN 218 220 ALLOCATE( sums_wsqrs_ws_l(nzb:nzt+1,0:threads_per_task-1) ) 219 221 ALLOCATE( sums_wsnrs_ws_l(nzb:nzt+1,0:threads_per_task-1) ) … … 264 266 diss_l_e(nzb+1:nzt,nys:nyn,0:threads_per_task-1) ) 265 267 266 IF ( humidity .OR.passive_scalar ) THEN268 IF ( humidity .OR. passive_scalar ) THEN 267 269 ALLOCATE( flux_s_q(nzb+1:nzt,0:threads_per_task-1), & 268 270 diss_s_q(nzb+1:nzt,0:threads_per_task-1) ) … … 271 273 ENDIF 272 274 273 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 275 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 276 precipitation ) THEN 274 277 ALLOCATE( flux_s_qr(nzb+1:nzt,0:threads_per_task-1), & 275 278 diss_s_qr(nzb+1:nzt,0:threads_per_task-1), & … … 280 283 flux_l_nr(nzb+1:nzt,nys:nyn,0:threads_per_task-1), & 281 284 diss_l_nr(nzb+1:nzt,nys:nyn,0:threads_per_task-1) ) 282 END 285 ENDIF 283 286 284 287 IF ( ocean ) THEN … … 297 300 298 301 !------------------------------------------------------------------------------! 299 ! Initialize variables used for storing statistic q auntities (fluxes, variances)302 ! Initialize variables used for storing statistic quantities (fluxes, variances) 300 303 !------------------------------------------------------------------------------! 301 304 SUBROUTINE ws_statistics … … 319 322 IF ( ws_scheme_sca ) THEN 320 323 sums_wspts_ws_l = 0.0 321 IF ( humidity .OR. passive_scalar ) sums_wsqs_ws_l = 0.0 322 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 324 IF ( humidity .OR. passive_scalar ) sums_wsqs_ws_l = 0.0 325 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 326 precipitation ) THEN 323 327 sums_wsqrs_ws_l = 0.0 324 328 sums_wsnrs_ws_l = 0.0 … … 770 774 * weight_substep(intermediate_timestep_count) 771 775 ENDDO 772 773 776 774 777 END SELECT -
palm/trunk/SOURCE/average_3d_data.f90
r1054 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! +qc 22 23 ! 23 24 ! Former revisions: … … 181 182 ENDDO 182 183 184 CASE ( 'qc' ) 185 DO i = nxlg, nxrg 186 DO j = nysg, nyng 187 DO k = nzb, nzt+1 188 qc_av(k,j,i) = qc_av(k,j,i) / REAL( average_count_3d ) 189 ENDDO 190 ENDDO 191 ENDDO 192 183 193 CASE ( 'ql' ) 184 194 DO i = nxlg, nxrg -
palm/trunk/SOURCE/boundary_conds.f90
r1114 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! boundary conditions of two-moment cloud scheme are restricted to Neumann- 23 ! boundary-conditions 23 24 ! 24 25 ! Former revisions: … … 246 247 q_p(nzt+1,:,:) = q_p(nzt,:,:) + bc_q_t_val * dzu(nzt+1) 247 248 248 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 249 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 250 precipitation ) THEN 249 251 ! 250 !-- Surface conditions for constant_humidity_flux 251 IF ( ibc_qr_b == 0 ) THEN 252 DO i = nxlg, nxrg 253 DO j = nysg, nyng 254 qr_p(nzb_s_inner(j,i),j,i) = qr(nzb_s_inner(j,i),j,i) 255 ENDDO 256 ENDDO 257 ELSE 258 DO i = nxlg, nxrg 259 DO j = nysg, nyng 260 qr_p(nzb_s_inner(j,i),j,i) = qr_p(nzb_s_inner(j,i)+1,j,i) 261 ENDDO 262 ENDDO 263 ENDIF 264 ! 265 !-- Top boundary 266 qr_p(nzt+1,:,:) = qr_p(nzt,:,:) + bc_qr_t_val * dzu(nzt+1) 267 ! 268 !-- Surface conditions for constant_humidity_flux 269 IF ( ibc_nr_b == 0 ) THEN 270 DO i = nxlg, nxrg 271 DO j = nysg, nyng 272 nr_p(nzb_s_inner(j,i),j,i) = nr(nzb_s_inner(j,i),j,i) 273 ENDDO 274 ENDDO 275 ELSE 276 DO i = nxlg, nxrg 277 DO j = nysg, nyng 278 nr_p(nzb_s_inner(j,i),j,i) = nr_p(nzb_s_inner(j,i)+1,j,i) 279 ENDDO 280 ENDDO 281 ENDIF 282 ! 283 !-- Top boundary 284 nr_p(nzt+1,:,:) = nr_p(nzt,:,:) + bc_nr_t_val * dzu(nzt+1) 252 !-- Surface conditions rain water (Neumann) 253 DO i = nxlg, nxrg 254 DO j = nysg, nyng 255 qr_p(nzb_s_inner(j,i),j,i) = qr_p(nzb_s_inner(j,i)+1,j,i) 256 nr_p(nzb_s_inner(j,i),j,i) = nr_p(nzb_s_inner(j,i)+1,j,i) 257 ENDDO 258 ENDDO 259 ! 260 !-- Top boundary condition for rain water (Neumann) 261 qr_p(nzt+1,:,:) = qr_p(nzt,:,:) 262 nr_p(nzt+1,:,:) = nr_p(nzt,:,:) 263 285 264 ENDIF 286 287 265 ! 288 266 !-- In case of inflow at the south boundary the boundary for v is at nys … … 308 286 pt_p(:,nys-1,:) = pt_p(:,nys,:) 309 287 IF ( .NOT. constant_diffusion ) e_p(:,nys-1,:) = e_p(:,nys,:) 310 IF ( humidity .OR.passive_scalar ) THEN288 IF ( humidity .OR. passive_scalar ) THEN 311 289 q_p(:,nys-1,:) = q_p(:,nys,:) 312 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 290 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 291 precipitation) THEN 313 292 qr_p(:,nys-1,:) = qr_p(:,nys,:) 314 293 nr_p(:,nys-1,:) = nr_p(:,nys,:) … … 318 297 pt_p(:,nyn+1,:) = pt_p(:,nyn,:) 319 298 IF ( .NOT. constant_diffusion ) e_p(:,nyn+1,:) = e_p(:,nyn,:) 320 IF ( humidity .OR.passive_scalar ) THEN299 IF ( humidity .OR. passive_scalar ) THEN 321 300 q_p(:,nyn+1,:) = q_p(:,nyn,:) 322 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 301 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 302 precipitation ) THEN 323 303 qr_p(:,nyn+1,:) = qr_p(:,nyn,:) 324 304 nr_p(:,nyn+1,:) = nr_p(:,nyn,:) … … 328 308 pt_p(:,:,nxl-1) = pt_p(:,:,nxl) 329 309 IF ( .NOT. constant_diffusion ) e_p(:,:,nxl-1) = e_p(:,:,nxl) 330 IF ( humidity .OR.passive_scalar ) THEN310 IF ( humidity .OR. passive_scalar ) THEN 331 311 q_p(:,:,nxl-1) = q_p(:,:,nxl) 332 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 312 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 313 precipitation ) THEN 333 314 qr_p(:,:,nxl-1) = qr_p(:,:,nxl) 334 315 nr_p(:,:,nxl-1) = nr_p(:,:,nxl) … … 340 321 IF ( humidity .OR. passive_scalar ) THEN 341 322 q_p(:,:,nxr+1) = q_p(:,:,nxr) 342 IF ( cloud_physics .AND. icloud_scheme == 0) THEN323 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. precipitation ) THEN 343 324 qr_p(:,:,nxr+1) = qr_p(:,:,nxr) 344 325 nr_p(:,:,nxr+1) = nr_p(:,:,nxr) -
palm/trunk/SOURCE/calc_liquid_water_content.f90
r1054 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! drizzle can be used independently from precipitation 22 23 ! 23 24 ! Former revisions: … … 63 64 USE cloud_parameters 64 65 USE constants 66 USE control_parameters 65 67 USE grid_variables 66 68 USE indices … … 75 77 DO i = nxlg, nxrg 76 78 DO j = nysg, nyng 77 DO k = nzb_ 2d(j,i)+1, nzt79 DO k = nzb_s_inner(j,i)+1, nzt 78 80 79 81 ! … … 101 103 ! 102 104 !-- Compute the liquid water content 103 IF ( ( q(k,j,i) - q_s ) > 0.0 ) THEN 104 ql(k,j,i) = q(k,j,i) - q_s 105 IF ( icloud_scheme == 0 .AND. precipitation) THEN 106 IF ( ( q(k,j,i) - q_s - qr(k,j,i) ) > 0.0 ) THEN 107 qc(k,j,i) = q(k,j,i) - q_s - qr(k,j,i) 108 ql(k,j,i) = qc(k,j,i) + qr(k,j,i) 109 ELSE 110 qc(k,j,i) = 0.0 111 ql(k,j,i) = qr(k,j,i) 112 ENDIF 113 ELSEIF ( icloud_scheme == 0 .AND. .NOT. precipitation ) THEN 114 IF ( ( q(k,j,i) - q_s ) > 0.0 ) THEN 115 qc(k,j,i) = q(k,j,i) - q_s 116 ql(k,j,i) = qc(k,j,i) 117 ELSE 118 qc(k,j,i) = 0.0 119 ql(k,j,i) = 0.0 120 ENDIF 105 121 ELSE 106 ql(k,j,i) = 0.0 122 IF ( ( q(k,j,i) - q_s ) > 0.0 ) THEN 123 ql(k,j,i) = q(k,j,i) - q_s 124 ELSE 125 ql(k,j,i) = 0.0 126 ENDIF 107 127 ENDIF 108 109 128 ENDDO 110 129 ENDDO -
palm/trunk/SOURCE/check_parameters.f90
r1112 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! unused variables removed 23 ! drizzle can be used without precipitation 23 24 ! 24 25 ! Former revisions: … … 569 570 WRITE( action, '(A)' ) 'galilei_transformation = .TRUE.' 570 571 ENDIF 572 IF ( cloud_physics ) THEN 573 WRITE( action, '(A)' ) 'cloud_physics = .TRUE.' 574 ENDIF 571 575 IF ( cloud_droplets ) THEN 572 WRITE( action, '(A)' ) 'cloud_droplets = .TRUE. (has not been tested)'576 WRITE( action, '(A)' ) 'cloud_droplets = .TRUE.' 573 577 ENDIF 574 578 IF ( .NOT. prandtl_layer ) THEN … … 899 903 ENDIF 900 904 901 IF ( cloud_physics .AND. icloud_scheme == 0 .AND.&902 .NOT. precipitation) THEN903 message_string = 'cloud_scheme = seifert_beheng requires ' // &904 'precipitation= .TRUE.'905 CALL message( 'check_parameters', 'PA0363', 1, 2, 0, 6, 0 )906 ENDIF905 ! IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 906 ! .NOT. precipitation .AND. .NOT. drizzle ) THEN 907 ! message_string = 'cloud_scheme = seifert_beheng requires ' // & 908 ! 'precipitation = .TRUE. or drizzle = .TRUE.' 909 ! CALL message( 'check_parameters', 'PA0363', 1, 2, 0, 6, 0 ) 910 ! ENDIF 907 911 908 912 ! … … 916 920 IF ( humidity ) THEN 917 921 q_init = q_surface 918 !919 !-- It is not allowed to choose initial profiles of rain water content920 !-- and rain drop concentration. They are set to 0.0.921 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN922 qr_init = 0.0923 nr_init = 0.0924 ENDIF925 922 ENDIF 926 923 IF ( ocean ) sa_init = sa_surface … … 1228 1225 q_vertical_gradient_level(1) = 0.0 1229 1226 ENDIF 1230 1231 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN1232 1233 i = 11234 gradient = 0.01235 qr_vertical_gradient_level_ind(1) = 01236 DO k = 1, nzt+11237 IF ( i < 11 ) THEN1238 IF ( qr_vertical_gradient_level(i) < zu(k) .AND. &1239 qr_vertical_gradient_level(i) >= 0.0 ) THEN1240 gradient = qr_vertical_gradient(i) / 100.01241 qr_vertical_gradient_level_ind(i) = k - 11242 i = i + 11243 ENDIF1244 ENDIF1245 IF ( gradient /= 0.0 ) THEN1246 IF ( k /= 1 ) THEN1247 qr_init(k) = qr_init(k-1) + dzu(k) * gradient1248 ELSE1249 qr_init(k) = qr_init(k-1) + 0.5 * dzu(k) * gradient1250 ENDIF1251 ELSE1252 qr_init(k) = qr_init(k-1)1253 ENDIF1254 !1255 !-- Avoid negative rain water content1256 IF ( qr_init(k) < 0.0 ) THEN1257 qr_init(k) = 0.01258 ENDIF1259 ENDDO1260 !1261 !-- In case of no given rain water content gradients, choose zero gradient1262 !-- conditions1263 IF ( qr_vertical_gradient_level(1) == -1.0 ) THEN1264 qr_vertical_gradient_level(1) = 0.01265 ENDIF1266 1267 i = 11268 gradient = 0.01269 nr_vertical_gradient_level_ind(1) = 01270 DO k = 1, nzt+11271 IF ( i < 11 ) THEN1272 IF ( nr_vertical_gradient_level(i) < zu(k) .AND. &1273 nr_vertical_gradient_level(i) >= 0.0 ) THEN1274 gradient = nr_vertical_gradient(i) / 100.01275 nr_vertical_gradient_level_ind(i) = k - 11276 i = i + 11277 ENDIF1278 ENDIF1279 IF ( gradient /= 0.0 ) THEN1280 IF ( k /= 1 ) THEN1281 nr_init(k) = nr_init(k-1) + dzu(k) * gradient1282 ELSE1283 nr_init(k) = nr_init(k-1) + 0.5 * dzu(k) * gradient1284 ENDIF1285 ELSE1286 nr_init(k) = nr_init(k-1)1287 ENDIF1288 !1289 !-- Avoid negative rain water content1290 IF ( nr_init(k) < 0.0 ) THEN1291 nr_init(k) = 0.01292 ENDIF1293 ENDDO1294 !1295 !-- In case of no given rain water content gradients, choose zero gradient1296 !-- conditions1297 IF ( nr_vertical_gradient_level(1) == -1.0 ) THEN1298 nr_vertical_gradient_level(1) = 0.01299 ENDIF1300 1301 ENDIF1302 1227 ! 1303 1228 !-- Store humidity, rain water content and rain drop concentration 1304 1229 !-- gradient at the top boundary for possile Neumann boundary condition 1305 1230 bc_q_t_val = ( q_init(nzt+1) - q_init(nzt) ) / dzu(nzt+1) 1306 1307 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN1308 bc_qr_t_val = ( qr_init(nzt+1) - qr_init(nzt) ) / dzu(nzt+1)1309 bc_nr_t_val = ( nr_init(nzt+1) - nr_init(nzt) ) / dzu(nzt+1)1310 ENDIF1311 1312 1231 ENDIF 1313 1232 … … 1787 1706 ENDIF 1788 1707 1789 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 1790 IF ( bc_qr_b == 'dirichlet' ) THEN 1791 ibc_qr_b = 0 1792 ELSEIF ( bc_qr_b == 'neumann' ) THEN 1793 ibc_qr_b = 1 1794 ELSE 1795 message_string = 'unknown boundary condition: bc_qr_b ="' // & 1796 TRIM( bc_qr_b ) // '"' 1797 CALL message( 'check_parameters', 'PA0352', 1, 2, 0, 6, 0 ) 1798 ENDIF 1799 IF ( bc_qr_t == 'dirichlet' ) THEN 1800 ibc_qr_t = 0 1801 ELSEIF ( bc_qr_t == 'neumann' ) THEN 1802 ibc_qr_t = 1 1803 ELSE 1804 message_string = 'unknown boundary condition: bc_qr_t ="' // & 1805 TRIM( bc_qr_t ) // '"' 1806 CALL message( 'check_parameters', 'PA0353', 1, 2, 0, 6, 0 ) 1807 ENDIF 1808 IF ( bc_nr_b == 'dirichlet' ) THEN 1809 ibc_nr_b = 0 1810 ELSEIF ( bc_nr_b == 'neumann' ) THEN 1811 ibc_nr_b = 1 1812 ELSE 1813 message_string = 'unknown boundary condition: bc_nr_b ="' // & 1814 TRIM( bc_nr_b ) // '"' 1815 CALL message( 'check_parameters', 'PA0355', 1, 2, 0, 6, 0 ) 1816 ENDIF 1817 IF ( bc_nr_t == 'dirichlet' ) THEN 1818 ibc_nr_t = 0 1819 ELSEIF ( bc_nr_t == 'neumann' ) THEN 1820 ibc_nr_t = 1 1821 ELSE 1822 message_string = 'unknown boundary condition: bc_nr_t ="' // & 1823 TRIM( bc_nr_t ) // '"' 1824 CALL message( 'check_parameters', 'PA0356', 1, 2, 0, 6, 0 ) 1825 ENDIF 1826 ENDIF 1827 1828 ENDIF 1829 1708 ENDIF 1830 1709 ! 1831 1710 !-- Boundary conditions for horizontal components of wind speed … … 2669 2548 'lemented for cloud_scheme /= seifert_beheng' 2670 2549 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 ) 2550 ELSEIF ( .NOT. precipitation ) THEN 2551 message_string = 'data_output_pr = ' // & 2552 TRIM( data_output_pr(i) ) // ' is not imp' // & 2553 'lemented for precipitation = .FALSE.' 2554 CALL message( 'check_parameters', 'PA0361', 1, 2, 0, 6, 0 ) 2671 2555 ELSE 2672 2556 dopr_index(i) = 73 … … 2686 2570 'lemented for cloud_scheme /= seifert_beheng' 2687 2571 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 ) 2572 ELSEIF ( .NOT. precipitation ) THEN 2573 message_string = 'data_output_pr = ' // & 2574 TRIM( data_output_pr(i) ) // ' is not imp' // & 2575 'lemented for precipitation = .FALSE.' 2576 CALL message( 'check_parameters', 'PA0361', 1, 2, 0, 6, 0 ) 2688 2577 ELSE 2689 2578 dopr_index(i) = 74 … … 2906 2795 'res cloud_scheme = seifert_beheng' 2907 2796 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 ) 2797 ELSEIF ( .NOT. precipitation ) THEN 2798 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2799 'res precipitation = .TRUE.' 2800 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 ) 2908 2801 ENDIF 2909 2802 unit = 'kg/kg' -
palm/trunk/SOURCE/data_output_2d.f90
r1077 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! ql is calculated by calc_liquid_water_content 22 23 ! 23 24 ! Former revisions: … … 483 484 CASE ( 'qc_xy', 'qc_xz', 'qc_yz' ) 484 485 IF ( av == 0 ) THEN 486 to_be_resorted => qc 487 ELSE 488 to_be_resorted => qc_av 489 ENDIF 490 IF ( mode == 'xy' ) level_z = zu 491 492 CASE ( 'ql_xy', 'ql_xz', 'ql_yz' ) 493 IF ( av == 0 ) THEN 485 494 to_be_resorted => ql 486 495 ELSE 487 496 to_be_resorted => ql_av 488 ENDIF489 IF ( mode == 'xy' ) level_z = zu490 491 CASE ( 'ql_xy', 'ql_xz', 'ql_yz' )492 IF ( av == 0 ) THEN493 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN494 DO i = nxlg, nxrg495 DO j = nysg, nyng496 DO k = nzb, nzt+1497 local_pf(i,j,k) = ql(k,j,i) + qr(k,j,i)498 ENDDO499 ENDDO500 ENDDO501 resorted = .TRUE.502 ELSE503 to_be_resorted => ql504 ENDIF505 ELSE506 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN507 DO i = nxlg, nxrg508 DO j = nysg, nyng509 DO k = nzb, nzt+1510 local_pf(i,j,k) = ql_av(k,j,i) + qr_av(k,j,i)511 ENDDO512 ENDDO513 ENDDO514 resorted = .TRUE.515 ELSE516 to_be_resorted => ql_av517 ENDIF518 497 ENDIF 519 498 IF ( mode == 'xy' ) level_z = zu -
palm/trunk/SOURCE/data_output_3d.f90
r1107 r1115 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! ql is calculated by calc_liquid_water_content 23 23 ! 24 24 ! Former revisions: … … 337 337 CASE ( 'qc' ) 338 338 IF ( av == 0 ) THEN 339 to_be_resorted => qc 340 ELSE 341 to_be_resorted => qc_av 342 ENDIF 343 344 CASE ( 'ql' ) 345 IF ( av == 0 ) THEN 339 346 to_be_resorted => ql 340 347 ELSE 341 348 to_be_resorted => ql_av 342 ENDIF343 344 CASE ( 'ql' )345 IF ( av == 0 ) THEN346 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN347 DO i = nxlg, nxrg348 DO j = nysg, nyng349 DO k = nzb, nz_do3d350 local_pf(i,j,k) = ql(k,j,i) + qr(k,j,i)351 ENDDO352 ENDDO353 ENDDO354 resorted = .TRUE.355 ELSE356 to_be_resorted => ql357 ENDIF358 ELSE359 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN360 DO i = nxlg, nxrg361 DO j = nysg, nyng362 DO k = nzb, nz_do3d363 local_pf(i,j,k) = ql_av(k,j,i) + qr_av(k,j,i)364 ENDDO365 ENDDO366 ENDDO367 resorted = .TRUE.368 ELSE369 to_be_resorted => ql_av370 ENDIF371 349 ENDIF 372 350 -
palm/trunk/SOURCE/flow_statistics.f90
r1112 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! ql is calculated by calc_liquid_water_content 23 23 ! 24 24 ! Former revisions: … … 766 766 rmask(j,i,sr) 767 767 IF ( .NOT. cloud_droplets ) THEN 768 pts = 0.5 * &769 ( ( q(k,j,i) - ql(k,j,i) ) - &770 hom(k,1,42,sr) + &771 ( q(k+1,j,i) - ql(k+1,j,i) ) - &768 pts = 0.5 * & 769 ( ( q(k,j,i) - ql(k,j,i) ) - & 770 hom(k,1,42,sr) + & 771 ( q(k+1,j,i) - ql(k+1,j,i) ) - & 772 772 hom(k+1,1,42,sr) ) 773 sums_l(k,52,tn) = sums_l(k,52,tn) + pts * w(k,j,i) * &773 sums_l(k,52,tn) = sums_l(k,52,tn) + pts * w(k,j,i) * & 774 774 rmask(j,i,sr) 775 775 IF ( icloud_scheme == 0 ) THEN 776 sums_l(k,54,tn) = sums_l(k,54,tn) + ( ql(k,j,i) + & 777 qr(k,j,i) ) * & 776 sums_l(k,54,tn) = sums_l(k,54,tn) + ql(k,j,i) * & 778 777 rmask(j,i,sr) 779 sums_l(k,7 3,tn) = sums_l(k,73,tn) + nr(k,j,i) *&778 sums_l(k,75,tn) = sums_l(k,75,tn) + qc(k,j,i) * & 780 779 rmask(j,i,sr) 781 sums_l(k,74,tn) = sums_l(k,74,tn) + qr(k,j,i) * & 782 rmask(j,i,sr) 783 sums_l(k,75,tn) = sums_l(k,75,tn) + ql(k,j,i) * & 784 rmask(j,i,sr) 785 sums_l(k,76,tn) = sums_l(k,76,tn) + prr(k,j,i) * & 786 rmask(j,i,sr) 780 IF ( precipitation ) THEN 781 sums_l(k,73,tn) = sums_l(k,73,tn) + nr(k,j,i) * & 782 rmask(j,i,sr) 783 sums_l(k,74,tn) = sums_l(k,74,tn) + qr(k,j,i) * & 784 rmask(j,i,sr) 785 sums_l(k,76,tn) = sums_l(k,76,tn) + prr(k,j,i) *& 786 rmask(j,i,sr) 787 ENDIF 787 788 ELSE 788 sums_l(k,54,tn) = sums_l(k,54,tn) + ql(k,j,i) * &789 sums_l(k,54,tn) = sums_l(k,54,tn) + ql(k,j,i) * & 789 790 rmask(j,i,sr) 790 791 ENDIF 791 792 ELSE 792 sums_l(k,54,tn) = sums_l(k,54,tn) + ql(k,j,i) * &793 sums_l(k,54,tn) = sums_l(k,54,tn) + ql(k,j,i) * & 793 794 rmask(j,i,sr) 794 795 ENDIF -
palm/trunk/SOURCE/header.f90
r1112 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! descriptions for Seifert-Beheng-cloud-physics-scheme added 23 23 ! 24 24 ! Former revisions: … … 1237 1237 WRITE ( io, 415 ) 1238 1238 WRITE ( io, 416 ) surface_pressure, r_d, rho_surface, cp, l_v 1239 IF ( icloud_scheme == 0 ) THEN 1240 WRITE ( io, 510 ) 1.0E-6 * nc_const 1241 IF ( precipitation ) WRITE ( io, 511 ) c_sedimentation 1242 ENDIF 1239 1243 ENDIF 1240 1244 … … 1458 1462 ELSEIF ( humidity .AND. cloud_physics ) THEN 1459 1463 WRITE ( io, 432 ) 1460 IF ( radiation ) WRITE ( io, 132 ) 1461 IF ( precipitation ) WRITE ( io, 133 ) 1464 IF ( radiation ) WRITE ( io, 132 ) 1465 IF ( icloud_scheme == 1 ) THEN 1466 IF ( precipitation ) WRITE ( io, 133 ) 1467 ELSEIF ( icloud_scheme == 0 ) THEN 1468 IF ( drizzle ) WRITE ( io, 506 ) 1469 IF ( precipitation ) THEN 1470 WRITE ( io, 505 ) 1471 IF ( turbulence ) WRITE ( io, 507 ) 1472 IF ( ventilation_effect ) WRITE ( io, 508 ) 1473 IF ( limiter_sedimentation ) WRITE ( io, 509 ) 1474 ENDIF 1475 ENDIF 1462 1476 ELSEIF ( humidity .AND. cloud_droplets ) THEN 1463 1477 WRITE ( io, 433 ) … … 2020 2034 503 FORMAT (' --> Momentum advection via Wicker-Skamarock-Scheme 5th order') 2021 2035 504 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order') 2022 2036 505 FORMAT (' Precipitation parameterization via Seifert-Beheng-Scheme') 2037 506 FORMAT (' Drizzle parameterization via Stokes law') 2038 507 FORMAT (' Turbulence effects on precipitation process') 2039 508 FORMAT (' Ventilation effects on evaporation of rain drops') 2040 509 FORMAT (' Slope limiter used for sedimentation process') 2041 510 FORMAT (' Droplet density : N_c = ',F6.1,' 1/cm**3') 2042 511 FORMAT (' Sedimentation Courant number: '/& 2043 ' C_s = ',F3.1,' ') 2023 2044 2024 2045 END SUBROUTINE header -
palm/trunk/SOURCE/init_3d_model.f90
r1114 r1115 23 23 ! Current revisions: 24 24 ! ------------------ 25 ! 25 ! unused variables removed 26 26 ! 27 27 ! Former revisions: … … 392 392 IF ( icloud_scheme == 0 ) THEN 393 393 ! 394 !-- 1D-rain sedimentation fluxes and rain drop size distribution 395 !-- properties 396 ALLOCATE ( dr(nzb:nzt+1), lambda_r(nzb:nzt+1), & 397 mu_r(nzb:nzt+1), sed_q(nzb:nzt+1), & 398 sed_qr(nzb:nzt+1), sed_nr(nzb:nzt+1),& 399 xr(nzb:nzt+1) ) 400 ! 401 !-- 2D-rain water content and rain drop concentration arrays 402 ALLOCATE ( qrs(nysg:nyng,nxlg:nxrg), & 403 qrsws(nysg:nyng,nxlg:nxrg), & 404 qrswst(nysg:nyng,nxlg:nxrg), & 405 nrs(nysg:nyng,nxlg:nxrg), & 406 nrsws(nysg:nyng,nxlg:nxrg), & 407 nrswst(nysg:nyng,nxlg:nxrg) ) 408 ! 409 !-- 3D-rain water content, rain drop concentration arrays 394 !-- 1D-arrays 395 ALLOCATE ( nc_1d(nzb:nzt+1), pt_1d(nzb:nzt+1), & 396 q_1d(nzb:nzt+1), qc_1d(nzb:nzt+1) ) 397 ! 398 !-- 3D-cloud water content 410 399 #if defined( __nopointer ) 411 ALLOCATE( nr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 412 nr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 413 qr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 414 qr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 415 tnr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 416 tqr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 400 ALLOCATE( qc(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 417 401 #else 418 ALLOCATE( nr_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 419 nr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 420 nr_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 421 qr_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 422 qr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 423 qr_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 402 ALLOCATE( qc_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 424 403 #endif 425 404 ! 426 405 !-- 3D-tendency arrays 427 ALLOCATE( tend_nr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 428 tend_pt(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 429 tend_q(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 430 tend_qr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 431 ! 432 !-- 3d-precipitation rate 406 ALLOCATE( tend_pt(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 407 tend_q(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 408 433 409 IF ( precipitation ) THEN 410 ! 411 !-- 1D-arrays 412 ALLOCATE ( nr_1d(nzb:nzt+1), qr_1d(nzb:nzt+1) ) 413 ! 414 ! 415 !-- 3D-tendency arrays 416 ALLOCATE( tend_nr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 417 tend_qr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 418 ! 419 !-- 2D-rain water content and rain drop concentration arrays 420 ALLOCATE ( qrs(nysg:nyng,nxlg:nxrg), & 421 qrsws(nysg:nyng,nxlg:nxrg), & 422 qrswst(nysg:nyng,nxlg:nxrg), & 423 nrs(nysg:nyng,nxlg:nxrg), & 424 nrsws(nysg:nyng,nxlg:nxrg), & 425 nrswst(nysg:nyng,nxlg:nxrg) ) 426 ! 427 !-- 3D-rain water content, rain drop concentration arrays 428 #if defined( __nopointer ) 429 ALLOCATE( nr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 430 nr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 431 qr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 432 qr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 433 tnr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 434 tqr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 435 #else 436 ALLOCATE( nr_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 437 nr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 438 nr_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 439 qr_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 440 qr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 441 qr_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 442 #endif 443 ! 444 !-- 3d-precipitation rate 434 445 ALLOCATE( prr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 435 446 ENDIF … … 582 593 ql => ql_1 583 594 IF ( icloud_scheme == 0 ) THEN 584 qr => qr_1; qr_p => qr_2; tqr_m => qr_3 585 nr => nr_1; nr_p => nr_2; tnr_m => nr_3 595 qc => qc_1 596 IF ( precipitation ) THEN 597 qr => qr_1; qr_p => qr_2; tqr_m => qr_3 598 nr => nr_1; nr_p => nr_2; tnr_m => nr_3 599 ENDIF 586 600 ENDIF 587 601 ENDIF … … 641 655 ENDDO 642 656 ENDDO 643 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 657 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 658 precipitation ) THEN 644 659 DO i = nxlg, nxrg 645 660 DO j = nysg, nyng 646 qr(:,j,i) = qr_init647 nr(:,j,i) = nr_init661 qr(:,j,i) = 0.0 662 nr(:,j,i) = 0.0 648 663 ENDDO 649 664 ENDDO 665 ! 666 !-- Initialze nc_1d with default value 667 nc_1d(:) = nc_const 668 650 669 ENDIF 651 670 ENDIF … … 693 712 IF ( humidity .OR. passive_scalar ) THEN 694 713 qs = 0.0 695 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 714 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 715 precipitation ) THEN 696 716 qrs = 0.0 697 717 nrs = 0.0 … … 762 782 ENDDO 763 783 ENDDO 764 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 765 DO i = nxlg, nxrg 766 DO j = nysg, nyng 767 qr(:,j,i) = qr_init 768 nr(:,j,i) = nr_init 784 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 785 ! 786 !-- Initialze nc_1d with default value 787 nc_1d(:) = nc_const 788 789 IF ( precipitation ) THEN 790 DO i = nxlg, nxrg 791 DO j = nysg, nyng 792 qr(:,j,i) = 0.0 793 nr(:,j,i) = 0.0 794 ENDDO 769 795 ENDDO 770 ENDDO 796 ENDIF 797 771 798 ENDIF 772 799 ENDIF … … 910 937 !-- Determine the near-surface water flux 911 938 IF ( humidity .OR. passive_scalar ) THEN 912 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 913 IF ( constant_waterflux_qr ) THEN 914 qrsws = surface_waterflux_qr 915 ENDIF 916 IF (constant_waterflux_nr ) THEN 917 nrsws = surface_waterflux_nr 918 ENDIF 939 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 940 precipitation ) THEN 941 qrsws = 0.0 942 nrsws = 0.0 919 943 ENDIF 920 944 IF ( constant_waterflux ) THEN … … 951 975 IF ( humidity .OR. passive_scalar ) THEN 952 976 qswst = 0.0 953 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 977 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 978 precipitation ) THEN 954 979 nrswst = 0.0 955 980 qrswst = 0.0 … … 990 1015 IF ( humidity .OR. passive_scalar ) THEN 991 1016 IF ( .NOT. constant_waterflux ) qsws = 0.0 992 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 993 IF ( .NOT. constant_waterflux_qr ) THEN 994 qrsws = 0.0 995 ENDIF 996 IF ( .NOT. constant_waterflux_nr ) THEN 997 nrsws = 0.0 998 ENDIF 1017 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 1018 precipitation ) THEN 1019 qrsws = 0.0 1020 nrsws = 0.0 999 1021 ENDIF 1000 1022 ENDIF … … 1021 1043 ql = 0.0 1022 1044 IF ( precipitation ) precipitation_amount = 0.0 1045 IF ( icloud_scheme == 0 ) THEN 1046 qc = 0.0 1047 nc_1d = nc_const 1048 ENDIF 1023 1049 ENDIF 1024 1050 ! … … 1046 1072 q_surface_initial_change /= 0.0 ) THEN 1047 1073 q(nzb,:,:) = q(nzb,:,:) + q_surface_initial_change 1048 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 1049 IF ( qr_surface_initial_change /= 0.0 ) THEN 1050 qr(nzb,:,:) = qr(nzb,:,:) + qr_surface_initial_change 1051 ELSEIF ( nr_surface_initial_change /= 0.0 ) THEN 1052 nr(nzb,:,:) = nr(nzb,:,:) + nr_surface_initial_change 1053 ENDIF 1054 ENDIF 1055 ENDIF 1056 1074 ENDIF 1057 1075 ! 1058 1076 !-- Initialize the random number generator (from numerical recipes) … … 1067 1085 tq_m = 0.0 1068 1086 q_p = q 1069 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 1087 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 1088 precipitation ) THEN 1070 1089 tqr_m = 0.0 1071 1090 qr_p = qr … … 1245 1264 IF ( humidity .OR. passive_scalar ) THEN 1246 1265 q_p = q 1247 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 1266 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 1267 precipitation ) THEN 1248 1268 qr_p = qr 1249 1269 nr_p = nr … … 1259 1279 IF ( humidity .OR. passive_scalar ) THEN 1260 1280 tq_m = 0.0 1261 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 1281 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 1282 precipitation ) THEN 1262 1283 tqr_m = 0.0 1263 1284 tnr_m = 0.0 -
palm/trunk/SOURCE/microphysics.f90
r1107 r1115 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! microphyical tendencies are calculated in microphysics_control in an optimized 23 ! way; unrealistic values are prevented; bugfix in evaporation; some reformatting 23 24 ! 24 25 ! Former revisions: … … 35 36 ! 1065 2012-11-22 17:42:36Z hoffmann 36 37 ! Sedimentation process implemented according to Stevens and Seifert (2008). 37 ! Turbulence effects on autoconversion and accretion added (Seifert, Nuijens 38 ! Turbulence effects on autoconversion and accretion added (Seifert, Nuijens 38 39 ! and Stevens, 2010). 39 40 ! … … 48 49 49 50 PRIVATE 50 PUBLIC dsd_properties, autoconversion, accretion, selfcollection_breakup, & 51 evaporation_rain, sedimentation_cloud, sedimentation_rain 52 53 INTERFACE dsd_properties 54 MODULE PROCEDURE dsd_properties 55 MODULE PROCEDURE dsd_properties_ij 56 END INTERFACE dsd_properties 51 PUBLIC microphysics_control 52 53 INTERFACE microphysics_control 54 MODULE PROCEDURE microphysics_control 55 MODULE PROCEDURE microphysics_control_ij 56 END INTERFACE microphysics_control 57 58 INTERFACE adjust_cloud 59 MODULE PROCEDURE adjust_cloud 60 MODULE PROCEDURE adjust_cloud_ij 61 END INTERFACE adjust_cloud 57 62 58 63 INTERFACE autoconversion … … 92 97 ! Call for all grid points 93 98 !------------------------------------------------------------------------------! 94 SUBROUTINE dsd_properties95 96 USE arrays_3d 97 USE c loud_parameters98 USE constants99 USE indices99 SUBROUTINE microphysics_control 100 101 USE arrays_3d 102 USE control_parameters 103 USE indices 104 USE statistics 100 105 101 106 IMPLICIT NONE … … 106 111 DO i = nxl, nxr 107 112 DO j = nys, nyn 108 DO k = nzb_ 2d(j,i)+1, nzt113 DO k = nzb_s_inner(j,i)+1, nzt 109 114 110 115 ENDDO … … 112 117 ENDDO 113 118 114 END SUBROUTINE dsd_properties 115 116 117 SUBROUTINE autoconversion 118 119 USE arrays_3d 120 USE cloud_parameters 121 USE constants 119 END SUBROUTINE microphysics_control 120 121 SUBROUTINE adjust_cloud 122 123 USE arrays_3d 124 USE cloud_parameters 122 125 USE indices 123 126 … … 129 132 DO i = nxl, nxr 130 133 DO j = nys, nyn 131 DO k = nzb_ 2d(j,i)+1, nzt134 DO k = nzb_s_inner(j,i)+1, nzt 132 135 133 136 ENDDO … … 135 138 ENDDO 136 139 137 END SUBROUTINE autoconversion 138 139 140 SUBROUTINE accretion 141 142 USE arrays_3d 143 USE cloud_parameters 144 USE constants 140 END SUBROUTINE adjust_cloud 141 142 143 SUBROUTINE autoconversion 144 145 USE arrays_3d 146 USE cloud_parameters 147 USE control_parameters 148 USE grid_variables 145 149 USE indices 146 150 … … 152 156 DO i = nxl, nxr 153 157 DO j = nys, nyn 154 DO k = nzb_ 2d(j,i)+1, nzt158 DO k = nzb_s_inner(j,i)+1, nzt 155 159 156 160 ENDDO … … 158 162 ENDDO 159 163 160 END SUBROUTINE a ccretion161 162 163 SUBROUTINE selfcollection_breakup164 165 USE arrays_3d 166 USE cloud_parameters 167 USE con stants164 END SUBROUTINE autoconversion 165 166 167 SUBROUTINE accretion 168 169 USE arrays_3d 170 USE cloud_parameters 171 USE control_parameters 168 172 USE indices 169 173 … … 175 179 DO i = nxl, nxr 176 180 DO j = nys, nyn 177 DO k = nzb_ 2d(j,i)+1, nzt181 DO k = nzb_s_inner(j,i)+1, nzt 178 182 179 183 ENDDO … … 181 185 ENDDO 182 186 183 END SUBROUTINE selfcollection_breakup184 185 186 SUBROUTINE evaporation_rain187 188 USE arrays_3d 189 USE cloud_parameters 190 USE con stants187 END SUBROUTINE accretion 188 189 190 SUBROUTINE selfcollection_breakup 191 192 USE arrays_3d 193 USE cloud_parameters 194 USE control_parameters 191 195 USE indices 192 196 … … 198 202 DO i = nxl, nxr 199 203 DO j = nys, nyn 200 DO k = nzb_ 2d(j,i)+1, nzt204 DO k = nzb_s_inner(j,i)+1, nzt 201 205 202 206 ENDDO … … 204 208 ENDDO 205 209 206 END SUBROUTINE evaporation_rain207 208 209 SUBROUTINE sedimentation_cloud210 END SUBROUTINE selfcollection_breakup 211 212 213 SUBROUTINE evaporation_rain 210 214 211 215 USE arrays_3d 212 216 USE cloud_parameters 213 217 USE constants 218 USE control_parameters 214 219 USE indices 215 220 … … 221 226 DO i = nxl, nxr 222 227 DO j = nys, nyn 223 DO k = nzb_ 2d(j,i)+1, nzt228 DO k = nzb_s_inner(j,i)+1, nzt 224 229 225 230 ENDDO … … 227 232 ENDDO 228 233 229 END SUBROUTINE sedimentation_cloud230 231 232 SUBROUTINE sedimentation_ rain234 END SUBROUTINE evaporation_rain 235 236 237 SUBROUTINE sedimentation_cloud 233 238 234 239 USE arrays_3d 235 240 USE cloud_parameters 236 241 USE constants 242 USE control_parameters 237 243 USE indices 238 244 … … 244 250 DO i = nxl, nxr 245 251 DO j = nys, nyn 246 DO k = nzb_2d(j,i)+1, nzt 252 DO k = nzb_s_inner(j,i)+1, nzt 253 254 ENDDO 255 ENDDO 256 ENDDO 257 258 END SUBROUTINE sedimentation_cloud 259 260 261 SUBROUTINE sedimentation_rain 262 263 USE arrays_3d 264 USE cloud_parameters 265 USE constants 266 USE control_parameters 267 USE indices 268 USE statistics 269 270 IMPLICIT NONE 271 272 INTEGER :: i, j, k 273 274 275 DO i = nxl, nxr 276 DO j = nys, nyn 277 DO k = nzb_s_inner(j,i)+1, nzt 247 278 248 279 ENDDO … … 256 287 ! Call for grid point i,j 257 288 !------------------------------------------------------------------------------! 258 SUBROUTINE dsd_properties_ij( i, j ) 259 260 USE arrays_3d 261 USE cloud_parameters 262 USE constants 263 USE indices 264 USE control_parameters 265 USE user 266 267 IMPLICIT NONE 268 269 INTEGER :: i, j, k 270 271 DO k = nzb_2d(j,i)+1, nzt 289 290 SUBROUTINE microphysics_control_ij( i, j ) 291 292 USE arrays_3d 293 USE cloud_parameters 294 USE control_parameters 295 USE statistics 296 297 IMPLICIT NONE 298 299 INTEGER :: i, j 300 301 dt_micro = dt_3d * weight_pres(intermediate_timestep_count) 302 ! 303 !-- Adjust unrealistic values 304 IF ( precipitation ) CALL adjust_cloud( i,j ) 305 ! 306 !-- Use 1-d arrays 307 q_1d(:) = q(:,j,i) 308 pt_1d(:) = pt(:,j,i) 309 qc_1d(:) = qc(:,j,i) 310 nc_1d(:) = nc_const 311 IF ( precipitation ) THEN 312 qr_1d(:) = qr(:,j,i) 313 nr_1d(:) = nr(:,j,i) 314 ENDIF 315 ! 316 !-- Compute cloud physics 317 IF ( precipitation ) THEN 318 CALL autoconversion( i,j ) 319 CALL accretion( i,j ) 320 CALL selfcollection_breakup( i,j ) 321 CALL evaporation_rain( i,j ) 322 CALL sedimentation_rain( i,j ) 323 ENDIF 324 325 IF ( drizzle ) CALL sedimentation_cloud( i,j ) 326 ! 327 !-- Derive tendencies 328 tend_q(:,j,i) = ( q_1d(:) - q(:,j,i) ) / dt_micro 329 tend_pt(:,j,i) = ( pt_1d(:) - pt(:,j,i) ) / dt_micro 330 IF ( precipitation ) THEN 331 tend_qr(:,j,i) = ( qr_1d(:) - qr(:,j,i) ) / dt_micro 332 tend_nr(:,j,i) = ( nr_1d(:) - nr(:,j,i) ) / dt_micro 333 ENDIF 334 335 END SUBROUTINE microphysics_control_ij 336 337 SUBROUTINE adjust_cloud_ij( i, j ) 338 339 USE arrays_3d 340 USE cloud_parameters 341 USE indices 342 343 IMPLICIT NONE 344 345 INTEGER :: i, j, k 346 ! 347 !-- Adjust number of raindrops to avoid nonlinear effects in 348 !-- sedimentation and evaporation of rain drops due to too small or 349 !-- too big weights of rain drops (Stevens and Seifert, 2008). 350 !-- The same procedure is applied to cloud droplets if they are determined 351 !-- prognostically. 352 DO k = nzb_s_inner(j,i)+1, nzt 272 353 273 354 IF ( qr(k,j,i) <= eps_sb ) THEN 274 355 qr(k,j,i) = 0.0 356 nr(k,j,i) = 0.0 275 357 ELSE 276 358 ! … … 283 365 nr(k,j,i) = qr(k,j,i) * hyrho(k) / xrmax 284 366 ENDIF 285 xr(k) = hyrho(k) * qr(k,j,i) / nr(k,j,i) 286 ! 287 !-- Weight averaged diameter of rain drops: 288 dr(k) = ( hyrho(k) * qr(k,j,i) / nr(k,j,i) * & 289 dpirho_l )**( 1.0 / 3.0 ) 290 ! 291 !-- Shape parameter of gamma distribution (Milbrandt and Yau, 2005; 292 !-- Stevens and Seifert, 2008): 293 mu_r(k) = 10.0 * ( 1.0 + TANH( 1.2E3 * ( dr(k) - 1.4E-3 ) ) ) 294 ! 295 !-- Slope parameter of gamma distribution (Seifert, 2008): 296 lambda_r(k) = ( ( mu_r(k) + 3.0 ) * ( mu_r(k) + 2.0 ) * & 297 ( mu_r(k) + 1.0 ) )**( 1.0 / 3.0 ) / dr(k) 367 298 368 ENDIF 299 ENDDO 300 301 END SUBROUTINE dsd_properties_ij 369 370 ENDDO 371 372 END SUBROUTINE adjust_cloud_ij 302 373 303 374 … … 306 377 USE arrays_3d 307 378 USE cloud_parameters 308 USE constants 309 USE indices 310 USE control_parameters 311 USE statistics 379 USE control_parameters 312 380 USE grid_variables 313 314 IMPLICIT NONE 315 316 INTEGER :: i, j, k 317 REAL :: k_au, autocon, phi_au, tau_cloud, xc, nu_c, rc, & 318 l_mix, re_lambda, alpha_cc, r_cc, sigma_cc, epsilon 381 USE indices 382 383 IMPLICIT NONE 384 385 INTEGER :: i, j, k 386 REAL :: alpha_cc, autocon, epsilon, k_au, l_mix, nu_c, phi_au, & 387 r_cc, rc, re_lambda, selfcoll, sigma_cc, tau_cloud, xc 319 388 320 389 321 390 k_au = k_cc / ( 20.0 * x0 ) 322 391 323 DO k = nzb_ 2d(j,i)+1, nzt324 325 IF ( q l(k,j,i) > 0.0) THEN392 DO k = nzb_s_inner(j,i)+1, nzt 393 394 IF ( qc_1d(k) > eps_sb ) THEN 326 395 ! 327 396 !-- Intern time scale of coagulation (Seifert and Beheng, 2006): 328 !-- (1.0 - q l(k,j,i) / ( ql(k,j,i) + qr(k,j,i) ))329 tau_cloud = 1.0 - q l(k,j,i) / ( ql(k,j,i) + qr(k,j,i) + 1.0E-20)397 !-- (1.0 - qc(k,j,i) / ( qc(k,j,i) + qr_1d(k) )) 398 tau_cloud = 1.0 - qc_1d(k) / ( qr_1d(k) + qc_1d(k) ) 330 399 ! 331 400 !-- Universal function for autoconversion process … … 335 404 !-- Shape parameter of gamma distribution (Geoffroy et al., 2010): 336 405 !-- (Use constant nu_c = 1.0 instead?) 337 nu_c = 1.0 !MAX( 0.0, 1580.0 * hyrho(k) * q l(k,j,i) - 0.28 )406 nu_c = 1.0 !MAX( 0.0, 1580.0 * hyrho(k) * qc(k,j,i) - 0.28 ) 338 407 ! 339 408 !-- Mean weight of cloud droplets: 340 xc = hyrho(k) * ql(k,j,i) / nc409 xc = hyrho(k) * qc_1d(k) / nc_1d(k) 341 410 ! 342 411 !-- Parameterized turbulence effects on autoconversion (Seifert, … … 371 440 ! 372 441 !-- Autoconversion rate (Seifert and Beheng, 2006): 373 autocon = k_au * ( nu_c + 2.0 ) * ( nu_c + 4.0 ) / & 374 ( nu_c + 1.0 )**2 * ql(k,j,i)**2 * xc**2 * & 375 ( 1.0 + phi_au / ( 1.0 - tau_cloud )**2 ) * & 376 rho_surface 377 autocon = MIN( autocon, ql(k,j,i) / ( dt_3d * & 378 weight_substep(intermediate_timestep_count) ) ) 379 ! 380 !-- Tendencies for q, qr, nr, pt: 381 tend_qr(k,j,i) = tend_qr(k,j,i) + autocon 382 tend_q(k,j,i) = tend_q(k,j,i) - autocon 383 tend_nr(k,j,i) = tend_nr(k,j,i) + autocon / x0 * hyrho(k) 384 tend_pt(k,j,i) = tend_pt(k,j,i) + autocon * l_d_cp * pt_d_t(k) 442 autocon = k_au * ( nu_c + 2.0 ) * ( nu_c + 4.0 ) / & 443 ( nu_c + 1.0 )**2 * qc_1d(k)**2 * xc**2 * & 444 ( 1.0 + phi_au / ( 1.0 - tau_cloud )**2 ) * & 445 rho_surface 446 autocon = MIN( autocon, qc_1d(k) / dt_micro ) 447 448 qr_1d(k) = qr_1d(k) + autocon * dt_micro 449 qc_1d(k) = qc_1d(k) - autocon * dt_micro 450 nr_1d(k) = nr_1d(k) + autocon / x0 * hyrho(k) * dt_micro 385 451 386 452 ENDIF … … 395 461 USE arrays_3d 396 462 USE cloud_parameters 397 USE constants 398 USE indices 399 USE control_parameters 400 USE statistics 401 402 IMPLICIT NONE 403 404 INTEGER :: i, j, k 405 REAL :: accr, phi_ac, tau_cloud, k_cr 406 407 DO k = nzb_2d(j,i)+1, nzt 408 409 IF ( ( ql(k,j,i) > 0.0 ) .AND. ( qr(k,j,i) > eps_sb ) ) THEN 463 USE control_parameters 464 USE indices 465 466 IMPLICIT NONE 467 468 INTEGER :: i, j, k 469 REAL :: accr, k_cr, phi_ac, tau_cloud, xc 470 471 DO k = nzb_s_inner(j,i)+1, nzt 472 IF ( ( qc_1d(k) > eps_sb ) .AND. ( qr_1d(k) > eps_sb ) ) THEN 410 473 ! 411 474 !-- Intern time scale of coagulation (Seifert and Beheng, 2006): 412 tau_cloud = 1.0 - q l(k,j,i) / ( ql(k,j,i) + qr(k,j,i) + 1.0E-20)475 tau_cloud = 1.0 - qc_1d(k) / ( qc_1d(k) + qr_1d(k) ) 413 476 ! 414 477 !-- Universal function for accretion process … … 421 484 !-- convert the dissipation (diss) from m2 s-3 to cm2 s-3. 422 485 IF ( turbulence ) THEN 423 k_cr = k_cr0 * ( 1.0 + 0.05 * &486 k_cr = k_cr0 * ( 1.0 + 0.05 * & 424 487 MIN( 600.0, diss(k,j,i) * 1.0E4 )**0.25 ) 425 488 ELSE … … 428 491 ! 429 492 !-- Accretion rate (Seifert and Beheng, 2006): 430 accr = k_cr * q l(k,j,i) * qr(k,j,i) * phi_ac *&493 accr = k_cr * qc_1d(k) * qr_1d(k) * phi_ac * & 431 494 SQRT( rho_surface * hyrho(k) ) 432 accr = MIN( accr, ql(k,j,i) / ( dt_3d * & 433 weight_substep(intermediate_timestep_count) ) ) 434 ! 435 !-- Tendencies for q, qr, pt: 436 tend_qr(k,j,i) = tend_qr(k,j,i) + accr 437 tend_q(k,j,i) = tend_q(k,j,i) - accr 438 tend_pt(k,j,i) = tend_pt(k,j,i) + accr * l_d_cp * pt_d_t(k) 495 accr = MIN( accr, qc_1d(k) / dt_micro ) 496 497 qr_1d(k) = qr_1d(k) + accr * dt_micro 498 qc_1d(k) = qc_1d(k) - accr * dt_micro 439 499 440 500 ENDIF … … 449 509 USE arrays_3d 450 510 USE cloud_parameters 451 USE constants 452 USE indices 453 USE control_parameters 454 USE statistics 511 USE control_parameters 512 USE indices 455 513 456 514 IMPLICIT NONE 457 515 458 516 INTEGER :: i, j, k 459 REAL :: selfcoll, breakup, phi_br, phi_sc 460 461 462 DO k = nzb_2d(j,i)+1, nzt 463 464 IF ( qr(k,j,i) > eps_sb ) THEN 465 ! 466 !-- Selfcollection rate (Seifert and Beheng, 2006): 467 !-- pirho_l**( 1.0 / 3.0 ) is necessary to convert [lambda_r] = m-1 to 468 !-- kg**( 1.0 / 3.0 ). 469 phi_sc = 1.0 !( 1.0 + kappa_rr / lambda_r(k) * & 470 !pirho_l**( 1.0 / 3.0 ) )**( -9 ) 471 472 selfcoll = k_rr * nr(k,j,i) * qr(k,j,i) * phi_sc * & 517 REAL :: breakup, dr, phi_br, selfcoll 518 519 DO k = nzb_s_inner(j,i)+1, nzt 520 IF ( qr_1d(k) > eps_sb ) THEN 521 ! 522 !-- Selfcollection rate (Seifert and Beheng, 2001): 523 selfcoll = k_rr * nr_1d(k) * qr_1d(k) * & 473 524 SQRT( hyrho(k) * rho_surface ) 474 525 ! 526 !-- Weight averaged diameter of rain drops: 527 dr = ( hyrho(k) * qr_1d(k) / nr_1d(k) * dpirho_l )**( 1.0 / 3.0 ) 528 ! 475 529 !-- Collisional breakup rate (Seifert, 2008): 476 IF ( dr (k)>= 0.3E-3 ) THEN477 phi_br = k_br * ( dr (k)- 1.1E-3 )530 IF ( dr >= 0.3E-3 ) THEN 531 phi_br = k_br * ( dr - 1.1E-3 ) 478 532 breakup = selfcoll * ( phi_br + 1.0 ) 479 533 ELSE … … 481 535 ENDIF 482 536 483 selfcoll = MAX( breakup - selfcoll, -nr(k,j,i) / ( dt_3d * & 484 weight_substep(intermediate_timestep_count) ) ) 485 ! 486 !-- Tendency for nr: 487 tend_nr(k,j,i) = tend_nr(k,j,i) + selfcoll 537 selfcoll = MAX( breakup - selfcoll, -nr_1d(k) / dt_micro ) 538 nr_1d(k) = nr_1d(k) + selfcoll * dt_micro 488 539 489 540 ENDIF 490 491 541 ENDDO 492 542 … … 502 552 USE cloud_parameters 503 553 USE constants 504 USE indices 505 USE control_parameters 506 USE statistics 507 508 IMPLICIT NONE 509 510 INTEGER :: i, j, k 511 REAL :: evap, alpha, e_s, q_s, t_l, sat, temp, g_evap, f_vent, & 512 mu_r_2, mu_r_5d2, nr_0 513 514 515 DO k = nzb_2d(j,i)+1, nzt 516 517 IF ( qr(k,j,i) > eps_sb ) THEN 554 USE control_parameters 555 USE indices 556 557 IMPLICIT NONE 558 559 INTEGER :: i, j, k 560 REAL :: alpha, dr, e_s, evap, evap_nr, f_vent, g_evap, lambda_r, & 561 mu_r, mu_r_2, mu_r_5d2, nr_0, q_s, sat, t_l, temp, xr 562 563 DO k = nzb_s_inner(j,i)+1, nzt 564 IF ( qr_1d(k) > eps_sb ) THEN 518 565 ! 519 566 !-- Actual liquid water temperature: 520 t_l = t_d_pt(k) * pt (k,j,i)567 t_l = t_d_pt(k) * pt_1d(k) 521 568 ! 522 569 !-- Saturation vapor pressure at t_l: … … 526 573 q_s = 0.622 * e_s / ( hyp(k) - 0.378 * e_s ) 527 574 alpha = 0.622 * l_d_r * l_d_cp / ( t_l * t_l ) 528 q_s = q_s * ( 1.0 + alpha * q (k,j,i) ) / ( 1.0 + alpha * q_s )575 q_s = q_s * ( 1.0 + alpha * q_1d(k) ) / ( 1.0 + alpha * q_s ) 529 576 ! 530 577 !-- Supersaturation: 531 sat = MIN( 0.0, ( q (k,j,i) - ql(k,j,i) ) / q_s - 1.0 )578 sat = MIN( 0.0, ( q_1d(k) - qr_1d(k) - qc_1d(k) ) / q_s - 1.0 ) 532 579 ! 533 580 !-- Actual temperature: 534 temp = t_l + l_d_cp * ql(k,j,i) 535 ! 536 !-- 537 g_evap = ( l_v / ( r_v * temp ) - 1.0 ) * l_v / & 538 ( thermal_conductivity_l * temp ) + rho_l * r_v * temp /& 539 ( diff_coeff_l * e_s ) 540 g_evap = 1.0 / g_evap 581 temp = t_l + l_d_cp * ( qc_1d(k) + qr_1d(k) ) 582 583 g_evap = 1.0 / ( ( l_v / ( r_v * temp ) - 1.0 ) * l_v / & 584 ( thermal_conductivity_l * temp ) + r_v * temp / & 585 ( diff_coeff_l * e_s ) ) 586 ! 587 !-- Mean weight of rain drops 588 xr = hyrho(k) * qr_1d(k) / nr_1d(k) 589 ! 590 !-- Weight averaged diameter of rain drops: 591 dr = ( xr * dpirho_l )**( 1.0 / 3.0 ) 541 592 ! 542 593 !-- Compute ventilation factor and intercept parameter 543 594 !-- (Seifert and Beheng, 2006; Seifert, 2008): 544 595 IF ( ventilation_effect ) THEN 545 mu_r_2 = mu_r(k) + 2.0 546 mu_r_5d2 = mu_r(k) + 2.5 596 ! 597 !-- Shape parameter of gamma distribution (Milbrandt and Yau, 2005; 598 !-- Stevens and Seifert, 2008): 599 mu_r = 10.0 * ( 1.0 + TANH( 1.2E3 * ( dr - 1.4E-3 ) ) ) 600 ! 601 !-- Slope parameter of gamma distribution (Seifert, 2008): 602 lambda_r = ( ( mu_r + 3.0 ) * ( mu_r + 2.0 ) * & 603 ( mu_r + 1.0 ) )**( 1.0 / 3.0 ) / dr 604 605 mu_r_2 = mu_r + 2.0 606 mu_r_5d2 = mu_r + 2.5 547 607 f_vent = a_vent * gamm( mu_r_2 ) * & 548 lambda_r (k)**( -mu_r_2 ) +&608 lambda_r**( -mu_r_2 ) + & 549 609 b_vent * schmidt_p_1d3 * & 550 610 SQRT( a_term / kin_vis_air ) * gamm( mu_r_5d2 ) * & 551 lambda_r (k)**( -mu_r_5d2 ) *&611 lambda_r**( -mu_r_5d2 ) * & 552 612 ( 1.0 - 0.5 * ( b_term / a_term ) * & 553 ( lambda_r (k) /&554 ( c_term + lambda_r (k) ) )**mu_r_5d2 -&613 ( lambda_r / & 614 ( c_term + lambda_r ) )**mu_r_5d2 - & 555 615 0.125 * ( b_term / a_term )**2 * & 556 ( lambda_r (k) /&557 ( 2.0 * c_term + lambda_r (k) ) )**mu_r_5d2 -&616 ( lambda_r / & 617 ( 2.0 * c_term + lambda_r ) )**mu_r_5d2 - & 558 618 0.0625 * ( b_term / a_term )**3 * & 559 ( lambda_r (k) /&560 ( 3.0 * c_term + lambda_r (k) ) )**mu_r_5d2 -&619 ( lambda_r / & 620 ( 3.0 * c_term + lambda_r ) )**mu_r_5d2 - & 561 621 0.0390625 * ( b_term / a_term )**4 * & 562 ( lambda_r (k) /&563 ( 4.0 * c_term + lambda_r (k)) )**mu_r_5d2 )564 nr_0 = nr (k,j,i) * lambda_r(k)**( mu_r(k) + 1.0 ) /&565 gamm( mu_r (k)+ 1.0 )622 ( lambda_r / & 623 ( 4.0 * c_term + lambda_r ) )**mu_r_5d2 ) 624 nr_0 = nr_1d(k) * lambda_r**( mu_r + 1.0 ) / & 625 gamm( mu_r + 1.0 ) 566 626 ELSE 567 627 f_vent = 1.0 568 nr_0 = nr (k,j,i) * dr(k)628 nr_0 = nr_1d(k) * dr 569 629 ENDIF 570 630 ! … … 572 632 evap = 2.0 * pi * nr_0 * g_evap * f_vent * sat / & 573 633 hyrho(k) 574 evap = MAX( evap, -qr(k,j,i) / ( dt_3d * & 575 weight_substep(intermediate_timestep_count) ) ) 576 ! 577 !-- Tendencies for q, qr, nr, pt: 578 tend_qr(k,j,i) = tend_qr(k,j,i) + evap 579 tend_q(k,j,i) = tend_q(k,j,i) - evap 580 tend_nr(k,j,i) = tend_nr(k,j,i) + c_evap * evap / xr(k) * hyrho(k) 581 tend_pt(k,j,i) = tend_pt(k,j,i) + evap * l_d_cp * pt_d_t(k) 582 634 635 evap = MAX( evap, -qr_1d(k) / dt_micro ) 636 evap_nr = MAX( c_evap * evap / xr * hyrho(k), & 637 -nr_1d(k) / dt_micro ) 638 639 qr_1d(k) = qr_1d(k) + evap * dt_micro 640 nr_1d(k) = nr_1d(k) + evap_nr * dt_micro 583 641 ENDIF 584 642 … … 593 651 USE cloud_parameters 594 652 USE constants 595 USE indices596 USE control_parameters653 USE control_parameters 654 USE indices 597 655 598 656 IMPLICIT NONE 599 657 600 658 INTEGER :: i, j, k 601 REAL :: sed_q_const, sigma_gc = 1.3, k_st = 1.2E8 659 REAL :: sed_qc_const 660 661 REAL, DIMENSION(nzb:nzt+1) :: sed_qc 602 662 603 663 ! 604 664 !-- Sedimentation of cloud droplets (Heus et al., 2010): 605 sed_q _const = k_st * ( 3.0 / ( 4.0 * pi * rho_l ))**( 2.0 / 3.0 ) *&665 sed_qc_const = k_st * ( 3.0 / ( 4.0 * pi * rho_l ))**( 2.0 / 3.0 ) * & 606 666 EXP( 5.0 * LOG( sigma_gc )**2 ) 607 667 608 sed_q = 0.0 609 610 DO k = nzb_2d(j,i)+1, nzt 611 IF ( ql(k,j,i) > 0.0 ) THEN 612 sed_q(k) = sed_q_const * nc**( -2.0 / 3.0 ) * & 613 ( ql(k,j,i) * hyrho(k) )**( 5.0 / 3.0 ) 668 sed_qc(nzt+1) = 0.0 669 670 DO k = nzt, nzb_s_inner(j,i)+1, -1 671 IF ( qc_1d(k) > eps_sb ) THEN 672 sed_qc(k) = sed_qc_const * nc_1d(k)**( -2.0 / 3.0 ) * & 673 ( qc_1d(k) * hyrho(k) )**( 5.0 / 3.0 ) 674 ELSE 675 sed_qc(k) = 0.0 614 676 ENDIF 615 ENDDO 616 ! 617 !-- Tendency for q, pt: 618 DO k = nzb_2d(j,i)+1, nzt 619 tend_q(k,j,i) = tend_q(k,j,i) + ( sed_q(k+1) - sed_q(k) ) * & 620 ddzu(k+1) / hyrho(k) 621 tend_pt(k,j,i) = tend_pt(k,j,i) - ( sed_q(k+1) - sed_q(k) ) * & 622 ddzu(k+1) / hyrho(k) * l_d_cp * pt_d_t(k) 677 678 sed_qc(k) = MIN( sed_qc(k), hyrho(k) * dzu(k+1) * q_1d(k) / & 679 dt_micro + sed_qc(k+1) ) 680 681 q_1d(k) = q_1d(k) + ( sed_qc(k+1) - sed_qc(k) ) * ddzu(k+1) / & 682 hyrho(k) * dt_micro 683 qc_1d(k) = qc_1d(k) + ( sed_qc(k+1) - sed_qc(k) ) * ddzu(k+1) / & 684 hyrho(k) * dt_micro 685 pt_1d(k) = pt_1d(k) - ( sed_qc(k+1) - sed_qc(k) ) * ddzu(k+1) / & 686 hyrho(k) * l_d_cp * pt_d_t(k) * dt_micro 687 623 688 ENDDO 624 689 … … 631 696 USE cloud_parameters 632 697 USE constants 633 USE indices634 USE control_parameters698 USE control_parameters 699 USE indices 635 700 USE statistics 636 701 … … 638 703 639 704 INTEGER :: i, j, k, k_run 640 REAL :: c_run, d_max, d_mean, d_min, dt_sedi, flux, z_run 641 642 REAL, DIMENSION(nzb:nzt) :: c_nr, c_qr, nr_slope, qr_slope, w_nr, w_qr 643 705 REAL :: c_run, d_max, d_mean, d_min, dr, dt_sedi, flux, lambda_r, & 706 mu_r, z_run 707 708 REAL, DIMENSION(nzb:nzt+1) :: c_nr, c_qr, d_nr, d_qr, nr_slope, & 709 qr_slope, sed_nr, sed_qr, w_nr, w_qr 644 710 ! 645 711 !-- Computation of sedimentation flux. Implementation according to Stevens 646 712 !-- and Seifert (2008). 647 713 IF ( intermediate_timestep_count == 1 ) prr(:,j,i) = 0.0 648 649 dt_sedi = dt_3d * weight_substep(intermediate_timestep_count)650 651 w_nr = 0.0652 w_qr = 0.0653 714 ! 654 715 !-- Compute velocities 655 716 DO k = nzb_s_inner(j,i)+1, nzt 656 IF ( qr(k,j,i) > eps_sb ) THEN 717 IF ( qr_1d(k) > eps_sb ) THEN 718 ! 719 !-- Weight averaged diameter of rain drops: 720 dr = ( hyrho(k) * qr_1d(k) / nr_1d(k) * dpirho_l )**( 1.0 / 3.0 ) 721 ! 722 !-- Shape parameter of gamma distribution (Milbrandt and Yau, 2005; 723 !-- Stevens and Seifert, 2008): 724 mu_r = 10.0 * ( 1.0 + TANH( 1.2E3 * ( dr - 1.4E-3 ) ) ) 725 ! 726 !-- Slope parameter of gamma distribution (Seifert, 2008): 727 lambda_r = ( ( mu_r + 3.0 ) * ( mu_r + 2.0 ) * & 728 ( mu_r + 1.0 ) )**( 1.0 / 3.0 ) / dr 729 657 730 w_nr(k) = MAX( 0.1, MIN( 20.0, a_term - b_term * ( 1.0 + & 658 c_term / lambda_r (k) )**( -1.0 * ( mu_r(k)+ 1.0 ) ) ) )731 c_term / lambda_r )**( -1.0 * ( mu_r + 1.0 ) ) ) ) 659 732 w_qr(k) = MAX( 0.1, MIN( 20.0, a_term - b_term * ( 1.0 + & 660 c_term / lambda_r (k) )**( -1.0 * ( mu_r(k)+ 4.0 ) ) ) )733 c_term / lambda_r )**( -1.0 * ( mu_r + 4.0 ) ) ) ) 661 734 ELSE 662 735 w_nr(k) = 0.0 … … 666 739 ! 667 740 !-- Adjust boundary values 668 w_nr(nzb_ 2d(j,i)) = w_nr(nzb_2d(j,i)+1)669 w_qr(nzb_ 2d(j,i)) = w_qr(nzb_2d(j,i)+1)670 w_nr(nzt ) = w_nr(nzt-1)671 w_qr(nzt ) = w_qr(nzt-1)741 w_nr(nzb_s_inner(j,i)) = w_nr(nzb_s_inner(j,i)+1) 742 w_qr(nzb_s_inner(j,i)) = w_qr(nzb_s_inner(j,i)+1) 743 w_nr(nzt+1) = 0.0 744 w_qr(nzt+1) = 0.0 672 745 ! 673 746 !-- Compute Courant number 674 DO k = nzb_s_inner(j,i)+1, nzt -1747 DO k = nzb_s_inner(j,i)+1, nzt 675 748 c_nr(k) = 0.25 * ( w_nr(k-1) + 2.0 * w_nr(k) + w_nr(k+1) ) * & 676 dt_ sedi* ddzu(k)749 dt_micro * ddzu(k) 677 750 c_qr(k) = 0.25 * ( w_qr(k-1) + 2.0 * w_qr(k) + w_qr(k+1) ) * & 678 dt_ sedi* ddzu(k)679 ENDDO 751 dt_micro * ddzu(k) 752 ENDDO 680 753 ! 681 754 !-- Limit slopes with monotonized centered (MC) limiter (van Leer, 1977): 682 755 IF ( limiter_sedimentation ) THEN 683 756 684 qr(nzb_s_inner(j,i),j,i) = 0.0 685 nr(nzb_s_inner(j,i),j,i) = 0.0 686 qr(nzt,j,i) = 0.0 687 nr(nzt,j,i) = 0.0 688 689 DO k = nzb_s_inner(j,i)+1, nzt-1 690 d_mean = 0.5 * ( qr(k+1,j,i) + qr(k-1,j,i) ) 691 d_min = qr(k,j,i) - MIN( qr(k+1,j,i), qr(k,j,i), qr(k-1,j,i) ) 692 d_max = MAX( qr(k+1,j,i), qr(k,j,i), qr(k-1,j,i) ) - qr(k,j,i) 757 DO k = nzb_s_inner(j,i)+1, nzt 758 d_mean = 0.5 * ( qr_1d(k+1) + qr_1d(k-1) ) 759 d_min = qr_1d(k) - MIN( qr_1d(k+1), qr_1d(k), qr_1d(k-1) ) 760 d_max = MAX( qr_1d(k+1), qr_1d(k), qr_1d(k-1) ) - qr_1d(k) 693 761 694 762 qr_slope(k) = SIGN(1.0, d_mean) * MIN ( 2.0 * d_min, 2.0 * d_max, & 695 763 ABS( d_mean ) ) 696 764 697 d_mean = 0.5 * ( nr (k+1,j,i) + nr(k-1,j,i) )698 d_min = nr (k,j,i) - MIN( nr(k+1,j,i), nr(k,j,i), nr(k-1,j,i) )699 d_max = MAX( nr (k+1,j,i), nr(k,j,i), nr(k-1,j,i) ) - nr(k,j,i)765 d_mean = 0.5 * ( nr_1d(k+1) + nr_1d(k-1) ) 766 d_min = nr_1d(k) - MIN( nr_1d(k+1), nr_1d(k), nr_1d(k-1) ) 767 d_max = MAX( nr_1d(k+1), nr_1d(k), nr_1d(k-1) ) - nr_1d(k) 700 768 701 769 nr_slope(k) = SIGN(1.0, d_mean) * MIN ( 2.0 * d_min, 2.0 * d_max, & … … 709 777 710 778 ENDIF 779 780 sed_nr(nzt+1) = 0.0 781 sed_qr(nzt+1) = 0.0 711 782 ! 712 783 !-- Compute sedimentation flux 713 DO k = nzt -2, nzb_s_inner(j,i)+1, -1784 DO k = nzt, nzb_s_inner(j,i)+1, -1 714 785 ! 715 786 !-- Sum up all rain drop number densities which contribute to the flux … … 719 790 k_run = k 720 791 c_run = MIN( 1.0, c_nr(k) ) 721 DO WHILE ( c_run > 0.0 .AND. k_run <= nzt -1)792 DO WHILE ( c_run > 0.0 .AND. k_run <= nzt ) 722 793 flux = flux + hyrho(k_run) * & 723 ( nr (k_run,j,i) + nr_slope(k_run) * ( 1.0 - c_run ) *&794 ( nr_1d(k_run) + nr_slope(k_run) * ( 1.0 - c_run ) * & 724 795 0.5 ) * c_run * dzu(k_run) 725 796 z_run = z_run + dzu(k_run) … … 731 802 !-- available 732 803 flux = MIN( flux, & 733 hyrho(k) * dzu(k ) * nr(k,j,i) + sed_nr(k+1) * dt_sedi)734 735 sed_nr(k) = flux / dt_sedi736 tend_nr(k,j,i) = tend_nr(k,j,i) + ( sed_nr(k+1) - sed_nr(k) ) *&737 ddzu(k+1) / hyrho(k)804 hyrho(k) * dzu(k+1) * nr_1d(k) + sed_nr(k+1) * dt_micro ) 805 806 sed_nr(k) = flux / dt_micro 807 nr_1d(k) = nr_1d(k) + ( sed_nr(k+1) - sed_nr(k) ) * ddzu(k+1) / & 808 hyrho(k) * dt_micro 738 809 ! 739 810 !-- Sum up all rain water content which contributes to the flux … … 747 818 748 819 flux = flux + hyrho(k_run) * & 749 ( qr (k_run,j,i) + qr_slope(k_run) * ( 1.0 - c_run ) * &820 ( qr_1d(k_run) + qr_slope(k_run) * ( 1.0 - c_run ) * & 750 821 0.5 ) * c_run * dzu(k_run) 751 822 z_run = z_run + dzu(k_run) … … 757 828 !-- It is not allowed to sediment more rain water content than available 758 829 flux = MIN( flux, & 759 hyrho(k) * dzu(k) * qr(k,j,i) + sed_qr(k+1) * dt_sedi ) 760 761 sed_qr(k) = flux / dt_sedi 762 tend_qr(k,j,i) = tend_qr(k,j,i) + ( sed_qr(k+1) - sed_qr(k) ) * & 763 ddzu(k+1) / hyrho(k) 830 hyrho(k) * dzu(k) * qr_1d(k) + sed_qr(k+1) * dt_micro ) 831 832 sed_qr(k) = flux / dt_micro 833 834 qr_1d(k) = qr_1d(k) + ( sed_qr(k+1) - sed_qr(k) ) * ddzu(k+1) / & 835 hyrho(k) * dt_micro 836 q_1d(k) = q_1d(k) + ( sed_qr(k+1) - sed_qr(k) ) * ddzu(k+1) / & 837 hyrho(k) * dt_micro 838 pt_1d(k) = pt_1d(k) - ( sed_qr(k+1) - sed_qr(k) ) * ddzu(k+1) / & 839 hyrho(k) * l_d_cp * pt_d_t(k) * dt_micro 764 840 ! 765 841 !-- Compute the rain rate 766 842 prr(k,j,i) = prr(k,j,i) + sed_qr(k) / hyrho(k) * & 767 weight_substep(intermediate_timestep_count) 768 ENDDO 843 weight_substep(intermediate_timestep_count) 844 ENDDO 845 769 846 ! 770 847 !-- Precipitation amount … … 774 851 775 852 precipitation_amount(j,i) = precipitation_amount(j,i) + & 776 prr(nzb_ 2d(j,i)+1,j,i) * &777 hyrho(nzb_ 2d(j,i)+1) * dt_3d853 prr(nzb_s_inner(j,i)+1,j,i) * & 854 hyrho(nzb_s_inner(j,i)+1) * dt_3d 778 855 ENDIF 779 856 -
palm/trunk/SOURCE/modules.f90
r1114 r1115 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! unused variables removed 23 23 ! 24 24 ! Former revisions: … … 408 408 c_u_m, c_u_m_l, c_v_m, c_v_m_l, c_w_m, c_w_m_l, ddzu, ddzu_pres, & 409 409 dd2zu, dzu, ddzw, dzw, hyp, inflow_damping_factor, lad, l_grid, & 410 n r_init, ptdf_x, ptdf_y, pt_init, q_init, qr_init, rdf, rdf_sc,&411 sa_init, ug, u_init, u_nzb_p1_for_vfc, vg, v_init, v_nzb_p1_for_vfc,&412 w_subs, zu, zw410 nc_1d, nr_1d, ptdf_x, ptdf_y, pt_1d, pt_init, q_1d, q_init, qc_1d, & 411 qr_1d, rdf, rdf_sc, sa_init, ug, u_init, u_nzb_p1_for_vfc, vg, & 412 v_init, v_nzb_p1_for_vfc, w_subs, zu, zw 413 413 414 414 REAL, DIMENSION(:,:), ALLOCATABLE :: & … … 430 430 tend_nr, tend_q, tend_qr, tric, u_m_l, u_m_n, u_m_r, u_m_s, v_m_l, & 431 431 v_m_n, v_m_r, v_m_s, w_m_l, w_m_n, w_m_r, w_m_s 432 433 432 434 433 #if defined( __nopointer ) 435 434 REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET :: & 436 e, e_p, nr, nr_p, p, prho, pt, pt_p, q, q_p, q l, ql_c, ql_v, ql_vp,&437 q r, qr_p, rho, sa, sa_p, te_m, tnr_m, tpt_m, tq_m, tqr_m, tsa_m, &438 t u_m, tv_m, tw_m, u, u_p, v, v_p, vpt, w, w_p435 e, e_p, nr, nr_p, p, prho, pt, pt_p, q, q_p, qc, ql, ql_c, ql_v, & 436 ql_vp, qr, qr_p, rho, sa, sa_p, te_m, tnr_m, tpt_m, tq_m, tqr_m, & 437 tsa_m, tu_m, tv_m, tw_m, u, u_p, v, v_p, vpt, w, w_p 439 438 #else 440 439 REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET :: & 441 440 e_1, e_2, e_3, p, prho_1, nr_1, nr_2, nr_3, pt_1, pt_2, pt_3, q_1, & 442 q_2, q_3, q l_v, ql_vp, ql_1, ql_2, qr_1, qr_2, qr_3, rho_1, sa_1, &443 sa_ 2, sa_3, u_1, u_2, u_3, v_1, v_2, v_3, vpt_1, w_1, w_2, w_3441 q_2, q_3, qc_1, ql_v, ql_vp, ql_1, ql_2, qr_1, qr_2, qr_3, rho_1, & 442 sa_1, sa_2, sa_3, u_1, u_2, u_3, v_1, v_2, v_3, vpt_1, w_1, w_2, w_3 444 443 445 444 REAL, DIMENSION(:,:,:), POINTER :: & 446 e, e_p, nr, nr_p, prho, pt, pt_p, q, q_p, q l, ql_c, qr, qr_p, rho,&447 sa, sa_p, te_m, tnr_m, tpt_m, tq_m, tqr_m, tsa_m, tu_m, tv_m, tw_m,&448 u, u_p, v, v_p, vpt, w, w_p445 e, e_p, nr, nr_p, prho, pt, pt_p, q, q_p, qc, ql, ql_c, qr, qr_p, & 446 rho, sa, sa_p, te_m, tnr_m, tpt_m, tq_m, tqr_m, tsa_m, tu_m, tv_m, & 447 tw_m, u, u_p, v, v_p, vpt, w, w_p 449 448 #endif 450 449 … … 474 473 475 474 REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET :: & 476 e_av, lpt_av, nr_av, p_av, pc_av, pr_av, prr_av, pt_av, q_av, q l_av, &477 ql_ c_av, ql_v_av, ql_vp_av, qr_av, qv_av, rho_av, s_av, sa_av, u_av,&478 v_av, vpt_av, w_av475 e_av, lpt_av, nr_av, p_av, pc_av, pr_av, prr_av, pt_av, q_av, qc_av, & 476 ql_av, ql_c_av, ql_v_av, ql_vp_av, qr_av, qv_av, rho_av, s_av, sa_av,& 477 u_av, v_av, vpt_av, w_av 479 478 480 479 END MODULE averaging … … 525 524 eps_ros = 1.0E-4, & ! accuracy of Rosenbrock method 526 525 eps_sb = 1.0E-20, & ! threshold in two-moments scheme 527 k_cc = 9.44E09, & ! const. rain-rainkernel (m3 kg-2 s-1)526 k_cc = 9.44E09, & ! const. cloud-cloud kernel (m3 kg-2 s-1) 528 527 k_cr0 = 4.33, & ! const. cloud-rain kernel (m3 kg-1 s-1) 529 528 k_rr = 7.12, & ! const. rain-rain kernel (m3 kg-1 s-1) 530 529 k_br = 1000., & ! const. in breakup parametrization (m-1) 530 k_st = 1.2E8, & ! const. in drizzle parametrization (m-1 s-1) 531 531 kappa_rr = 60.7, & ! const. in collision kernel (kg-1/3) 532 532 kin_vis_air = 1.4086E-5, & ! kin. viscosity of air (m2 s-1) … … 536 536 molecular_weight_of_solute = 0.05844, & ! mol. m. NaCl (kg mol-1) 537 537 molecular_weight_of_water = 0.01801528, & ! mol. m. H2O (kg mol-1) 538 nc = 70.0E6, & ! cloud droplet concentration538 nc_const = 70.0E6, & ! cloud droplet concentration 539 539 prec_time_const = 0.001, & !coef. in Kessler scheme 540 540 pirho_l, dpirho_l, & ! pi * rho_l / 6.0; 6.0 / ( pi * rho_l ) … … 545 545 schmidt = 0.71, & ! Schmidt number 546 546 schmidt_p_1d3, & ! schmidt**( 1.0 / 3.0 ) 547 sigma_gc = 1.3, & ! log-normal geometric standard deviation 547 548 stp = 2.5066282746310005, & ! parameter in gamma function 548 549 thermal_conductivity_l = 2.43E-2, & ! therm. cond. air (J m-1 s-1 K-1) … … 554 555 w_precipitation = 9.65 ! maximum terminal velocity (m s-1) 555 556 556 REAL, DIMENSION(:), ALLOCATABLE :: dr, hyrho, lambda_r, mu_r, pt_d_t, & 557 sed_nr, sed_q, sed_qr, t_d_pt, xr 557 REAL, DIMENSION(:), ALLOCATABLE :: hyrho, pt_d_t, t_d_pt 558 558 559 559 REAL, DIMENSION(:,:), ALLOCATABLE :: precipitation_amount, & … … 630 630 scalar_advec = 'ws-scheme' 631 631 CHARACTER (LEN=20) :: bc_e_b = 'neumann', bc_lr = 'cyclic', & 632 bc_nr_b = 'neumann', bc_nr_t = 'neumann', &633 632 bc_ns = 'cyclic', bc_p_b = 'neumann', & 634 633 bc_p_t = 'dirichlet', bc_pt_b = 'dirichlet', & 635 634 bc_pt_t = 'initial_gradient', & 636 635 bc_q_b = 'dirichlet', bc_q_t = 'neumann', & 637 bc_qr_b = 'neumann', bc_qr_t = 'neumann',&638 636 bc_s_b = 'dirichlet', bc_s_t = 'neumann', & 639 637 bc_sa_t = 'neumann', & … … 681 679 dp_level_ind_b = 0, dvrp_filecount = 0, & 682 680 dz_stretch_level_index, gamma_mg, gathered_size, & 683 grid_level, ibc_e_b, ibc_ nr_b, ibc_nr_t, ibc_p_b, ibc_p_t, &684 ibc_pt_b, ibc_pt_t, ibc_q_b, ibc_q_t, ibc_qr_b, ibc_qr_t,&681 grid_level, ibc_e_b, ibc_p_b, ibc_p_t, & 682 ibc_pt_b, ibc_pt_t, ibc_q_b, ibc_q_t, & 685 683 ibc_sa_t, ibc_uv_b, ibc_uv_t, icloud_scheme, & 686 684 inflow_disturbance_begin = -1, inflow_disturbance_end = -1, & … … 705 703 mask_size(max_masks,3) = -1, mask_size_l(max_masks,3) = -1, & 706 704 mask_start_l(max_masks,3) = -1, & 707 nr_vertical_gradient_level_ind(10) = -9999, &708 705 pt_vertical_gradient_level_ind(10) = -9999, & 709 706 q_vertical_gradient_level_ind(10) = -9999, & 710 qr_vertical_gradient_level_ind(10) = -9999, &711 707 sa_vertical_gradient_level_ind(10) = -9999, & 712 708 section(100,3), section_xy(100) = -9999, & … … 738 734 constant_top_momentumflux = .FALSE., & 739 735 constant_top_salinityflux = .TRUE., & 740 constant_waterflux = .TRUE., constant_waterflux_nr = .TRUE., & 741 constant_waterflux_qr = .TRUE., create_disturbances = .TRUE., & 736 constant_waterflux = .TRUE., create_disturbances = .TRUE., & 742 737 data_output_2d_on_each_pe = .TRUE., & 743 738 dissipation_control = .FALSE., disturbance_created = .FALSE., & … … 779 774 averaging_interval = 0.0, averaging_interval_pr = 9999999.9, & 780 775 averaging_interval_sp = 9999999.9, bc_pt_t_val, bc_q_t_val, & 781 b c_qr_t_val, bc_nr_t_val, bottom_salinityflux = 0.0, &776 bottom_salinityflux = 0.0, & 782 777 building_height = 50.0, building_length_x = 50.0, & 783 778 building_length_y = 50.0, building_wall_left = 9999999.9, & … … 799 794 dt_do2d_xy = 9999999.9, dt_do2d_xz = 9999999.9, & 800 795 dt_do2d_yz = 9999999.9, dt_do3d = 9999999.9, dt_dvrp = 9999999.9, & 801 dt_max = 20.0, dt_ restart = 9999999.9, &796 dt_max = 20.0, dt_micro = -1.0, dt_restart = 9999999.9, & 802 797 dt_run_control = 60.0, dt_3d = -1.0, dz = -1.0, & 803 798 dz_max = 9999999.9, dz_stretch_factor = 1.08, & … … 810 805 maximum_cpu_time_allowed = 0.0, & 811 806 molecular_viscosity = 1.461E-5, & 812 nr_surface = 0.0, nr_surface_initial_change = 0.0, &813 807 old_dt = 1.0E-10, omega = 7.29212E-5, omega_sor = 1.8, & 814 808 particle_maximum_age = 9999999.9, & … … 819 813 pt_surface = 300.0, pt_surface_initial_change = 0.0, & 820 814 q_surface = 0.0, q_surface_initial_change = 0.0, & 821 qr_surface = 0.0, qr_surface_initial_change = 0.0, &822 815 rayleigh_damping_factor = -1.0, rayleigh_damping_height = -1.0, & 823 816 recycling_width = 9999999.9, residual_limit = 1.0E-4, & … … 832 825 surface_heatflux = 9999999.9, surface_pressure = 1013.25, & 833 826 surface_scalarflux = 9999999.9, surface_waterflux = 9999999.9, & 834 surface_waterflux_nr = 0.0, surface_waterflux_qr = 0.0, &835 827 s_surface = 0.0, s_surface_initial_change = 0.0, & 836 828 termination_time_needed = -1.0, time_coupling = 0.0, & … … 854 846 lad_vertical_gradient_level(10) = -9999999.9, & 855 847 mask_scale(3), & 856 nr_vertical_gradient(10) = 0.0, &857 nr_vertical_gradient_level(10) = -1.0, &858 848 pt_vertical_gradient(10) = 0.0, & 859 849 pt_vertical_gradient_level(10) = -9999999.9, & 860 850 q_vertical_gradient(10) = 0.0, & 861 851 q_vertical_gradient_level(10) = -1.0, & 862 qr_vertical_gradient(10) = 0.0, &863 qr_vertical_gradient_level(10) = -1.0, &864 852 s_vertical_gradient(10) = 0.0, & 865 853 s_vertical_gradient_level(10) = -1.0, & … … 877 865 volume_flow(1:2) = 0.0, volume_flow_area(1:2) = 0.0, & 878 866 volume_flow_initial(1:2) = 0.0, wall_heatflux(0:4) = 0.0, & 879 wall_humidityflux(0:4) = 0.0, wall_nrflux(0:4) = 0.0, & 867 wall_humidityflux(0:4) = 0.0, wall_nrflux(0:4) = 0.0, & 880 868 wall_qflux(0:4) = 0.0, wall_qrflux(0:4) = 0.0, & 881 869 wall_salinityflux(0:4) = 0.0, wall_scalarflux(0:4) = 0.0, & -
palm/trunk/SOURCE/parin.f90
r1093 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! unused variables removed 23 23 ! 24 24 ! Former revisions: … … 224 224 loop_optimization, masking_method, mg_cycles, & 225 225 mg_switch_to_pe0_level, mixing_length_1d, momentum_advec, & 226 nc, netcdf_precision, neutral, ngsrb, nr_surface, & 227 nr_surface_initial_change, nr_vertical_gradient, & 228 nr_vertical_gradient_level, nsor, & 226 nc_const, netcdf_precision, neutral, ngsrb, & 227 nsor, & 229 228 nsor_ini, nx, ny, nz, ocean, omega, omega_sor, & 230 229 passive_scalar, pch_index, phi, plant_canopy, prandtl_layer, & … … 234 233 pt_vertical_gradient_level, q_surface, q_surface_initial_change, & 235 234 q_vertical_gradient, q_vertical_gradient_level, & 236 qr_surface, qr_surface_initial_change, & 237 qr_vertical_gradient, qr_vertical_gradient_level, radiation, & 235 radiation, & 238 236 random_generator, random_heatflux, rayleigh_damping_factor, & 239 237 rayleigh_damping_height, recycling_width, residual_limit, & … … 243 241 statistic_regions, subs_vertical_gradient, & 244 242 subs_vertical_gradient_level, surface_heatflux, surface_pressure, & 245 surface_scalarflux, surface_waterflux, surface_waterflux_nr,&246 s urface_waterflux_qr, s_surface, &243 surface_scalarflux, surface_waterflux, & 244 s_surface, & 247 245 s_surface_initial_change, s_vertical_gradient, & 248 246 s_vertical_gradient_level, timestep_scheme, & … … 412 410 !-- also check the allocate statement in routine read_var_list 413 411 ALLOCATE( lad(0:nz+1),pt_init(0:nz+1), q_init(0:nz+1), & 414 qr_init(0:nz+1), nr_init(0:nz+1), &415 412 sa_init(0:nz+1), ug(0:nz+1), u_init(0:nz+1), & 416 413 v_init(0:nz+1), vg(0:nz+1), & -
palm/trunk/SOURCE/prognostic_equations.f90
r1112 r1115 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! optimized cloud physics: calculation of microphysical tendencies transfered 23 ! to microphysics.f90; qr and nr are only calculated if precipitation is required 23 24 ! 24 25 ! Former revisions: … … 229 230 IF ( ( ws_scheme_mom .OR. ws_scheme_sca ) .AND. & 230 231 intermediate_timestep_count == 1 ) CALL ws_statistics 231 232 232 ! 233 233 !-- Loop over all prognostic equations … … 285 285 286 286 CALL user_actions( i, j, 'u-tendency' ) 287 288 287 ! 289 288 !-- Prognostic equation for u-velocity component … … 341 340 342 341 CALL user_actions( i, j, 'v-tendency' ) 343 344 342 ! 345 343 !-- Prognostic equation for v-velocity component … … 422 420 ENDIF 423 421 ENDIF 424 425 ! 426 !-- If required, calculate tendencies for total water content, rain water 427 !-- content, rain drop concentration and liquid temperature 428 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 429 430 tend_q(:,j,i) = 0.0 431 tend_qr(:,j,i) = 0.0 432 tend_nr(:,j,i) = 0.0 433 tend_pt(:,j,i) = 0.0 434 ! 435 !-- Droplet size distribution (dsd) properties are needed for the 436 !-- computation of selfcollection, breakup, evaporation and 437 !-- sedimentation of rain 438 IF ( precipitation ) THEN 439 CALL dsd_properties( i,j ) 440 CALL autoconversion( i,j ) 441 CALL accretion( i,j ) 442 CALL selfcollection_breakup( i,j ) 443 CALL evaporation_rain( i,j ) 444 CALL sedimentation_rain( i,j ) 445 ENDIF 446 447 IF ( drizzle ) CALL sedimentation_cloud( i,j ) 448 449 ENDIF 450 422 ! 423 !-- If required, calculate tendencies for total water content, liquid water 424 !-- potential temperature, rain water content and rain drop concentration 425 IF ( cloud_physics .AND. icloud_scheme == 0 ) CALL microphysics_control( i, j ) 451 426 ! 452 427 !-- If required, compute prognostic equation for potential temperature … … 650 625 !-- If required, calculate prognostic equations for rain water content 651 626 !-- and rain drop concentration 652 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 627 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 628 precipitation ) THEN 653 629 ! 654 630 !-- Calculate prognostic equation for rain water content … … 667 643 ENDIF 668 644 CALL diffusion_s( i, j, qr, qrsws, qrswst, wall_qrflux ) 669 670 645 ! 671 646 !-- Using microphysical tendencies (autoconversion, accretion, … … 673 648 tend(:,j,i) = tend(:,j,i) + tend_qr(:,j,i) 674 649 675 ! 676 !-- If required, compute influence of large-scale subsidence/ascent 677 IF ( large_scale_subsidence ) THEN 678 CALL subsidence( i, j, tend, qr, qr_init ) 679 ENDIF 680 681 ! CALL user_actions( i, j, 'qr-tendency' ) 682 650 CALL user_actions( i, j, 'qr-tendency' ) 683 651 ! 684 652 !-- Prognostic equation for rain water content 685 653 DO k = nzb_s_inner(j,i)+1, nzt 686 qr_p(k,j,i) = qr(k,j,i) + dt_3d * ( tsc(2) * tend(k,j,i) + & 687 tsc(3) * tqr_m(k,j,i) ) & 688 - tsc(5) * rdf_sc(k) * & 689 ( qr(k,j,i) - qr_init(k) ) 690 IF ( qr_p(k,j,i) < 0.0 ) qr_p(k,j,i) = 0.1 * qr(k,j,i) 654 qr_p(k,j,i) = qr(k,j,i) + dt_3d * ( tsc(2) * tend(k,j,i) + & 655 tsc(3) * tqr_m(k,j,i) ) & 656 - tsc(5) * rdf_sc(k) * qr(k,j,i) 657 IF ( qr_p(k,j,i) < 0.0 ) qr_p(k,j,i) = 0.0 691 658 ENDDO 692 659 ! … … 711 678 IF ( timestep_scheme(1:5) == 'runge' ) THEN 712 679 IF ( ws_scheme_sca ) THEN 713 CALL advec_s_ws( i, j, nr, 'nr', flux_s_nr, 714 715 680 CALL advec_s_ws( i, j, nr, 'nr', flux_s_nr, & 681 diss_s_nr, flux_l_nr, diss_l_nr, & 682 i_omp_start, tn ) 716 683 ELSE 717 684 CALL advec_s_pw( i, j, nr ) … … 721 688 ENDIF 722 689 CALL diffusion_s( i, j, nr, nrsws, nrswst, wall_nrflux ) 723 690 ! 724 691 !-- Using microphysical tendencies (autoconversion, accretion, 725 692 !-- selfcollection, breakup, evaporation; … … 727 694 tend(:,j,i) = tend(:,j,i) + tend_nr(:,j,i) 728 695 729 ! 730 !-- If required, compute influence of large-scale subsidence/ascent 731 IF ( large_scale_subsidence ) THEN 732 CALL subsidence( i, j, tend, nr, nr_init ) 733 ENDIF 734 735 ! CALL user_actions( i, j, 'nr-tendency' ) 736 696 CALL user_actions( i, j, 'nr-tendency' ) 737 697 ! 738 698 !-- Prognostic equation for rain drop concentration 739 699 DO k = nzb_s_inner(j,i)+1, nzt 740 nr_p(k,j,i) = nr(k,j,i) + dt_3d * ( tsc(2) * tend(k,j,i) + & 741 tsc(3) * tnr_m(k,j,i) ) & 742 - tsc(5) * rdf_sc(k) * & 743 ( nr(k,j,i) - nr_init(k) ) 744 IF ( nr_p(k,j,i) < 0.0 ) nr_p(k,j,i) = 0.1 * nr(k,j,i) 700 nr_p(k,j,i) = nr(k,j,i) + dt_3d * ( tsc(2) * tend(k,j,i) + & 701 tsc(3) * tnr_m(k,j,i) ) & 702 - tsc(5) * rdf_sc(k) * nr(k,j,i) 703 IF ( nr_p(k,j,i) < 0.0 ) nr_p(k,j,i) = 0.0 745 704 ENDDO 746 705 ! … … 762 721 ENDIF 763 722 764 ENDIF 765 723 ENDIF 766 724 ! 767 725 !-- If required, compute prognostic equation for turbulent kinetic -
palm/trunk/SOURCE/read_3d_binary.f90
r1054 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! unused variables removed 22 23 ! 23 24 ! Former revisions: … … 283 284 !-- First compare the version numbers 284 285 READ ( 13 ) version_on_file 285 binary_version = '3. 3'286 binary_version = '3.4' 286 287 IF ( TRIM( version_on_file ) /= TRIM( binary_version ) ) THEN 287 288 WRITE( message_string, * ) 'version mismatch concerning data ', & … … 432 433 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 433 434 435 CASE ( 'nr' ) 436 IF ( k == 1 ) READ ( 13 ) tmp_3d 437 nr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 438 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 439 440 CASE ( 'nr_av' ) 441 IF ( .NOT. ALLOCATED( nr_av ) ) THEN 442 ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 443 ENDIF 444 IF ( k == 1 ) READ ( 13 ) tmp_3d 445 nr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 446 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 447 448 CASE ( 'nrs' ) 449 IF ( k == 1 ) READ ( 13 ) tmp_2d 450 nrs(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 451 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 452 453 CASE ( 'nrsws' ) 454 IF ( k == 1 ) READ ( 13 ) tmp_2d 455 nrsws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 456 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 457 458 CASE ( 'nrswst' ) 459 IF ( k == 1 ) READ ( 13 ) tmp_2d 460 nrswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 461 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 462 434 463 CASE ( 'p' ) 435 464 IF ( k == 1 ) READ ( 13 ) tmp_3d … … 516 545 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 517 546 547 CASE ( 'qc' ) 548 IF ( k == 1 ) READ ( 13 ) tmp_3d 549 qc(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 550 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 551 552 CASE ( 'qc_av' ) 553 IF ( .NOT. ALLOCATED( qc_av ) ) THEN 554 ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 555 ENDIF 556 IF ( k == 1 ) READ ( 13 ) tmp_3d 557 qc_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 558 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 559 518 560 CASE ( 'ql' ) 519 561 IF ( k == 1 ) READ ( 13 ) tmp_3d … … 534 576 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 535 577 536 CASE ( 'nr' )537 IF ( k == 1 ) READ ( 13 ) tmp_3d538 nr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &539 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)540 541 578 CASE ( 'qr_av' ) 542 579 IF ( .NOT. ALLOCATED( qr_av ) ) THEN … … 547 584 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 548 585 549 CASE ( 'nr_av' )550 IF ( .NOT. ALLOCATED( nr_av ) ) THEN551 ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )552 ENDIF553 IF ( k == 1 ) READ ( 13 ) tmp_3d554 nr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &555 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)556 557 586 CASE ( 'qrs' ) 558 587 IF ( k == 1 ) READ ( 13 ) tmp_2d … … 568 597 IF ( k == 1 ) READ ( 13 ) tmp_2d 569 598 qrswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 570 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)571 572 CASE ( 'nrs' )573 IF ( k == 1 ) READ ( 13 ) tmp_2d574 nrs(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &575 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)576 577 CASE ( 'nrsws' )578 IF ( k == 1 ) READ ( 13 ) tmp_2d579 nrsws(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &580 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)581 582 CASE ( 'nrswst' )583 IF ( k == 1 ) READ ( 13 ) tmp_2d584 nrswst(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &585 599 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 586 600 -
palm/trunk/SOURCE/read_var_list.f90
r1093 r1115 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! unused variables removed 23 23 ! 24 24 ! Former revisions: … … 185 185 !-- Make version number check first 186 186 READ ( 13 ) version_on_file 187 binary_version = '3. 8'187 binary_version = '3.9' 188 188 IF ( TRIM( version_on_file ) /= TRIM( binary_version ) ) THEN 189 189 WRITE( message_string, * ) 'version mismatch concerning control ', & … … 251 251 ALLOCATE( lad(0:nz+1), ug(0:nz+1), u_init(0:nz+1), vg(0:nz+1), & 252 252 v_init(0:nz+1), pt_init(0:nz+1), q_init(0:nz+1), & 253 qr_init(0:nz+1), nr_init(0:nz+1), sa_init(0:nz+1),&253 sa_init(0:nz+1), & 254 254 hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions), & 255 255 hom_sum(0:nz+1,pr_palm+max_pr_user,0:statistic_regions) ) … … 284 284 CASE ( 'bc_ns' ) 285 285 READ ( 13 ) bc_ns 286 CASE ( 'bc_nr_b' )287 READ ( 13 ) bc_nr_b288 CASE ( 'bc_nr_t' )289 READ ( 13 ) bc_nr_t290 CASE ( 'bc_nr_t_val' )291 READ ( 13 ) bc_nr_t_val292 286 CASE ( 'bc_p_b' ) 293 287 READ ( 13 ) bc_p_b … … 306 300 CASE ( 'bc_q_t_val' ) 307 301 READ ( 13 ) bc_q_t_val 308 CASE ( 'bc_qr_b' )309 READ ( 13 ) bc_qr_b310 CASE ( 'bc_qr_t' )311 READ ( 13 ) bc_qr_t312 CASE ( 'bc_qr_t_val' )313 READ ( 13 ) bc_qr_t_val314 302 CASE ( 'bc_s_b' ) 315 303 READ ( 13 ) bc_s_b … … 474 462 CASE ( 'momentum_advec' ) 475 463 READ ( 13 ) momentum_advec 476 CASE ( 'nc ' )477 READ ( 13 ) nc 464 CASE ( 'nc_const' ) 465 READ ( 13 ) nc_const 478 466 CASE ( 'netcdf_precision' ) 479 467 READ ( 13 ) netcdf_precision … … 482 470 CASE ( 'ngsrb' ) 483 471 READ ( 13 ) ngsrb 484 CASE ( 'nr_init' )485 READ ( 13 ) nr_init486 CASE ( 'nr_surface' )487 READ ( 13 ) nr_surface488 CASE ( 'nr_surface_initial_change' )489 READ ( 13 ) nr_surface_initial_change490 CASE ( 'nr_vertical_gradient' )491 READ ( 13 ) nr_vertical_gradient492 CASE ( 'nr_vertical_gradient_level' )493 READ ( 13 ) nr_vertical_gradient_level494 CASE ( 'nr_vertical_gradient_level_ind' )495 READ ( 13 ) nr_vertical_gradient_level_ind496 472 CASE ( 'nsor' ) 497 473 READ ( 13 ) nsor … … 560 536 CASE ( 'q_vertical_gradient_level_ind' ) 561 537 READ ( 13 ) q_vertical_gradient_level_ind 562 CASE ( 'qr_init' )563 READ ( 13 ) qr_init564 CASE ( 'qr_surface' )565 READ ( 13 ) qr_surface566 CASE ( 'qr_surface_initial_change' )567 READ ( 13 ) qr_surface_initial_change568 CASE ( 'qr_vertical_gradient' )569 READ ( 13 ) qr_vertical_gradient570 CASE ( 'qr_vertical_gradient_level' )571 READ ( 13 ) qr_vertical_gradient_level572 CASE ( 'qr_vertical_gradient_level_ind' )573 READ ( 13 ) qr_vertical_gradient_level_ind574 538 CASE ( 'radiation' ) 575 539 READ ( 13 ) radiation … … 618 582 CASE ( 'surface_waterflux' ) 619 583 READ ( 13 ) surface_waterflux 620 CASE ( 'surface_waterflux_nr' )621 READ ( 13 ) surface_waterflux_nr622 CASE ( 'surface_waterflux_qr' )623 READ ( 13 ) surface_waterflux_qr624 584 CASE ( 's_surface' ) 625 585 READ ( 13 ) s_surface -
palm/trunk/SOURCE/sum_up_3d_data.f90
r1054 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! ql is calculated by calc_liquid_water_content 22 23 ! 23 24 ! Former revisions: … … 164 165 ENDIF 165 166 q_av = 0.0 167 168 CASE ( 'qc' ) 169 IF ( .NOT. ALLOCATED( qc_av ) ) THEN 170 ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 171 ENDIF 172 qc_av = 0.0 166 173 167 174 CASE ( 'ql' ) … … 411 418 ENDDO 412 419 420 CASE ( 'qc' ) 421 DO i = nxlg, nxrg 422 DO j = nysg, nyng 423 DO k = nzb, nzt+1 424 qc_av(k,j,i) = qc_av(k,j,i) + qc(k,j,i) 425 ENDDO 426 ENDDO 427 ENDDO 428 413 429 CASE ( 'ql' ) 414 430 DO i = nxlg, nxrg -
palm/trunk/SOURCE/swap_timelevel.f90
r1112 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! calculation of qr and nr is restricted to precipitation 23 23 ! 24 24 ! Former revisions: … … 130 130 IF ( humidity .OR. passive_scalar ) THEN 131 131 q => q_1; q_p => q_2 132 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 132 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 133 precipitation ) THEN 133 134 qr => qr_1; qr_p => qr_2 134 135 nr => nr_1; nr_p => nr_2 … … 153 154 IF ( humidity .OR. passive_scalar ) THEN 154 155 q => q_2; q_p => q_1 155 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 156 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 157 precipitation) THEN 156 158 qr => qr_2; qr_p => qr_1 157 159 nr => nr_2; nr_p => nr_1 -
palm/trunk/SOURCE/time_integration.f90
r1114 r1115 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! calculation of qr and nr is restricted to precipitation 23 23 ! 24 24 ! Former revisions: … … 266 266 IF (humidity .OR. passive_scalar) THEN 267 267 CALL exchange_horiz( q_p, nbgp ) 268 IF ( cloud_physics .AND. icloud_scheme == 0 ) THEN 268 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 269 precipitation) THEN 269 270 CALL exchange_horiz( qr_p, nbgp ) 270 271 CALL exchange_horiz( nr_p, nbgp ) … … 349 350 350 351 ! 351 !-- If required, compute virtuell potential temperature352 IF ( humidity ) THEN353 CALL compute_vpt354 !$acc update device( vpt )355 ENDIF356 357 !358 352 !-- If required, compute liquid water content 359 353 IF ( cloud_physics ) THEN … … 361 355 !$acc update device( ql ) 362 356 ENDIF 363 357 ! 358 !-- If required, compute virtual potential temperature 359 IF ( humidity ) THEN 360 CALL compute_vpt 361 !$acc update device( vpt ) 362 ENDIF 364 363 ! 365 364 !-- Compute the diffusion quantities … … 373 372 CALL cpu_log( log_point(19), 'prandtl_fluxes', 'stop' ) 374 373 ENDIF 375 376 374 ! 377 375 !-- Compute the diffusion coefficients -
palm/trunk/SOURCE/write_3d_binary.f90
r1075 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! qr and nr are restricted to precipitation 22 23 ! 23 24 ! Former revisions: 24 25 ! ----------------- 25 26 ! $Id$ 26 !27 ! 1074 2012-12-03 11:00:05Z hoffmann28 ! Bugfix in writing qr, nr29 27 ! 30 28 ! 1053 2012-11-13 17:11:03Z hoffmann … … 117 115 ! 118 116 !-- Write arrays. 119 binary_version = '3. 3'117 binary_version = '3.4' 120 118 121 119 WRITE ( 14 ) binary_version … … 179 177 WRITE ( 14 ) 'ql_av '; WRITE ( 14 ) ql_av 180 178 ENDIF 181 IF ( icloud_scheme == 0 .AND. cloud_physics ) THEN 182 WRITE ( 14 ) 'qr '; WRITE ( 14 ) qr 183 WRITE ( 14 ) 'nr '; WRITE ( 14 ) nr 184 IF ( ALLOCATED( qr_av ) ) THEN 185 WRITE ( 14 ) 'qr_av '; WRITE ( 14 ) qr_av 179 IF ( icloud_scheme == 0 ) THEN 180 WRITE ( 14 ) 'qc '; WRITE ( 14 ) qc 181 IF ( ALLOCATED( qc_av ) ) THEN 182 WRITE ( 14 ) 'qc_av '; WRITE ( 14 ) qc_av 186 183 ENDIF 187 IF ( ALLOCATED( nr_av ) ) THEN 188 WRITE ( 14 ) 'nr_av '; WRITE ( 14 ) nr_av 184 IF ( precipitation ) THEN 185 WRITE ( 14 ) 'nr '; WRITE ( 14 ) nr 186 IF ( ALLOCATED( nr_av ) ) THEN 187 WRITE ( 14 ) 'nr_av '; WRITE ( 14 ) nr_av 188 ENDIF 189 WRITE ( 14 ) 'nrs '; WRITE ( 14 ) nrs 190 WRITE ( 14 ) 'nrsws '; WRITE ( 14 ) nrsws 191 WRITE ( 14 ) 'nrswst '; WRITE ( 14 ) nrswst 192 WRITE ( 14 ) 'qr '; WRITE ( 14 ) qr 193 IF ( ALLOCATED( qr_av ) ) THEN 194 WRITE ( 14 ) 'qr_av '; WRITE ( 14 ) qr_av 195 ENDIF 196 WRITE ( 14 ) 'qrs '; WRITE ( 14 ) qrs 197 WRITE ( 14 ) 'qrsws '; WRITE ( 14 ) qrsws 198 WRITE ( 14 ) 'qrswst '; WRITE ( 14 ) qrswst 189 199 ENDIF 190 WRITE ( 14 ) 'qrs '; WRITE ( 14 ) qrs191 WRITE ( 14 ) 'qrsws '; WRITE ( 14 ) qrsws192 WRITE ( 14 ) 'qrswst '; WRITE ( 14 ) qrswst193 WRITE ( 14 ) 'nrs '; WRITE ( 14 ) nrs194 WRITE ( 14 ) 'nrsws '; WRITE ( 14 ) nrsws195 WRITE ( 14 ) 'nrswst '; WRITE ( 14 ) nrswst196 200 ENDIF 197 201 ENDIF -
palm/trunk/SOURCE/write_var_list.f90
r1066 r1115 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! unused variables removed 22 23 ! 23 24 ! Former revisions: … … 165 166 166 167 167 binary_version = '3. 8'168 binary_version = '3.9' 168 169 169 170 WRITE ( 14 ) binary_version … … 204 205 WRITE ( 14 ) 'bc_ns ' 205 206 WRITE ( 14 ) bc_ns 206 WRITE ( 14 ) 'bc_nr_b '207 WRITE ( 14 ) bc_nr_b208 WRITE ( 14 ) 'bc_nr_t '209 WRITE ( 14 ) bc_nr_t210 WRITE ( 14 ) 'bc_nr_t_val '211 WRITE ( 14 ) bc_nr_t_val212 207 WRITE ( 14 ) 'bc_p_b ' 213 208 WRITE ( 14 ) bc_p_b … … 226 221 WRITE ( 14 ) 'bc_q_t_val ' 227 222 WRITE ( 14 ) bc_q_t_val 228 WRITE ( 14 ) 'bc_qr_b '229 WRITE ( 14 ) bc_qr_b230 WRITE ( 14 ) 'bc_qr_t '231 WRITE ( 14 ) bc_qr_t232 WRITE ( 14 ) 'bc_qr_t_val '233 WRITE ( 14 ) bc_qr_t_val234 223 WRITE ( 14 ) 'bc_s_b ' 235 224 WRITE ( 14 ) bc_s_b … … 392 381 WRITE ( 14 ) 'momentum_advec ' 393 382 WRITE ( 14 ) momentum_advec 394 WRITE ( 14 ) 'nc 395 WRITE ( 14 ) nc 383 WRITE ( 14 ) 'nc_const ' 384 WRITE ( 14 ) nc_const 396 385 WRITE ( 14 ) 'netcdf_precision ' 397 386 WRITE ( 14 ) netcdf_precision … … 400 389 WRITE ( 14 ) 'ngsrb ' 401 390 WRITE ( 14 ) ngsrb 402 WRITE ( 14 ) 'nr_init '403 WRITE ( 14 ) nr_init404 WRITE ( 14 ) 'nr_surface '405 WRITE ( 14 ) nr_surface406 WRITE ( 14 ) 'nr_surface_initial_change '407 WRITE ( 14 ) nr_surface_initial_change408 WRITE ( 14 ) 'nr_vertical_gradient '409 WRITE ( 14 ) nr_vertical_gradient410 WRITE ( 14 ) 'nr_vertical_gradient_level '411 WRITE ( 14 ) nr_vertical_gradient_level412 WRITE ( 14 ) 'nr_vertical_gradient_level_ind'413 WRITE ( 14 ) nr_vertical_gradient_level_ind414 391 WRITE ( 14 ) 'nsor ' 415 392 WRITE ( 14 ) nsor … … 476 453 WRITE ( 14 ) 'q_vertical_gradient_level_ind ' 477 454 WRITE ( 14 ) q_vertical_gradient_level_ind 478 WRITE ( 14 ) 'qr_init '479 WRITE ( 14 ) qr_init480 WRITE ( 14 ) 'qr_surface '481 WRITE ( 14 ) qr_surface482 WRITE ( 14 ) 'qr_surface_initial_change '483 WRITE ( 14 ) qr_surface_initial_change484 WRITE ( 14 ) 'qr_vertical_gradient '485 WRITE ( 14 ) qr_vertical_gradient486 WRITE ( 14 ) 'qr_vertical_gradient_level '487 WRITE ( 14 ) qr_vertical_gradient_level488 WRITE ( 14 ) 'qr_vertical_gradient_level_ind'489 WRITE ( 14 ) qr_vertical_gradient_level_ind490 455 WRITE ( 14 ) 'radiation ' 491 456 WRITE ( 14 ) radiation … … 534 499 WRITE ( 14 ) 'surface_waterflux ' 535 500 WRITE ( 14 ) surface_waterflux 536 WRITE ( 14 ) 'surface_waterflux_nr '537 WRITE ( 14 ) surface_waterflux_nr538 WRITE ( 14 ) 'surface_waterflux_qr '539 WRITE ( 14 ) surface_waterflux_qr540 501 WRITE ( 14 ) 's_surface ' 541 502 WRITE ( 14 ) s_surface
Note: See TracChangeset
for help on using the changeset viewer.