Changeset 76 for palm/trunk/SOURCE


Ignore:
Timestamp:
Mar 29, 2007 12:58:32 AM (18 years ago)
Author:
raasch
Message:

changes for Neumann p conditions both at bottom and top

Location:
palm/trunk/SOURCE
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/CURRENT_MODIFICATIONS

    r75 r76  
    3535General revision of non-cyclic horizontal boundary conditions: radiation boundary conditions are now used instead of Neumann conditions at the outflow (calculation needs velocity values for t-dt, which are stored on new arrays u_m_l, u_m_r, etc.), calculation of mean outflow is not needed any more, volume flow control is added for the outflow boundary (currently only for the north boundary!!), additional gridpoints along x and y (uxrp, vynp) are not needed any more, routine "boundary_conds" now operates on timelevel t+dt and is not split in two parts (main, uvw_outflow) any more, Neumann boundary conditions at inflow/outflow in case of non-cyclic boundary conditions for all 2d-arrays that are handled by exchange_horiz_2d
    3636
     37The FFT-method for solving the Poisson-equation is now working with Neumann boundary conditions both at the bottom and the top. This requires adjustments of the tridiagonal coefficients and subtracting the horizontally averaged mean from the vertical velocity field.
     38
    3739+age_m in particle_type
    3840
     
    5860The uitility routine interpret_config reads PALM environment variables from NAMELIST instead using the system call GETENV.
    5961
    60 advec_u_pw, advec_u_up, advec_v_pw, advec_v_up, asselin_filter, check_parameters, coriolis, data_output_dvrp, data_output_ptseries, data_output_ts, data_output_2d, data_output_3d, diffusion_u, diffusion_v, exchange_horiz, exchange_horiz_2d, flow_statistics, header, init_grid, init_particles, init_pegrid, init_rankine, init_pt_anomaly, init_1d_model, init_3d_model, modules, palm, package_parin, parin, poismg, prandtl_fluxes, pres, production_e, prognostic_equations, read_var_list, read_3d_binary, sor, swap_timelevel, time_integration, write_var_list, write_3d_binary
     62advec_u_pw, advec_u_up, advec_v_pw, advec_v_up, asselin_filter, check_parameters, coriolis, data_output_dvrp, data_output_ptseries, data_output_ts, data_output_2d, data_output_3d, diffusion_u, diffusion_v, exchange_horiz, exchange_horiz_2d, flow_statistics, header, init_grid, init_particles, init_pegrid, init_rankine, init_pt_anomaly, init_1d_model, init_3d_model, modules, palm, package_parin, parin, poisfft, poismg, prandtl_fluxes, pres, production_e, prognostic_equations, read_var_list, read_3d_binary, sor, swap_timelevel, time_integration, write_var_list, write_3d_binary
    6163
    6264
  • palm/trunk/SOURCE/header.f90

    r75 r76  
    283283    WRITE ( io, 254 )  nx, ny, nzt+1, MIN( nnx, nx+1 ), MIN( nny, ny+1 ), &
    284284                       MIN( nnz+2, nzt+2 )
    285     IF ( nxa == nx  .AND.  nya == ny  .AND.  nza == nz )  THEN
    286        WRITE ( io, 255 )
    287     ELSE
    288        WRITE ( io, 256 )  nnx-(nxa-nx), nny-(nya-ny), nzt+2
     285    IF ( numprocs > 1 )  THEN
     286       IF ( nxa == nx  .AND.  nya == ny  .AND.  nza == nz )  THEN
     287          WRITE ( io, 255 )
     288       ELSE
     289          WRITE ( io, 256 )  nnx-(nxa-nx), nny-(nya-ny), nzt+2
     290       ENDIF
    289291    ENDIF
    290292    IF ( sloping_surface )  WRITE ( io, 260 )  alpha_surface
  • palm/trunk/SOURCE/poisfft.f90

    r4 r76  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Tridiagonal coefficients adjusted for Neumann boundary conditions both at
     7! the bottom and the top.
    78!
    89! Former revisions:
     
    393394!------------------------------------------------------------------------------!
    394395
     396          USE control_parameters
     397
    395398          IMPLICIT NONE
    396399
     
    443446             ENDDO
    444447          ENDDO
     448
     449!
     450!--       Indices i=0, j=0 correspond to horizontally averaged pressure.
     451!--       The respective values of ar should be zero at all k-levels if
     452!--       acceleration of horizontally averaged vertical velocity is zero.
     453          IF ( ibc_p_b == 1  .AND.  ibc_p_t == 1 )  THEN
     454             IF ( j == 0  .AND.  nxl_z == 0 )  THEN
     455#if defined( __parallel )
     456                DO  k = 1, nz
     457                   ar(nxl_z,j,k) = 0.0
     458                ENDDO
     459#else
     460                DO  k = 1, nz
     461                   ar(k,j,nxl_z) = 0.0
     462                ENDDO
     463#endif
     464             ENDIF
     465          ENDIF
    445466
    446467       END SUBROUTINE substi
     
    14661487          IMPLICIT NONE
    14671488
    1468           INTEGER ::  i, j, k
     1489          INTEGER ::  i, k
    14691490
    14701491          REAL, DIMENSION(0:nx,nz)       ::  ar
     
    14951516          ENDDO
    14961517
     1518!
     1519!--       Indices i=0, j=0 correspond to horizontally averaged pressure.
     1520!--       The respective values of ar should be zero at all k-levels if
     1521!--       acceleration of horizontally averaged vertical velocity is zero.
     1522          IF ( ibc_p_b == 1  .AND.  ibc_p_t == 1 )  THEN
     1523             IF ( j == 0 )  THEN
     1524                DO  k = 1, nz
     1525                   ar(0,k) = 0.0
     1526                ENDDO
     1527             ENDIF
     1528          ENDIF
     1529
    14971530       END SUBROUTINE substi_1dd
    14981531
  • palm/trunk/SOURCE/pres.f90

    r75 r76  
    55! -----------------
    66! Volume flow control for non-cyclic boundary conditions added (currently only
    7 ! for the north boundary!!), 2nd+3rd argument removed from exchange horiz
     7! for the north boundary!!), 2nd+3rd argument removed from exchange horiz,
     8! mean vertical velocity is removed in case of Neumann boundary conditions
     9! both at the bottom and the top
    810!
    911! Former revisions:
     
    4547
    4648    REAL, DIMENSION(1:2) ::  volume_flow_l, volume_flow_offset
     49    REAL, DIMENSION(1:nzt) ::  w_l, w_l_l
    4750
    4851
     
    9699    ENDIF
    97100
     101!
     102!-- Remove mean vertical velocity
     103    IF ( ibc_p_b == 1  .AND.  ibc_p_t == 1 )  THEN
     104       IF ( simulated_time > 0.0 )  THEN ! otherwise nzb_w_inner is not yet known
     105          w_l = 0.0;  w_l_l = 0.0
     106          DO  i = nxl, nxr
     107             DO  j = nys, nyn
     108                DO  k = nzb_w_inner(j,i)+1, nzt
     109                   w_l_l(k) = w_l_l(k) + w(k,j,i)
     110                ENDDO
     111             ENDDO
     112          ENDDO
     113#if defined( __parallel )   
     114          CALL MPI_ALLREDUCE( w_l_l(1), w_l(1), nzt, MPI_REAL, MPI_SUM, comm2d, &
     115                              ierr )
     116#else
     117          w_l = w_l_l 
     118#endif
     119          DO  k = 1, nzt
     120             w_l(k) = w_l(k) / ngp_2dh_outer(k,0)
     121          ENDDO
     122          DO  i = nxl, nxr
     123             DO  j = nys, nyn
     124                DO  k = nzb_w_inner(j,i)+1, nzt
     125                   w(k,j,i) = w(k,j,i) - w_l(k)
     126                ENDDO
     127             ENDDO
     128          ENDDO
     129       ENDIF
     130    ENDIF
    98131
    99132!
Note: See TracChangeset for help on using the changeset viewer.