ywallfunplus Subroutine

public subroutine ywallfunplus()

Uses

  • proc~~ywallfunplus~~UsesGraph proc~ywallfunplus modibm::ywallfunplus module~initfac initfac proc~ywallfunplus->module~initfac module~modfields modfields proc~ywallfunplus->module~modfields module~modglobal modglobal proc~ywallfunplus->module~modglobal module~modmpi modmpi proc~ywallfunplus->module~modmpi module~modsubgriddata modsubgriddata proc~ywallfunplus->module~modsubgriddata module~initfac->module~modglobal module~initfac->module~modmpi netcdf netcdf module~initfac->netcdf mpi mpi module~modmpi->mpi

Arguments

None

Calls

proc~~ywallfunplus~~CallsGraph proc~ywallfunplus modibm::ywallfunplus proc~wfgr wf_gr.f90::wfGR proc~ywallfunplus->proc~wfgr proc~wfmneutral wfmneutral.f90::wfmneutral proc~ywallfunplus->proc~wfmneutral proc~wfuno wf_uno.f90::wfuno proc~ywallfunplus->proc~wfuno proc~ywallscalarplus modibm::ywallscalarplus proc~ywallfunplus->proc~ywallscalarplus proc~unoh wf_uno.f90::unoh proc~wfuno->proc~unoh

Called by

proc~~ywallfunplus~~CalledByGraph proc~ywallfunplus modibm::ywallfunplus proc~ibmwallfun modibm::ibmwallfun proc~ibmwallfun->proc~ywallfunplus program~dalesurban DALESURBAN program~dalesurban->proc~ibmwallfun

Contents

Source Code


Source Code

   subroutine ywallfunplus
      use modglobal, only:dzf, dzhiq, dzhi, dxf, dxhi, dy, dyi, nsv, lles, numol, ltempeq, lmoist, &
         je, jb, ih, jh, kh, ihc, jhc, khc, iwallmom, iwallmoist, iwalltemp, iwallscal, nblocks
      use modfields, only:u0, w0, up, wp, shear, thlp, thl0, qtp, qt0, sv0, svp, tfluxb, momfluxb, exnf, cth, qfluxb
      use modsubgriddata, only:ekm
      use modmpi, only:myid
      use initfac, only:fachf, block, faclGR, facqsat, facef, fachurel, facf, facT, facz0, facz0h
      integer i, j, k, n, nc, il, iu, kl, ku, im, jm, km, m

      if (iwallmom == 1) then !fixed flux
      !not implemented
      else if (iwallmom == 2) then
      do n = 1, nypluswall
         k = block(iypluswall(n, 1), 10) !upper y wall = north wall
         call wfuno(ih, jh, kh, up, wp, thlp, momfluxb, tfluxb, cth, bcTfluxA, u0, w0, thl0, facT(k,1), facz0(k), facz0h(k), iypluswall(n, 1), iypluswall(n, 2), 31)
      end do
      else if (iwallmom == 3) then
      do n = 1, nypluswall
         k = block(iypluswall(n, 1), 10) !upper y wall = north wall
         call wfmneutral(ih, jh, kh, up, wp, momfluxb, u0, w0, facz0(k), iypluswall(n, 1), iypluswall(n, 2), 31)
      end do
      end if

      if (ltempeq) then
      if (iwalltemp == 1) then
         do n = 1, nypluswall ! loop over all shear x-walls

            !write(*,*) 'shape(iypluswall), nypluswall', shape(iypluswall), nypluswall

            call ywallscalarplus(ih, jh, kh, thl0, thlp, bctfyp, n)
         end do
      else if (iwalltemp == 2) then
         do n = 1, nypluswall
            k = block(iypluswall(n, 1), 10)
            call wfuno(ih, jh, kh, up, wp, thlp, momfluxb, tfluxb, cth, bcTfluxA, u0, w0, thl0, facT(k,1), facz0(k), facz0h(k), iypluswall(n, 1), iypluswall(n, 2), 32)
            fachf(k) = fachf(k) + bcTfluxA
         end do
      end if
      end if

      if (lmoist) then
      if (iwallmoist == 1) then
         do n = 1, nypluswall ! loop over all shear x-walls
            call ywallscalarplus(ih, jh, kh, qt0, qtp, bcqfyp, n)
         end do
      end if
      if ((ltempeq) .and. (iwallmoist == 2)) then
         do n = 1, nypluswall
            k = block(iypluswall(n, 1), 10)
            if (faclGR(k)) then
            call wfGR(ih,jh,kh,qtp,qfluxb,cth,bcqfluxA,qt0,facqsat(k),fachurel(k),facf(k,4),facf(k,5),iypluswall(n,1),iypluswall(n,2),32)
            facef(k) = facef(k) + bcqfluxA
            end if
         end do
      end if
      end if

      if (nsv>0) then
      if (iwallscal == 1) then
         do n = 1, nypluswall ! loop over all shear x-walls
            do m = 1, nsv
               call ywallscalarplus(ihc, jhc, khc, sv0(:,:,:,m), svp(:,:,:,m), 0., n)
            end do
         end do
      end if
      end if

   end subroutine ywallfunplus