Changeset 4268 for palm/trunk/SOURCE/bulk_cloud_model_mod.f90
 Timestamp:
 Oct 17, 2019 11:29:38 AM (2 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

palm/trunk/SOURCE/bulk_cloud_model_mod.f90
r4182 r4268 25 25 !  26 26 ! $Id$ 27 ! Introducing bcm_boundary_conditions 28 ! 29 ! 4182 20190822 15:20:23Z scharf 27 30 ! Corrected "Former revisions" section 28 31 ! … … 114 117 bc_radiation_n, & 115 118 bc_radiation_r, & 116 bc_radiation_s, & 119 bc_radiation_s, & 117 120 debug_output, & 118 121 dt_3d, dt_do2d_xy, intermediate_timestep_count, & … … 247 250 bcm_exchange_horiz, & 248 251 bcm_prognostic_equations, & 252 bcm_boundary_conditions, & 249 253 bcm_3d_data_averaging, & 250 254 bcm_data_output_2d, & … … 313 317 INTERFACE bcm_exchange_horiz 314 318 MODULE PROCEDURE bcm_exchange_horiz 315 END INTERFACE bcm_exchange_horiz 319 END INTERFACE bcm_exchange_horiz 316 320 317 321 INTERFACE bcm_prognostic_equations … … 319 323 MODULE PROCEDURE bcm_prognostic_equations_ij 320 324 END INTERFACE bcm_prognostic_equations 325 326 INTERFACE bcm_boundary_conditions 327 MODULE PROCEDURE bcm_boundary_conditions 328 END INTERFACE bcm_boundary_conditions 321 329 322 330 INTERFACE bcm_swap_timelevel … … 2014 2022 2015 2023 !! 2024 ! Description: Boundary conditions of the bulk cloud module variables 2025 !! 2026 SUBROUTINE bcm_boundary_conditions 2027 2028 IMPLICIT NONE 2029 2030 INTEGER(iwp) :: i !< 2031 INTEGER(iwp) :: j !< 2032 INTEGER(iwp) :: k !< 2033 INTEGER(iwp) :: m !< 2034 INTEGER(iwp) :: l !< 2035 2036 IF ( microphysics_morrison ) THEN 2037 ! 2038 ! Surface conditions cloud water (Dirichlet) 2039 ! Run loop over all nonnatural and natural walls. Note, in walldatatype 2040 ! the k coordinate belongs to the atmospheric grid point, therefore, set 2041 ! qr_p and nr_p at upward (k1) and downwardfacing (k+1) walls 2042 DO l = 0, 1 2043 !$OMP PARALLEL DO PRIVATE( i, j, k ) 2044 DO m = 1, bc_h(l)%ns 2045 i = bc_h(l)%i(m) 2046 j = bc_h(l)%j(m) 2047 k = bc_h(l)%k(m) 2048 qc_p(k+bc_h(l)%koff,j,i) = 0.0_wp 2049 nc_p(k+bc_h(l)%koff,j,i) = 0.0_wp 2050 ENDDO 2051 ENDDO 2052 ! 2053 ! Top boundary condition for cloud water (Dirichlet) 2054 qc_p(nzt+1,:,:) = 0.0_wp 2055 nc_p(nzt+1,:,:) = 0.0_wp 2056 2057 ENDIF 2058 2059 IF ( microphysics_seifert ) THEN 2060 ! 2061 ! Surface conditions rain water (Dirichlet) 2062 ! Run loop over all nonnatural and natural walls. Note, in walldatatype 2063 ! the k coordinate belongs to the atmospheric grid point, therefore, set 2064 ! qr_p and nr_p at upward (k1) and downwardfacing (k+1) walls 2065 DO l = 0, 1 2066 !$OMP PARALLEL DO PRIVATE( i, j, k ) 2067 DO m = 1, bc_h(l)%ns 2068 i = bc_h(l)%i(m) 2069 j = bc_h(l)%j(m) 2070 k = bc_h(l)%k(m) 2071 qr_p(k+bc_h(l)%koff,j,i) = 0.0_wp 2072 nr_p(k+bc_h(l)%koff,j,i) = 0.0_wp 2073 ENDDO 2074 ENDDO 2075 ! 2076 ! Top boundary condition for rain water (Dirichlet) 2077 qr_p(nzt+1,:,:) = 0.0_wp 2078 nr_p(nzt+1,:,:) = 0.0_wp 2079 2080 ENDIF 2081 2082 ! 2083 ! Lateral boundary conditions for scalar quantities at the outflow. 2084 ! Lateral oundary conditions for TKE and dissipation are set 2085 ! in tcm_boundary_conds. 2086 IF ( bc_radiation_s ) THEN 2087 IF ( microphysics_morrison ) THEN 2088 qc_p(:,nys1,:) = qc_p(:,nys,:) 2089 nc_p(:,nys1,:) = nc_p(:,nys,:) 2090 ENDIF 2091 IF ( microphysics_seifert ) THEN 2092 qr_p(:,nys1,:) = qr_p(:,nys,:) 2093 nr_p(:,nys1,:) = nr_p(:,nys,:) 2094 ENDIF 2095 ELSEIF ( bc_radiation_n ) THEN 2096 IF ( microphysics_morrison ) THEN 2097 qc_p(:,nyn+1,:) = qc_p(:,nyn,:) 2098 nc_p(:,nyn+1,:) = nc_p(:,nyn,:) 2099 ENDIF 2100 IF ( microphysics_seifert ) THEN 2101 qr_p(:,nyn+1,:) = qr_p(:,nyn,:) 2102 nr_p(:,nyn+1,:) = nr_p(:,nyn,:) 2103 ENDIF 2104 ELSEIF ( bc_radiation_l ) THEN 2105 IF ( microphysics_morrison ) THEN 2106 qc_p(:,:,nxl1) = qc_p(:,:,nxl) 2107 nc_p(:,:,nxl1) = nc_p(:,:,nxl) 2108 ENDIF 2109 IF ( microphysics_seifert ) THEN 2110 qr_p(:,:,nxl1) = qr_p(:,:,nxl) 2111 nr_p(:,:,nxl1) = nr_p(:,:,nxl) 2112 ENDIF 2113 ELSEIF ( bc_radiation_r ) THEN 2114 IF ( microphysics_morrison ) THEN 2115 qc_p(:,:,nxr+1) = qc_p(:,:,nxr) 2116 nc_p(:,:,nxr+1) = nc_p(:,:,nxr) 2117 ENDIF 2118 IF ( microphysics_seifert ) THEN 2119 qr_p(:,:,nxr+1) = qr_p(:,:,nxr) 2120 nr_p(:,:,nxr+1) = nr_p(:,:,nxr) 2121 ENDIF 2122 ENDIF 2123 2124 END SUBROUTINE bcm_boundary_conditions 2125 2126 !! 2016 2127 ! 2017 2128 ! Description:
Note: See TracChangeset
for help on using the changeset viewer.