# Changeset 75

Ignore:
Timestamp:
Mar 22, 2007 9:54:05 AM (17 years ago)
Message:

preliminary update for changes concerning non-cyclic boundary conditions

Location:
palm/trunk
Files:
46 edited

Unmodified
Removed
• ## palm/trunk/DOC/app/chapter_4.1.html

 r72 bc_lr may also be assigned the values 'dirichlet/neumann' (inflow from left, outflow to the right) or 'neumann/dirichlet' assigned the values 'dirichlet/radiation' (inflow from left, outflow to the right) or 'radiation/dirichlet' (inflow from right, outflow to the left). This requires the multi-grid method to be used for solving the Poisson equation for perturbation pressure (see psolver) and it also requires cyclic boundary conditions along y (see
bc_ns).

and it also requires cyclic boundary conditions along y (see bc_ns).

In case of these non-cyclic lateral boundaries, a Dirichlet condition is used at the inflow for all quantities (initial vertical profiles - see initializing_actions - are fixed during the run) except u, to which a Neumann (zero gradient) condition is applied. At the outflow, a Neumann (zero gradient) condition is used for all quantities except v, which is set to its horizontal average along the outflow (e.g. v(k,:,nx+1) = average_along_y( v(k,:,nx)), and except w, which is set to zero (Dirichlet condition). These conditions ensure the velocity field to be free of divergence at the inflow and at the outflow. For perturbation gradient) condition is applied. At the outflow, a radiation condition is used for all velocity components, while a Neumann (zero gradient) condition is used for the scalars. For perturbation pressure Neumann (zero gradient) conditions are assumed both at the inflow and at the outflow.

bc_ns may also be assigned the values 'dirichlet/neumann' (inflow from rear ("north"), outflow to the front ("south")) or 'neumann/dirichlet' assigned the values 'dirichlet/radiation' (inflow from rear ("north"), outflow to the front ("south")) or 'radiation/dirichlet' (inflow from front ("south"), outflow to the rear ("north")). This requires the multi-grid In case of these non-cyclic lateral boundaries, a Dirichlet condition is used at the inflow for all quantities (initial vertical profiles - see initializing_actions - are fixed during the run) except v, to which a Neumann (zero gradient) condition is applied. At the outflow, a Neumann (zero gradient) condition is used for all quantities except u, which is set to its horizontal average along the outflow (e.g. u(k,ny+1,:) = average_along_x( u(k,ny,:)), and except w, which is set to zero (Dirichlet condition). These conditions ensure the velocity field to be free of divergence at the inflow and at the outflow. For perturbation see initializing_actions - are fixed during the run) except u, to which a Neumann (zero gradient) condition is applied. At the outflow, a radiation condition is used for all velocity components, while a Neumann (zero gradient) condition is used for the scalars. For perturbation pressure Neumann (zero gradient) conditions are assumed both at the inflow and at the outflow.

cloud_physics =
.TRUE. requires moisture requires humidity = .TRUE. .
Detailed information about the condensation scheme is given in the the so-called Blackadar mixing length is used (l = kappa * z / ( 1 + kappa * z / lambda ) with the limiting value lambda = 2.7E-4 * u_g / f).

