voutletarea Subroutine

public subroutine voutletarea(area)

Uses

  • proc~~voutletarea~~UsesGraph proc~voutletarea modforces::voutletarea module~modfields modfields proc~voutletarea->module~modfields module~modglobal modglobal proc~voutletarea->module~modglobal module~modmpi modmpi proc~voutletarea->module~modmpi mpi mpi module~modmpi->mpi

Arguments

Type IntentOptional Attributes Name
real, intent(out) :: area

Calls

proc~~voutletarea~~CallsGraph proc~voutletarea modforces::voutletarea mpi_bcast mpi_bcast proc~voutletarea->mpi_bcast

Called by

proc~~voutletarea~~CalledByGraph proc~voutletarea modforces::voutletarea proc~calcfluidvolumes modforces::calcfluidvolumes proc~calcfluidvolumes->proc~voutletarea proc~startup modstartup::startup proc~startup->proc~calcfluidvolumes program~dalesurban DALESURBAN program~dalesurban->proc~startup

Contents

Source Code


Source Code

  subroutine voutletarea(area)
    ! calculates outlet area of domain for v-velocity excluding blocks

    use modglobal, only : ib,ie,jb,je,kb,ke,dxf,dzf
    use modfields, only : IIc
    use modmpi,    only : myid,comm3d,mpierr,nprocs,MY_REAL

    implicit none
    real, intent(out)       :: area
    real, dimension(kb:ke)  :: sumx
    integer                    k

    sumx = 0.
    ! integrate fluid area at outflow plane in x
    if (myid==nprocs-1) then
      do k=kb,ke
        sumx(k) = sum(IIc(ib:ie,je,k)*dxf(ib:ie))
      end do
    end if

    call MPI_BCAST(sumx,ke-kb+1,MY_REAL,nprocs-1,comm3d,mpierr)

    ! integrate fluid area at outflow plane in z
    do k=kb,ke
      sumx(k) = sumx(k)*dzf(k)
    end do
    area = sum(sumx(kb:ke))

  end subroutine voutletarea