 Timestamp:
 May 23, 2014 12:11:32 PM (10 years ago)
 Location:
 palm/trunk/SOURCE
 Files:

 3 edited
Legend:
 Unmodified
 Added
 Removed

palm/trunk/SOURCE/boundary_conds.f90
r1399 r1409 20 20 ! Current revisions: 21 21 !  22 ! 22 ! Bugfix: set inflow boundary conditions also if no humidity or passive_scalar 23 ! is used. 23 24 ! 24 25 ! Former revisions: … … 301 302 302 303 ENDIF 303 ! 304 ! In case of inflow at the south boundary the boundary for v is at nys 305 ! and in case of inflow at the left boundary the boundary for u is at nxl. 306 ! Since in prognostic_equations (cache optimized version) these levels are 307 ! handled as a prognostic level, boundary values have to be restored here. 308 ! For the SGSTKE, Neumann boundary conditions are used at the inflow. 309 IF ( inflow_s ) THEN 310 v_p(:,nys,:) = v_p(:,nys1,:) 311 IF ( .NOT. constant_diffusion ) e_p(:,nys1,:) = e_p(:,nys,:) 312 ELSEIF ( inflow_n ) THEN 313 IF ( .NOT. constant_diffusion ) e_p(:,nyn+1,:) = e_p(:,nyn,:) 314 ELSEIF ( inflow_l ) THEN 315 u_p(:,:,nxl) = u_p(:,:,nxl1) 316 IF ( .NOT. constant_diffusion ) e_p(:,:,nxl1) = e_p(:,:,nxl) 317 ELSEIF ( inflow_r ) THEN 318 IF ( .NOT. constant_diffusion ) e_p(:,:,nxr+1) = e_p(:,:,nxr) 319 ENDIF 320 321 ! 322 ! Lateral boundary conditions for scalar quantities at the outflow 323 IF ( outflow_s ) THEN 324 pt_p(:,nys1,:) = pt_p(:,nys,:) 325 IF ( .NOT. constant_diffusion ) e_p(:,nys1,:) = e_p(:,nys,:) 326 IF ( humidity .OR. passive_scalar ) THEN 327 q_p(:,nys1,:) = q_p(:,nys,:) 328 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 329 precipitation) THEN 330 qr_p(:,nys1,:) = qr_p(:,nys,:) 331 nr_p(:,nys1,:) = nr_p(:,nys,:) 332 ENDIF 333 ENDIF 334 ELSEIF ( outflow_n ) THEN 335 pt_p(:,nyn+1,:) = pt_p(:,nyn,:) 336 IF ( .NOT. constant_diffusion ) e_p(:,nyn+1,:) = e_p(:,nyn,:) 337 IF ( humidity .OR. passive_scalar ) THEN 338 q_p(:,nyn+1,:) = q_p(:,nyn,:) 339 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 340 precipitation ) THEN 341 qr_p(:,nyn+1,:) = qr_p(:,nyn,:) 342 nr_p(:,nyn+1,:) = nr_p(:,nyn,:) 343 ENDIF 344 ENDIF 345 ELSEIF ( outflow_l ) THEN 346 pt_p(:,:,nxl1) = pt_p(:,:,nxl) 347 IF ( .NOT. constant_diffusion ) e_p(:,:,nxl1) = e_p(:,:,nxl) 348 IF ( humidity .OR. passive_scalar ) THEN 349 q_p(:,:,nxl1) = q_p(:,:,nxl) 350 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 351 precipitation ) THEN 352 qr_p(:,:,nxl1) = qr_p(:,:,nxl) 353 nr_p(:,:,nxl1) = nr_p(:,:,nxl) 354 ENDIF 355 ENDIF 356 ELSEIF ( outflow_r ) THEN 357 pt_p(:,:,nxr+1) = pt_p(:,:,nxr) 358 IF ( .NOT. constant_diffusion ) e_p(:,:,nxr+1) = e_p(:,:,nxr) 359 IF ( humidity .OR. passive_scalar ) THEN 360 q_p(:,:,nxr+1) = q_p(:,:,nxr) 361 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. precipitation ) THEN 362 qr_p(:,:,nxr+1) = qr_p(:,:,nxr) 363 nr_p(:,:,nxr+1) = nr_p(:,:,nxr) 364 ENDIF 365 ENDIF 366 ENDIF 367 304 ENDIF 305 ! 306 ! In case of inflow at the south boundary the boundary for v is at nys 307 ! and in case of inflow at the left boundary the boundary for u is at nxl. 308 ! Since in prognostic_equations (cache optimized version) these levels are 309 ! handled as a prognostic level, boundary values have to be restored here. 310 ! For the SGSTKE, Neumann boundary conditions are used at the inflow. 311 IF ( inflow_s ) THEN 312 v_p(:,nys,:) = v_p(:,nys1,:) 313 IF ( .NOT. constant_diffusion ) e_p(:,nys1,:) = e_p(:,nys,:) 314 ELSEIF ( inflow_n ) THEN 315 IF ( .NOT. constant_diffusion ) e_p(:,nyn+1,:) = e_p(:,nyn,:) 316 ELSEIF ( inflow_l ) THEN 317 u_p(:,:,nxl) = u_p(:,:,nxl1) 318 IF ( .NOT. constant_diffusion ) e_p(:,:,nxl1) = e_p(:,:,nxl) 319 ELSEIF ( inflow_r ) THEN 320 IF ( .NOT. constant_diffusion ) e_p(:,:,nxr+1) = e_p(:,:,nxr) 321 ENDIF 322 323 ! 324 ! Lateral boundary conditions for scalar quantities at the outflow 325 IF ( outflow_s ) THEN 326 pt_p(:,nys1,:) = pt_p(:,nys,:) 327 IF ( .NOT. constant_diffusion ) e_p(:,nys1,:) = e_p(:,nys,:) 328 IF ( humidity .OR. passive_scalar ) THEN 329 q_p(:,nys1,:) = q_p(:,nys,:) 330 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 331 precipitation) THEN 332 qr_p(:,nys1,:) = qr_p(:,nys,:) 333 nr_p(:,nys1,:) = nr_p(:,nys,:) 334 ENDIF 335 ENDIF 336 ELSEIF ( outflow_n ) THEN 337 pt_p(:,nyn+1,:) = pt_p(:,nyn,:) 338 IF ( .NOT. constant_diffusion ) e_p(:,nyn+1,:) = e_p(:,nyn,:) 339 IF ( humidity .OR. passive_scalar ) THEN 340 q_p(:,nyn+1,:) = q_p(:,nyn,:) 341 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 342 precipitation ) THEN 343 qr_p(:,nyn+1,:) = qr_p(:,nyn,:) 344 nr_p(:,nyn+1,:) = nr_p(:,nyn,:) 345 ENDIF 346 ENDIF 347 ELSEIF ( outflow_l ) THEN 348 pt_p(:,:,nxl1) = pt_p(:,:,nxl) 349 IF ( .NOT. constant_diffusion ) e_p(:,:,nxl1) = e_p(:,:,nxl) 350 IF ( humidity .OR. passive_scalar ) THEN 351 q_p(:,:,nxl1) = q_p(:,:,nxl) 352 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. & 353 precipitation ) THEN 354 qr_p(:,:,nxl1) = qr_p(:,:,nxl) 355 nr_p(:,:,nxl1) = nr_p(:,:,nxl) 356 ENDIF 357 ENDIF 358 ELSEIF ( outflow_r ) THEN 359 pt_p(:,:,nxr+1) = pt_p(:,:,nxr) 360 IF ( .NOT. constant_diffusion ) e_p(:,:,nxr+1) = e_p(:,:,nxr) 361 IF ( humidity .OR. passive_scalar ) THEN 362 q_p(:,:,nxr+1) = q_p(:,:,nxr) 363 IF ( cloud_physics .AND. icloud_scheme == 0 .AND. precipitation ) THEN 364 qr_p(:,:,nxr+1) = qr_p(:,:,nxr) 365 nr_p(:,:,nxr+1) = nr_p(:,:,nxr) 366 ENDIF 367 ENDIF 368 368 ENDIF 369 369 
palm/trunk/SOURCE/init_grid.f90
r1354 r1409 20 20 ! Current revisions: 21 21 !  22 ! 22 ! Bugfix: set wall_flags_0 at inflow and outflow boundary also for i <= nxlu 23 ! j <= nysv 23 24 ! 24 25 ! Former revisions: … … 1229 1230 ! WS1 (9), WS3 (10), WS5 (11) 1230 1231 IF ( k <= nzb_u_inner(j,i+1) & 1231 .OR. ( ( inflow_l .OR. outflow_l ) .AND. i == nxlu ) &1232 .OR. ( ( inflow_l .OR. outflow_l ) .AND. i <= nxlu ) & 1232 1233 .OR. ( ( inflow_r .OR. outflow_r ) .AND. i == nxr ) & 1233 1234 ) THEN … … 1298 1299 ! WS1 (21), WS3 (22), WS5 (23) 1299 1300 IF ( k <= nzb_v_inner(j+1,i) & 1300 .OR. ( ( inflow_s .OR. outflow_s ) .AND. i == nysv ) &1301 .OR. ( ( inflow_s .OR. outflow_s ) .AND. j <= nysv ) & 1301 1302 .OR. ( ( inflow_n .OR. outflow_n ) .AND. j == nyn ) & 1302 1303 ) THEN 
palm/trunk/SOURCE/prognostic_equations.f90
r1399 r1409 20 20 ! Current revisions: 21 21 !  22 ! 22 ! Bugfix: i_omp_start changed for advec_u_ws at left inflow and outflow boundary. 23 ! This ensures that lefthand side fluxes are also calculated for nxl in that 24 ! case, even though the solution at nxl is overwritten in boundary_conds() 23 25 ! 24 26 ! Former revisions: … … 349 351 IF ( timestep_scheme(1:5) == 'runge' ) THEN 350 352 IF ( ws_scheme_mom ) THEN 351 IF ( ( inflow_l .OR. outflow_l ) .AND. i_omp_start == nxl ) THEN 352 CALL advec_u_ws( i, j, i_omp_start + 1, tn ) 353 ELSE 354 CALL advec_u_ws( i, j, i_omp_start, tn ) 355 ENDIF 353 CALL advec_u_ws( i, j, i_omp_start, tn ) 356 354 ELSE 357 355 CALL advec_u_pw( i, j )
Note: See TracChangeset
for help on using the changeset viewer.