Changeset 2696 for palm/trunk/SOURCE/coriolis.f90
- Timestamp:
- Dec 14, 2017 5:12:51 PM (6 years ago)
- Location:
- palm/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk
-
palm/trunk/SOURCE
-
palm/trunk/SOURCE/coriolis.f90
r2233 r2696 1 1 !> @file coriolis.f90 2 2 !------------------------------------------------------------------------------! 3 ! This file is part of PALM.3 ! This file is part of the PALM model system. 4 4 ! 5 5 ! PALM is free software: you can redistribute it and/or modify it under the … … 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Forcing implemented, preliminary (MS) 28 ! 29 ! 2233 2017-05-30 18:08:54Z suehring 27 30 ! 28 31 ! 2232 2017-05-30 17:47:52Z suehring … … 102 105 103 106 USE control_parameters, & 104 ONLY: f, f s, message_string107 ONLY: f, forcing, fs, message_string 105 108 106 109 USE indices, & … … 117 120 118 121 REAL(wp) :: flag !< flag to mask topography 122 REAL(wp) :: flag_force !< flag to mask large-scale pressure gradient in case larger-scale forcing is applied 123 124 flag_force = MERGE( 0.0_wp, 1.0_wp, forcing ) 119 125 ! 120 126 !-- Compute Coriolis terms for the three velocity components … … 128 134 DO k = nzb+1, nzt 129 135 ! 130 !-- 136 !-- Predetermine flag to mask topography 131 137 flag = MERGE( 1.0_wp, 0.0_wp, & 132 138 BTEST( wall_flags_0(k,j,i), 1 ) ) … … 134 140 tend(k,j,i) = tend(k,j,i) + f * ( 0.25_wp * & 135 141 ( v(k,j,i-1) + v(k,j,i) + v(k,j+1,i-1) + & 136 v(k,j+1,i) ) - vg(k) ) * flag & 142 v(k,j+1,i) ) - vg(k) * flag_force & 143 ) * flag & 137 144 - fs * ( 0.25_wp * & 138 145 ( w(k-1,j,i-1) + w(k-1,j,i) + w(k,j,i-1) + & 139 146 w(k,j,i) ) & 140 ) 147 ) * flag 141 148 ENDDO 142 149 ENDDO … … 149 156 DO j = nysv, nyn 150 157 DO k = nzb+1, nzt 158 ! 159 !-- Predetermine flag to mask topography 160 flag = MERGE( 1.0_wp, 0.0_wp, & 161 BTEST( wall_flags_0(k,j,i), 2 ) ) 162 151 163 tend(k,j,i) = tend(k,j,i) - f * ( 0.25_wp * & 152 164 ( u(k,j-1,i) + u(k,j,i) + u(k,j-1,i+1) + & 153 u(k,j,i+1) ) - ug(k) ) * & 154 MERGE( 1.0_wp, 0.0_wp, & 155 BTEST( wall_flags_0(k,j,i), 2 ) ) 165 u(k,j,i+1) ) - ug(k) * flag_force & 166 ) * flag 156 167 ENDDO 157 168 ENDDO … … 164 175 DO j = nys, nyn 165 176 DO k = nzb+1, nzt 177 ! 178 !-- Predetermine flag to mask topography 179 flag = MERGE( 1.0_wp, 0.0_wp, & 180 BTEST( wall_flags_0(k,j,i), 3 ) ) 181 166 182 tend(k,j,i) = tend(k,j,i) + fs * 0.25_wp * & 167 183 ( u(k,j,i) + u(k+1,j,i) + u(k,j,i+1) + & 168 u(k+1,j,i+1) ) * & 169 MERGE( 1.0_wp, 0.0_wp, & 170 BTEST( wall_flags_0(k,j,i), 3 ) ) 184 u(k+1,j,i+1) ) * flag 171 185 ENDDO 172 186 ENDDO … … 194 208 195 209 USE control_parameters, & 196 ONLY: f, f s, message_string210 ONLY: f, forcing, fs, message_string 197 211 198 212 USE indices, & … … 209 223 210 224 REAL(wp) :: flag !< flag to mask topography 211 225 REAL(wp) :: flag_force !< flag to mask large-scale pressure gradient in case larger-scale forcing is applied 226 227 flag_force = MERGE( 0.0_wp, 1.0_wp, forcing ) 212 228 ! 213 229 !-- Compute Coriolis terms for the three velocity components … … 224 240 tend(k,j,i) = tend(k,j,i) + f * ( 0.25_wp * & 225 241 ( v(k,j,i-1) + v(k,j,i) + v(k,j+1,i-1) + & 226 v(k,j+1,i) ) - vg(k) ) * flag & 227 - fs * ( 0.25_wp * & 242 v(k,j+1,i) ) - vg(k) * flag_force & 243 ) * flag & 244 - fs * ( 0.25_wp * & 228 245 ( w(k-1,j,i-1) + w(k-1,j,i) + w(k,j,i-1) + & 229 w(k,j,i) ) ) * flag246 w(k,j,i) ) ) * flag 230 247 ENDDO 231 248 … … 234 251 CASE ( 2 ) 235 252 DO k = nzb+1, nzt 253 ! 254 !-- Predetermine flag to mask topography 255 flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 2 ) ) 256 236 257 tend(k,j,i) = tend(k,j,i) - f * ( 0.25_wp * & 237 258 ( u(k,j-1,i) + u(k,j,i) + u(k,j-1,i+1) + & 238 u(k,j,i+1) ) - ug(k) ) * & 239 MERGE( 1.0_wp, 0.0_wp, & 240 BTEST( wall_flags_0(k,j,i), 2 ) ) 259 u(k,j,i+1) ) - ug(k) * flag_force & 260 ) * flag 241 261 ENDDO 242 262 … … 245 265 CASE ( 3 ) 246 266 DO k = nzb+1, nzt 267 ! 268 !-- Predetermine flag to mask topography 269 flag = MERGE( 1.0_wp, 0.0_wp, BTEST( wall_flags_0(k,j,i), 3 ) ) 270 247 271 tend(k,j,i) = tend(k,j,i) + fs * 0.25_wp * & 248 272 ( u(k,j,i) + u(k+1,j,i) + u(k,j,i+1) + & 249 u(k+1,j,i+1) ) * & 250 MERGE( 1.0_wp, 0.0_wp, & 251 BTEST( wall_flags_0(k,j,i), 3 ) ) 273 u(k+1,j,i+1) ) * flag 252 274 ENDDO 253 275
Note: See TracChangeset
for help on using the changeset viewer.