Changeset 2292 for palm/trunk/SOURCE/advec_ws.f90
- Timestamp:
- Jun 20, 2017 9:51:42 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/advec_ws.f90
r2233 r2292 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of new microphysic scheme: cloud_scheme = 'morrison' 28 ! includes two more prognostic equations for cloud drop concentration (nc) 29 ! and cloud water content (qc). 30 ! 31 ! 2233 2017-05-30 18:08:54Z suehring 27 32 ! 28 33 ! 2232 2017-05-30 17:47:52Z suehring … … 239 244 240 245 USE arrays_3d, & 241 ONLY: diss_l_e, diss_l_nr, diss_l_pt, diss_l_q, diss_l_qr, & 242 diss_l_s, diss_l_sa, diss_l_u, diss_l_v, diss_l_w, flux_l_e,& 243 flux_l_nr, flux_l_pt, flux_l_q, flux_l_qr, flux_l_s, & 244 flux_l_sa, flux_l_u, flux_l_v, flux_l_w, diss_s_e, diss_s_nr,& 245 diss_s_pt, diss_s_q, diss_s_qr, diss_s_s, diss_s_sa, & 246 diss_s_u, diss_s_v, diss_s_w, flux_s_e, flux_s_nr, flux_s_pt,& 247 flux_s_q, flux_s_qr, flux_s_s, flux_s_sa, flux_s_u, flux_s_v,& 248 flux_s_w 246 ONLY: diss_l_e, diss_l_nc, diss_l_nr, diss_l_pt, diss_l_q, & 247 diss_l_qc, diss_l_qr, diss_l_s, diss_l_sa, diss_l_u, & 248 diss_l_v, diss_l_w, flux_l_e, flux_l_nc, flux_l_nr, & 249 flux_l_pt, flux_l_q, flux_l_qc, flux_l_qr, flux_l_s, & 250 flux_l_sa, flux_l_u, flux_l_v, flux_l_w, diss_s_e, & 251 diss_s_nc, diss_s_nr, diss_s_pt, diss_s_q, diss_s_qc, & 252 diss_s_qr, diss_s_s, diss_s_sa, diss_s_u, diss_s_v, & 253 diss_s_w, flux_s_e, flux_s_nc, flux_s_nr, flux_s_pt, & 254 flux_s_q, flux_s_qc, flux_s_qr, flux_s_s, flux_s_sa, & 255 flux_s_u, flux_s_v, flux_s_w 249 256 250 257 USE constants, & … … 254 261 USE control_parameters, & 255 262 ONLY: cloud_physics, humidity, loop_optimization, & 256 passive_scalar, microphysics_ seifert,&263 passive_scalar, microphysics_morrison, microphysics_seifert, & 257 264 ocean, ws_scheme_mom, ws_scheme_sca 258 265 … … 265 272 266 273 USE statistics, & 267 ONLY: sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsnrs_ws_l,& 268 sums_wspts_ws_l, sums_wsqrs_ws_l, sums_wsqs_ws_l, & 269 sums_wsss_ws_l, sums_wssas_ws_l, sums_wsss_ws_l, & 270 sums_wsus_ws_l, sums_wsvs_ws_l 274 ONLY: sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsncs_ws_l,& 275 sums_wsnrs_ws_l,sums_wspts_ws_l, sums_wsqcs_ws_l, & 276 sums_wsqrs_ws_l, sums_wsqs_ws_l, sums_wsss_ws_l, & 277 sums_wssas_ws_l, sums_wsss_ws_l, sums_wsus_ws_l, & 278 sums_wsvs_ws_l 279 271 280 272 281 ! … … 309 318 ALLOCATE( sums_wsss_ws_l(nzb:nzt+1,0:threads_per_task-1) ) 310 319 sums_wsss_ws_l = 0.0_wp 320 ENDIF 321 322 IF ( cloud_physics .AND. microphysics_morrison ) THEN 323 ALLOCATE( sums_wsqcs_ws_l(nzb:nzt+1,0:threads_per_task-1) ) 324 ALLOCATE( sums_wsncs_ws_l(nzb:nzt+1,0:threads_per_task-1) ) 325 sums_wsqcs_ws_l = 0.0_wp 326 sums_wsncs_ws_l = 0.0_wp 311 327 ENDIF 312 328 … … 372 388 ALLOCATE( flux_l_s(nzb+1:nzt,nys:nyn,0:threads_per_task-1), & 373 389 diss_l_s(nzb+1:nzt,nys:nyn,0:threads_per_task-1) ) 374 ENDIF 390 ENDIF 391 392 IF ( cloud_physics .AND. microphysics_morrison ) THEN 393 ALLOCATE( flux_s_qc(nzb+1:nzt,0:threads_per_task-1), & 394 diss_s_qc(nzb+1:nzt,0:threads_per_task-1), & 395 flux_s_nc(nzb+1:nzt,0:threads_per_task-1), & 396 diss_s_nc(nzb+1:nzt,0:threads_per_task-1) ) 397 ALLOCATE( flux_l_qc(nzb+1:nzt,nys:nyn,0:threads_per_task-1), & 398 diss_l_qc(nzb+1:nzt,nys:nyn,0:threads_per_task-1), & 399 flux_l_nc(nzb+1:nzt,nys:nyn,0:threads_per_task-1), & 400 diss_l_nc(nzb+1:nzt,nys:nyn,0:threads_per_task-1) ) 401 ENDIF 375 402 376 403 IF ( cloud_physics .AND. microphysics_seifert ) THEN … … 1013 1040 USE control_parameters, & 1014 1041 ONLY: cloud_physics, humidity, passive_scalar, ocean, & 1015 microphysics_seifert, ws_scheme_mom, ws_scheme_sca 1042 microphysics_morrison, microphysics_seifert, ws_scheme_mom, & 1043 ws_scheme_sca 1016 1044 1017 1045 USE kinds 1018 1046 1019 1047 USE statistics, & 1020 ONLY: sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsnrs_ws_l,& 1021 sums_wspts_ws_l, sums_wsqrs_ws_l, sums_wsqs_ws_l, & 1022 sums_wsss_ws_l, sums_wssas_ws_l, sums_wsus_ws_l, & 1023 sums_wsvs_ws_l 1048 ONLY: sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsncs_ws_l,& 1049 sums_wsnrs_ws_l, sums_wspts_ws_l, sums_wsqcs_ws_l, & 1050 sums_wsqrs_ws_l, sums_wsqs_ws_l, sums_wsss_ws_l, & 1051 sums_wssas_ws_l, sums_wsus_ws_l, sums_wsvs_ws_l 1052 1024 1053 1025 1054 IMPLICIT NONE … … 1040 1069 IF ( humidity ) sums_wsqs_ws_l = 0.0_wp 1041 1070 IF ( passive_scalar ) sums_wsss_ws_l = 0.0_wp 1071 IF ( cloud_physics .AND. microphysics_morrison ) THEN 1072 sums_wsqcs_ws_l = 0.0_wp 1073 sums_wsncs_ws_l = 0.0_wp 1074 ENDIF 1042 1075 IF ( cloud_physics .AND. microphysics_seifert ) THEN 1043 1076 sums_wsqrs_ws_l = 0.0_wp … … 1081 1114 1082 1115 USE statistics, & 1083 ONLY: hom, sums_wsnrs_ws_l, sums_wspts_ws_l, sums_wsqrs_ws_l, & 1084 sums_wsqs_ws_l, sums_wssas_ws_l, sums_wsss_ws_l, & 1085 weight_substep 1116 ONLY: hom, sums_wsncs_ws_l, sums_wsnrs_ws_l, sums_wspts_ws_l, & 1117 sums_wsqcs_ws_l, sums_wsqrs_ws_l, sums_wsqs_ws_l, & 1118 sums_wssas_ws_l, sums_wsss_ws_l, weight_substep 1119 1086 1120 1087 1121 IMPLICIT NONE … … 1553 1587 ENDDO 1554 1588 1589 CASE ( 'qc' ) 1590 1591 DO k = nzb, nzt 1592 sums_wsqcs_ws_l(k,tn) = sums_wsqcs_ws_l(k,tn) + & 1593 ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) ) & 1594 * ( w(k,j,i) - hom(k,1,3,0) ) & 1595 + diss_t(k) / ( ABS(w(k,j,i)) + 1.0E-20_wp ) & 1596 * ABS( w(k,j,i) - hom(k,1,3,0) ) & 1597 ) * weight_substep(intermediate_timestep_count) 1598 ENDDO 1599 1600 1555 1601 CASE ( 'qr' ) 1556 1602 1557 1603 DO k = nzb, nzt 1558 1604 sums_wsqrs_ws_l(k,tn) = sums_wsqrs_ws_l(k,tn) + & 1605 ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) ) & 1606 * ( w(k,j,i) - hom(k,1,3,0) ) & 1607 + diss_t(k) / ( ABS(w(k,j,i)) + 1.0E-20_wp ) & 1608 * ABS( w(k,j,i) - hom(k,1,3,0) ) & 1609 ) * weight_substep(intermediate_timestep_count) 1610 ENDDO 1611 1612 CASE ( 'nc' ) 1613 1614 DO k = nzb, nzt 1615 sums_wsncs_ws_l(k,tn) = sums_wsncs_ws_l(k,tn) + & 1559 1616 ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) ) & 1560 1617 * ( w(k,j,i) - hom(k,1,3,0) ) & … … 3089 3146 USE statistics, & 3090 3147 ONLY: hom, sums_wspts_ws_l, sums_wsqs_ws_l, sums_wssas_ws_l, & 3091 sums_wsqrs_ws_l, sums_wsnrs_ws_l, sums_wsss_ws_l, & 3092 weight_substep 3148 sums_wsqcs_ws_l, sums_wsqrs_ws_l, sums_wsncs_ws_l, & 3149 sums_wsnrs_ws_l, sums_wsss_ws_l, weight_substep 3150 3151 3093 3152 3094 3153 IMPLICIT NONE … … 3550 3609 ) * weight_substep(intermediate_timestep_count) 3551 3610 ENDDO 3611 CASE ( 'qc' ) 3612 DO k = nzb, nzt 3613 sums_wsqcs_ws_l(k,tn) = sums_wsqcs_ws_l(k,tn) & 3614 + ( flux_t(k) & 3615 / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) ) & 3616 * ( w(k,j,i) - hom(k,1,3,0) ) & 3617 + diss_t(k) & 3618 / ( ABS(w(k,j,i)) + 1.0E-20_wp ) & 3619 * ABS(w(k,j,i) - hom(k,1,3,0) ) & 3620 ) * weight_substep(intermediate_timestep_count) 3621 ENDDO 3552 3622 CASE ( 'qr' ) 3553 3623 DO k = nzb, nzt 3554 3624 sums_wsqrs_ws_l(k,tn) = sums_wsqrs_ws_l(k,tn) & 3625 + ( flux_t(k) & 3626 / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) ) & 3627 * ( w(k,j,i) - hom(k,1,3,0) ) & 3628 + diss_t(k) & 3629 / ( ABS(w(k,j,i)) + 1.0E-20_wp ) & 3630 * ABS(w(k,j,i) - hom(k,1,3,0) ) & 3631 ) * weight_substep(intermediate_timestep_count) 3632 ENDDO 3633 CASE ( 'nc' ) 3634 DO k = nzb, nzt 3635 sums_wsncs_ws_l(k,tn) = sums_wsncs_ws_l(k,tn) & 3555 3636 + ( flux_t(k) & 3556 3637 / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) ) &
Note: See TracChangeset
for help on using the changeset viewer.