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
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ColumnOperators3D_t), | intent(in) | :: | this | |||
| class(Scalar2D), | intent(in) | :: | qbar | |||
| class(Scalar3D), | intent(inout) | :: | q |
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