Changeset 3550 for palm/trunk/SOURCE/turbulence_closure_mod.f90
 Timestamp:
 Nov 21, 2018 4:01:01 PM (3 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

palm/trunk/SOURCE/turbulence_closure_mod.f90
r3545 r3550 25 25 !  26 26 ! $Id$ 27 !  calculate diss production same in vector and cache optimization 28 !  move boundary condition for e and diss to boundary_conds 29 ! 30 ! 3545 20181121 11:19:41Z gronemeier 27 31 !  Set rans_mode according to value of turbulence_closure 28 32 !  removed debug output … … 1937 1941 REAL(wp) :: sbt !< wheighting factor for subtime step 1938 1942 1939 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: advec !< advection term of TKE tendency1940 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: produc !< production term of TKE tendency1941 1942 1943 ! 1943 1944 ! If required, compute prognostic equation for turbulent kinetic … … 1982 1983 ENDIF 1983 1984 1984 IF ( rans_tke_e ) advec = tend1985 1986 1985 CALL production_e( .FALSE. ) 1987 1988 !1989 ! Save production term for prognostic equation of TKE dissipation rate1990 IF ( rans_tke_e ) produc = tend  advec1991 1986 1992 1987 IF ( .NOT. humidity ) THEN … … 2024 2019 ENDDO 2025 2020 ENDDO 2026 2027 !2028 ! Use special boundary condition in case of TKEe closure2029 !> @todo do the same for usm and lsm surfaces2030 !> 20180605, gronemeier2031 IF ( rans_tke_e ) THEN2032 DO i = nxl, nxr2033 DO j = nys, nyn2034 surf_s = surf_def_h(0)%start_index(j,i)2035 surf_e = surf_def_h(0)%end_index(j,i)2036 DO m = surf_s, surf_e2037 k = surf_def_h(0)%k(m)2038 e_p(k,j,i) = surf_def_h(0)%us(m)**2 / c_0**22039 ENDDO2040 ENDDO2041 ENDDO2042 ENDIF2043 2021 2044 2022 ! … … 2110 2088 ENDIF 2111 2089 ENDIF 2112 2113 2090 ! 2114 2091 ! Production of TKE dissipation rate 2115 DO i = nxl, nxr 2116 DO j = nys, nyn 2117 DO k = nzb+1, nzt 2118 ! tend(k,j,i) = tend(k,j,i) + c_1 * diss(k,j,i) / ( e(k,j,i) + 1.0E20_wp ) * produc(k) 2119 tend(k,j,i) = tend(k,j,i) + c_1 * c_0**4 * f / c_4 & !> @todo needs revision 2120 / surf_def_h(0)%us(surf_def_h(0)%start_index(j,i)) & 2121 * SQRT(e(k,j,i)) * produc(k,j,i) 2122 ENDDO 2123 ENDDO 2124 ENDDO 2125 2092 CALL production_e( .TRUE. ) 2093 ! 2094 ! Diffusion term of TKE dissipation rate 2126 2095 CALL diffusion_diss 2127 2128 2096 ! 2129 2097 ! Additional sink term for flows through plant canopies 2130 ! IF ( plant_canopy ) CALL pcm_tendency( ? ) !> @query what to do with this?2131 2132 ! CALL user_actions( 'disstendency' ) 2098 ! IF ( plant_canopy ) CALL pcm_tendency( ? ) !> @todo not yet implemented 2099 2100 ! CALL user_actions( 'disstendency' ) !> @todo not yet implemented 2133 2101 2134 2102 ! … … 2148 2116 IF ( diss_p(k,j,i) < 0.0_wp ) & 2149 2117 diss_p(k,j,i) = 0.1_wp * diss(k,j,i) 2150 ENDDO2151 ENDDO2152 ENDDO2153 2154 !2155 ! Use special boundary condition in case of TKEe closure2156 DO i = nxl, nxr2157 DO j = nys, nyn2158 surf_s = surf_def_h(0)%start_index(j,i)2159 surf_e = surf_def_h(0)%end_index(j,i)2160 DO m = surf_s, surf_e2161 k = surf_def_h(0)%k(m)2162 diss_p(k,j,i) = surf_def_h(0)%us(m)**3 / kappa * ddzu(k)2163 2118 ENDDO 2164 2119 ENDDO … … 2315 2270 ! 2316 2271 ! Additional sink term for flows through plant canopies 2317 ! IF ( plant_canopy ) CALL pcm_tendency( i, j, ? ) 2318 2319 ! CALL user_actions( i, j, 'disstendency' ) 2272 ! IF ( plant_canopy ) CALL pcm_tendency( i, j, ? ) !> @todo not yet implemented 2273 2274 ! CALL user_actions( i, j, 'disstendency' ) !> @todo not yet implemented 2320 2275 2321 2276 ! … … 2361 2316 !> @warning The case with constant_flux_layer = F and use_surface_fluxes = T is 2362 2317 !> not considered well! 2363 !> @todo Adjust production term in case of rans_tke_e simulation2364 2318 !! 2365 2319 SUBROUTINE production_e( diss_production ) … … 2645 2599 IF ( .NOT. diss_production ) THEN 2646 2600 2647 ! Compute te mdency for TKEproduction from shear2601 ! Compute tendency for TKEproduction from shear 2648 2602 tend(k,j,i) = tend(k,j,i) + km(k,j,i) * def * flag 2649 2603 2650 2604 ELSE 2651 2605 2652 ! RANS mode: Compute te mdency for dissipationrateproduction from shear2606 ! RANS mode: Compute tendency for dissipationrateproduction from shear 2653 2607 tend(k,j,i) = tend(k,j,i) + km(k,j,i) * def * flag * & 2654 2608 diss(k,j,i)/( e(k,j,i) + 1.0E20_wp ) * c_1 … … 2703 2657 IF ( .NOT. diss_production ) THEN 2704 2658 2705 ! Compute te mdency for TKEproduction from shear2659 ! Compute tendency for TKEproduction from shear 2706 2660 DO k = nzb+1, nzt 2707 2661 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 2713 2667 ELSE 2714 2668 2715 ! RANS mode: Compute te mdency for dissipationrateproduction from shear2669 ! RANS mode: Compute tendency for dissipationrateproduction from shear 2716 2670 DO k = nzb+1, nzt 2717 2671 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 2777 2731 IF ( .NOT. diss_production ) THEN 2778 2732 2779 ! Compute te mdency for TKEproduction from shear2733 ! Compute tendency for TKEproduction from shear 2780 2734 DO k = nzb+1, nzt 2781 2735 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 2787 2741 ELSE 2788 2742 2789 ! RANS mode: Compute te mdency for dissipationrateproduction from shear2743 ! RANS mode: Compute tendency for dissipationrateproduction from shear 2790 2744 DO k = nzb+1, nzt 2791 2745 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 2992 2946 IF ( .NOT. diss_production ) THEN 2993 2947 2994 ! Compute te mdency for TKEproduction from shear2948 ! Compute tendency for TKEproduction from shear 2995 2949 DO k = nzb+1, nzt 2996 2950 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 3002 2956 ELSE 3003 2957 3004 ! RANS mode: Compute te mdency for dissipationrateproduction from shear2958 ! RANS mode: Compute tendency for dissipationrateproduction from shear 3005 2959 DO k = nzb+1, nzt 3006 2960 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 3031 2985 !> @warning The case with constant_flux_layer = F and use_surface_fluxes = T is 3032 2986 !> not considered well! 3033 !> @todo nonneutral case is not yet considered for RANS mode3034 2987 !! 3035 2988 SUBROUTINE production_e_ij( i, j, diss_production ) … … 3313 3266 ELSE 3314 3267 3315 ! RANS mode: Compute te mdency for dissipationrateproduction from shear3268 ! RANS mode: Compute tendency for dissipationrateproduction from shear 3316 3269 tend(k,j,i) = tend(k,j,i) + km(k,j,i) * def * flag * & 3317 3270 diss(k,j,i)/( e(k,j,i) + 1.0E20_wp ) * c_1 … … 3359 3312 IF ( .NOT. diss_production ) THEN 3360 3313 3361 ! Compute te mdency for TKEproduction from shear3314 ! Compute tendency for TKEproduction from shear 3362 3315 DO k = nzb+1, nzt 3363 3316 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 3369 3322 ELSE 3370 3323 3371 ! RANS mode: Compute te mdency for dissipationrateproduction from shear3324 ! RANS mode: Compute tendency for dissipationrateproduction from shear 3372 3325 DO k = nzb+1, nzt 3373 3326 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 3428 3381 IF ( .NOT. diss_production ) THEN 3429 3382 3430 ! Compute te mdency for TKEproduction from shear3383 ! Compute tendency for TKEproduction from shear 3431 3384 DO k = nzb+1, nzt 3432 3385 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 3438 3391 ELSE 3439 3392 3440 ! RANS mode: Compute te mdency for dissipationrateproduction from shear3393 ! RANS mode: Compute tendency for dissipationrateproduction from shear 3441 3394 DO k = nzb+1, nzt 3442 3395 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 3637 3590 IF ( .NOT. diss_production ) THEN 3638 3591 3639 ! Compute te mdency for TKEproduction from shear3592 ! Compute tendency for TKEproduction from shear 3640 3593 DO k = nzb+1, nzt 3641 3594 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) ) … … 3647 3600 ELSE 3648 3601 3649 ! RANS mode: Compute te mdency for dissipationrateproduction from shear3602 ! RANS mode: Compute tendency for dissipationrateproduction from shear 3650 3603 DO k = nzb+1, nzt 3651 3604 flag = MERGE( 1.0_wp, 0.0_wp, BTEST(wall_flags_0(k,j,i),0) )
Note: See TracChangeset
for help on using the changeset viewer.