Changeset 1159 for palm/trunk/SOURCE/boundary_conds.f90
- Timestamp:
- May 21, 2013 11:58:22 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/boundary_conds.f90
r1116 r1159 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! Bugfix: Neumann boundary conditions for the velocity components at the 23 ! outflow are in fact radiation boundary conditions using the maximum phase 24 ! velocity that ensures numerical stability (CFL-condition). 25 ! Hence, logical operator use_cmax is now used instead of bc_lr_dirneu/_neudir. 26 ! Bugfix: In case of use_cmax at the outflow, u, v, w are replaced by 27 ! u_p, v_p, w_p 22 28 ! 23 29 ! … … 96 102 ! Description: 97 103 ! ------------ 98 ! Boundary conditions for the prognostic quantities (range='main'). 99 ! In case of non-cyclic lateral boundaries the conditions for velocities at 100 ! the outflow are set after the pressure solver has been called (range= 101 ! 'outflow_uvw'). 104 ! Boundary conditions for the prognostic quantities. 102 105 ! One additional bottom boundary condition is applied for the TKE (=(u*)**2) 103 106 ! in prandtl_fluxes. The cyclic lateral boundary conditions are implicitly … … 334 337 335 338 ! 336 !-- Neumann or Radiation boundary condition for the velocities at the 337 !-- respective outflow 339 !-- Radiation boundary conditions for the velocities at the respective outflow. 340 !-- The phase velocity is either assumed to the maximum phase velocity that 341 !-- ensures numerical stability (CFL-condition) or calculated after 342 !-- Orlanski(1976) and averaged along the outflow boundary. 338 343 IF ( outflow_s ) THEN 339 344 340 IF ( bc_ns_dirneu) THEN341 u (:,-1,:) = u(:,0,:)342 v (:,0,:) = v(:,1,:)343 w (:,-1,:) = w(:,0,:)344 ELSEIF ( bc_ns_dirrad) THEN345 IF ( use_cmax ) THEN 346 u_p(:,-1,:) = u(:,0,:) 347 v_p(:,0,:) = v(:,1,:) 348 w_p(:,-1,:) = w(:,0,:) 349 ELSEIF ( .NOT. use_cmax ) THEN 345 350 346 351 c_max = dy / dt_3d … … 477 482 IF ( outflow_n ) THEN 478 483 479 IF ( bc_ns_neudir) THEN480 u (:,ny+1,:) = u(:,ny,:)481 v (:,ny+1,:) = v(:,ny,:)482 w (:,ny+1,:) = w(:,ny,:)483 ELSEIF ( bc_ns_dirrad) THEN484 IF ( use_cmax ) THEN 485 u_p(:,ny+1,:) = u(:,ny,:) 486 v_p(:,ny+1,:) = v(:,ny,:) 487 w_p(:,ny+1,:) = w(:,ny,:) 488 ELSEIF ( .NOT. use_cmax ) THEN 484 489 485 490 c_max = dy / dt_3d … … 616 621 IF ( outflow_l ) THEN 617 622 618 IF ( bc_lr_neudir) THEN619 u (:,:,-1) = u(:,:,0)620 v (:,:,0) = v(:,:,1)621 w (:,:,-1) = w(:,:,0)622 ELSEIF ( bc_ns_dirrad) THEN623 IF ( use_cmax ) THEN 624 u_p(:,:,-1) = u(:,:,0) 625 v_p(:,:,0) = v(:,:,1) 626 w_p(:,:,-1) = w(:,:,0) 627 ELSEIF ( .NOT. use_cmax ) THEN 623 628 624 629 c_max = dx / dt_3d … … 755 760 IF ( outflow_r ) THEN 756 761 757 IF ( bc_lr_dirneu) THEN758 u (:,:,nx+1) = u(:,:,nx)759 v (:,:,nx+1) = v(:,:,nx)760 w (:,:,nx+1) = w(:,:,nx)761 ELSEIF ( bc_ns_dirrad) THEN762 IF ( use_cmax ) THEN 763 u_p(:,:,nx+1) = u(:,:,nx) 764 v_p(:,:,nx+1) = v(:,:,nx) 765 w_p(:,:,nx+1) = w(:,:,nx) 766 ELSEIF ( .NOT. use_cmax ) THEN 762 767 763 768 c_max = dx / dt_3d
Note: See TracChangeset
for help on using the changeset viewer.