solid_set_Filter Subroutine

private impure subroutine solid_set_Filter(this, var, field)

Filters a quantity to the Eulerian grid.

Type Bound

solid_set

Arguments

Type IntentOptional Attributes Name
class(solid_set), intent(inout) :: this

A collection of solids

character(len=*), intent(in) :: var

Variable to compute

type(eulerian_obj_r), intent(inout) :: field

Filtered quantity


Calls

proc~~solid_set_filter~~CallsGraph proc~solid_set_filter solid_set%solid_set_Filter proc~eulerian_obj_final eulerian_obj_base%eulerian_obj_Final proc~solid_set_filter->proc~eulerian_obj_final proc~eulerian_obj_init eulerian_obj_base%eulerian_obj_Init proc~solid_set_filter->proc~eulerian_obj_init proc~marker_set_filter marker_set%marker_set_Filter proc~solid_set_filter->proc~marker_set_filter extrapolate extrapolate proc~marker_set_filter->extrapolate f f proc~marker_set_filter->f markers markers proc~marker_set_filter->markers n n proc~marker_set_filter->n proc~eulerian_obj_addupghostcells eulerian_obj_base%eulerian_obj_AddUpGhostCells proc~marker_set_filter->proc~eulerian_obj_addupghostcells v v proc~marker_set_filter->v proc~eulerian_obj_addupghostcells_x eulerian_obj_base%eulerian_obj_AddUpGhostCells_x proc~eulerian_obj_addupghostcells->proc~eulerian_obj_addupghostcells_x proc~eulerian_obj_addupghostcells_y eulerian_obj_base%eulerian_obj_AddUpGhostCells_y proc~eulerian_obj_addupghostcells->proc~eulerian_obj_addupghostcells_y proc~eulerian_obj_addupghostcells_z eulerian_obj_base%eulerian_obj_AddUpGhostCells_z proc~eulerian_obj_addupghostcells->proc~eulerian_obj_addupghostcells_z proc~eulerian_obj_updateghostcells eulerian_obj_base%eulerian_obj_UpdateGhostCells proc~eulerian_obj_addupghostcells->proc~eulerian_obj_updateghostcells cell cell proc~eulerian_obj_addupghostcells_x->cell mpi_irecv mpi_irecv proc~eulerian_obj_addupghostcells_x->mpi_irecv mpi_isend mpi_isend proc~eulerian_obj_addupghostcells_x->mpi_isend mpi_waitall mpi_waitall proc~eulerian_obj_addupghostcells_x->mpi_waitall proc~eulerian_obj_addupghostcells_y->cell proc~eulerian_obj_addupghostcells_y->mpi_irecv proc~eulerian_obj_addupghostcells_y->mpi_isend proc~eulerian_obj_addupghostcells_y->mpi_waitall proc~eulerian_obj_addupghostcells_z->cell proc~eulerian_obj_addupghostcells_z->mpi_irecv proc~eulerian_obj_addupghostcells_z->mpi_isend proc~eulerian_obj_addupghostcells_z->mpi_waitall 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~eulerian_obj_updateghostcells_x->cell proc~eulerian_obj_updateghostcells_x->mpi_irecv proc~eulerian_obj_updateghostcells_x->mpi_isend 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 subroutine solid_set_Filter(this,var,field)
      !> Filters a quantity to the Eulerian grid.
      implicit none
      class(solid_set),     intent(inout) :: this                              !! A collection of solids
      character(len=*),     intent(in)    :: var                               !! Variable to compute
      type(eulerian_obj_r), intent(inout) :: field                             !! Filtered quantity
      ! Work variables
      type(eulerian_obj_r) :: my_field
      integer :: n

      ! Initialize value to zero
      field%cell=0.0_WP

      ! Create a temporary Eulerian structure, cell centered
      call my_field%Initialize('tmp',this%block,this%parallel,0)
      do n=1,this%count

        ! Filter quantity
        call this%p(n)%Filter(var,my_field)

        ! Add up cell values
        field%cell=field%cell+my_field%cell
      end do

      ! Finalize tmp variable
      call my_field%Finalize
      return
    end subroutine solid_set_Filter