Important: The  upstream-spline scheme is not implemented for humidity and passive scalars (see moisture scalars (see humidity and passive_scalar) and requires the use of a 2d-domain-decomposition. The last conditions With passive_scalar switched on, the simultaneous use of humidity (see moisture) on, the simultaneous use of humidity (see humidity) is impossible.

_level

moisture

humidity

L .F.

phi

R R (10)

10 *  0.0

Height level from which on the moisture gradient defined by q_vertical_gradient which on the humidity gradient defined by q_vertical_gradient is effective (in m).

The height levels are to be assigned in ascending order. The

Important: The  upstream-spline scheme is not implemented for humidity and passive scalars (see moisture scalars (see humidity and passive_scalar) and requires the use of a 2d-domain-decomposition. The last conditions  alpha_surface = 0.0, bc_lr = bc_ns = 'cyclic'galilei_transformation = .F.cloud_physics  = .F.cloud_droplets = .F.,  moisture = .F., and prandtl_layer = .T..
= .F.cloud_physics  = .F.cloud_droplets = .F.,  humidity = .F., and prandtl_layer = .T..

Note that an inclined model domain requires the use of topography = 'flat' and a

• ## palm/trunk/DOC/app/chapter_4.2.html

 r72 = .TRUE.
Multiple quantities can be assigned, e.g. data_output
ptpotential temperature
K
qspecific humidity (or total water content, if cloud physics is switched on)kg/kgrequires moisture = .TRUE.
qlliquid water (or total water content, if cloud physics is switched on)kg/kgrequires humidity = .TRUE.
qlliquid water contentkg/kgrequires cloud_physics = .TRUE. is allowed
vv-component of the velocitym/s
vptvirtual potential temperatureKrequires moisture = .TRUE.
ww-component of temperatureKrequires humidity = .TRUE.
ww-component of the velocitym/s
z0*roughness lengthm
• ## palm/trunk/DOC/app/chapter_4.6.html

 r72 which are to be created by the dvrp software.

Variable to adjust the subdomain sizes in parallel runs.

inflow_disturbance_begin
humidityIL.F.Parameter to switch on the prognostic equation for specific humidity q.
inflow_disturbance_begin I
I

moisture

I

L

.F.

Parameter to switch on the prognostic equation for specific humidity q.

software.

I

C (10)

10 *  0.0

Height level from which on the moisture gradient defined

Height level from which on the humidity gradient defined by q_vertical_gradient is effective (in m).

• ## palm/trunk/SCRIPTS/mbuild

 r69 fi    # ENDE UEBERSETZUNG DER UTILITY-PROGRAMME rm -rf  \${remote_host}_last_make_protokoll # NUR AUF EINEM HLRN-RECHNER UEBERSETZEN
• ## palm/trunk/SCRIPTS/mrun

 r74 # NAMELIST-DATEI MIT WERTEN VON ENVIRONMENT-VARIABLEN ERZEUGEN (ZU # LESEN VON PALM) # DAZU VORHER DIE "GLOBAL REVISION" VON SUBVERSION ERMITTELN, FALLS # DIE SOURCEN UNTER SUBVERSION-KONTROLLE STEHEN global_revision=`svnversion \$source_path` global_revision="Rev: \$global_revision" cat  >  ENVPAR  <<  %%END%% &envpar  run_identifier = '\$fname', host = '\$localhost', write_binary = '\$write_binary', tasks_per_node = \$tasks_per_node, maximum_cpu_time_allowed = \${cpumax}. / maximum_cpu_time_allowed = \${cpumax}., revision = '\$global_revision' / %%END%%
• ## palm/trunk/SOURCE/CURRENT_MODIFICATIONS

 r64 ! + user_advec_particles, particles-package is now part of the defaut code, ! array arguments in sendrecv calls have to refer to first element (1) due to ! mpich (mpiI) interface requirements ! mpich (mpiI) interface requirements, ! 2nd+3rd argument removed from exchange horiz ! TEST: PRINT statements on unit 9 (commented out) ! ! !--    Lateral boundary conditions CALL exchange_horiz( de_dx, 0, 0 ) CALL exchange_horiz( de_dy, 0, 0 ) CALL exchange_horiz( de_dz, 0, 0 ) CALL exchange_horiz( diss,  0, 0 ) CALL exchange_horiz( de_dx ) CALL exchange_horiz( de_dy ) CALL exchange_horiz( de_dz ) CALL exchange_horiz( diss  ) !

 r4 ! Actual revisions: ! ----------------- ! ! uxrp eliminated ! ! Former revisions: gu = 2.0 * u_gtrans gv = 2.0 * v_gtrans DO  i = nxl, nxr+uxrp DO  i = nxl, nxr DO  j = nys, nyn DO  k = nzb_u_inner(j,i)+1, nzt

 r4 ! Actual revisions: ! ----------------- ! ! uxrp eliminated ! ! Former revisions: DO  i = nxl, nxr+uxrp DO  i = nxl, nxr DO  j = nys, nyn DO  k = nzb_u_inner(j,i)+1, nzt

 r4 ! Actual revisions: ! ----------------- ! ! vynp eliminated ! ! Former revisions: gv = 2.0 * v_gtrans DO  i = nxl, nxr DO  j = nys, nyn+vynp DO  j = nys, nyn DO  k = nzb_v_inner(j,i)+1, nzt tend(k,j,i) = tend(k,j,i) - 0.25 * (                           &

 r4 ! Actual revisions: ! ----------------- ! ! vynp eliminated ! ! Former revisions: DO  i = nxl, nxr DO  j = nys, nyn+vynp DO  j = nys, nyn DO  k = nzb_v_inner(j,i)+1, nzt !
• ## palm/trunk/SOURCE/asselin_filter.f90

 r4 ! Actual revisions: ! ----------------- ! ! moisture renamed humidity ! ! Former revisions: ENDIF IF ( ( moisture .OR. passive_scalar )  .AND. & IF ( ( humidity .OR. passive_scalar )  .AND. & scalar_advec /= 'bc-scheme' )  THEN DO  k = nzb_2d(j,i), nzt+1 ENDIF IF ( ( moisture .OR. passive_scalar )  .AND. & IF ( ( humidity .OR. passive_scalar )  .AND. & scalar_advec /= 'bc-scheme' )  THEN q = q + asselin_filter_factor * ( q_p - 2.0 * q + q_m )
• ## palm/trunk/SOURCE/boundary_conds.f90

 r73 ! Actual revisions: ! ----------------- ! The "main" part sets conditions for time level t+dt insteat of level t, ! outflow boundary conditions changed from Neumann to radiation condition ! The "main" part sets conditions for time level t+dt instead of level t, ! outflow boundary conditions changed from Neumann to radiation condition, ! uxrp, vynp eliminated, moisture renamed humidity ! ! Former revisions: !--    Boundary conditions for total water content or scalar, !--    bottom and surface boundary (see also temperature) IF ( moisture  .OR.  passive_scalar )  THEN ! !--       Surface conditions for constant_moisture_flux IF ( humidity  .OR.  passive_scalar )  THEN ! !--       Surface conditions for constant_humidity_flux IF ( ibc_q_b == 0 ) THEN DO  i = nxl-1, nxr+1 v_p(:,nys,:) = v_p(:,nys-1,:) ELSEIF ( inflow_n ) THEN v_p(:,nyn+vynp,:) = v_p(:,nyn+vynp+1,:) v_p(:,nyn,:) = v_p(:,nyn+1,:) ELSEIF ( inflow_l ) THEN u_p(:,:,nxl) = u_p(:,:,nxl-1) ELSEIF ( inflow_r ) THEN u_p(:,:,nxr+uxrp) = u_p(:,:,nxr+uxrp+1) u_p(:,:,nxr) = u_p(:,:,nxr+1) ENDIF pt_p(:,nys-1,:)     = pt_p(:,nys,:) IF ( .NOT. constant_diffusion     )  e_p(:,nys-1,:) = e_p(:,nys,:) IF ( moisture .OR. passive_scalar )  q_p(:,nys-1,:) = q_p(:,nys,:) IF ( humidity .OR. passive_scalar )  q_p(:,nys-1,:) = q_p(:,nys,:) ELSEIF ( outflow_n )  THEN pt_p(:,nyn+1,:)     = pt_p(:,nyn,:) IF ( .NOT. constant_diffusion     )  e_p(:,nyn+1,:) = e_p(:,nyn,:) IF ( moisture .OR. passive_scalar )  q_p(:,nyn+1,:) = q_p(:,nyn,:) IF ( humidity .OR. passive_scalar )  q_p(:,nyn+1,:) = q_p(:,nyn,:) ELSEIF ( outflow_l )  THEN pt_p(:,:,nxl-1)     = pt_p(:,:,nxl) IF ( .NOT. constant_diffusion     )  e_p(:,:,nxl-1) = e_p(:,:,nxl) IF ( moisture .OR. passive_scalar )  q_p(:,:,nxl-1) = q_p(:,:,nxl) IF ( humidity .OR. passive_scalar )  q_p(:,:,nxl-1) = q_p(:,:,nxl) ELSEIF ( outflow_r )  THEN pt_p(:,:,nxr+1)     = pt_p(:,:,nxr) IF ( .NOT. constant_diffusion     )  e_p(:,:,nxr+1) = e_p(:,:,nxr) IF ( moisture .OR. passive_scalar )  q_p(:,:,nxr+1) = q_p(:,:,nxr) IF ( humidity .OR. passive_scalar )  q_p(:,:,nxr+1) = q_p(:,:,nxr) ENDIF ENDIF IF ( range == 'outflow_uvw' ) THEN ! !--    Radiation boundary condition for the velocities at the respective outflow IF ( outflow_s ) THEN !          v(:,nys-1,:) = v(:,nys,:) !          w(:,nys-1,:) = 0.0 !! !!--       Compute the mean horizontal wind parallel to and within the outflow !!--       wall and use this as boundary condition for u !#if defined( __parallel ) !          CALL MPI_ALLREDUCE( uvmean_outflow_l, uvmean_outflow, nzt-nzb+2, & !                              MPI_REAL, MPI_SUM, comm1dx, ierr ) !          uvmean_outflow = uvmean_outflow / ( nx + 1.0 ) !#else !          uvmean_outflow = uvmean_outflow_l / ( nx + 1.0 ) !#endif !          DO  k = nzb, nzt+1 !             u(k,nys-1,:) = uvmean_outflow(k) !          ENDDO ENDIF IF ( outflow_n  .AND.                                                 & intermediate_timestep_count == intermediate_timestep_count_max ) & THEN c_max = dy / dt_3d DO i = nxl-1, nxr+1 DO k = nzb+1, nzt+1 ! !--             First calculate the phase speeds for u,v, and w denom = u_m_n(k,ny,i,-2) - u_m_n(k,ny-1,i,-2) IF ( denom /= 0.0 )  THEN c_u = -c_max * ( u_m_n(k,ny,i,-1)-u_m_n(k,ny,i,-2) ) / denom IF ( c_u < 0.0 )  THEN c_u = 0.0 ELSEIF ( c_u > c_max )  THEN c_u = c_max ENDIF ELSE ! !-- Radiation boundary condition for the velocities at the respective outflow IF ( outflow_s  .AND.                                                 & intermediate_timestep_count == intermediate_timestep_count_max ) & THEN c_max = dy / dt_3d DO i = nxl-1, nxr+1 DO k = nzb+1, nzt+1 ! !--          First calculate the phase speeds for u,v, and w denom = u_m_s(k,0,i) - u_m_s(k,1,i) IF ( denom /= 0.0 )  THEN c_u = -c_max * ( u(k,0,i) - u_m_s(k,0,i) ) / denom IF ( c_u < 0.0 )  THEN c_u = 0.0 ELSEIF ( c_u > c_max )  THEN c_u = c_max ENDIF denom = v_m_n(k,ny,i,-2) - v_m_n(k,ny-1,i,-2) IF ( denom /= 0.0 )  THEN c_v = -c_max * ( v_m_n(k,ny,i,-1)-v_m_n(k,ny,i,-2) ) / denom IF ( c_v < 0.0 )  THEN c_v = 0.0 ELSEIF ( c_v > c_max )  THEN c_v = c_max ENDIF ELSE ELSE c_u = c_max ENDIF denom = v_m_s(k,0,i) - v_m_s(k,1,i) IF ( denom /= 0.0 )  THEN c_v = -c_max * ( v(k,0,i) - v_m_s(k,0,i) ) / denom IF ( c_v < 0.0 )  THEN c_v = 0.0 ELSEIF ( c_v > c_max )  THEN c_v = c_max ENDIF denom = w_m_n(k,ny,i,-2) - w_m_n(k,ny-1,i,-2) IF ( denom /= 0.0 )  THEN c_w = -c_max * ( w_m_n(k,ny,i,-1)-w_m_n(k,ny,i,-2) ) / denom IF ( c_w < 0.0 )  THEN c_w = 0.0 ELSEIF ( c_w > c_max )  THEN c_w = c_max ENDIF ELSE ELSE c_v = c_max ENDIF denom = w_m_s(k,0,i) - w_m_s(k,1,i) IF ( denom /= 0.0 )  THEN c_w = -c_max * ( w(k,0,i) - w_m_s(k,0,i) ) / denom IF ( c_w < 0.0 )  THEN c_w = 0.0 ELSEIF ( c_w > c_max )  THEN c_w = c_max ENDIF ! !--             Calculate the new velocities u(k,ny+1,i) = u_m_n(k,ny+1,i,-1) - dt_3d * c_u * & ( u_m_n(k,ny+1,i,-1) - u_m_n(k,ny,i,-1) ) * ddy v(k,ny+1,i) = v_m_n(k,ny+1,i,-1) - dt_3d * c_v * & ( v_m_n(k,ny+1,i,-1) - v_m_n(k,ny,i,-1) ) * ddy w(k,ny+1,i) = w_m_n(k,ny+1,i,-1) - dt_3d * c_w * & ( w_m_n(k,ny+1,i,-1) - w_m_n(k,ny,i,-1) ) * ddy ! !--             Swap timelevels for the next timestep u_m_n(k,:,i,-2) = u_m_n(k,:,i,-1) u_m_n(k,:,i,-1) = u(k,ny-1:ny+1,i) v_m_n(k,:,i,-2) = v_m_n(k,:,i,-1) v_m_n(k,:,i,-1) = v(k,ny-1:ny+1,i) w_m_n(k,:,i,-2) = w_m_n(k,:,i,-1) w_m_n(k,:,i,-1) = w(k,ny-1:ny+1,i) ENDDO ENDDO ! !--       Bottom boundary at the outflow IF ( ibc_uv_b == 0 )  THEN u(nzb,ny+1,:) = -u(nzb+1,ny+1,:) v(nzb,ny+1,:) = -v(nzb+1,ny+1,:) ELSE u(nzb,ny+1,:) =  u(nzb+1,ny+1,:) v(nzb,ny+1,:) =  v(nzb+1,ny+1,:) ENDIF w(nzb,ny+1,:) = 0.0 ! !--       Top boundary at the outflow IF ( ibc_uv_t == 0 )  THEN u(nzt+1,ny+1,:) = ug(nzt+1) v(nzt+1,ny+1,:) = vg(nzt+1) ELSE u(nzt+1,ny+1,:) = u(nzt,nyn+1,:) v(nzt+1,ny+1,:) = v(nzt,nyn+1,:) ENDIF w(nzt:nzt+1,ny+1,:) = 0.0 ENDIF IF ( outflow_l ) THEN !          u(:,:,nxl-1) = u(:,:,nxl) !          w(:,:,nxl-1) = 0.0 ! !--       Compute the mean horizontal wind parallel to and within the outflow !--       wall and use this as boundary condition for v !#if defined( __parallel ) !          CALL MPI_ALLREDUCE( uvmean_outflow_l, uvmean_outflow, nzt-nzb+2, & !                              MPI_REAL, MPI_SUM, comm1dy, ierr ) !          uvmean_outflow = uvmean_outflow / ( ny + 1.0 ) !#else !          uvmean_outflow = uvmean_outflow_l / ( ny + 1.0 ) !#endif !          DO  k = nzb, nzt+1 !             v(k,:,nxl-1) = uvmean_outflow(k) !          ENDDO ! ENDIF IF ( outflow_r  .AND.                                                 & intermediate_timestep_count == intermediate_timestep_count_max ) & THEN c_max = dx / dt_3d DO j = nys-1, nyn+1 DO k = nzb+1, nzt+1 ! !--             First calculate the phase speeds for u,v, and w denom = u_m_r(k,j,nx,-2) - u_m_r(k,j,nx-1,-2) IF ( denom /= 0.0 )  THEN c_u = -c_max * ( u_m_r(k,j,nx,-1)-u_m_r(k,j,nx,-2) ) / denom IF ( c_u < 0.0 )  THEN c_u = 0.0 ELSEIF ( c_u > c_max )  THEN c_u = c_max ENDIF ELSE ELSE c_w = c_max ENDIF ! !--          Calculate the new velocities u_p(k,-1,i) = u(k,-1,i) + dt_3d * c_u * & ( u(k,-1,i) - u(k,0,i) ) * ddy v_p(k,-1,i) = v(k,-1,i) + dt_3d * c_v * & ( v(k,-1,i) - v_m_s(k,0,i) ) * ddy w_p(k,-1,i) = w(k,-1,i) + dt_3d * c_w * & ( w(k,-1,i) - w(k,0,i) ) * ddy ! !--          Save old timelevels for the next timestep u_m_s(k,:,i) = u(k,-1:1,i) v_m_s(k,:,i) = v(k,-1:1,i) w_m_s(k,:,i) = w(k,-1:1,i) ENDDO ENDDO ! !--    Bottom boundary at the outflow IF ( ibc_uv_b == 0 )  THEN u_p(nzb,-1,:) = -u_p(nzb+1,-1,:) v_p(nzb,-1,:) = -v_p(nzb+1,-1,:) ELSE u_p(nzb,-1,:) =  u_p(nzb+1,-1,:) v_p(nzb,-1,:) =  v_p(nzb+1,-1,:) ENDIF w_p(nzb,ny+1,:) = 0.0 ! !--    Top boundary at the outflow IF ( ibc_uv_t == 0 )  THEN u_p(nzt+1,-1,:) = ug(nzt+1) v_p(nzt+1,-1,:) = vg(nzt+1) ELSE u_p(nzt+1,-1,:) = u(nzt,-1,:) v_p(nzt+1,-1,:) = v(nzt,-1,:) ENDIF w_p(nzt:nzt+1,-1,:) = 0.0 ENDIF IF ( outflow_n  .AND.                                                 & intermediate_timestep_count == intermediate_timestep_count_max ) & THEN c_max = dy / dt_3d DO i = nxl-1, nxr+1 DO k = nzb+1, nzt+1 ! !--          First calculate the phase speeds for u,v, and w denom = u_m_n(k,ny,i) - u_m_n(k,ny-1,i) IF ( denom /= 0.0 )  THEN c_u = -c_max * ( u(k,ny,i) - u_m_n(k,ny,i) ) / denom IF ( c_u < 0.0 )  THEN c_u = 0.0 ELSEIF ( c_u > c_max )  THEN c_u = c_max ENDIF denom = v_m_r(k,j,nx,-2) - v_m_r(k,j,nx-1,-2) IF ( denom /= 0.0 )  THEN c_v = -c_max * ( v_m_r(k,j,nx,-1)-v_m_r(k,j,nx,-2) ) / denom IF ( c_v < 0.0 )  THEN c_v = 0.0 ELSEIF ( c_v > c_max )  THEN c_v = c_max ENDIF ELSE ELSE c_u = c_max ENDIF denom = v_m_n(k,ny,i) - v_m_n(k,ny-1,i) IF ( denom /= 0.0 )  THEN c_v = -c_max * ( v(k,ny,i) - v_m_n(k,ny,i) ) / denom IF ( c_v < 0.0 )  THEN c_v = 0.0 ELSEIF ( c_v > c_max )  THEN c_v = c_max ENDIF denom = w_m_r(k,j,nx,-2) - w_m_r(k,j,nx-1,-2) IF ( denom /= 0.0 )  THEN c_w = -c_max * ( w_m_r(k,j,nx,-1)-w_m_n(k,j,nx,-2) ) / denom IF ( c_w < 0.0 )  THEN c_w = 0.0 ELSEIF ( c_w > c_max )  THEN c_w = c_max ENDIF ELSE ELSE c_v = c_max ENDIF denom = w_m_n(k,ny,i) - w_m_n(k,ny-1,i) IF ( denom /= 0.0 )  THEN c_w = -c_max * ( w(k,ny,i) - w_m_n(k,ny,i) ) / denom IF ( c_w < 0.0 )  THEN c_w = 0.0 ELSEIF ( c_w > c_max )  THEN c_w = c_max ENDIF ! !--             Calculate the new velocities u(k,j,nx+1) = u_m_r(k,j,nx+1,-1) - dt_3d * c_u * & ( u_m_r(k,j,nx+1,-1) - u_m_r(k,j,nx,-1) ) * ddx v(k,j,nx+1) = v_m_r(k,j,nx+1,-1) - dt_3d * c_v * & ( v_m_r(k,j,nx+1,-1) - v_m_r(k,j,nx,-1) ) * ddx w(k,j,nx+1) = w_m_r(k,j,nx+1,-1) - dt_3d * c_w * & ( w_m_r(k,j,nx+1,-1) - w_m_r(k,j,nx,-1) ) * ddx ! !--             Swap timelevels for the next timestep u_m_r(k,j,:,-2) = u_m_r(k,j,:,-1) u_m_r(k,j,:,-1) = u(k,j,nx-1:nx+1) v_m_r(k,j,:,-2) = v_m_r(k,j,:,-1) v_m_r(k,j,:,-1) = v(k,j,nx-1:nx+1) w_m_r(k,j,:,-2) = w_m_r(k,j,:,-1) w_m_r(k,j,:,-1) = w(k,j,nx-1:nx+1) ENDDO ENDDO ! !--       Bottom boundary at the outflow IF ( ibc_uv_b == 0 )  THEN u(nzb,ny+1,:) = -u(nzb+1,ny+1,:) v(nzb,ny+1,:) = -v(nzb+1,ny+1,:) ELSE u(nzb,ny+1,:) =  u(nzb+1,ny+1,:) v(nzb,ny+1,:) =  v(nzb+1,ny+1,:) ENDIF w(nzb,ny+1,:) = 0.0 ! !--       Top boundary at the outflow IF ( ibc_uv_t == 0 )  THEN u(nzt+1,ny+1,:) = ug(nzt+1) v(nzt+1,ny+1,:) = vg(nzt+1) ELSE u(nzt+1,ny+1,:) = u(nzt,nyn+1,:) v(nzt+1,ny+1,:) = v(nzt,nyn+1,:) ENDIF w(nzt:nzt+1,ny+1,:) = 0.0 ENDIF ELSE c_w = c_max ENDIF ! !--          Calculate the new velocities u_p(k,ny+1,i) = u(k,ny+1,i) - dt_3d * c_u * & ( u(k,ny+1,i) - u(k,ny,i) ) * ddy v_p(k,ny+1,i) = v(k,ny+1,i) - dt_3d * c_v * & ( v(k,ny+1,i) - v(k,ny,i) ) * ddy w_p(k,ny+1,i) = w(k,ny+1,i) - dt_3d * c_w * & ( w(k,ny+1,i) - w(k,ny,i) ) * ddy ! !--          Swap timelevels for the next timestep u_m_n(k,:,i) = u(k,ny-1:ny+1,i) v_m_n(k,:,i) = v(k,ny-1:ny+1,i) w_m_n(k,:,i) = w(k,ny-1:ny+1,i) ENDDO ENDDO ! !--    Bottom boundary at the outflow IF ( ibc_uv_b == 0 )  THEN u_p(nzb,ny+1,:) = -u_p(nzb+1,ny+1,:) v_p(nzb,ny+1,:) = -v_p(nzb+1,ny+1,:) ELSE u_p(nzb,ny+1,:) =  u_p(nzb+1,ny+1,:) v_p(nzb,ny+1,:) =  v_p(nzb+1,ny+1,:) ENDIF w_p(nzb,ny+1,:) = 0.0 ! !--    Top boundary at the outflow IF ( ibc_uv_t == 0 )  THEN u_p(nzt+1,ny+1,:) = ug(nzt+1) v_p(nzt+1,ny+1,:) = vg(nzt+1) ELSE u_p(nzt+1,ny+1,:) = u_p(nzt,nyn+1,:) v_p(nzt+1,ny+1,:) = v_p(nzt,nyn+1,:) ENDIF w_p(nzt:nzt+1,ny+1,:) = 0.0 ENDIF IF ( outflow_l  .AND.                                                 & intermediate_timestep_count == intermediate_timestep_count_max ) & THEN c_max = dx / dt_3d DO j = nys-1, nyn+1 DO k = nzb+1, nzt+1 ! !--          First calculate the phase speeds for u,v, and w denom = u_m_l(k,j,0) - u_m_l(k,j,1) IF ( denom /= 0.0 )  THEN c_u = -c_max * ( u(k,j,0) - u_m_r(k,j,0) ) / denom IF ( c_u > 0.0 )  THEN c_u = 0.0 ELSEIF ( c_u < -c_max )  THEN c_u = -c_max ENDIF ELSE c_u = -c_max ENDIF denom = v_m_l(k,j,0) - v_m_l(k,j,1) IF ( denom /= 0.0 )  THEN c_v = -c_max * ( v(k,j,0) - v_m_l(k,j,0) ) / denom IF ( c_v < 0.0 )  THEN c_v = 0.0 ELSEIF ( c_v > c_max )  THEN c_v = c_max ENDIF ELSE c_v = c_max ENDIF denom = w_m_l(k,j,0) - w_m_l(k,j,1) IF ( denom /= 0.0 )  THEN c_w = -c_max * ( w(k,j,0) - w_m_l(k,j,0) ) / denom IF ( c_w < 0.0 )  THEN c_w = 0.0 ELSEIF ( c_w > c_max )  THEN c_w = c_max ENDIF ELSE c_w = c_max ENDIF ! !--          Calculate the new velocities u_p(k,j,-1) = u(k,j,-1) + dt_3d * c_u * & ( u(k,j,-1) - u(k,j,0) ) * ddx v_p(k,j,-1) = v(k,j,-1) + dt_3d * c_v * & ( v(k,j,-1) - v(k,j,0) ) * ddx w_p(k,j,-1) = w(k,j,-1) + dt_3d * c_w * & ( w(k,j,-1) - w(k,j,0) ) * ddx ! !--          Swap timelevels for the next timestep u_m_l(k,j,:) = u(k,j,-1:1) v_m_l(k,j,:) = v(k,j,-1:1) w_m_l(k,j,:) = w(k,j,-1:1) ENDDO ENDDO ! !--    Bottom boundary at the outflow IF ( ibc_uv_b == 0 )  THEN u_p(nzb,:,-1) = -u_p(nzb+1,:,-1) v_p(nzb,:,-1) = -v_p(nzb+1,:,-1) ELSE u_p(nzb,:,-1) =  u_p(nzb+1,:,-1) v_p(nzb,:,-1) =  v_p(nzb+1,:,-1) ENDIF w_p(nzb,:,-1) = 0.0 ! !--    Top boundary at the outflow IF ( ibc_uv_t == 0 )  THEN u_p(nzt+1,:,-1) = ug(nzt+1) v_p(nzt+1,:,-1) = vg(nzt+1) ELSE u_p(nzt+1,:,-1) = u_p(nzt,:,-1) v_p(nzt+1,:,-1) = v_p(nzt,:,-1) ENDIF w_p(nzt:nzt+1,:,-1) = 0.0 ENDIF IF ( outflow_r  .AND.                                                 & intermediate_timestep_count == intermediate_timestep_count_max ) & THEN c_max = dx / dt_3d DO j = nys-1, nyn+1 DO k = nzb+1, nzt+1 ! !--          First calculate the phase speeds for u,v, and w denom = u_m_r(k,j,nx) - u_m_r(k,j,nx-1) IF ( denom /= 0.0 )  THEN c_u = -c_max * ( u(k,j,nx) - u_m_r(k,j,nx) ) / denom IF ( c_u < 0.0 )  THEN c_u = 0.0 ELSEIF ( c_u > c_max )  THEN c_u = c_max ENDIF ELSE c_u = c_max ENDIF denom = v_m_r(k,j,nx) - v_m_r(k,j,nx-1) IF ( denom /= 0.0 )  THEN c_v = -c_max * ( v(k,j,nx) - v_m_r(k,j,nx) ) / denom IF ( c_v < 0.0 )  THEN c_v = 0.0 ELSEIF ( c_v > c_max )  THEN c_v = c_max ENDIF ELSE c_v = c_max ENDIF denom = w_m_r(k,j,nx) - w_m_r(k,j,nx-1) IF ( denom /= 0.0 )  THEN c_w = -c_max * ( w(k,j,nx) - w_m_r(k,j,nx) ) / denom IF ( c_w < 0.0 )  THEN c_w = 0.0 ELSEIF ( c_w > c_max )  THEN c_w = c_max ENDIF ELSE c_w = c_max ENDIF ! !--          Calculate the new velocities u_p(k,j,nx+1) = u(k,j,nx+1) - dt_3d * c_u * & ( u(k,j,nx+1) - u(k,j,nx) ) * ddx v_p(k,j,nx+1) = v(k,j,nx+1) - dt_3d * c_v * & ( v(k,j,nx+1) - v(k,j,nx) ) * ddx w_p(k,j,nx+1) = w(k,j,nx+1) - dt_3d * c_w * & ( w(k,j,nx+1) - w(k,j,nx) ) * ddx ! !--          Swap timelevels for the next timestep u_m_r(k,j,:) = u(k,j,nx-1:nx+1) v_m_r(k,j,:) = v(k,j,nx-1:nx+1) w_m_r(k,j,:) = w(k,j,nx-1:nx+1) ENDDO ENDDO ! !--    Bottom boundary at the outflow IF ( ibc_uv_b == 0 )  THEN u_p(nzb,:,nx+1) = -u_p(nzb+1,:,nx+1) v_p(nzb,:,nx+1) = -v_p(nzb+1,:,nx+1) ELSE u_p(nzb,:,nx+1) =  u_p(nzb+1,:,nx+1) v_p(nzb,:,nx+1) =  v_p(nzb+1,:,nx+1) ENDIF w_p(nzb,:,nx+1) = 0.0 ! !--    Top boundary at the outflow IF ( ibc_uv_t == 0 )  THEN u_p(nzt+1,:,nx+1) = ug(nzt+1) v_p(nzt+1,:,nx+1) = vg(nzt+1) ELSE u_p(nzt+1,:,nx+1) = u_p(nzt,:,nx+1) v_p(nzt+1,:,nx+1) = v_p(nzt,:,nx+1) ENDIF w(nzt:nzt+1,:,nx+1) = 0.0 ENDIF

• ## palm/trunk/SOURCE/coriolis.f90

 r4 ! Actual revisions: ! ----------------- ! ! uxrp, vynp eliminated ! ! Former revisions: !--       u-component CASE ( 1 ) DO  i = nxl, nxr+uxrp DO  i = nxl, nxr DO  j = nys, nyn DO  k = nzb_u_inner(j,i)+1, nzt CASE ( 2 ) DO  i = nxl, nxr DO  j = nys, nyn+vynp DO  j = nys, nyn DO  k = nzb_v_inner(j,i)+1, nzt tend(k,j,i) = tend(k,j,i) - f *     ( 0.25 *          &
• ## palm/trunk/SOURCE/data_output_2d.f90

 r72 ! Actual revisions: ! ----------------- ! Output of precipitation amount/rate and roughness length ! Output of precipitation amount/rate and roughness length, ! 2nd+3rd argument removed from exchange horiz ! ! Former revisions: IF ( av == 0 )  THEN tend = prt_count CALL exchange_horiz( tend, 0, 0 ) CALL exchange_horiz( tend ) DO  i = nxl-1, nxr+1 DO  j = nys-1, nyn+1 resorted = .TRUE. ELSE CALL exchange_horiz( pc_av, 0, 0 ) CALL exchange_horiz( pc_av ) to_be_resorted => pc_av ENDIF ENDDO ENDDO CALL exchange_horiz( tend, 0, 0 ) CALL exchange_horiz( tend ) DO  i = nxl-1, nxr+1 DO  j = nys-1, nyn+1 resorted = .TRUE. ELSE CALL exchange_horiz( pr_av, 0, 0 ) CALL exchange_horiz( pr_av ) to_be_resorted => pr_av ENDIF
• ## palm/trunk/SOURCE/data_output_3d.f90

 r4 ! Actual revisions: ! ----------------- ! ! 2nd+3rd argument removed from exchange horiz ! ! Former revisions: IF ( av == 0 )  THEN tend = prt_count CALL exchange_horiz( tend, 0, 0 ) CALL exchange_horiz( tend ) DO  i = nxl-1, nxr+1 DO  j = nys-1, nyn+1 resorted = .TRUE. ELSE CALL exchange_horiz( pc_av, 0, 0 ) CALL exchange_horiz( pc_av ) to_be_resorted => pc_av ENDIF ENDDO ENDDO CALL exchange_horiz( tend, 0, 0 ) CALL exchange_horiz( tend ) DO  i = nxl-1, nxr+1 DO  j = nys-1, nyn+1 resorted = .TRUE. ELSE CALL exchange_horiz( pr_av, 0, 0 ) CALL exchange_horiz( pr_av ) to_be_resorted => pr_av ENDIF
• ## palm/trunk/SOURCE/data_output_dvrp.f90

 r60 ! Actual revisions: ! ----------------- ! Particles-package is now part of the default code. ! Particles-package is now part of the default code, ! moisture renamed humidity ! TEST: write statements ! CASE ( 'q', 'q_xy', 'q_xz', 'q_yz' ) IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN DO  i = nxl, nxr+1 DO  j = nys, nyn+1 ELSE IF ( myid == 0 )  THEN PRINT*, '+++ data_output_dvrp: if moisture/passive_scalar = ', & PRINT*, '+++ data_output_dvrp: if humidity/passive_scalar = ', & 'FALSE output of ', output_variable,            & 'is not provided'
• ## palm/trunk/SOURCE/diffusion_u.f90

 r57 ! ----------------- ! Wall functions now include diabatic conditions, call of routine wall_fluxes, ! z0 removed from argument list ! z0 removed from argument list, uxrp eliminated ! ! Former revisions: REAL, DIMENSION(:,:),   POINTER ::  usws REAL, DIMENSION(:,:,:), POINTER ::  km, u, v, w REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr+uxrp) ::  usvs REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  usvs ! !--    if neccessary IF ( topography /= 'flat' )  THEN CALL wall_fluxes( usvs, 1.0, 0.0, 0.0, 0.0, uxrp, 0, nzb_u_inner, & CALL wall_fluxes( usvs, 1.0, 0.0, 0.0, 0.0, nzb_u_inner, & nzb_u_outer, wall_u ) ENDIF DO  i = nxl, nxr+uxrp DO  i = nxl, nxr DO  j = nys,nyn !
• ## palm/trunk/SOURCE/diffusion_v.f90

 r57 ! ----------------- ! Wall functions now include diabatic conditions, call of routine wall_fluxes, ! z0 removed from argument list ! z0 removed from argument list, vynp eliminated ! ! Former revisions: REAL, DIMENSION(:,:),   POINTER ::  vsws REAL, DIMENSION(:,:,:), POINTER ::  km, u, v, w REAL, DIMENSION(nzb:nzt+1,nys:nyn+vynp,nxl:nxr) ::  vsus REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  vsus ! !--    if neccessary IF ( topography /= 'flat' )  THEN CALL wall_fluxes( vsus, 0.0, 1.0, 0.0, 0.0, 0, vynp, nzb_v_inner, & CALL wall_fluxes( vsus, 0.0, 1.0, 0.0, 0.0, nzb_v_inner, & nzb_v_outer, wall_v ) ENDIF DO  i = nxl, nxr DO  j = nys, nyn+vynp DO  j = nys, nyn ! !--          Compute horizontal diffusion
• ## palm/trunk/SOURCE/diffusion_w.f90

 r57 !--    walls, if neccessary IF ( topography /= 'flat' )  THEN CALL wall_fluxes( wsus, 0.0, 0.0, 0.0, 1.0, 0, 0, nzb_w_inner, & CALL wall_fluxes( wsus, 0.0, 0.0, 0.0, 1.0, nzb_w_inner, & nzb_w_outer, wall_w_x ) CALL wall_fluxes( wsvs, 0.0, 0.0, 1.0, 0.0, 0, 0, nzb_w_inner, & CALL wall_fluxes( wsvs, 0.0, 0.0, 1.0, 0.0, nzb_w_inner, & nzb_w_outer, wall_w_y ) ENDIF
• ## palm/trunk/SOURCE/disturb_field.f90

 r4 SUBROUTINE disturb_field( nzb_uv_inner, dist1, field, xrp, ynp ) SUBROUTINE disturb_field( nzb_uv_inner, dist1, field ) !------------------------------------------------------------------------------! ! Actual revisions: ! ----------------- ! ! xrp, ynp eliminated, 2nd+3rd argument removed from exchange horiz ! ! Former revisions: IMPLICIT NONE INTEGER ::  i, j, k, xrp, ynp INTEGER ::  i, j, k INTEGER ::  nzb_uv_inner(nys-1:nyn+1,nxl-1:nxr+1) REAL    ::  randomnumber,                             & dist1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & field(nzb:nzt+1,nys-1:nyn+ynp+1,nxl-1:nxr+xrp+1) field(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) REAL, DIMENSION(:,:,:), ALLOCATABLE ::  dist2 ! !-- Exchange of ghost points for the random perturbation CALL exchange_horiz( dist1, 0, 0 ) CALL exchange_horiz( dist1 ) ! !-- Exchange of ghost points for the filtered perturbation. !-- Afterwards, filter operation and exchange of ghost points are repeated. CALL exchange_horiz( dist2, 0, 0 ) CALL exchange_horiz( dist2 ) DO  i = nxl, nxr DO  j = nys, nyn ENDDO ENDDO CALL exchange_horiz( dist1, 0, 0 ) CALL exchange_horiz( dist1 ) !
• ## palm/trunk/SOURCE/exchange_horiz.f90

 r4 SUBROUTINE exchange_horiz( ar, xrp, ynp ) SUBROUTINE exchange_horiz( ar ) !------------------------------------------------------------------------------! ! Actual revisions: ! ----------------- ! ! Special cases for additional gridpoints along x or y in case of non-cyclic ! boundary conditions are not regarded any more ! ! Former revisions: IMPLICIT NONE INTEGER ::  xrp, ynp #if defined( __parallel ) INTEGER                               ::  typexz INTEGER, DIMENSION(4)                 ::  req INTEGER, DIMENSION(MPI_STATUS_SIZE,4) ::  wait_stat #endif REAL ::  ar(nzb:nzt+1,nys-1:nyn+ynp+1,nxl-1:nxr+xrp+1) REAL ::  ar(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) ELSE req = 0 ! ar(nzb,nys-1,nxl-1), ngp_yz(grid_level), MPI_REAL, pleft,  1, & comm2d, req(4), ierr ) call MPI_Waitall (4,req,wait_stat,ierr) CALL MPI_WAITALL( 4, req, wait_stat, ierr ) ENDIF ELSE ! !--    Set the MPI data type, which depends on the size of the array !--    (the v array has an additional gridpoint along y in case of non-cyclic !--    boundary conditions) IF ( ynp == 0 )  THEN typexz = type_xz(grid_level) ELSE typexz = type_xz_p ENDIF req = 0 ! !--    Send front boundary, receive rear one CALL MPI_ISEND( ar(nzb,nys,nxl-1),   1, typexz, psouth, 0, comm2d, & req(1), ierr ) CALL MPI_IRECV( ar(nzb,nyn+1,nxl-1), 1, typexz, pnorth, 0, comm2d, & req(2), ierr ) CALL MPI_ISEND( ar(nzb,nys,nxl-1),   1, type_xz(grid_level), psouth, 0, & comm2d, req(1), ierr ) CALL MPI_IRECV( ar(nzb,nyn+1,nxl-1), 1, type_xz(grid_level), pnorth, 0, & comm2d, req(2), ierr ) ! !--    Send rear boundary, receive front one CALL MPI_ISEND( ar(nzb,nyn,nxl-1),   1, typexz, pnorth, 1, comm2d, & req(3), ierr ) CALL MPI_IRECV( ar(nzb,nys-1,nxl-1), 1, typexz, psouth, 1, comm2d, & req(4), ierr ) call MPI_Waitall (4,req,wait_stat,ierr) CALL MPI_ISEND( ar(nzb,nyn,nxl-1),   1, type_xz(grid_level), pnorth, 1, & comm2d, req(3), ierr ) CALL MPI_IRECV( ar(nzb,nys-1,nxl-1), 1, type_xz(grid_level), psouth, 1, & comm2d, req(4), ierr ) call MPI_WAITALL( 4, req, wait_stat, ierr ) ENDIF
• ## palm/trunk/SOURCE/flow_statistics.f90

 r51 ! ----------------- ! Collection of time series quantities moved from routine flow_statistics to ! here, routine user_statistics is called for each statistic region ! here, routine user_statistics is called for each statistic region, ! moisture renamed humidity ! ! Former revisions: !--    total water content, specific humidity and liquid water potential !--    temperature IF ( moisture )  THEN IF ( humidity )  THEN !\$OMP DO DO  i = nxl, nxr sums_l(:,2,0) = sums_l(:,2,0) + sums_l(:,2,i) sums_l(:,4,0) = sums_l(:,4,0) + sums_l(:,4,i) IF ( moisture )  THEN IF ( humidity )  THEN sums_l(:,41,0) = sums_l(:,41,0) + sums_l(:,41,i) sums_l(:,44,0) = sums_l(:,44,0) + sums_l(:,44,i) CALL MPI_ALLREDUCE( sums_l(nzb,4,0), sums(nzb,4), nzt+2-nzb, MPI_REAL, & MPI_SUM, comm2d, ierr ) IF ( moisture ) THEN IF ( humidity ) THEN CALL MPI_ALLREDUCE( sums_l(nzb,44,0), sums(nzb,44), nzt+2-nzb, & MPI_REAL, MPI_SUM, comm2d, ierr ) sums(:,2) = sums_l(:,2,0) sums(:,4) = sums_l(:,4,0) IF ( moisture ) THEN IF ( humidity ) THEN sums(:,44) = sums_l(:,44,0) sums(:,41) = sums_l(:,41,0) ! !--    Humidity and cloud parameters IF ( moisture ) THEN IF ( humidity ) THEN sums(:,44) = sums(:,44) / ngp_2dh_outer(:,sr) sums(:,41) = sums(:,41) / ngp_2dh_outer(:,sr) ! !--             Buoyancy flux, water flux (humidity flux) w"q" IF ( moisture ) THEN IF ( humidity ) THEN sums_l(k,45,tn) = sums_l(k,45,tn)                           & - 0.5 * ( kh(k,j,i) + kh(k+1,j,i) )   & sums_l(nzb,61,tn) = sums_l(nzb,61,tn) + & 0.0 * rmask(j,i,sr)           ! v"pt" IF ( moisture )  THEN IF ( humidity )  THEN sums_l(nzb,48,tn) = sums_l(nzb,48,tn) + & qsws(j,i) * rmask(j,i,sr)  ! w"q" (w"qv") sums_l(nzt,61,tn) = sums_l(nzt,61,tn) + & 0.0 * rmask(j,i,sr)           ! v"pt" IF ( moisture )  THEN IF ( humidity )  THEN sums_l(nzt,48,tn) = sums_l(nzt,48,tn) + & qswst(j,i) * rmask(j,i,sr)  ! w"q" (w"qv") !--             Buoyancy flux, water flux, humidity flux and liquid water !--             content IF ( moisture )  THEN IF ( humidity )  THEN pts = 0.5 * ( vpt(k,j,i)   - hom(k,1,44,sr) + & vpt(k+1,j,i) - hom(k+1,1,44,sr) )

 r63 ! ----------------- ! Output of netcdf_64bit_3d, particles-package is now part of the default code, ! output of the loop optimization method. ! output of the loop optimization method, moisture renamed humidity, ! output of subversion revision number ! ! Former revisions: CHARACTER (LEN=10) ::  coor_chr, host_chr CHARACTER (LEN=16) ::  begin_chr CHARACTER (LEN=21) ::  ver_rev CHARACTER (LEN=40) ::  output_format CHARACTER (LEN=70) ::  char1, char2, coordinates, gradients, dopr_chr, & !-- Run-identification, date, time, host host_chr = host(1:10) WRITE ( io, 100 )  version, TRIM( run_classification ), run_date, & ver_rev = TRIM( version ) // '  ' // TRIM( revision ) WRITE ( io, 100 )  ver_rev, TRIM( run_classification ), run_date, & run_identifier, run_time, runnr, ADJUSTR( host_chr ) #if defined( __parallel ) WRITE ( io, 123 )  rayleigh_damping_height, rayleigh_damping_factor ENDIF IF ( moisture )  THEN IF ( humidity )  THEN IF ( .NOT. cloud_physics )  THEN WRITE ( io, 129 ) ENDIF IF ( moisture  .OR.  passive_scalar )  THEN IF ( moisture )  THEN IF ( humidity  .OR.  passive_scalar )  THEN IF ( humidity )  THEN IF ( ibc_q_b == 0 )  THEN runten = 'q(0)     = q_surface' IF ( random_heatflux )  WRITE ( io, 307 ) ENDIF IF ( moisture  .AND.  constant_waterflux )  THEN IF ( humidity  .AND.  constant_waterflux )  THEN WRITE ( io, 311 ) surface_waterflux ENDIF WRITE ( io, 306 )  top_heatflux ENDIF IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN WRITE ( io, 315 ) ENDIF WRITE ( io, 305 )  zu(1), roughness_length, kappa, rif_min, rif_max IF ( .NOT. constant_heatflux )  WRITE ( io, 308 ) IF ( moisture  .AND.  .NOT. constant_waterflux )  THEN IF ( humidity  .AND.  .NOT. constant_waterflux )  THEN WRITE ( io, 312 ) ENDIF !-- Initial humidity profile !-- Building output strings, starting with surface humidity IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN WRITE ( temperatures, '(E8.1)' )  q_surface gradients = '--------' ENDDO IF ( moisture )  THEN IF ( humidity )  THEN WRITE ( io, 421 )  TRIM( coordinates ), TRIM( temperatures ), & TRIM( gradients ), TRIM( slices ) WRITE ( io, 475 )  pt_surface_initial_change ENDIF IF ( moisture  .AND.  q_surface_initial_change /= 0.0 )  THEN IF ( humidity  .AND.  q_surface_initial_change /= 0.0 )  THEN WRITE ( io, 476 )  q_surface_initial_change ENDIF 99 FORMAT (1X,78('-')) 100 FORMAT (/10X,'****************',11X,28('-')/                & 10X,'*  ',A12,'*',11X,A/                            & 10X,'****************',11X,28('-')//                & 100 FORMAT (/1X,'*************************',11X,28('-')/        & 1X,'* ',A,' *',11X,A/                               & 1X,'*************************',11X,28('-')//        & ' Date:            ',A8,11X,'Run:       ',A20/      & ' Time:            ',A8,11X,'Run-No.:   ',I2.2/     &
• ## palm/trunk/SOURCE/init_1d_model.f90

 r46 ! Actual revisions: ! ----------------- ! Bugfix: preset of tendencies te_em, te_um, te_vm ! Bugfix: preset of tendencies te_em, te_um, te_vm, ! moisture renamed humidity ! ! Former revisions: vsws1d = 0.0; vsws1d_m = 0.0 z01d = roughness_length IF ( moisture .OR. passive_scalar )  qs1d = 0.0 IF ( humidity .OR. passive_scalar )  qs1d = 0.0 ! kmzm = 0.5 * ( km1d_m(k-1) + km1d_m(k) ) kmzp = 0.5 * ( km1d_m(k) + km1d_m(k+1) ) IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN pt_0 = pt_init(k) flux =  ( pt_init(k+1)-pt_init(k-1) ) * dd2zu(k) kmzm = 0.5 * ( km1d_m(k-1) + km1d_m(k) ) kmzp = 0.5 * ( km1d_m(k) + km1d_m(k+1) ) IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN pt_0 = pt_init(k) flux =  ( pt_init(k+1)-pt_init(k-1) ) * dd2zu(k) IF ( prandtl_layer )  THEN IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN pt_0 = pt_init(nzb+1) flux = ts1d DO  k = nzb_diff, nzt IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN pt_0 = pt_init(k) flux = ( pt_init(k+1) - pt_init(k-1) ) * dd2zu(k) e1d(nzb) = e1d(nzb+1) IF ( moisture .OR. passive_scalar ) THEN IF ( humidity .OR. passive_scalar ) THEN ! !--                Compute q*
• ## palm/trunk/SOURCE/init_3d_model.f90

 r73 ! Arrays for radiation boundary conditions are allocated (u_m_l, u_m_r, etc.), ! bugfix for cases with the outflow damping layer extending over more than one ! subdomain, ! New initializing action "by_user" calls user_init_3d_model, ! subdomain, moisture renamed humidity, ! new initializing action "by_user" calls user_init_3d_model, ! precipitation_amount/rate, ts_value are allocated, +module netcdf_control, ! initial velocities at nzb+1 are regarded for volume ! flow control in case they have been set zero before (to avoid small timesteps) ! -uvmean_outflow, uxrp, vynp eliminated ! ! Former revisions: sums_divnew_l(0:statistic_regions),                           & sums_divold_l(0:statistic_regions) ) ALLOCATE( rdf(nzb+1:nzt), uvmean_outflow(nzb:nzt+1),                    & uvmean_outflow_l(nzb:nzt+1) ) ALLOCATE( rdf(nzb+1:nzt) ) ALLOCATE( hom_sum(nzb:nzt+1,var_hom,0:statistic_regions),               & ngp_2dh_outer(nzb:nzt+1,0:statistic_regions),                 & ENDIF ALLOCATE( d(nzb+1:nzta,nys:nyna,nxl:nxra),             & e_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      & e_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      & e_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      & kh_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     & km_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     & p(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),        & pt_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     & pt_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     & pt_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     & tend(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),     & u_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1+uxrp), & u_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1+uxrp), & u_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1+uxrp), & v_1(nzb:nzt+1,nys-1:nyn+1+vynp,nxl-1:nxr+1), & v_2(nzb:nzt+1,nys-1:nyn+1+vynp,nxl-1:nxr+1), & v_3(nzb:nzt+1,nys-1:nyn+1+vynp,nxl-1:nxr+1), & w_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      & w_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),      & ALLOCATE( d(nzb+1:nzta,nys:nyna,nxl:nxra),         & e_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  & e_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  & e_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  & kh_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & km_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & p(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),    & pt_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & pt_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & pt_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & tend(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & u_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & u_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & u_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & v_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & v_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & v_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & w_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  & w_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1),  & w_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) ) ENDIF IF ( moisture  .OR.  passive_scalar ) THEN ! !--    2D-moisture/scalar arrays IF ( humidity  .OR.  passive_scalar ) THEN ! !--    2D-humidity/scalar arrays ALLOCATE ( qs(nys-1:nyn+1,nxl-1:nxr+1),     & qsws_1(nys-1:nyn+1,nxl-1:nxr+1), & ENDIF ! !--    3D-moisture/scalar arrays !--    3D-humidity/scalar arrays ALLOCATE( q_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & q_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & ! !--    3D-arrays needed for moisture only IF ( moisture )  THEN !--    3D-arrays needed for humidity only IF ( humidity )  THEN ALLOCATE( vpt_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) ) !-- conditions IF ( outflow_l )  THEN ALLOCATE( u_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1,-2:-1), & v_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1,-2:-1), & w_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1,-2:-1) ) ALLOCATE( u_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1), & v_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1), & w_m_l(nzb:nzt+1,nys-1:nyn+1,-1:1) ) ENDIF IF ( outflow_r )  THEN ALLOCATE( u_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1,-2:-1), & v_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1,-2:-1), & w_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1,-2:-1) ) ALLOCATE( u_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1), & v_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1), & w_m_r(nzb:nzt+1,nys-1:nyn+1,nx-1:nx+1) ) ENDIF IF ( outflow_s )  THEN ALLOCATE( u_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1,-2:-1), & v_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1,-2:-1), & w_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1,-2:-1) ) ALLOCATE( u_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1), & v_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1), & w_m_s(nzb:nzt+1,-1:1,nxl-1:nxr+1) ) ENDIF IF ( outflow_n )  THEN ALLOCATE( u_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1,-2:-1), & v_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1,-2:-1), & w_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1,-2:-1) ) ALLOCATE( u_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1), & v_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1), & w_m_n(nzb:nzt+1,ny-1:ny+1,nxl-1:nxr+1) ) ENDIF w_m  => w_1;   w  => w_2;   w_p  => w_3;   tw_m  => w_3 IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN qsws_m  => qsws_1;   qsws  => qsws_2 qswst_m => qswst_1;  qswst => qswst_2 q_m    => q_1;     q    => q_2;     q_p => q_3;     tq_m => q_3 IF ( moisture )        vpt_m  => vpt_1;   vpt  => vpt_2 IF ( humidity )        vpt_m  => vpt_1;   vpt  => vpt_2 IF ( cloud_physics )   ql   => ql_1 IF ( cloud_droplets )  THEN w     => w_1;   w_p  => w_2;   tw_m  => w_3;   w_m  => w_3 IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN qsws   => qsws_1 qswst  => qswst_1 q      => q_1;     q_p  => q_2;     tq_m => q_3;    q_m => q_3 IF ( moisture )        vpt  => vpt_1 IF ( humidity )        vpt  => vpt_1 IF ( cloud_physics )   ql   => ql_1 IF ( cloud_droplets )  THEN km(:,j,i) = km1d pt(:,j,i) = pt_init ENDDO ENDDO DO  i = nxl-1, nxr+uxrp+1 DO  j = nys-1, nyn+1 u(:,j,i)  = u1d ENDDO ENDDO DO  i = nxl-1, nxr+1 DO  j = nys-1, nyn+vynp+1 v(:,j,i)  = v1d ENDDO ENDDO IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN DO  i = nxl-1, nxr+1 DO  j = nys-1, nyn+1 !--       This could actually be computed more accurately in the 1D model. !--       Update when opportunity arises! IF ( moisture  .OR.  passive_scalar )  qs = 0.0 IF ( humidity  .OR.  passive_scalar )  qs = 0.0 ! DO  j = nys-1, nyn+1 pt(:,j,i) = pt_init ENDDO ENDDO DO  i = nxl-1, nxr+uxrp+1 DO  j = nys-1, nyn+1 u(:,j,i)  = u_init ENDDO ENDDO DO  i = nxl-1, nxr+1 DO  j = nys-1, nyn+vynp+1 v(:,j,i)  = v_init ENDDO ENDDO ! !--       Set initial horizontal velocities at the lowest computational grid levels ENDIF IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN DO  i = nxl-1, nxr+1 DO  j = nys-1, nyn+1 usws = 0.0 vsws = 0.0 IF ( moisture  .OR.  passive_scalar ) qs = 0.0 IF ( humidity  .OR.  passive_scalar ) qs = 0.0 ! ! !--    Calculate virtual potential temperature IF ( moisture ) vpt = pt * ( 1.0 + 0.61 * q ) IF ( humidity ) vpt = pt * ( 1.0 + 0.61 * q ) ! IF ( moisture )  THEN IF ( humidity )  THEN ! !--       Store initial profile of total water content, virtual potential ! !--       Determine the near-surface water flux IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN IF ( constant_waterflux )  THEN qsws   = surface_waterflux IF ( ASSOCIATED( tswst_m ) )  tswst_m = tswst IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN qswst = 0.0 IF ( ASSOCIATED( qswst_m ) )  qswst_m = qswst ENDIF IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN IF ( .NOT. constant_waterflux )  THEN qsws   = 0.0 !--    If required, change the surface humidity/scalar at the start of the 3D !--    run IF ( ( moisture .OR. passive_scalar ) .AND. & IF ( ( humidity .OR. passive_scalar ) .AND. & q_surface_initial_change /= 0.0 )  THEN q(nzb,:,:) = q(nzb,:,:) + q_surface_initial_change !--    remove the divergences from the velocity field IF ( create_disturbances )  THEN CALL disturb_field( nzb_u_inner, tend, u, uxrp,    0 ) CALL disturb_field( nzb_v_inner, tend, v,    0, vynp ) CALL disturb_field( nzb_u_inner, tend, u ) CALL disturb_field( nzb_v_inner, tend, v ) n_sor = nsor_ini CALL pres e_p = e; pt_p = pt; u_p = u; v_p = v; w_p = w IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN IF ( ASSOCIATED( q_m ) )  q_m = q IF ( timestep_scheme(1:5) == 'runge' )  tq_m = 0.0 q_p = q IF ( moisture  .AND.  ASSOCIATED( vpt_m ) )  vpt_m = vpt IF ( humidity  .AND.  ASSOCIATED( vpt_m ) )  vpt_m = vpt ENDIF !--    Initialize old timelevels needed for radiation boundary conditions IF ( outflow_l )  THEN u_m_l(:,:,:,-2) = u(:,:,-1:1) v_m_l(:,:,:,-2) = v(:,:,-1:1) w_m_l(:,:,:,-2) = w(:,:,-1:1) u_m_l(:,:,:,-1) = u(:,:,-1:1) v_m_l(:,:,:,-1) = v(:,:,-1:1) w_m_l(:,:,:,-1) = w(:,:,-1:1) u_m_l(:,:,:) = u(:,:,-1:1) v_m_l(:,:,:) = v(:,:,-1:1) w_m_l(:,:,:) = w(:,:,-1:1) ENDIF IF ( outflow_r )  THEN u_m_r(:,:,:,-2) = u(:,:,nx-1:nx+1) v_m_r(:,:,:,-2) = v(:,:,nx-1:nx+1) w_m_r(:,:,:,-2) = w(:,:,nx-1:nx+1) u_m_r(:,:,:,-1) = u(:,:,nx-1:nx+1) v_m_r(:,:,:,-1) = v(:,:,nx-1:nx+1) w_m_r(:,:,:,-1) = w(:,:,nx-1:nx+1) u_m_r(:,:,:) = u(:,:,nx-1:nx+1) v_m_r(:,:,:) = v(:,:,nx-1:nx+1) w_m_r(:,:,:) = w(:,:,nx-1:nx+1) ENDIF IF ( outflow_s )  THEN u_m_s(:,:,:,-2) = u(:,-1:1,:) v_m_s(:,:,:,-2) = v(:,-1:1,:) w_m_s(:,:,:,-2) = w(:,-1:1,:) u_m_s(:,:,:,-1) = u(:,-1:1,:) v_m_s(:,:,:,-1) = v(:,-1:1,:) w_m_s(:,:,:,-1) = w(:,-1:1,:) u_m_s(:,:,:) = u(:,-1:1,:) v_m_s(:,:,:) = v(:,-1:1,:) w_m_s(:,:,:) = w(:,-1:1,:) ENDIF IF ( outflow_n )  THEN u_m_n(:,:,:,-2) = u(:,ny-1:ny+1,:) v_m_n(:,:,:,-2) = v(:,ny-1:ny+1,:) w_m_n(:,:,:,-2) = w(:,ny-1:ny+1,:) u_m_n(:,:,:,-1) = u(:,ny-1:ny+1,:) v_m_n(:,:,:,-1) = v(:,ny-1:ny+1,:) w_m_n(:,:,:,-1) = w(:,ny-1:ny+1,:) u_m_n(:,:,:) = u(:,ny-1:ny+1,:) v_m_n(:,:,:) = v(:,ny-1:ny+1,:) w_m_n(:,:,:) = w(:,ny-1:ny+1,:) ENDIF !--    including ghost points) e_p = e; pt_p = pt; u_p = u; v_p = v; w_p = w IF ( moisture  .OR.  passive_scalar )  q_p = q IF ( humidity  .OR.  passive_scalar )  q_p = q ELSE
