fillps Subroutine

private subroutine fillps()

Uses

  • proc~~fillps~~UsesGraph proc~fillps modpois::fillps module~modboundary modboundary proc~fillps->module~modboundary module~modfields modfields proc~fillps->module~modfields module~modglobal modglobal proc~fillps->module~modglobal module~modmpi modmpi proc~fillps->module~modmpi mpi mpi module~modmpi->mpi

Arguments

None

Calls

proc~~fillps~~CallsGraph proc~fillps modpois::fillps proc~bcpup modboundary::bcpup proc~fillps->proc~bcpup proc~excjs modmpi::excjs proc~bcpup->proc~excjs mpi_sendrecv mpi_sendrecv proc~excjs->mpi_sendrecv

Called by

proc~~fillps~~CalledByGraph proc~fillps modpois::fillps proc~poisson modpois::poisson proc~poisson->proc~fillps program~dalesurban DALESURBAN program~dalesurban->proc~poisson

Contents

Source Code


Source Code

  subroutine fillps

  ! Chiel van Heerwaarden,  19 June 2007
  ! Adapted fillps for RK3 time loop


    use modfields, only : up, vp, wp, um, vm, wm,u0,v0,w0
    use modglobal, only : rk3step, ib,ie,jb,je,kb,ke,ih,jh,kh, dxfi,dyi,dzfi,dt,&
                          linoutflow,libm
    use modmpi,    only : excjs
    use modboundary, only: bcpup
!    use modibm,    only : ibmnorm

    implicit none
    real,allocatable :: pup(:,:,:), pvp(:,:,:), pwp(:,:,:)
    integer i,j,k
    real rk3coef,rk3coefi

    allocate(pup(ib-ih:ie+ih,jb-jh:je+jh,kb:ke+kh))
    allocate(pvp(ib-ih:ie+ih,jb-jh:je+jh,kb:ke+kh))
    allocate(pwp(ib-ih:ie+ih,jb-jh:je+jh,kb:ke+kh))

    rk3coef = dt / (4. - dble(rk3step))
    rk3coefi = 1. / rk3coef

    do k=kb,ke
      do j=jb,je
        do i=ib,ie
          pup(i,j,k) = up(i,j,k) + um(i,j,k) * rk3coefi         ! see equation 5.81
          pvp(i,j,k) = vp(i,j,k) + vm(i,j,k) * rk3coefi
          pwp(i,j,k) = wp(i,j,k) + wm(i,j,k) * rk3coefi
        end do
      end do
    end do

  !****************************************************************

  !     Fill the right hand for the poisson solver.
  !     The values for up(i2,j,k) and vp(i,j2,k) are still
  !     unknown and have to be set cyclic.
  !     Also we take wp(i,j,1) and wp(i,j,k1) equal to zero.

  !     NOTE:

  !     The poisson-solver only accepts values for i from 2 to i1,
  !     for j from 1 to jmax and for k from 1 to kmax.
  !     The right-hand p is therefore filled in this partical way.

  !**************************************************************

   call bcpup(pup,pvp,pwp,rk3coef)   ! boundary conditions for pup,pvp,pwp

    do k=kb,ke
      do j=jb,je
        do i=ib,ie
          p(i,j,k)  =  ( pup(i+1,j,k)-pup(i,j,k) ) * dxfi(i) &         ! see equation 5.72
                          +( pvp(i,j+1,k)-pvp(i,j,k) ) * dyi &
                          +( pwp(i,j,k+1)-pwp(i,j,k) ) * dzfi(k)
        end do
      end do
    end do

    deallocate( pup,pvp,pwp )

  end subroutine fillps