op_obj_conv13 Function

private impure function op_obj_conv13(this, in1, in2) result(out)

Computes d(U1 U1)/dx1.

Type Bound

op_obj

Arguments

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

Differential operators utility

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

Convecting velocity: Ui

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

Velocity Uj

Return Value type(eulerian_obj_r)

Result


Calls

proc~~op_obj_conv13~~CallsGraph proc~op_obj_conv13 op_obj%op_obj_conv13 proc~eulerian_obj_init eulerian_obj_base%eulerian_obj_Init proc~op_obj_conv13->proc~eulerian_obj_init proc~eulerian_obj_updateghostcells eulerian_obj_base%eulerian_obj_UpdateGhostCells proc~op_obj_conv13->proc~eulerian_obj_updateghostcells proc~op_obj_intrp3 op_obj%op_obj_intrp3 proc~op_obj_conv13->proc~op_obj_intrp3 proc~eulerian_obj_updateghostcells_x eulerian_obj_base%eulerian_obj_UpdateGhostCells_x proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_x proc~eulerian_obj_updateghostcells_y eulerian_obj_base%eulerian_obj_UpdateGhostCells_y proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_y proc~eulerian_obj_updateghostcells_z eulerian_obj_base%eulerian_obj_UpdateGhostCells_z proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_z proc~op_obj_intrp3->proc~eulerian_obj_init cell cell proc~eulerian_obj_updateghostcells_x->cell mpi_irecv mpi_irecv proc~eulerian_obj_updateghostcells_x->mpi_irecv mpi_isend mpi_isend proc~eulerian_obj_updateghostcells_x->mpi_isend mpi_waitall mpi_waitall proc~eulerian_obj_updateghostcells_x->mpi_waitall proc~eulerian_obj_updateghostcells_y->cell proc~eulerian_obj_updateghostcells_y->mpi_irecv proc~eulerian_obj_updateghostcells_y->mpi_isend proc~eulerian_obj_updateghostcells_y->mpi_waitall proc~eulerian_obj_updateghostcells_z->cell proc~eulerian_obj_updateghostcells_z->mpi_irecv proc~eulerian_obj_updateghostcells_z->mpi_isend proc~eulerian_obj_updateghostcells_z->mpi_waitall

Source Code

    impure function op_obj_conv13(this,in1,in2) result(out)
      !> Computes d(U1 U1)/dx1.
      class(op_obj),        intent(in) :: this                                 !! Differential operators utility
      type(eulerian_obj_r), intent(in) :: in1                                  !! Convecting velocity: Ui
      type(eulerian_obj_r), intent(in) :: in2                                  !! Velocity Uj
      type(eulerian_obj_r)             :: out                                  !! Result
      ! Work variables
      type(eulerian_obj_r) :: in1c                                             !! Interpolated Ui from face to cell center
      integer :: i,j,k,n

      call in1c%Initialize('in1c',     this%block,this%parallel,0             )
      call out%Initialize('ddx1(U1U1)',this%block,this%parallel,in2%staggering)
      out = 0.0_wp

      in1c = this%intrp3(in1)
      call in1c%UpdateGhostCells

      associate (lo => this%block%lo,  hi => this%block%hi)
       do k=lo(3),hi(3)
         do j=lo(2),hi(2)
           do i=lo(1),hi(1)
             do n = -this%st+1, this%st
               out%cell(i,j,k) = out%cell(i,j,k) + this%c_d1dx1 (n,i)*in1c%cell(i+n,j,k)* &
                                                 0.5_wp*(in2%cell(i+2*n-1,j,k)+in2%cell(i,j,k))
             end do
           end do
         end do
       end do
      end associate

      return
    end function op_obj_conv13