poisson Subroutine

public subroutine poisson()

Uses

  • proc~~poisson~~UsesGraph proc~poisson modpois::poisson module~modglobal modglobal proc~poisson->module~modglobal module~modmpi modmpi proc~poisson->module~modmpi mpi mpi module~modmpi->mpi

Arguments

None

Calls

proc~~poisson~~CallsGraph proc~poisson modpois::poisson proc~fillps modpois::fillps proc~poisson->proc~fillps proc~poisr modpois::poisr proc~poisson->proc~poisr proc~solmpj modpois::solmpj proc~poisson->proc~solmpj proc~tderive modpois::tderive proc~poisson->proc~tderive proc~bcpup modboundary::bcpup proc~fillps->proc~bcpup blktri blktri proc~poisr->blktri float float proc~poisr->float proc~all_all_j2 modpois::ALL_ALL_j2 proc~poisr->proc~all_all_j2 proc~barrou modmpi::barrou proc~poisr->proc~barrou vrfftb vrfftb proc~poisr->vrfftb vrfftf vrfftf proc~poisr->vrfftf vrffti vrffti proc~poisr->vrffti proc~solmpj->float mpi_comm_rank mpi_comm_rank proc~solmpj->mpi_comm_rank mpi_comm_size mpi_comm_size proc~solmpj->mpi_comm_size proc~all_all_j modpois::ALL_ALL_j proc~solmpj->proc~all_all_j rfftb rfftb proc~solmpj->rfftb rfftf rfftf proc~solmpj->rfftf rffti rffti proc~solmpj->rffti proc~bcp modboundary::bcp proc~tderive->proc~bcp proc~slabsum modmpi::slabsum proc~tderive->proc~slabsum mpi_alltoall mpi_alltoall proc~all_all_j->mpi_alltoall proc~all_all_j2->proc~barrou proc~all_all_j2->mpi_alltoall mpi_barrier mpi_barrier proc~barrou->mpi_barrier proc~excj modmpi::excj proc~bcp->proc~excj proc~excjs modmpi::excjs proc~bcpup->proc~excjs mpi_allreduce mpi_allreduce proc~slabsum->mpi_allreduce mpi_sendrecv mpi_sendrecv proc~excj->mpi_sendrecv proc~excjs->mpi_sendrecv

Called by

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

Contents

Source Code


Source Code

  subroutine poisson
    use modglobal, only : ib,ie,ih,kb,ke,kh,kmax,dxh,dxf,dy,dzf,dzh,linoutflow,iinletgen,ipoiss,POISS_FFT,POISS_CYC
    use modmpi, only : myid,nprocs,barrou
    implicit none
    integer ibc1,ibc2,kbc1,kbc2,ksen

    call fillps

!  ibc?=1: neumann
!  ibc?=2: periodic
!  ibc?=3: dirichlet

    select case (ipoiss)
    case (POISS_FFT)
      call solmpj(p)
    case (POISS_CYC)
      if (linoutflow ) then
        ibc1 = 1      ! inlet
        ibc2 = 3      ! outlet
      else
        ibc1 = 2
        ibc2 = 2
      endif
      kbc1 = 1
      kbc2 = 1
      ksen = kmax/nprocs
      call poisr(p,dxf,dxh,dy,dzf,dzh, &
                 ibc1,ibc2,kbc1,kbc2,ksen)
    case default
      write(0, *) "Invalid choice for Poisson solver"
       stop 1
    end select

    call tderive

  end subroutine poisson