MODFLOW 6 version 6.9.0.dev0
USGS Modular Hydrologic Model
Loading...
Searching...
No Matches
GridSorting.f90 File Reference

Go to the source code of this file.

Modules

module  gridsorting

Functions/Subroutines

subroutine, public gridsorting::quicksortgrid (array, arraysize, idxtoglobal, z_only)
subroutine init ()
logical(lgp) function lessthan (n, m)
real(dp) function, dimension(3) get_global_xyz (gc, use_only_z)
 Utility function to convert global cell.
subroutine swap (a, b)
subroutine rshift (left, right)

Function/Subroutine Documentation

◆ get_global_xyz()

real(dp) function, dimension(3) quicksortgrid::get_global_xyz ( type(globalcelltype) gc,
logical(lgp) use_only_z )
private
Parameters
gcthe global cell id
use_only_zonly z coordinate is needed or available, skip transform
Returns
return xyz

Definition at line 55 of file GridSorting.f90.

56 type(GlobalCellType) :: gc !< the global cell id
57 logical(LGP) :: use_only_z !< only z coordinate is needed or available, skip transform
58 real(DP), dimension(3) :: global_xyz !< return xyz
59 ! local
60 real(DP) :: x, y, z
61 real(DP) :: xc, yc, xo, yo, angrot
62
63 z = dhalf * (gc%v_model%dis_top%get(gc%index) + &
64 gc%v_model%dis_bot%get(gc%index))
65
66 x = dzero
67 y = dzero
68 if (.not. use_only_z) then
69 xc = gc%v_model%dis_xc%get(gc%index)
70 yc = gc%v_model%dis_yc%get(gc%index)
71 xo = gc%v_model%dis_xorigin%get()
72 yo = gc%v_model%dis_yorigin%get()
73 angrot = gc%v_model%dis_angrot%get()
74 call dis_transform_xy(xc, yc, xo, yo, angrot, x, y)
75 end if
76
77 global_xyz = [x, y, z]
78
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init()

subroutine quicksortgrid::init
private

Definition at line 24 of file GridSorting.f90.

Here is the caller graph for this function:

◆ lessthan()

logical(lgp) function quicksortgrid::lessthan ( integer(i4b), intent(in) n,
integer(i4b), intent(in) m )
private

Definition at line 29 of file GridSorting.f90.

30 integer(I4B), intent(in) :: n
31 integer(I4B), intent(in) :: m
32 logical(LGP) :: isLess
33 ! local
34 real(DP), dimension(3) :: xyz_n, xyz_m
35
36 ! get coordinates as 3-vectors
37 xyz_n = get_global_xyz(idxtoglobal(array(n)), z_only)
38 xyz_m = get_global_xyz(idxtoglobal(array(m)), z_only)
39
40 ! compare
41 if (.not. is_close(xyz_n(3), xyz_m(3), 10 * epsilon(xyz_n(3)))) then
42 isless = xyz_n(3) > xyz_m(3)
43 else if (.not. is_close(xyz_n(2), xyz_m(2), 10 * epsilon(xyz_n(2)))) then
44 isless = xyz_n(2) > xyz_m(2)
45 else if (.not. is_close(xyz_n(1), xyz_m(1), 10 * epsilon(xyz_n(1)))) then
46 isless = xyz_n(1) < xyz_m(1)
47 else
48 isless = .false.
49 end if
50
real(dp) function, dimension(3) get_global_xyz(gc, use_only_z)
Utility function to convert global cell.
Here is the call graph for this function:

◆ rshift()

subroutine quicksortgrid::rshift ( integer, intent(in) left,
integer, intent(in) right )
private

Definition at line 93 of file GridSorting.f90.

94 integer, intent(in) :: left, right
95 integer :: hold
96
97 hold = array(right)
98 array(left + 1:right) = array(left:right - 1)
99 array(left) = hold
100

◆ swap()

subroutine quicksortgrid::swap ( integer, intent(in) a,
integer, intent(in) b )
private

Definition at line 82 of file GridSorting.f90.

83 integer, intent(in) :: a, b
84 integer :: hold
85
86 hold = array(a)
87 array(a) = array(b)
88 array(b) = hold
89