point_in_igrid_ghostc Function

public function point_in_igrid_ghostc(x, igrid, ngh)

Uses

  • proc~~point_in_igrid_ghostc~~UsesGraph proc~point_in_igrid_ghostc point_in_igrid_ghostc module~mod_geometry mod_geometry proc~point_in_igrid_ghostc->module~mod_geometry module~mod_global_parameters mod_global_parameters proc~point_in_igrid_ghostc->module~mod_global_parameters module~mod_comm_lib mod_comm_lib module~mod_geometry->module~mod_comm_lib module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Quick check if particle coordinate is inside igrid (ghost cells included, except the last ngh)

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: x(ndim)
integer, intent(in) :: igrid
integer, intent(in) :: ngh

Return Value logical


Called by

proc~~point_in_igrid_ghostc~~CalledByGraph proc~point_in_igrid_ghostc point_in_igrid_ghostc proc~fix_phi_crossing fix_phi_crossing proc~fix_phi_crossing->proc~point_in_igrid_ghostc proc~sample_get_particle_dt sample_get_particle_dt proc~sample_get_particle_dt->proc~point_in_igrid_ghostc proc~lorentz_integrate_particles Lorentz_integrate_particles proc~lorentz_integrate_particles->proc~fix_phi_crossing proc~sample_integrate_particles sample_integrate_particles proc~sample_integrate_particles->proc~sample_get_particle_dt

Source Code

  logical function point_in_igrid_ghostc(x, igrid, ngh)
    use mod_global_parameters
    use mod_geometry
    integer, intent(in) :: igrid, ngh
    double precision, intent(in) :: x(ndim)
    double precision    :: grid_rmin(ndim), grid_rmax(ndim)

    ! TODO: this does not work with stretched coordinates!
    ! TODO: but phi should not be stretched in principle...
    grid_rmin      = [ rnode(rpxmin1_,igrid)-rnode(rpdx1_,&
       igrid)*(DBLE(nghostcells-ngh)-0.5d0),rnode(rpxmin2_,igrid)-rnode(rpdx2_,&
       igrid)*(DBLE(nghostcells-ngh)-0.5d0),rnode(rpxmin3_,igrid)-rnode(rpdx3_,&
       igrid)*(DBLE(nghostcells-ngh)-0.5d0) ]
    grid_rmax      = [ rnode(rpxmax1_,igrid)+rnode(rpdx1_,&
       igrid)*(DBLE(nghostcells-ngh)-0.5d0),rnode(rpxmax2_,igrid)+rnode(rpdx2_,&
       igrid)*(DBLE(nghostcells-ngh)-0.5d0),rnode(rpxmax3_,igrid)+rnode(rpdx3_,&
       igrid)*(DBLE(nghostcells-ngh)-0.5d0) ]
    point_in_igrid_ghostc = all(x >= grid_rmin) .and. all(x < grid_rmax)
  end function point_in_igrid_ghostc