81 class(LeastSquaresGradientType) :: this
82 integer(I4B),
intent(in) :: n
83 real(DP),
dimension(:, :),
allocatable :: R
85 integer(I4B) :: number_connections
86 integer(I4B) :: ipos, local_pos, m
88 real(DP),
dimension(3) :: dnm
89 real(DP),
dimension(:, :),
allocatable :: d
90 real(DP),
dimension(:, :),
allocatable :: inverse_distance
93 number_connections = number_connected_faces(this%dis, n)
95 allocate (d(number_connections, 3))
96 allocate (r(3, number_connections))
97 allocate (inverse_distance(number_connections, number_connections))
105 do ipos = this%dis%con%ia(n) + 1, this%dis%con%ia(n + 1) - 1
106 m = this%dis%con%ja(ipos)
108 dnm = node_distance(this%dis, n, m)
111 d(local_pos, :) = dnm / length
112 inverse_distance(local_pos, local_pos) = 1.0_dp / length
114 local_pos = local_pos + 1
118 r = matmul(pinv(d), inverse_distance)