Changeset 1320 for palm/trunk/SOURCE/lpm_collision_kernels.f90
- Timestamp:
- Mar 20, 2014 8:40:49 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/lpm_collision_kernels.f90
r1319 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 ! revision history before 2012 removed, 26 ! comment fields (!:) to be used for variable explanations added to 27 ! all variable declaration statements 23 28 ! 24 29 ! Former revisions: 25 30 ! ----------------- 26 31 ! $Id$ 27 !28 ! 1318 2014-03-17 13:35:16Z raasch29 ! module interfaces removed30 32 ! 31 33 ! 1092 2013-02-02 11:24:22Z raasch … … 62 64 ! routine renamed from wang_kernel to lpm_collision_kernels, 63 65 ! turbulence_effects on collision replaced by wang_kernel 64 !65 ! 799 2011-12-21 17:48:03Z franke66 ! speed optimizations and formatting67 ! Bugfix: iq=1 is not allowed (routine effic)68 ! Bugfix: replaced stop by ec=0.0 in case of very small ec (routine effic)69 66 ! 70 67 ! 790 2011-11-29 03:11:20Z raasch … … 86 83 !------------------------------------------------------------------------------! 87 84 88 USE arrays_3d 89 USE cloud_parameters 90 USE constants 91 USE particle_attributes 85 USE constants, & 86 ONLY: pi 87 88 USE kinds 89 90 USE particle_attributes, & 91 ONLY: collision_kernel, dissipation_classes, particles, radius_classes 92 92 93 USE pegrid 93 94 … … 100 101 rclass_lbound, rclass_ubound, recalculate_kernel 101 102 102 REAL :: epsilon, eps2, rclass_lbound, rclass_ubound, urms, urms2 103 104 REAL, DIMENSION(:), ALLOCATABLE :: epsclass, radclass, winf 105 REAL, DIMENSION(:,:), ALLOCATABLE :: ec, ecf, gck, hkernel, hwratio 106 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ckernel 103 REAL(wp) :: epsilon !: 104 REAL(wp) :: eps2 !: 105 REAL(wp) :: rclass_lbound !: 106 REAL(wp) :: rclass_ubound !: 107 REAL(wp) :: urms !: 108 REAL(wp) :: urms2 !: 109 110 REAL(wp), DIMENSION(:), ALLOCATABLE :: epsclass !: 111 REAL(wp), DIMENSION(:), ALLOCATABLE :: radclass !: 112 REAL(wp), DIMENSION(:), ALLOCATABLE :: winf !: 113 114 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ec !: 115 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ecf !: 116 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: gck !: 117 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: hkernel !: 118 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: hwratio !: 119 120 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ckernel !: 107 121 108 122 SAVE … … 134 148 IMPLICIT NONE 135 149 136 INTEGER :: i, j, k 150 INTEGER(iwp) :: i !: 151 INTEGER(iwp) :: j !: 152 INTEGER(iwp) :: k !: 137 153 138 154 … … 262 278 SUBROUTINE recalculate_kernel( i1, j1, k1 ) 263 279 264 USE arrays_3d 265 USE cloud_parameters 266 USE constants 267 USE cpulog 268 USE indices 269 USE particle_attributes 280 USE arrays_3d, & 281 ONLY: diss 282 283 USE particle_attributes, & 284 ONLY: prt_count, prt_start_index, radius_classes, wang_kernel 270 285 271 286 IMPLICIT NONE 272 287 273 INTEGER :: i, i1, j, j1, k1, pend, pstart 288 INTEGER(iwp) :: i !: 289 INTEGER(iwp) :: i1 !: 290 INTEGER(iwp) :: j !: 291 INTEGER(iwp) :: j1 !: 292 INTEGER(iwp) :: k1 !: 293 INTEGER(iwp) :: pend !: 294 INTEGER(iwp) :: pstart !: 274 295 275 296 … … 340 361 SUBROUTINE turbsd 341 362 342 USE con stants343 USE cloud_parameters344 USE particle_attributes345 USE arrays_3d346 USE control_parameters363 USE control_parameters, & 364 ONLY: g, molecular_viscosity 365 366 USE particle_attributes, & 367 ONLY: radius_classes 347 368 348 369 IMPLICIT NONE 349 350 INTEGER :: i, j 351 352 LOGICAL, SAVE :: first = .TRUE. 353 354 REAL :: ao, ao_gr, bbb, be, b1, b2, ccc, c1, c1_gr, c2, d1, d2, eta, & 355 e1, e2, fao_gr, fr, grfin, lambda, lambda_re, lf, rc, rrp, & 356 sst, tauk, tl, t2, tt, t1, vk, vrms1xy, vrms2xy, v1, v1v2xy, & 357 v1xysq, v2, v2xysq, wrfin, wrgrav2, wrtur2xy, xx, yy, z 358 359 REAL, DIMENSION(1:radius_classes) :: st, tau 360 361 370 371 LOGICAL, SAVE :: first = .TRUE. !: 372 373 INTEGER(iwp) :: i !: 374 INTEGER(iwp) :: j !: 375 376 REAL(wp) :: ao !: 377 REAL(wp) :: ao_gr !: 378 REAL(wp) :: bbb !: 379 REAL(wp) :: be !: 380 REAL(wp) :: b1 !: 381 REAL(wp) :: b2 !: 382 REAL(wp) :: ccc !: 383 REAL(wp) :: c1 !: 384 REAL(wp) :: c1_gr !: 385 REAL(wp) :: c2 !: 386 REAL(wp) :: d1 !: 387 REAL(wp) :: d2 !: 388 REAL(wp) :: eta !: 389 REAL(wp) :: e1 !: 390 REAL(wp) :: e2 !: 391 REAL(wp) :: fao_gr !: 392 REAL(wp) :: fr !: 393 REAL(wp) :: grfin !: 394 REAL(wp) :: lambda !: 395 REAL(wp) :: lambda_re !: 396 REAL(wp) :: lf !: 397 REAL(wp) :: rc !: 398 REAL(wp) :: rrp !: 399 REAL(wp) :: sst !: 400 REAL(wp) :: tauk !: 401 REAL(wp) :: tl !: 402 REAL(wp) :: t2 !: 403 REAL(wp) :: tt !: 404 REAL(wp) :: t1 !: 405 REAL(wp) :: vk !: 406 REAL(wp) :: vrms1xy !: 407 REAL(wp) :: vrms2xy !: 408 REAL(wp) :: v1 !: 409 REAL(wp) :: v1v2xy !: 410 REAL(wp) :: v1xysq !: 411 REAL(wp) :: v2 !: 412 REAL(wp) :: v2xysq !: 413 REAL(wp) :: wrfin !: 414 REAL(wp) :: wrgrav2 !: 415 REAL(wp) :: wrtur2xy !: 416 REAL(wp) :: xx !: 417 REAL(wp) :: yy !: 418 REAL(wp) :: z !: 419 420 REAL(wp), DIMENSION(1:radius_classes) :: st !: 421 REAL(wp), DIMENSION(1:radius_classes) :: tau !: 422 362 423 ! 363 424 !-- Initial assignment of constants … … 478 539 ! phi_w as a function 479 540 !------------------------------------------------------------------------------! 480 REAL FUNCTION phi_w( a, b, vsett, tau0 )541 REAL(wp) FUNCTION phi_w( a, b, vsett, tau0 ) 481 542 482 543 IMPLICIT NONE 483 544 484 REAL :: a, aa1, b, tau0, vsett 545 REAL(wp) :: a !: 546 REAL(wp) :: aa1 !: 547 REAL(wp) :: b !: 548 REAL(wp) :: tau0 !: 549 REAL(wp) :: vsett !: 485 550 486 551 aa1 = 1.0 / tau0 + 1.0 / a + vsett / b … … 493 558 ! zhi as a function 494 559 !------------------------------------------------------------------------------! 495 REAL FUNCTION zhi( a, b, vsett1, tau1, vsett2, tau2 )560 REAL(wp) FUNCTION zhi( a, b, vsett1, tau1, vsett2, tau2 ) 496 561 497 562 IMPLICIT NONE 498 563 499 REAL :: a, aa1, aa2, aa3, aa4, aa5, aa6, b, tau1, tau2, vsett1, vsett2 564 REAL(wp) :: a !: 565 REAL(wp) :: aa1 !: 566 REAL(wp) :: aa2 !: 567 REAL(wp) :: aa3 !: 568 REAL(wp) :: aa4 !: 569 REAL(wp) :: aa5 !: 570 REAL(wp) :: aa6 !: 571 REAL(wp) :: b !: 572 REAL(wp) :: tau1 !: 573 REAL(wp) :: tau2 !: 574 REAL(wp) :: vsett1 !: 575 REAL(wp) :: vsett2 !: 500 576 501 577 aa1 = vsett2 / b - 1.0 / tau2 - 1.0 / a … … 518 594 !------------------------------------------------------------------------------! 519 595 SUBROUTINE fallg 520 521 USE constants 522 USE cloud_parameters 523 USE particle_attributes 524 USE arrays_3d 525 USE control_parameters 596 597 USE cloud_parameters, & 598 ONLY: rho_l 599 600 USE control_parameters, & 601 ONLY: g 602 603 USE particle_attributes, & 604 ONLY: radius_classes 605 526 606 527 607 IMPLICIT NONE 528 608 529 INTEGER :: i, j 530 531 LOGICAL, SAVE :: first = .TRUE. 532 533 REAL, SAVE :: cunh, eta, phy, py, rho_a, sigma, stb, stok, xlamb 534 535 REAL :: bond, x, xrey, y 536 537 REAL, DIMENSION(1:7), SAVE :: b 538 REAL, DIMENSION(1:6), SAVE :: c 609 INTEGER(iwp) :: i !: 610 INTEGER(iwp) :: j !: 611 612 LOGICAL, SAVE :: first = .TRUE. !: 613 614 REAL(wp), SAVE :: cunh !: 615 REAL(wp), SAVE :: eta !: 616 REAL(wp), SAVE :: phy !: 617 REAL(wp), SAVE :: py !: 618 REAL(wp), SAVE :: rho_a !: 619 REAL(wp), SAVE :: sigma !: 620 REAL(wp), SAVE :: stb !: 621 REAL(wp), SAVE :: stok !: 622 REAL(wp), SAVE :: xlamb !: 623 624 REAL(wp) :: bond !: 625 REAL(wp) :: x !: 626 REAL(wp) :: xrey !: 627 REAL(wp) :: y !: 628 629 REAL(wp), DIMENSION(1:7), SAVE :: b !: 630 REAL(wp), DIMENSION(1:6), SAVE :: c !: 539 631 540 632 ! … … 617 709 !------------------------------------------------------------------------------! 618 710 SUBROUTINE effic 619 620 USE arrays_3d 621 USE cloud_parameters 622 USE constants 623 USE particle_attributes 711 712 USE particle_attributes, & 713 ONLY: radius_classes 624 714 625 715 IMPLICIT NONE 626 716 627 INTEGER :: i, iq, ir, j, k 628 629 INTEGER, DIMENSION(:), ALLOCATABLE :: ira 630 631 LOGICAL, SAVE :: first = .TRUE. 632 633 REAL :: ek, particle_radius, pp, qq, rq 634 635 REAL, DIMENSION(1:21), SAVE :: rat 636 REAL, DIMENSION(1:15), SAVE :: r0 637 REAL, DIMENSION(1:15,1:21), SAVE :: ecoll 717 INTEGER(iwp) :: i !: 718 INTEGER(iwp) :: iq !: 719 INTEGER(iwp) :: ir !: 720 INTEGER(iwp) :: j !: 721 INTEGER(iwp) :: k !: 722 723 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: ira !: 724 725 LOGICAL, SAVE :: first = .TRUE. !: 726 727 REAL(wp) :: ek !: 728 REAL(wp) :: particle_radius !: 729 REAL(wp) :: pp !: 730 REAL(wp) :: qq !: 731 REAL(wp) :: rq !: 732 733 REAL(wp), DIMENSION(1:21), SAVE :: rat !: 734 735 REAL(wp), DIMENSION(1:15), SAVE :: r0 !: 736 737 REAL(wp), DIMENSION(1:15,1:21), SAVE :: ecoll !: 638 738 639 739 ! … … 754 854 SUBROUTINE turb_enhance_eff 755 855 756 USE constants 757 USE cloud_parameters 758 USE particle_attributes 759 USE arrays_3d 856 USE particle_attributes, & 857 ONLY: radius_classes 760 858 761 859 IMPLICIT NONE 762 860 763 INTEGER :: i, iq, ir, j, k, kk 764 765 INTEGER, DIMENSION(:), ALLOCATABLE :: ira 766 767 REAL :: particle_radius, pp, qq, rq, y1, y2, y3 768 769 LOGICAL, SAVE :: first = .TRUE. 770 771 REAL, DIMENSION(1:11), SAVE :: rat 772 REAL, DIMENSION(1:7), SAVE :: r0 773 REAL, DIMENSION(1:7,1:11), SAVE :: ecoll_100, ecoll_400 861 INTEGER(iwp) :: i !: 862 INTEGER(iwp) :: iq !: 863 INTEGER(iwp) :: ir !: 864 INTEGER(iwp) :: j !: 865 INTEGER(iwp) :: k !: 866 INTEGER(iwp) :: kk !: 867 868 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: ira !: 869 870 LOGICAL, SAVE :: first = .TRUE. !: 871 872 REAL(wp) :: particle_radius !: 873 REAL(wp) :: pp !: 874 REAL(wp) :: qq !: 875 REAL(wp) :: rq !: 876 REAL(wp) :: y1 !: 877 REAL(wp) :: y2 !: 878 REAL(wp) :: y3 !: 879 880 REAL(wp), DIMENSION(1:11), SAVE :: rat !: 881 882 REAL(wp), DIMENSION(1:7), SAVE :: r0 !: 883 884 REAL(wp), DIMENSION(1:7,1:11), SAVE :: ecoll_100 !: 885 REAL(wp), DIMENSION(1:7,1:11), SAVE :: ecoll_400 !: 774 886 775 887 ! … … 898 1010 IMPLICIT NONE 899 1011 900 INTEGER :: i, j, k 901 902 LOGICAL, SAVE :: first = .TRUE. 903 904 REAL :: aa, bb, cc, dd, dx, dy, e, gg, mean_r, mean_rm, r, & 905 rm, x, y 906 907 REAL, DIMENSION(1:9), SAVE :: collected_r = 0.0 908 REAL, DIMENSION(1:19), SAVE :: collector_r = 0.0 909 REAL, DIMENSION(1:9,1:19), SAVE :: ef = 0.0 1012 INTEGER(iwp) :: i !: 1013 INTEGER(iwp) :: j !: 1014 INTEGER(iwp) :: k !: 1015 1016 LOGICAL, SAVE :: first = .TRUE. !: 1017 1018 REAL(wp) :: aa !: 1019 REAL(wp) :: bb !: 1020 REAL(wp) :: cc !: 1021 REAL(wp) :: dd !: 1022 REAL(wp) :: dx !: 1023 REAL(wp) :: dy !: 1024 REAL(wp) :: e !: 1025 REAL(wp) :: gg !: 1026 REAL(wp) :: mean_r !: 1027 REAL(wp) :: mean_rm !: 1028 REAL(wp) :: r !: 1029 REAL(wp) :: rm !: 1030 REAL(wp) :: x !: 1031 REAL(wp) :: y !: 1032 1033 REAL(wp), DIMENSION(1:9), SAVE :: collected_r = 0.0 !: 1034 1035 REAL(wp), DIMENSION(1:19), SAVE :: collector_r = 0.0 !: 1036 1037 REAL(wp), DIMENSION(1:9,1:19), SAVE :: ef = 0.0 !: 910 1038 911 1039 mean_rm = mean_r * 1.0E06
Note: See TracChangeset
for help on using the changeset viewer.