• ## palm/trunk/SOURCE/init_grid.f90

 r49 ! Actual revisions: ! ----------------- ! storage of topography height arrays zu_s_inner and zw_s_inner ! storage of topography height arrays zu_s_inner and zw_s_inner, ! 2nd+3rd argument removed from exchange horiz ! ! Former revisions: ! !-- Need to set lateral boundary conditions for l_wall CALL exchange_horiz( l_wall, 0, 0 ) CALL exchange_horiz( l_wall ) DEALLOCATE( corner_nl, corner_nr, corner_sl, corner_sr, nzb_local, &
• ## palm/trunk/SOURCE/init_pegrid.f90

 r73 ! ----------------- ! uxrp, vynp eliminated, ! dirichlet/neumann changed to dirichlet/radiation, etc. ! dirichlet/neumann changed to dirichlet/radiation, etc., ! poisfft_init is only called if fft-solver is switched on ! ! Former revisions: nzta = nz nnz  = nz ! !-- For non-cyclic boundaries extend array u (v) by one gridpoint !    IF ( bc_lr /= 'cyclic' )  uxrp = 1 !    IF ( bc_ns /= 'cyclic' )  vynp = 1 ! inflow_r  = .TRUE. ENDIF !       uxrp      = 1 ENDIF outflow_n = .TRUE. ENDIF !       vynp      = 1 ENDIF ! !-- Additional MPI derived data type for the exchange of ghost points along x !-- needed in case of non-cyclic boundary conditions along y on the northmost !-- processors (for the exchange of the enlarged v array) IF ( bc_ns /= 'cyclic'  .AND.  pnorth == MPI_PROC_NULL )  THEN ngp_yz_p = ( nzt - nzb + 2 ) * ( nyn + vynp - nys + 3 ) CALL MPI_TYPE_VECTOR( nxr-nxl+3, nzt-nzb+2, ngp_yz_p, & MPI_REAL, type_xz_p, ierr ) CALL MPI_TYPE_COMMIT( type_xz_p, ierr ) ENDIF ENDIF #else IF ( bc_lr == 'dirichlet/radiation' )  THEN inflow_l  = .TRUE. outflow_r = .TRUE. !       uxrp      = 1 ELSEIF ( bc_lr == 'radiation/dirichlet' )  THEN outflow_l = .TRUE. outflow_n = .TRUE. inflow_s  = .TRUE. !       vynp      = 1 ENDIF #endif IF ( psolver == 'poisfft_hybrid' )  THEN CALL poisfft_hybrid_ini ELSE ELSEIF ( psolver == 'poisfft' )  THEN CALL poisfft_init ENDIF
• ## palm/trunk/SOURCE/init_pt_anomaly.f90

 r39 ! Actual revisions: ! ----------------- ! ! 2nd+3rd argument removed from exchange horiz ! ! Former revisions: ! !-- Exchange of boundary values for temperature CALL exchange_horiz( pt, 0, 0 ) CALL exchange_horiz( pt )
• ## palm/trunk/SOURCE/init_rankine.f90

 r4 ! Actual revisions: ! ----------------- ! ! uxrp, vynp eliminated, 2nd+3rd argument removed from exchange horiz ! ! Former revisions: ! !-- Exchange of boundary values for the velocities. CALL exchange_horiz( u, uxrp,    0 ) CALL exchange_horiz( v,    0, vynp ) CALL exchange_horiz( u ) CALL exchange_horiz( v ) ! !-- Make velocity field nondivergent.
• ## palm/trunk/SOURCE/modules.f90

 r73 ! +loop_optimization, netcdf_64bit_3d, zu_s_inner, zw_w_inner, id_var_zusi_*, ! id_var_zwwi_*, ts_value, u_nzb_p1_for_vfc, v_nzb_p1_for_vfc, pt_reference, ! use_pt_reference, precipitation_amount_interval ! +age_m in particle_type ! -data_output_ts, dots_n ! arrays dots_label and dots_unit now dimensioned with dots_max ! use_pt_reference, precipitation_amount_interval, revision ! +age_m in particle_type, moisture renamed humidity, ! -data_output_ts, dots_n, uvmean_outflow, uxrp, vynp, ! arrays dots_label and dots_unit now dimensioned with dots_max, ! setting of palm version moved to main program ! ! Former revisions: REAL, DIMENSION(:), ALLOCATABLE ::                                         & ddzu, dd2zu, dzu, ddzw, dzw, km_damp_x, km_damp_y, l_grid, pt_init,  & q_init, rdf, ug, uvmean_outflow, uvmean_outflow_l, u_init,           & u_nzb_p1_for_vfc, vg, v_init, v_nzb_p1_for_vfc, zu, zw q_init, rdf, ug, u_init, u_nzb_p1_for_vfc, vg, v_init,               & v_nzb_p1_for_vfc, zu, zw REAL, DIMENSION(:,:), ALLOCATABLE ::                                       & REAL, DIMENSION(:,:,:), ALLOCATABLE ::                                     & d, diss, l_wall, tend d, diss, l_wall, tend, u_m_l, u_m_n, u_m_r, u_m_s, v_m_l, v_m_n,     & v_m_r, v_m_s, w_m_l, w_m_n, w_m_r, w_m_s REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET ::                             & vpt, vpt_m, w, w_m, w_p REAL, DIMENSION(:,:,:,:), ALLOCATABLE ::  rif_wall, u_m_l, u_m_n, u_m_r,   & u_m_s, v_m_l, v_m_n, v_m_r, v_m_s, w_m_l, w_m_n, w_m_r, w_m_s REAL, DIMENSION(:,:,:,:), ALLOCATABLE ::  rif_wall SAVE CHARACTER (LEN=8)   ::  run_date, run_time CHARACTER (LEN=9)   ::  simulated_time_chr CHARACTER (LEN=12)  ::  version = 'PALM   3.2' CHARACTER (LEN=12)  ::  version = ' ', revision = ' ' CHARACTER (LEN=16)  ::  loop_optimization = 'default', & momentum_advec = 'pw-scheme', & CHARACTER (LEN=40)  ::  avs_data_file, topography = 'flat' CHARACTER (LEN=64)  ::  host CHARACTER (LEN=80)  ::  log_message, run_description_header, run_identifier CHARACTER (LEN=100) ::  initializing_actions = ' ' CHARACTER (LEN=80)  ::  log_message, run_identifier CHARACTER (LEN=100) ::  initializing_actions = ' ', run_description_header CHARACTER (LEN=7),  DIMENSION(100) ::  do3d_comp_prec = ' ' first_call_advec_particles = .TRUE., & force_print_header = .FALSE., galilei_transformation = .FALSE.,& inflow_l = .FALSE., inflow_n = .FALSE., inflow_r = .FALSE., & inflow_s = .FALSE., iso2d_output = .FALSE., & mg_switch_to_pe0 = .FALSE., moisture = .FALSE., & humidity = .FALSE., inflow_l = .FALSE., inflow_n = .FALSE., & inflow_r = .FALSE., inflow_s = .FALSE., iso2d_output = .FALSE.,& mg_switch_to_pe0 = .FALSE., & netcdf_output = .FALSE., netcdf_64bit = .FALSE., & netcdf_64bit_3d = .TRUE., & INTEGER ::  ngp_sums, nnx, nx = 0, nxa, nxl, nxr, nxra, nny, ny = 0, nya,  & nyn, nyna, nys, nnz, nz = 0, nza, nzb, nzb_diff, nzt, nzta,    & nzt_diff, uxrp = 0, vynp = 0 nzt_diff INTEGER, DIMENSION(:), ALLOCATABLE ::                                      & #if defined( __parallel ) INTEGER ::  comm1dx, comm1dy, comm2d, comm_palm, ierr, myidx, myidy,       & ndim = 2, ngp_y, ngp_yz_p, pleft, pnorth, pright, psouth,      & ndim = 2, ngp_y, pleft, pnorth, pright, psouth,                & sendrecvcount_xy, sendrecvcount_yz, sendrecvcount_zx,          & sendrecvcount_zyd, sendrecvcount_yxd,                          & type_x, type_x_int, type_xz_p, ibuf(12), pcoord(2), pdims(2),  & type_x, type_x_int, ibuf(12), pcoord(2), pdims(2),             & status(MPI_STATUS_SIZE)
• ## palm/trunk/SOURCE/palm.f90

 r70 ! ----------------- ! __vtk directives removed, write_particles is called only in case of particle ! advection switched on, open unit 9 for debug output ! advection switched on, open unit 9 for debug output, ! setting of palm version moved from modules to here ! ! Former revisions: CHARACTER (LEN=1) ::  cdum INTEGER           ::  i, run_description_header_i(80) version = 'PALM 3.2' #if defined( __parallel )
• ## palm/trunk/SOURCE/parin.f90

 r72 ! ----------------- ! +dt_max, netcdf_64bit_3d, precipitation_amount_interval in d3par, ! +loop_optimization, pt_reference in inipar, -data_output_ts ! +loop_optimization, pt_reference in inipar, -data_output_ts, ! moisture renamed humidity ! ! Former revisions: dz_stretch_factor, dz_stretch_level, e_min, & end_time_1d, fft_method, galilei_transformation, & grid_matching, inflow_disturbance_begin, & grid_matching, humidity, inflow_disturbance_begin, & inflow_disturbance_end, initializing_actions, & km_constant, km_damp_max, long_filter_factor, & loop_optimization, mixing_length_1d, moisture, & loop_optimization, mixing_length_1d, & momentum_advec, netcdf_precision, npex, npey, nsor_ini, & nx, ny, nz, omega, outflow_damping_width, & NAMELIST /envpar/  host, maximum_cpu_time_allowed, run_identifier, & tasks_per_node, write_binary NAMELIST /envpar/  host, maximum_cpu_time_allowed, revision, & run_identifier, tasks_per_node, write_binary
• ## palm/trunk/SOURCE/poismg.f90

 r4 ! Actual revisions: ! ----------------- ! ! 2nd+3rd argument removed from exchange horiz ! ! Former revisions: ! !-- Some boundaries have to be added to divergence array CALL exchange_horiz( d, 0, 0 ) CALL exchange_horiz( d ) d(nzb,:,:) = d(nzb+1,:,:) ! !-- Horizontal boundary conditions CALL exchange_horiz( r, 0, 0 ) CALL exchange_horiz( r ) IF ( bc_lr /= 'cyclic' )  THEN ! !-- Horizontal boundary conditions CALL exchange_horiz( f_mg, 0, 0 ) CALL exchange_horiz( f_mg ) IF ( bc_lr /= 'cyclic' )  THEN ! !-- Horizontal boundary conditions CALL exchange_horiz( temp, 0, 0 ) CALL exchange_horiz( temp ) IF ( bc_lr /= 'cyclic' )  THEN ! !--       Horizontal boundary conditions CALL exchange_horiz( p_mg, 0, 0 ) CALL exchange_horiz( p_mg ) IF ( bc_lr /= 'cyclic' )  THEN
• ## palm/trunk/SOURCE/prandtl_fluxes.f90

 r4 ! Actual revisions: ! ----------------- ! ! moisture renamed humidity ! ! Former revisions: ! !-- Compute z_p/L (corresponds to the Richardson-flux number) IF ( .NOT. moisture ) THEN IF ( .NOT. humidity ) THEN !\$OMP PARALLEL DO PRIVATE( k, z_p ) DO  i = nxl-1, nxr+1 ! !-- If required compute q* IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN IF ( constant_waterflux )  THEN ! CALL exchange_horiz_2d( usws ) CALL exchange_horiz_2d( vsws ) IF ( moisture  .OR.  passive_scalar )  CALL exchange_horiz_2d( qsws ) IF ( humidity  .OR.  passive_scalar )  CALL exchange_horiz_2d( qsws ) ! ! !-- Compute the vertical water/scalar flux IF ( .NOT. constant_heatflux .AND. ( moisture .OR. passive_scalar ) ) THEN IF ( .NOT. constant_heatflux .AND. ( humidity .OR. passive_scalar ) ) THEN !\$OMP PARALLEL DO DO  i = nxl-1, nxr+1
• ## palm/trunk/SOURCE/pres.f90

 r73 ! Actual revisions: ! ----------------- ! ! Volume flow control for non-cyclic boundary conditions added (currently only ! for the north boundary!!), 2nd+3rd argument removed from exchange horiz ! ! Former revisions: ALLOCATE( d(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) ) ENDIF ! !-- Conserve the volume flow at the outflow in case of non-cyclic lateral !-- boundary conditions IF ( conserve_volume_flow  .AND.  bc_ns == 'radiation/dirichlet')  THEN volume_flow(2)   = 0.0 volume_flow_l(2) = 0.0 IF ( nyn == ny )  THEN j = ny+1 DO  i = nxl, nxr ! !--          Sum up the volume flow through the north boundary DO  k = nzb_2d(j,i) + 1, nzt volume_flow_l(2) = volume_flow_l(2) + v(k,j,i) * dzu(k) ENDDO ENDDO ENDIF #if defined( __parallel ) CALL MPI_ALLREDUCE( volume_flow_l(2), volume_flow(2), 1, MPI_REAL, & MPI_SUM, comm1dx, ierr ) #else volume_flow = volume_flow_l #endif volume_flow_offset(2) = ( volume_flow_initial(2) - volume_flow(2) )    & / volume_flow_area(2) IF ( outflow_n )  THEN j = nyn+1 DO  i = nxl, nxr DO  k = nzb_v_inner(j,i) + 1, nzt v(k,j,i) = v(k,j,i) + volume_flow_offset(2) ENDDO ENDDO ENDIF CALL exchange_horiz( v ) ENDIF ! ! !--    Exchange boundaries for p CALL exchange_horiz( tend, 0, 0 ) CALL exchange_horiz( tend ) ELSEIF ( psolver == 'sor' )  THEN !-- Correction of the provisional velocities with the current perturbation !-- pressure just computed IF ( bc_lr /= 'cyclic'  .OR.  bc_ns /= 'cyclic' )  uvmean_outflow_l = 0.0 IF ( conserve_volume_flow )  THEN IF ( conserve_volume_flow  .AND. & ( bc_lr == 'cyclic'  .OR.  bc_ns == 'cyclic' ) )  THEN volume_flow_l(1) = 0.0 volume_flow_l(2) = 0.0 ! !--       Sum up the horizontal velocity along the outflow plane (in case !--       of non-cyclic boundary conditions). The respective mean velocity !--       is calculated from this in routine boundary_conds. !          IF ( outflow_l  .AND.  i == nxl )  THEN !             !\$OMP CRITICAL !             DO  k = nzb, nzt+1 !                uvmean_outflow_l(k) = uvmean_outflow_l(k) + v(k,j,nxl) !             ENDDO !             !\$OMP END CRITICAL !          ELSEIF ( outflow_r  .AND.  i == nxr )  THEN !             !\$OMP CRITICAL !             DO  k = nzb, nzt+1 !                uvmean_outflow_l(k) = uvmean_outflow_l(k) + v(k,j,nxr) !             ENDDO !             !\$OMP END CRITICAL !          ELSEIF ( outflow_s  .AND.  j == nys )  THEN !             !\$OMP CRITICAL !             DO  k = nzb, nzt+1 !                uvmean_outflow_l(k) = uvmean_outflow_l(k) + u(k,nys,i) !             ENDDO !             !\$OMP END CRITICAL !          ELSEIF ( outflow_n  .AND.  j == nyn )  THEN !             !\$OMP CRITICAL !             DO  k = nzb, nzt+1 !                uvmean_outflow_l(k) = uvmean_outflow_l(k) + u(k,nyn,i) !             ENDDO !             !\$OMP END CRITICAL !          ENDIF ! !--       Sum up the volume flow through the right and north boundary IF ( conserve_volume_flow  .AND.  i == nx )  THEN IF ( conserve_volume_flow  .AND.  bc_lr == 'cyclic'  .AND. & i == nx )  THEN !\$OMP CRITICAL DO  k = nzb_2d(j,i) + 1, nzt !\$OMP END CRITICAL ENDIF IF ( conserve_volume_flow  .AND.  j == ny )  THEN IF ( conserve_volume_flow  .AND.  bc_ns == 'cyclic'  .AND. & j == ny )  THEN !\$OMP CRITICAL DO  k = nzb_2d(j,i) + 1, nzt ! !-- Conserve the volume flow IF ( conserve_volume_flow )  THEN IF ( conserve_volume_flow  .AND. & ( bc_lr == 'cyclic'  .OR.  bc_ns == 'cyclic' ) )  THEN #if defined( __parallel ) DO  i = nxl, nxr DO  j = nys, nyn DO  k = nzb_u_inner(j,i) + 1, nzt u(k,j,i) = u(k,j,i) + volume_flow_offset(1) ENDDO DO  k = nzb_v_inner(j,i) + 1, nzt v(k,j,i) = v(k,j,i) + volume_flow_offset(2) ENDDO IF ( bc_lr == 'cyclic' )  THEN DO  k = nzb_u_inner(j,i) + 1, nzt u(k,j,i) = u(k,j,i) + volume_flow_offset(1) ENDDO ENDIF IF ( bc_ns == 'cyclic' )  THEN DO  k = nzb_v_inner(j,i) + 1, nzt v(k,j,i) = v(k,j,i) + volume_flow_offset(2) ENDDO ENDIF ENDDO ENDDO ! !-- Exchange of boundaries for the velocities CALL exchange_horiz( u, uxrp,    0 ) CALL exchange_horiz( v,    0, vynp ) CALL exchange_horiz( w,    0,    0 ) CALL exchange_horiz( u ) CALL exchange_horiz( v ) CALL exchange_horiz( w ) !
• ## palm/trunk/SOURCE/production_e.f90

 r73 ! ----------------- ! Wall functions now include diabatic conditions, call of routine wall_fluxes_e, ! reference temperature pt_reference can be used in buoyancy term ! reference temperature pt_reference can be used in buoyancy term, ! moisture renamed humidity ! ! Former revisions: ! !--       Calculate TKE production by buoyancy IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN IF ( use_pt_reference )  THEN ! !--    Calculate TKE production by buoyancy IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN IF ( use_pt_reference )  THEN
• ## palm/trunk/SOURCE/prognostic_equations.f90

 r73 ! ----------------- ! checking for negative q and limiting for positive values, ! z0 removed from arguments in calls of diffusion_u/v/w, ! subroutine names changed to .._noopt, .._cache, and .._vector ! z0 removed from arguments in calls of diffusion_u/v/w, uxrp, vynp eliminated, ! subroutine names changed to .._noopt, .._cache, and .._vector, ! moisture renamed humidity ! ! Former revisions: !-- global communication CALL calc_mean_pt_profile( pt, 4 ) IF ( moisture )  CALL calc_mean_pt_profile( vpt, 44 ) IF ( humidity )  CALL calc_mean_pt_profile( vpt, 44 ) ! ! !-- u-tendency terms with no communication DO  i = nxl, nxr+uxrp DO  i = nxl, nxr DO  j = nys, nyn ! !-- v-tendency terms with no communication DO  i = nxl, nxr DO  j = nys, nyn+vynp DO  j = nys, nyn ! !--       Tendency terms ENDIF CALL coriolis( i, j, 3 ) IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL buoyancy( i, j, pt, 3, 4 ) ELSE ! !-- If required, compute prognostic equation for total water content / scalar IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN CALL cpu_log( log_point(29), 'q/s-equation', 'start' ) IF ( scalar_advec == 'bc-scheme'  .AND.  & .NOT. use_upstream_for_tke )  THEN IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, & l_grid, pt, rif, tend, zu ) IF ( tsc(2) == 2.0  .AND.  timestep_scheme(1:8) == 'leapfrog' )& THEN IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, & km_m, l_grid, pt_m, rif_m, tend, zu ) ENDIF ELSE IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, & l_grid, pt, rif, tend, zu ) !-- global communication CALL calc_mean_pt_profile( pt, 4 ) IF ( moisture )  CALL calc_mean_pt_profile( vpt, 44 ) IF ( humidity )  CALL calc_mean_pt_profile( vpt, 44 ) IF ( .NOT. constant_diffusion )  CALL production_e_init !\$OMP PARALLEL private (i,j,k) !\$OMP DO DO  i = nxl, nxr+uxrp       ! Additional levels for non cyclic boundary DO  j = nys, nyn+vynp    ! conditions are included DO  i = nxl, nxr DO  j = nys, nyn ! !--       Tendency terms for u-velocity component ENDIF CALL coriolis( i, j, 3 ) IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL buoyancy( i, j, pt, 3, 4 ) ELSE !--          If required, compute prognostic equation for total water content / !--          scalar IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN ! IF ( tsc(2) == 2.0  .AND.  timestep_scheme(1:8) == 'leapfrog' )& THEN IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, & km_m, l_grid, pt_m, rif_m, tend, zu ) ENDIF ELSE IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, & l_grid, pt, rif, tend, zu ) !-- global communication CALL calc_mean_pt_profile( pt, 4 ) IF ( moisture )  CALL calc_mean_pt_profile( vpt, 44 ) IF ( humidity )  CALL calc_mean_pt_profile( vpt, 44 ) ! ! !-- Prognostic equation for u-velocity component DO  i = nxl, nxr+uxrp DO  i = nxl, nxr DO  j = nys, nyn DO  k = nzb_u_inner(j,i)+1, nzt IF ( timestep_scheme(1:5) == 'runge' )  THEN IF ( intermediate_timestep_count == 1 )  THEN DO  i = nxl, nxr+uxrp DO  i = nxl, nxr DO  j = nys, nyn DO  k = nzb_u_inner(j,i)+1, nzt ELSEIF ( intermediate_timestep_count < & intermediate_timestep_count_max )  THEN DO  i = nxl, nxr+uxrp DO  i = nxl, nxr DO  j = nys, nyn DO  k = nzb_u_inner(j,i)+1, nzt !-- Prognostic equation for v-velocity component DO  i = nxl, nxr DO  j = nys, nyn+vynp DO  j = nys, nyn DO  k = nzb_v_inner(j,i)+1, nzt v_p(k,j,i) = ( 1.0-tsc(1) ) * v_m(k,j,i) + tsc(1) * v(k,j,i) +    & IF ( intermediate_timestep_count == 1 )  THEN DO  i = nxl, nxr DO  j = nys, nyn+vynp DO  j = nys, nyn DO  k = nzb_v_inner(j,i)+1, nzt tv_m(k,j,i) = tend(k,j,i) intermediate_timestep_count_max )  THEN DO  i = nxl, nxr DO  j = nys, nyn+vynp DO  j = nys, nyn DO  k = nzb_v_inner(j,i)+1, nzt tv_m(k,j,i) = -9.5625 * tend(k,j,i) + 5.3125 * tv_m(k,j,i) ENDIF CALL coriolis( 3 ) IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL buoyancy( pt, 3, 4 ) ELSE ! !-- If required, compute prognostic equation for total water content / scalar IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN CALL cpu_log( log_point(29), 'q/s-equation', 'start' ) IF ( scalar_advec == 'bc-scheme'  .AND.  .NOT. use_upstream_for_tke )  & THEN IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, pt, & rif, tend, zu ) ENDIF IF ( tsc(2) == 2.0  .AND.  timestep_scheme(1:8) == 'leapfrog' )  THEN IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e_m, km_m, l_grid, & pt_m, rif_m, tend, zu ) ENDIF ELSE IF ( .NOT. moisture )  THEN IF ( .NOT. humidity )  THEN CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, pt, & rif, tend, zu )

 r63 ! Actual revisions: ! ----------------- ! +loop_optimization, pt_reference ! +loop_optimization, pt_reference, moisture renamed humidity ! ! Former revisions: CASE ( 'mixing_length_1d' ) READ ( 13 )  mixing_length_1d CASE ( 'moisture' ) READ ( 13 )  moisture CASE ( 'humidity' ) READ ( 13 )  humidity CASE ( 'momentum_advec' ) READ ( 13 )  momentum_advec
