ApplyTransferPlanRange Subroutine

public subroutine ApplyTransferPlanRange(plan, interp, nVar, uOld, eFirst, eLast, uNew)

Execute the contiguous sub-range eFirst..eLast of a transfer plan: uNew(:,:,:,k,:) receives the data of new element eFirst+k-1. uOld is the full (global) old field; the output is only the requested slice. This is the gather-then-slice (AMR Stage-5 v1) decomposed-mesh entry point: each rank passes its own contiguous range of the new element ordering and a gathered global old solution, and fills exactly its rank-local storage. ApplyTransferPlanWindow is the point-to-point (v2) entry point, which needs only the sub-range of the old field the requested new range actually references; this routine is that one over the whole old field, so the two are bit-identical by construction rather than by inspection.

Arguments

TypeIntentOptionalAttributesName
type(TransferPlan3D), intent(in) :: plan
type(Lagrange), intent(in) :: interp
integer, intent(in) :: nVar
real(kind=prec), intent(in) :: uOld(1:interp%N+1,1:interp%N+1,1:interp%N+1,1:plan%nOld,1:nVar)
integer, intent(in) :: eFirst
integer, intent(in) :: eLast
real(kind=prec), intent(out) :: uNew(1:interp%N+1,1:interp%N+1,1:interp%N+1,1:eLast-eFirst+1,1:nVar)

Calls

proc~~applytransferplanrange~~CallsGraph proc~applytransferplanrange ApplyTransferPlanRange proc~applytransferplanwindow ApplyTransferPlanWindow proc~applytransferplanrange->proc~applytransferplanwindow proc~restrictfromchildren RestrictFromChildren proc~applytransferplanwindow->proc~restrictfromchildren proc~prolongtochildren ProlongToChildren proc~applytransferplanwindow->proc~prolongtochildren tmp1 tmp1 proc~restrictfromchildren->tmp1 up up proc~restrictfromchildren->up tmp2 tmp2 proc~restrictfromchildren->tmp2 proc~prolongtochildren->tmp1 proc~prolongtochildren->tmp2

Called by

proc~~applytransferplanrange~~CalledByGraph proc~applytransferplanrange ApplyTransferPlanRange proc~applytransferplan ApplyTransferPlan proc~applytransferplan->proc~applytransferplanrange proc~applytransferplan_dgmodel3d_t ApplyTransferPlan_DGModel3D_t proc~applytransferplan_dgmodel3d_t->proc~applytransferplanrange proc~adapt_amrcontroller3d Adapt_AMRController3D proc~adapt_amrcontroller3d->proc~applytransferplan_dgmodel3d_t proc~applytransferplan_dgmodel3d ApplyTransferPlan_DGModel3D proc~applytransferplan_dgmodel3d->proc~applytransferplan_dgmodel3d_t

Contents


Source Code

  subroutine ApplyTransferPlanRange(plan,interp,nVar,uOld,eFirst,eLast,uNew)
    !! Execute the contiguous sub-range eFirst..eLast of a transfer plan: uNew(:,:,:,k,:)
    !! receives the data of new element eFirst+k-1. uOld is the full (global) old field; the
    !! output is only the requested slice. This is the gather-then-slice (AMR Stage-5 v1)
    !! decomposed-mesh entry point: each rank passes its own contiguous range of the new
    !! element ordering and a gathered global old solution, and fills exactly its rank-local
    !! storage. ApplyTransferPlanWindow is the point-to-point (v2) entry point, which needs
    !! only the sub-range of the old field the requested new range actually references; this
    !! routine is that one over the whole old field, so the two are bit-identical by
    !! construction rather than by inspection.
    implicit none
    type(TransferPlan3D),intent(in) :: plan
    type(Lagrange),intent(in) :: interp
    integer,intent(in) :: nVar
    real(prec),intent(in) :: uOld(1:interp%N+1,1:interp%N+1,1:interp%N+1,1:plan%nOld,1:nVar)
    integer,intent(in) :: eFirst
    integer,intent(in) :: eLast
    real(prec),intent(out) :: uNew(1:interp%N+1,1:interp%N+1,1:interp%N+1,1:eLast-eFirst+1,1:nVar)

    call ApplyTransferPlanWindow(plan,interp,nVar,uOld,1,plan%nOld,eFirst,eLast,uNew)

  endsubroutine ApplyTransferPlanRange