Changeset 187 for palm/trunk/SOURCE/prandtl_fluxes.f90
- Timestamp:
- Aug 6, 2008 4:25:09 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/prandtl_fluxes.f90
r110 r187 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Bugfix: change definition of us_wall from 1D to 2D: 7 ! Modification of the evaluation of the vertical turbulent momentum 8 ! fluxes u'w' and v'w'; the first usws that is computed corresponds 9 ! to -u'w'/u* and not as priorily assumed to (-u'w')**0.5, the first 10 ! vsws that is computed corresponds to -v'w'/u* and not as priorily 11 ! assumed to (-v'w')**0.5. Therefore, the intermediate result for 12 ! usws has to be multiplied by -u* instead by itself in order to 13 ! get u'w'. Accordingly, the intermediate result for vsws has to be 14 ! multiplied by -u* instead by itself in order to get v'w'. As u* 15 ! is calculated for the position of a scalar an additional 16 ! interpolation of u* to the position of u and v, respectively, 17 ! is necessary. As u* is not determined for the ghost points on 18 ! each PE, an additional exchange of information from neighbouring 19 ! PEs is necessary.! 20 ! Change: Modification of the integrated version of the profile function for 21 ! momentum for unstable stratification 7 22 ! 8 23 ! Former revisions: … … 81 96 !-- Unstable stratification 82 97 a = SQRT( 1.0 - 16.0 * rif(j,i) ) 83 b = SQRT( 1.0 - 16.0 * rif(j,i) / z_p * z0(j,i) ) 84 ! 85 !-- If a borderline case occurs, the formula for stable 86 !-- stratification must be used anyway, or else a zero division 87 !-- would occur in the argument of the logarithm 88 IF ( a == 1.0 .OR. b == 1.0 ) THEN 89 ts(j,i) = kappa * ( pt(k+1,j,i) - pt(k,j,i) ) / ( & 90 LOG( z_p / z0(j,i) ) + & 91 5.0 * rif(j,i) * ( z_p - z0(j,i) ) / z_p & 92 ) 93 ELSE 94 ts(j,i) = kappa * ( pt(k+1,j,i) - pt(k,j,i) ) / ( & 95 LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) & 96 ) 97 ENDIF 98 b = SQRT( 1.0 - 16.0 * rif(j,i) * z0(j,i) / z_p ) 99 100 ts(j,i) = kappa * ( pt(k+1,j,i) - pt(k,j,i) ) / ( & 101 LOG( z_p / z0(j,i) ) - & 102 2.0 * LOG( ( 1.0 + a ) / ( 1.0 + b ) ) ) 98 103 ENDIF 99 104 … … 168 173 ! 169 174 !-- Unstable stratification 170 a = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rif(j,i) ) ) 171 b = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rif(j,i) / z_p * z0(j,i) ) ) 172 ! 173 !-- If a borderline case occurs, the formula for stable stratification 174 !-- must be used anyway, or else a zero division would occur in the 175 !-- argument of the logarithm. 176 IF ( a == 1.0 .OR. b == 1.0 ) THEN 177 us(j,i) = kappa * uv_total / ( & 178 LOG( z_p / z0(j,i) ) + & 179 5.0 * rif(j,i) * ( z_p - z0(j,i) ) / z_p & 180 ) 181 ELSE 182 us(j,i) = kappa * uv_total / ( & 183 LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) + & 184 2.0 * ( ATAN( b ) - ATAN( a ) ) & 185 ) 186 ENDIF 175 a = SQRT( SQRT( 1.0 - 16.0 * rif(j,i) ) ) 176 b = SQRT( SQRT( 1.0 - 16.0 * rif(j,i) / z_p * z0(j,i) ) ) 177 178 us(j,i) = kappa * uv_total / ( & 179 LOG( z_p / z0(j,i) ) - & 180 LOG( ( 1.0 + a )**2 * ( 1.0 + a**2 ) / ( & 181 ( 1.0 + b )**2 * ( 1.0 + b**2 ) ) ) + & 182 2.0 * ( ATAN( a ) - ATAN( b ) ) & 183 ) 187 184 ENDIF 188 185 ENDDO 189 186 ENDDO 190 187 188 ! 189 !-- Values of us at ghost point locations are needed for the evaluation of usws 190 !-- and vsws. 191 CALL exchange_horiz_2d( us ) 191 192 ! 192 193 !-- Compute u'w' for the total model domain. … … 212 213 ! 213 214 !-- Unstable stratification 214 a = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rifm ) ) 215 b = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rifm / z_p * z0(j,i) ) ) 216 ! 217 !-- If a borderline case occurs, the formula for stable stratification 218 !-- must be used anyway, or else a zero division would occur in the 219 !-- argument of the logarithm. 220 IF ( a == 1.0 .OR. B == 1.0 ) THEN 221 usws(j,i) = kappa * u(k+1,j,i) / ( & 222 LOG( z_p / z0(j,i) ) + & 223 5.0 * rifm * ( z_p - z0(j,i) ) / z_p & 215 a = SQRT( SQRT( 1.0 - 16.0 * rifm ) ) 216 b = SQRT( SQRT( 1.0 - 16.0 * rifm / z_p * z0(j,i) ) ) 217 218 usws(j,i) = kappa * u(k+1,j,i) / ( & 219 LOG( z_p / z0(j,i) ) - & 220 LOG( (1.0 + a )**2 * ( 1.0 + a**2 ) / ( & 221 (1.0 + b )**2 * ( 1.0 + b**2 ) ) ) + & 222 2.0 * ( ATAN( a ) - ATAN( b ) ) & 224 223 ) 225 ELSE226 usws(j,i) = kappa * u(k+1,j,i) / ( &227 LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) + &228 2.0 * ( ATAN( b ) - ATAN( a ) ) &229 )230 ENDIF231 224 ENDIF 232 usws(j,i) = -usws(j,i) * ABS( usws(j,i) )225 usws(j,i) = -usws(j,i) * 0.5 * ( us(j,i-1) + us(j,i) ) 233 226 ENDDO 234 227 ENDDO … … 257 250 ! 258 251 !-- Unstable stratification 259 a = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rifm ) ) 260 b = 1.0 / SQRT( SQRT( 1.0 - 16.0 * rifm / z_p * z0(j,i) ) ) 261 ! 262 !-- If a borderline case occurs, the formula for stable stratification 263 !-- must be used anyway, or else a zero division would occur in the 264 !-- argument of the logarithm. 265 IF ( a == 1.0 .OR. b == 1.0 ) THEN 266 vsws(j,i) = kappa * v(k+1,j,i) / ( & 267 LOG( z_p / z0(j,i) ) + & 268 5.0 * rifm * ( z_p - z0(j,i) ) / z_p & 252 a = SQRT( SQRT( 1.0 - 16.0 * rifm ) ) 253 b = SQRT( SQRT( 1.0 - 16.0 * rifm / z_p * z0(j,i) ) ) 254 255 vsws(j,i) = kappa * v(k+1,j,i) / ( & 256 LOG( z_p / z0(j,i) ) - & 257 LOG( (1.0 + a )**2 * ( 1.0 + a**2 ) / ( & 258 (1.0 + b )**2 * ( 1.0 + b**2 ) ) ) + & 259 2.0 * ( ATAN( a ) - ATAN( b ) ) & 269 260 ) 270 ELSE271 vsws(j,i) = kappa * v(k+1,j,i) / ( &272 LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) + &273 2.0 * ( ATAN( b ) - ATAN( a ) ) &274 )275 ENDIF276 261 ENDIF 277 vsws(j,i) = -vsws(j,i) * ABS( vsws(j,i) )262 vsws(j,i) = -vsws(j,i) * 0.5 * ( us(j-1,i) + us(j,i) ) 278 263 ENDDO 279 264 ENDDO … … 317 302 ! 318 303 !-- Unstable stratification 319 a = SQRT( 1.0 - 16.0 * rif(j,i) ) 320 b = SQRT( 1.0 - 16.0 * rif(j,i) / z_p * z0(j,i) ) 321 ! 322 !-- If a borderline case occurs, the formula for stable 323 !-- stratification must be used anyway, or else a zero division 324 !-- would occur in the argument of the logarithm. 325 IF ( a == 1.0 .OR. b == 1.0 ) THEN 326 qs(j,i) = kappa * ( q(k+1,j,i) - q(k,j,i) ) / ( & 327 LOG( z_p / z0(j,i) ) + & 328 5.0 * rif(j,i) * ( z_p - z0(j,i) ) / z_p & 329 ) 330 ELSE 331 qs(j,i) = kappa * ( q(k+1,j,i) - q(k,j,i) ) / ( & 332 LOG( (1.0+b) / (1.0-b) * (1.0-a) / (1.0+a) ) & 333 ) 334 ENDIF 304 a = SQRT( 1.0 - 16.0 * rif(j,i) ) 305 b = SQRT( 1.0 - 16.0 * rif(j,i) * z0(j,i) / z_p ) 306 307 qs(j,i) = kappa * ( q(k+1,j,i) - q(k,j,i) ) / ( & 308 LOG( z_p / z0(j,i) ) - & 309 2.0 * LOG( (1.0 + a ) / ( 1.0 + b ) ) ) 335 310 ENDIF 336 311 … … 341 316 342 317 ! 343 !-- Exchange the boundaries for u* and the momentum fluxes (fluxes only for 344 !-- completeness's sake). 345 CALL exchange_horiz_2d( us ) 318 !-- Exchange the boundaries for the momentum fluxes (only for sake of 319 !-- completeness) 346 320 CALL exchange_horiz_2d( usws ) 347 321 CALL exchange_horiz_2d( vsws )
Note: See TracChangeset
for help on using the changeset viewer.