• ## palm/trunk/SOURCE/sor.f90

 r4 ! Actual revisions: ! ----------------- ! ! 2nd+3rd argument removed from exchange horiz ! ! Former revisions: ! !--    Exchange of boundary values for p. CALL exchange_horiz( p, 0, 0 ) CALL exchange_horiz( p ) ! ! !--    Exchange of boundary values for p. CALL exchange_horiz( p, 0, 0 ) CALL exchange_horiz( p ) !
• ## palm/trunk/SOURCE/swap_timelevel.f90

 r39 ! Actual revisions: ! ----------------- ! ! moisture renamed humidity ! ! Former revisions: e_m => e_1;  e => e_2;  e_p => e_3 ENDIF IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN q_m => q_1;  q => q_2;  q_p => q_3 ENDIF e_m => e_2;  e => e_3;  e_p => e_1 ENDIF IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN q_m => q_2;  q => q_3;  q_p => q_1 ENDIF e_m => e_3;  e => e_1;  e_p => e_2 ENDIF IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN q_m => q_3;  q => q_1;  q_p => q_2 ENDIF e => e_1;  e_p => e_2 ENDIF IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN q => q_1;  q_p => q_2 ENDIF vsws_m => vsws_1;  vsws => vsws_2 shf_m  => shf_1;   shf  => shf_2 IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN qsws_m => qsws_1;  qsws => qsws_2 ENDIF IF ( use_top_fluxes )  THEN tswst_m => tswst_1;  tswst => tswst_2 IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN qswst_m => qswst_1;  qswst => qswst_2 ENDIF ENDIF IF ( moisture )  THEN IF ( humidity )  THEN vpt_m => vpt_1;  vpt => vpt_2 ENDIF e => e_2;  e_p => e_1 ENDIF IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN q => q_2;  q_p => q_1 ENDIF vsws_m => vsws_2;  vsws => vsws_1 shf_m  => shf_2;   shf  => shf_1 IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN qsws_m => qsws_2;  qsws => qsws_1 ENDIF IF ( use_top_fluxes )  THEN tswst_m  => tswst_2;  tswst => tswst_1 IF ( moisture  .OR.  passive_scalar )  THEN IF ( humidity  .OR.  passive_scalar )  THEN qswst_m => qswst_2;  qswst => qswst_1 ENDIF ENDIF IF ( moisture )  THEN IF ( humidity )  THEN vpt_m => vpt_2;  vpt => vpt_1 ENDIF
