ApplyTransferPlan Subroutine

public subroutine ApplyTransferPlan(plan, interp, nVar, uOld, uNew)

Execute a transfer plan on nodal element data: uNew(:,:,li,:) receives old element data copied, prolonged (exact interpolation), or restricted (conservative L2 projection) according to plan entry li. interp must be the solution interpolant the data lives on (its mortar operators drive the transfer). Runs once per adaptation epoch - not a per-time-step hot path - so clarity is preferred over fused loops here.

Arguments

TypeIntentOptionalAttributesName
type(TransferPlan2D), 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:plan%nOld,1:nVar)
real(kind=prec), intent(out) :: uNew(1:interp%N+1,1:interp%N+1,1:plan%nNew,1:nVar)

Calls

proc~~applytransferplan~~CallsGraph proc~applytransferplan ApplyTransferPlan proc~applytransferplanrange ApplyTransferPlanRange proc~applytransferplan->proc~applytransferplanrange proc~restrictfromchildren RestrictFromChildren proc~applytransferplanrange->proc~restrictfromchildren proc~prolongtochildren ProlongToChildren proc~applytransferplanrange->proc~prolongtochildren tmp tmp proc~restrictfromchildren->tmp up up proc~restrictfromchildren->up proc~prolongtochildren->tmp

Contents

Source Code


Source Code

  subroutine ApplyTransferPlan(plan,interp,nVar,uOld,uNew)
    !! Execute a transfer plan on nodal element data: uNew(:,:,li,:) receives old element data
    !! copied, prolonged (exact interpolation), or restricted (conservative L2 projection)
    !! according to plan entry li. interp must be the solution interpolant the data lives on
    !! (its mortar operators drive the transfer). Runs once per adaptation epoch - not a
    !! per-time-step hot path - so clarity is preferred over fused loops here.
    implicit none
    type(TransferPlan2D),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:plan%nOld,1:nVar)
    real(prec),intent(out) :: uNew(1:interp%N+1,1:interp%N+1,1:plan%nNew,1:nVar)

    call ApplyTransferPlanRange(plan,interp,nVar,uOld,1,plan%nNew,uNew)

  endsubroutine ApplyTransferPlan