op_obj_intrp1 Function

private impure function op_obj_intrp1(this, in) result(out)

Interpolates in the x1-direction. Note: If input is face-centered (on x1), result is cell-centered (on x1m). If input is cell-centered (on x1m), result is face-centered (on x1).

Type Bound

op_obj

Arguments

Type IntentOptional Attributes Name
class(op_obj), intent(in) :: this

Differential operators utility

type(eulerian_obj_r), intent(in) :: in

Field to interpolate

Return Value type(eulerian_obj_r)

Result


Calls

proc~~op_obj_intrp1~~CallsGraph proc~op_obj_intrp1 op_obj%op_obj_intrp1 proc~eulerian_obj_init eulerian_obj_base%eulerian_obj_Init proc~op_obj_intrp1->proc~eulerian_obj_init

Called by

proc~~op_obj_intrp1~~CalledByGraph proc~op_obj_intrp1 op_obj%op_obj_intrp1 proc~cdifs_obj_advancesolutionib cdifs_obj_AdvanceSolutionIB proc~cdifs_obj_advancesolutionib->proc~op_obj_intrp1 proc~cdifs_obj_writeoutputdata cdifs_obj_WriteOutputData proc~cdifs_obj_writeoutputdata->proc~op_obj_intrp1 proc~op_obj_conv11 op_obj%op_obj_conv11 proc~op_obj_conv11->proc~op_obj_intrp1 proc~op_obj_conv21 op_obj%op_obj_conv21 proc~op_obj_conv21->proc~op_obj_intrp1 proc~op_obj_conv31 op_obj%op_obj_conv31 proc~op_obj_conv31->proc~op_obj_intrp1 interface~cdifs_obj_writeoutputdata cdifs_obj%cdifs_obj_WriteOutputData interface~cdifs_obj_writeoutputdata->proc~cdifs_obj_writeoutputdata proc~cdifs_obj_advancesolution cdifs_obj_AdvanceSolution proc~cdifs_obj_advancesolution->proc~cdifs_obj_advancesolutionib interface~cdifs_obj_advancesolution cdifs_obj%cdifs_obj_AdvanceSolution interface~cdifs_obj_advancesolution->proc~cdifs_obj_advancesolution proc~cdifs_obj_preparesolver cdifs_obj_PrepareSolver proc~cdifs_obj_preparesolver->interface~cdifs_obj_writeoutputdata interface~cdifs_obj_preparesolver cdifs_obj%cdifs_obj_PrepareSolver interface~cdifs_obj_preparesolver->proc~cdifs_obj_preparesolver

Source Code

    impure function op_obj_intrp1(this,in) result(out)
      !> Interpolates in the x1-direction.
      ! Note: If input is face-centered (on x1), result is
      ! cell-centered (on x1m). If input is cell-centered (on x1m),
      ! result is face-centered (on x1).
      class(op_obj),        intent(in) :: this                                 !! Differential operators utility
      type(eulerian_obj_r), intent(in) :: in                                   !! Field to interpolate
      type(eulerian_obj_r)             :: out                                  !! Result
      ! Work variables
      integer :: i,j,k
      integer :: slo, shi

      call out%Initialize('interp-x1',this%block,this%parallel,in%staggering)

      associate (lo => this%block%lo,  hi => this%block%hi)
        select case (in%staggering)
        case (0,2,3)
          ! From xm to x
            do k=lo(3),hi(3)
              do j=lo(2),hi(2)
                do i=lo(1),hi(1)
                  slo = i - this%st
                  shi = i + this%st - 1

                  out%cell(i,j,k)=dot_product(this%c_intrp1m(:,i),in%cell(slo:shi,j,k))
                end do
              end do
            end do
        case (1)
          ! From x to xm
            do k=lo(3),hi(3)
              do j=lo(2),hi(2)
                do i=lo(1),hi(1)
                  slo = i - this%st + 1
                  shi = i + this%st

                  out%cell(i,j,k)=dot_product(this%c_intrp1 (:,i),in%cell(slo:shi,j,k))
                end do
              end do
            end do
        end select
      end associate

      return
    end function op_obj_intrp1