• ## palm/trunk/SOURCE/time_integration.f90

 r73 ! and counters, ! calls of prognostic_equations_.. changed to .._noopt, .._cache, and ! .._vector, these calls are now controlled by switch loop_optimization ! .._vector, these calls are now controlled by switch loop_optimization, ! uxrp, vynp eliminated, 2nd+3rd argument removed from exchange horiz, ! moisture renamed humidity ! ! Former revisions: !--       Exchange of ghost points (lateral boundary conditions) CALL cpu_log( log_point(26), 'exchange-horiz-progn', 'start' ) CALL exchange_horiz( u_p, uxrp,    0 ) CALL exchange_horiz( v_p,    0, vynp ) CALL exchange_horiz( w_p,    0,    0 ) CALL exchange_horiz( pt_p,   0,    0 ) IF ( .NOT. constant_diffusion       )  CALL exchange_horiz( e_p, 0, 0) IF ( moisture  .OR.  passive_scalar )  CALL exchange_horiz( q_p, 0, 0) CALL exchange_horiz( u_p ) CALL exchange_horiz( v_p ) CALL exchange_horiz( w_p ) CALL exchange_horiz( pt_p ) IF ( .NOT. constant_diffusion       )  CALL exchange_horiz( e_p ) IF ( humidity  .OR.  passive_scalar )  CALL exchange_horiz( q_p ) IF ( cloud_droplets )  THEN CALL exchange_horiz( ql,    0, 0 ) CALL exchange_horiz( ql_c,  0, 0 ) CALL exchange_horiz( ql_v,  0, 0 ) CALL exchange_horiz( ql_vp, 0, 0 ) CALL exchange_horiz( ql ) CALL exchange_horiz( ql_c ) CALL exchange_horiz( ql_v ) CALL exchange_horiz( ql_vp ) ENDIF IF ( time_disturb >= dt_disturb )  THEN IF ( hom(nzb+5,1,var_hom,0) < disturbance_energy_limit )  THEN CALL disturb_field( nzb_u_inner, tend, u, uxrp, 0    ) CALL disturb_field( nzb_v_inner, tend, v ,   0, vynp ) CALL disturb_field( nzb_u_inner, tend, u ) CALL disturb_field( nzb_v_inner, tend, v ) ELSEIF ( bc_lr /= 'cyclic'  .OR.  bc_ns /= 'cyclic' )  THEN ! !--                near the inflow throughout the whole simulation dist_range = 1 CALL disturb_field( nzb_u_inner, tend, u, uxrp, 0    ) CALL disturb_field( nzb_v_inner, tend, v ,   0, vynp ) CALL disturb_field( nzb_u_inner, tend, u ) CALL disturb_field( nzb_v_inner, tend, v ) dist_range = 0 ENDIF !--       In case of a non-cyclic lateral wall, set the boundary conditions for !--       the velocities at the outflow IF ( bc_lr /= 'cyclic'  .OR.  bc_ns /= 'cyclic' )  THEN CALL boundary_conds( 'outflow_uvw' ) ENDIF !          IF ( bc_lr /= 'cyclic'  .OR.  bc_ns /= 'cyclic' )  THEN !             CALL boundary_conds( 'outflow_uvw' ) !          ENDIF ! !--       If required, compute virtuell potential temperature IF ( moisture ) CALL compute_vpt IF ( humidity ) CALL compute_vpt ! !--          Compute the diffusion coefficients CALL cpu_log( log_point(17), 'diffusivities', 'start' ) IF ( .NOT. moisture ) THEN IF ( .NOT. humidity ) THEN CALL diffusivities( pt ) ELSE
