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.
| Type | Intent | Optional | 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 |
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