Broadcast_ColumnOperators3D_t Subroutine

public subroutine Broadcast_ColumnOperators3D_t(this, qbar, q)

Broadcast of a surface field to every node of its column,

q^(k)_ijl = qbar_ij , k = 1..nz, l = 0..N ,

the adjoint of ColumnIntegral in the inner products described in the module header. The unit is unchanged.

Input - qbar : surface field Output - q : volume field on the extruded mesh, overwritten

Arguments

TypeIntentOptionalAttributesName
class(ColumnOperators3D_t), intent(in) :: this
class(Scalar2D), intent(in) :: qbar
class(Scalar3D), intent(inout) :: q

Calls

proc~~broadcast_columnoperators3d_t~~CallsGraph proc~broadcast_columnoperators3d_t Broadcast_ColumnOperators3D_t proc~checkfields_columnoperators3d_t CheckFields_ColumnOperators3D_t proc~broadcast_columnoperators3d_t->proc~checkfields_columnoperators3d_t

Contents


Source Code

  subroutine Broadcast_ColumnOperators3D_t(this,qbar,q)
    !! Broadcast of a surface field to every node of its column,
    !!
    !!   q^(k)_ijl = qbar_ij ,  k = 1..nz, l = 0..N ,
    !!
    !! the adjoint of ColumnIntegral in the inner products described in the module
    !! header. The unit is unchanged.
    !!
    !!  Input
    !!    - qbar : surface field
    !!  Output
    !!    - q : volume field on the extruded mesh, overwritten
    implicit none
    class(ColumnOperators3D_t),intent(in) :: this
    class(Scalar2D),intent(in) :: qbar
    class(Scalar3D),intent(inout) :: q
    ! Local
    integer :: i,j,l,iel,ivar

    call CheckFields_ColumnOperators3D_t(this,q,qbar,"Broadcast")

    do concurrent(i=1:this%N+1,j=1:this%N+1,l=1:this%N+1, &
                  iel=1:this%nElem,ivar=1:q%nVar)
      q%interior(i,j,l,iel,ivar) = qbar%interior(i,j,(iel-1)/this%nLayers+1,ivar)
    enddo

  endsubroutine Broadcast_ColumnOperators3D_t