• ## palm/trunk/SOURCE/wall_fluxes.f90

 r60 ! Call for all grid points !------------------------------------------------------------------------------! SUBROUTINE wall_fluxes( wall_flux, a, b, c1, c2, ixp, jyp, nzb_uvw_inner, & SUBROUTINE wall_fluxes( wall_flux, a, b, c1, c2, nzb_uvw_inner, & nzb_uvw_outer, wall ) IMPLICIT NONE INTEGER ::  i, ixp, j, jyp, k, wall_index INTEGER ::  i, j, k, wall_index INTEGER, DIMENSION(nys-1:nyn+1,nxl-1:nxr+1) ::  nzb_uvw_inner, & REAL ::  pts, pt_i, rifs, u_i, v_i, us_wall, vel_total, ws, wspts REAL, DIMENSION(nys-1:nyn+1,nxl-1:nxr+1)           ::  wall REAL, DIMENSION(nzb:nzt+1,nys:nyn+jyp,nxl:nxr+ixp) ::  wall_flux REAL, DIMENSION(nys-1:nyn+1,nxl-1:nxr+1)   ::  wall REAL, DIMENSION(nzb:nzt+1,nys:nyn,nxl:nxr) ::  wall_flux wall_index = NINT( a+ 2*b + 3*c1 + 4*c2 ) DO  i = nxl, nxr+ixp DO  j = nys, nyn+jyp DO  i = nxl, nxr DO  j = nys, nyn IF ( wall(j,i) /= 0.0 )  THEN
• ## palm/trunk/SOURCE/write_3d_binary.f90

 r73 ! ----------------- ! +precipitation_amount, precipitation_rate_av, rif_wall, u_m_l, u_m_r, etc., ! z0_av ! z0_av, moisture renamed humidity ! ! Former revisions: ENDIF WRITE ( 14 )  'pt_m                ';  WRITE ( 14 )  pt_m IF ( moisture  .OR. passive_scalar )  THEN IF ( humidity  .OR. passive_scalar )  THEN WRITE ( 14 )  'q                   ';  WRITE ( 14 )  q IF ( ALLOCATED( q_av ) )  THEN WRITE ( 14 )  'v_m_s               ';  WRITE ( 14 )  v_m_s ENDIF IF ( moisture )  THEN IF ( humidity )  THEN WRITE ( 14 )  'vpt                 ';  WRITE ( 14 )  vpt IF ( ALLOCATED( vpt_av ) )  THEN
• ## palm/trunk/SOURCE/write_var_list.f90

 r63 ! Actual revisions: ! ----------------- ! +loop_optimization, pt_refrence ! +loop_optimization, pt_refrence, moisture renamed humidity ! ! Former revisions: WRITE ( 14 )  'mixing_length_1d              ' WRITE ( 14 )  mixing_length_1d WRITE ( 14 )  'moisture                      ' WRITE ( 14 )  moisture WRITE ( 14 )  'humidity                      ' WRITE ( 14 )  humidity WRITE ( 14 )  'momentum_advec                ' WRITE ( 14 )  momentum_advec
Note: See TracChangeset for help on using the changeset viewer.