Changeset 1320 for palm/trunk/SOURCE/microphysics.f90
- Timestamp:
- Mar 20, 2014 8:40:49 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/microphysics.f90
r1310 r1320 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! ONLY-attribute added to USE-statements, 23 ! kind-parameters added to all INTEGER and REAL declaration statements, 24 ! kinds are defined in new module kinds, 25 ! comment fields (!:) to be used for variable explanations added to 26 ! all variable declaration statements 23 27 ! 24 28 ! Former revisions: … … 111 115 USE grid_variables 112 116 USE indices 117 USE kinds 113 118 USE statistics 114 119 115 120 IMPLICIT NONE 116 121 117 INTEGER :: i, j, k 118 122 INTEGER(iwp) :: i !: 123 INTEGER(iwp) :: j !: 124 INTEGER(iwp) :: k !: 119 125 120 126 DO i = nxl, nxr … … 133 139 USE cloud_parameters 134 140 USE indices 135 136 IMPLICIT NONE 137 138 INTEGER :: i, j, k 141 USE kinds 142 143 IMPLICIT NONE 144 145 INTEGER(iwp) :: i !: 146 INTEGER(iwp) :: j !: 147 INTEGER(iwp) :: k !: 139 148 140 149 … … 157 166 USE grid_variables 158 167 USE indices 159 160 IMPLICIT NONE 161 162 INTEGER :: i, j, k 163 164 168 USE kinds 169 170 IMPLICIT NONE 171 172 INTEGER(iwp) :: i !: 173 INTEGER(iwp) :: j !: 174 INTEGER(iwp) :: k !: 175 165 176 DO i = nxl, nxr 166 177 DO j = nys, nyn … … 180 191 USE control_parameters 181 192 USE indices 182 183 IMPLICIT NONE 184 185 INTEGER :: i, j, k 186 187 193 USE kinds 194 195 IMPLICIT NONE 196 197 INTEGER(iwp) :: i !: 198 INTEGER(iwp) :: j !: 199 INTEGER(iwp) :: k !: 200 188 201 DO i = nxl, nxr 189 202 DO j = nys, nyn … … 203 216 USE control_parameters 204 217 USE indices 205 206 IMPLICIT NONE 207 208 INTEGER :: i, j, k 218 USE kinds 219 220 IMPLICIT NONE 221 222 INTEGER(iwp) :: i !: 223 INTEGER(iwp) :: j !: 224 INTEGER(iwp) :: k !: 209 225 210 226 … … 227 243 USE control_parameters 228 244 USE indices 229 230 IMPLICIT NONE 231 232 INTEGER :: i, j, k 233 245 USE kinds 246 247 IMPLICIT NONE 248 249 INTEGER(iwp) :: i !: 250 INTEGER(iwp) :: j !: 251 INTEGER(iwp) :: k !: 234 252 235 253 DO i = nxl, nxr … … 251 269 USE control_parameters 252 270 USE indices 253 254 IMPLICIT NONE 255 256 INTEGER :: i, j, k 257 271 USE kinds 272 273 IMPLICIT NONE 274 275 INTEGER(iwp) :: i !: 276 INTEGER(iwp) :: j !: 277 INTEGER(iwp) :: k !: 258 278 259 279 DO i = nxl, nxr … … 275 295 USE control_parameters 276 296 USE indices 297 USE kinds 277 298 USE statistics 278 299 279 300 IMPLICIT NONE 280 301 281 INTEGER :: i, j, k 282 302 INTEGER(iwp) :: i !: 303 INTEGER(iwp) :: j !: 304 INTEGER(iwp) :: k !: 283 305 284 306 DO i = nxl, nxr … … 299 321 SUBROUTINE microphysics_control_ij( i, j ) 300 322 301 USE arrays_3d 302 USE cloud_parameters 303 USE control_parameters 304 USE grid_variables 305 USE indices 306 USE statistics 307 308 IMPLICIT NONE 309 310 INTEGER :: i, j, k 311 REAL :: t_surface 323 USE arrays_3d, & 324 ONLY: hyp, nc_1d, nr, nr_1d, pt, pt_init, pt_1d, q, q_1d, qc, & 325 qc_1d, qr, qr_1d, tend_nr, tend_pt, tend_q, tend_qr, zu 326 327 USE cloud_parameters, & 328 ONLY: cp, hyrho, nc_const, pt_d_t, r_d, t_d_pt 329 330 USE control_parameters, & 331 ONLY: drizzle, dt_3d, dt_micro, g, intermediate_timestep_count, & 332 large_scale_forcing, lsf_surf, precipitation, pt_surface, & 333 rho_surface,surface_pressure 334 335 USE indices, & 336 ONLY: nzb, nzt 337 338 USE kinds 339 340 USE statistics, & 341 ONLY: weight_pres 342 343 IMPLICIT NONE 344 345 INTEGER(iwp) :: i !: 346 INTEGER(iwp) :: j !: 347 INTEGER(iwp) :: k !: 348 349 REAL(wp) :: t_surface !: 312 350 313 351 IF ( large_scale_forcing .AND. lsf_surf ) THEN … … 369 407 SUBROUTINE adjust_cloud_ij( i, j ) 370 408 371 USE arrays_3d 372 USE cloud_parameters 373 USE indices 374 375 IMPLICIT NONE 376 377 INTEGER :: i, j, k 409 USE arrays_3d, & 410 ONLY: qr, nr 411 412 USE cloud_parameters, & 413 ONLY: eps_sb, xrmin, xrmax, hyrho, k_cc, x0 414 415 USE indices, & 416 ONLY: nzb, nzb_s_inner, nzt 417 418 USE kinds 419 420 IMPLICIT NONE 421 422 INTEGER(iwp) :: i !: 423 INTEGER(iwp) :: j !: 424 INTEGER(iwp) :: k !: 378 425 ! 379 426 !-- Adjust number of raindrops to avoid nonlinear effects in … … 407 454 SUBROUTINE autoconversion_ij( i, j ) 408 455 409 USE arrays_3d 410 USE cloud_parameters 411 USE control_parameters 412 USE grid_variables 413 USE indices 414 415 IMPLICIT NONE 416 417 INTEGER :: i, j, k 418 REAL :: alpha_cc, autocon, epsilon, k_au, l_mix, nu_c, phi_au, & 419 r_cc, rc, re_lambda, selfcoll, sigma_cc, tau_cloud, xc 420 456 USE arrays_3d, & 457 ONLY: diss, dzu, nc_1d, nr_1d, qc_1d, qr_1d 458 459 USE cloud_parameters, & 460 ONLY: a_1, a_2, a_3, b_1, b_2, b_3, beta_cc, c_1, c_2, c_3, & 461 c_const, dpirho_l, eps_sb, hyrho, k_cc, kin_vis_air, x0 462 463 USE control_parameters, & 464 ONLY: dt_micro, rho_surface, turbulence 465 466 USE grid_variables, & 467 ONLY: dx, dy 468 469 USE indices, & 470 ONLY: nzb, nzb_s_inner, nzt 471 472 USE kinds 473 474 IMPLICIT NONE 475 476 INTEGER(iwp) :: i !: 477 INTEGER(iwp) :: j !: 478 INTEGER(iwp) :: k !: 479 480 REAL(wp) :: alpha_cc !: 481 REAL(wp) :: autocon !: 482 REAL(wp) :: epsilon !: 483 REAL(wp) :: k_au !: 484 REAL(wp) :: l_mix !: 485 REAL(wp) :: nu_c !: 486 REAL(wp) :: phi_au !: 487 REAL(wp) :: r_cc !: 488 REAL(wp) :: rc !: 489 REAL(wp) :: re_lambda !: 490 REAL(wp) :: selfcoll !: 491 REAL(wp) :: sigma_cc !: 492 REAL(wp) :: tau_cloud !: 493 REAL(wp) :: xc !: 421 494 422 495 k_au = k_cc / ( 20.0 * x0 ) … … 491 564 SUBROUTINE accretion_ij( i, j ) 492 565 493 USE arrays_3d 494 USE cloud_parameters 495 USE control_parameters 496 USE indices 497 498 IMPLICIT NONE 499 500 INTEGER :: i, j, k 501 REAL :: accr, k_cr, phi_ac, tau_cloud, xc 566 USE arrays_3d, & 567 ONLY: diss, qc_1d, qr_1d 568 569 USE cloud_parameters, & 570 ONLY: eps_sb, hyrho, k_cr0 571 572 USE control_parameters, & 573 ONLY: dt_micro, rho_surface, turbulence 574 575 USE indices, & 576 ONLY: nzb, nzb_s_inner, nzt 577 578 USE kinds 579 580 IMPLICIT NONE 581 582 INTEGER(iwp) :: i !: 583 INTEGER(iwp) :: j !: 584 INTEGER(iwp) :: k !: 585 586 REAL(wp) :: accr !: 587 REAL(wp) :: k_cr !: 588 REAL(wp) :: phi_ac !: 589 REAL(wp) :: tau_cloud !: 590 REAL(wp) :: xc !: 502 591 503 592 DO k = nzb_s_inner(j,i)+1, nzt … … 539 628 SUBROUTINE selfcollection_breakup_ij( i, j ) 540 629 541 USE arrays_3d 542 USE cloud_parameters 543 USE control_parameters 544 USE indices 630 USE arrays_3d, & 631 ONLY: nr_1d, qr_1d 632 633 USE cloud_parameters, & 634 ONLY: dpirho_l, eps_sb, hyrho, k_br, k_rr 635 636 USE control_parameters, & 637 ONLY: dt_micro, rho_surface 638 639 USE indices, & 640 ONLY: nzb, nzb_s_inner, nzt 641 642 USE kinds 545 643 546 644 IMPLICIT NONE 547 645 548 INTEGER :: i, j, k 549 REAL :: breakup, dr, phi_br, selfcoll 646 INTEGER(iwp) :: i !: 647 INTEGER(iwp) :: j !: 648 INTEGER(iwp) :: k !: 649 650 REAL(wp) :: breakup !: 651 REAL(wp) :: dr !: 652 REAL(wp) :: phi_br !: 653 REAL(wp) :: selfcoll !: 550 654 551 655 DO k = nzb_s_inner(j,i)+1, nzt … … 581 685 !-- precipitable water. 582 686 583 USE arrays_3d 584 USE cloud_parameters 585 USE constants 586 USE control_parameters 587 USE indices 588 589 IMPLICIT NONE 590 591 INTEGER :: i, j, k 592 REAL :: alpha, dr, e_s, evap, evap_nr, f_vent, g_evap, lambda_r, & 593 mu_r, mu_r_2, mu_r_5d2, nr_0, q_s, sat, t_l, temp, xr 687 USE arrays_3d, & 688 ONLY: hyp, nr_1d, pt_1d, q_1d, qc_1d, qr_1d 689 690 USE cloud_parameters, & 691 ONLY: a_term, a_vent, b_term, b_vent, c_evap, c_term, diff_coeff_l,& 692 dpirho_l, eps_sb, hyrho, kin_vis_air, k_st, l_d_cp, l_d_r, & 693 l_v, rho_l, r_v, schmidt_p_1d3, thermal_conductivity_l, & 694 t_d_pt, ventilation_effect 695 696 USE constants, & 697 ONLY: pi 698 699 USE control_parameters, & 700 ONLY: dt_micro 701 702 USE indices, & 703 ONLY: nzb, nzb_s_inner, nzt 704 705 USE kinds 706 707 IMPLICIT NONE 708 709 INTEGER(iwp) :: i !: 710 INTEGER(iwp) :: j !: 711 INTEGER(iwp) :: k !: 712 713 REAL(wp) :: alpha !: 714 REAL(wp) :: dr !: 715 REAL(wp) :: e_s !: 716 REAL(wp) :: evap !: 717 REAL(wp) :: evap_nr !: 718 REAL(wp) :: f_vent !: 719 REAL(wp) :: g_evap !: 720 REAL(wp) :: lambda_r !: 721 REAL(wp) :: mu_r !: 722 REAL(wp) :: mu_r_2 !: 723 REAL(wp) :: mu_r_5d2 !: 724 REAL(wp) :: nr_0 !: 725 REAL(wp) :: q_s !: 726 REAL(wp) :: sat !: 727 REAL(wp) :: t_l !: 728 REAL(wp) :: temp !: 729 REAL(wp) :: xr !: 594 730 595 731 DO k = nzb_s_inner(j,i)+1, nzt … … 680 816 SUBROUTINE sedimentation_cloud_ij( i, j ) 681 817 682 USE arrays_3d 683 USE cloud_parameters 684 USE constants 685 USE control_parameters 686 USE indices 818 USE arrays_3d, & 819 ONLY: ddzu, dzu, nc_1d, pt_1d, q_1d, qc_1d 820 821 USE cloud_parameters, & 822 ONLY: eps_sb, hyrho, k_st, l_d_cp, prr, pt_d_t, rho_l, sigma_gc 823 824 USE constants, & 825 ONLY: pi 826 827 USE control_parameters, & 828 ONLY: dt_do2d_xy, dt_micro, intermediate_timestep_count 829 830 USE indices, & 831 ONLY: nzb, nzb_s_inner, nzt 832 833 USE kinds 687 834 688 835 IMPLICIT NONE 689 836 690 INTEGER :: i, j, k 691 REAL :: sed_qc_const 692 693 REAL, DIMENSION(nzb:nzt+1) :: sed_qc 837 INTEGER(iwp) :: i !: 838 INTEGER(iwp) :: j !: 839 INTEGER(iwp) :: k !: 840 841 REAL(wp) :: sed_qc_const !: 842 843 844 REAL(wp), DIMENSION(nzb:nzt+1) :: sed_qc 694 845 695 846 ! … … 725 876 SUBROUTINE sedimentation_rain_ij( i, j ) 726 877 727 USE arrays_3d 728 USE cloud_parameters 729 USE constants 730 USE control_parameters 731 USE indices 732 USE statistics 878 USE arrays_3d, & 879 ONLY: ddzu, dzu, nr_1d, pt_1d, q_1d, qr_1d 880 881 USE cloud_parameters, & 882 ONLY: a_term, b_term, c_term, cof, dpirho_l, eps_sb, hyrho, & 883 limiter_sedimentation, l_d_cp, precipitation_amount, prr, & 884 pt_d_t, stp 885 886 USE control_parameters, & 887 ONLY: dt_do2d_xy, dt_micro, dt_3d, intermediate_timestep_count, & 888 intermediate_timestep_count_max, & 889 precipitation_amount_interval, time_do2d_xy 890 891 USE indices, & 892 ONLY: nzb, nzb_s_inner, nzt 893 894 USE kinds 895 896 USE statistics, & 897 ONLY: weight_substep 733 898 734 899 IMPLICIT NONE 735 900 736 INTEGER :: i, j, k, k_run 737 REAL :: c_run, d_max, d_mean, d_min, dr, dt_sedi, flux, lambda_r, & 738 mu_r, z_run 739 740 REAL, DIMENSION(nzb:nzt+1) :: c_nr, c_qr, d_nr, d_qr, nr_slope, & 741 qr_slope, sed_nr, sed_qr, w_nr, w_qr 901 INTEGER(iwp) :: i !: 902 INTEGER(iwp) :: j !: 903 INTEGER(iwp) :: k !: 904 INTEGER(iwp) :: k_run !: 905 906 REAL(wp) :: c_run !: 907 REAL(wp) :: d_max !: 908 REAL(wp) :: d_mean !: 909 REAL(wp) :: d_min !: 910 REAL(wp) :: dr !: 911 REAL(wp) :: dt_sedi !: 912 REAL(wp) :: flux !: 913 REAL(wp) :: lambda_r !: 914 REAL(wp) :: mu_r !: 915 REAL(wp) :: z_run !: 916 917 REAL(wp), DIMENSION(nzb:nzt+1) :: c_nr !: 918 REAL(wp), DIMENSION(nzb:nzt+1) :: c_qr !: 919 REAL(wp), DIMENSION(nzb:nzt+1) :: d_nr !: 920 REAL(wp), DIMENSION(nzb:nzt+1) :: d_qr !: 921 REAL(wp), DIMENSION(nzb:nzt+1) :: nr_slope !: 922 REAL(wp), DIMENSION(nzb:nzt+1) :: qr_slope !: 923 REAL(wp), DIMENSION(nzb:nzt+1) :: sed_nr !: 924 REAL(wp), DIMENSION(nzb:nzt+1) :: sed_qr !: 925 REAL(wp), DIMENSION(nzb:nzt+1) :: w_nr !: 926 REAL(wp), DIMENSION(nzb:nzt+1) :: w_qr !: 927 928 742 929 ! 743 930 !-- Computation of sedimentation flux. Implementation according to Stevens … … 896 1083 FUNCTION gamm( xx ) 897 1084 898 USE cloud_parameters 899 1085 USE cloud_parameters, & 1086 ONLY: cof, stp 1087 1088 USE kinds 1089 900 1090 IMPLICIT NONE 901 902 REAL :: gamm, ser, tmp, x_gamm, xx, y_gamm 903 INTEGER :: j 904 905 1091 1092 INTEGER(iwp) :: j !: 1093 1094 REAL(wp) :: gamm !: 1095 REAL(wp) :: ser !: 1096 REAL(wp) :: tmp !: 1097 REAL(wp) :: x_gamm !: 1098 REAL(wp) :: xx !: 1099 REAL(wp) :: y_gamm !: 1100 906 1101 x_gamm = xx 907 1102 y_gamm = x_gamm
Note: See TracChangeset
for help on using the changeset viewer.