point_at_geometry Subroutine

private subroutine point_at_geometry(s, geo, igrid, ixGmin1, ixGmin2, ixGmin3, ixGmax1, ixGmax2, ixGmax3, ixGextmin1, ixGextmin2, ixGextmin3, ixGextmax1, ixGextmax2, ixGextmax3)

Uses

  • proc~~point_at_geometry~~UsesGraph proc~point_at_geometry point_at_geometry module~mod_global_parameters mod_global_parameters proc~point_at_geometry->module~mod_global_parameters module~mod_physicaldata mod_physicaldata proc~point_at_geometry->module~mod_physicaldata module~mod_global_parameters->module~mod_physicaldata 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_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Point the metric components of state s at block igrid's slice of geo. Bounds remapping is what keeps the index ranges (which start below 1 for the face areas, and for the volumes when nghostcells is odd) intact: a plain pointer assignment would silently rebase them to 1.

Arguments

Type IntentOptional Attributes Name
type(state), intent(inout) :: s
type(geo_t), intent(inout), target :: geo
integer, intent(in) :: igrid
integer, intent(in) :: ixGmin1
integer, intent(in) :: ixGmin2
integer, intent(in) :: ixGmin3
integer, intent(in) :: ixGmax1
integer, intent(in) :: ixGmax2
integer, intent(in) :: ixGmax3
integer, intent(in) :: ixGextmin1
integer, intent(in) :: ixGextmin2
integer, intent(in) :: ixGextmin3
integer, intent(in) :: ixGextmax1
integer, intent(in) :: ixGextmax2
integer, intent(in) :: ixGextmax3

Called by

proc~~point_at_geometry~~CalledByGraph proc~point_at_geometry point_at_geometry proc~alloc_state alloc_state proc~alloc_state->proc~point_at_geometry proc~alloc_state_coarse alloc_state_coarse proc~alloc_state_coarse->proc~point_at_geometry proc~alloc_node alloc_node proc~alloc_node->proc~alloc_state proc~alloc_node->proc~alloc_state_coarse

Source Code

  subroutine point_at_geometry(s, geo, igrid, ixGmin1,ixGmin2,ixGmin3,ixGmax1,&
     ixGmax2,ixGmax3, ixGextmin1,ixGextmin2,ixGextmin3,ixGextmax1,ixGextmax2,&
     ixGextmax3)
    use mod_physicaldata, only: state, geo_t
    use mod_global_parameters, only: ndim

    type(state), intent(inout) :: s
    type(geo_t), intent(inout), target :: geo
    integer, intent(in) :: igrid, ixGmin1,ixGmin2,ixGmin3,ixGmax1,ixGmax2,&
       ixGmax3, ixGextmin1,ixGextmin2,ixGextmin3,ixGextmax1,ixGextmax2,&
       ixGextmax3

    s%x(ixGmin1:ixGmax1,ixGmin2:ixGmax2,ixGmin3:ixGmax3,1:ndim) => &
       geo%x(:,:,:,:,igrid)

    ! A Cartesian build allocates nothing but the positions, so the metric
    ! views are left unassociated rather than remapped onto an unallocated
    ! array.  That is deliberate: any host reader that turns out to need one
    ! after all faults here instead of quietly reading nonsense.

  end subroutine point_at_geometry