Device version of FillInterfaceBoundary_MultiSetModel3D_t: extBoundary(i,j,s,e,v) = ghost(i,j,v,f) on the interface faces of set iset, written to solution%extBoundary_gpu. The partner set must have the same nvar.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MultiSetModel3D), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | iset |
subroutine FillInterfaceBoundary_MultiSetModel3D(this,iset)
!! Device version of FillInterfaceBoundary_MultiSetModel3D_t:
!! extBoundary(i,j,s,e,v) = ghost(i,j,v,f) on the interface faces of set iset, written
!! to solution%extBoundary_gpu. The partner set must have the same nvar.
implicit none
class(MultiSetModel3D),intent(inout) :: this
integer,intent(in) :: iset
! Local
integer :: f,nvar,nk
nvar = this%sets(iset)%model%nvar
do f = this%iface%setFaceStart(iset),this%iface%setFaceStart(iset+1)-1
if(this%iface%nvarOfSet(this%iface%facePartnerSet(f)) /= nvar) then
print*,__FILE__," : sets ",iset," and ",this%iface%facePartnerSet(f), &
" have different nvar"
error stop "MultiSetModel3D : override FillInterfaceBoundary to couple these sets"
endif
enddo
nk = this%iface%setFaceStart(iset+1)-this%iface%setFaceStart(iset)
if(nk == 0) return
call FillSetInterfaceBoundary_gpu(this%sets(iset)%model%solution%extBoundary_gpu, &
this%iface%ghost_gpu, &
this%iface%faceElem_gpu,this%iface%faceSide_gpu, &
this%iface%setFaceStart(iset)-1,nk,nvar, &
this%iface%nvarMax,this%iface%N, &
this%sets(iset)%mesh%nElem)
endsubroutine FillInterfaceBoundary_MultiSetModel3D