From 52ecd98a11fc4f459c9bd0b59cb854ff402eeb08 Mon Sep 17 00:00:00 2001 From: Joshua Larsen Date: Fri, 10 Apr 2020 14:13:08 -0700 Subject: [PATCH] =?UTF-8?q?Fix(ModflowDis):=20zero=20based=20get=5Fnode()?= =?UTF-8?q?=20and=20get=5Flrc()=E2=80=A6=20(#847)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix(ModflowDis): zero based get_node() and get_lrc() for input parameters and output * added test_get_lrc_get_node() --- autotest/t007_test.py | 13 +++++++++++++ flopy/modflow/mfdis.py | 10 ++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/autotest/t007_test.py b/autotest/t007_test.py index 1e24b8146..a02324f7e 100644 --- a/autotest/t007_test.py +++ b/autotest/t007_test.py @@ -1367,6 +1367,19 @@ def test_get_vertices(): assert np.array_equal(a1, a2) +def test_get_lrc_get_node(): + node = 50 + ml = flopy.modflow.Modflow() + dis = flopy.modflow.ModflowDis(ml, nlay=1, nrow=1, ncol=201, delr=10, + delc=1, top=50, botm=0) + lrc = dis.get_lrc([node, ]) + if lrc[0] != (0, 0, 50): + raise AssertionError("get_lrc() is not returning zero based (k, i, j)") + nodes = dis.get_node(lrc) + if nodes[0] != node: + raise AssertionError('get_node() is not returning zero based node') + + def test_vertex_model_dot_plot(): import matplotlib.pyplot as plt # load up the vertex example problem diff --git a/flopy/modflow/mfdis.py b/flopy/modflow/mfdis.py index dbdc3d2f5..8f36524b4 100644 --- a/flopy/modflow/mfdis.py +++ b/flopy/modflow/mfdis.py @@ -479,7 +479,8 @@ def get_rc_from_node_coordinates(self, x, y, local=True): def get_lrc(self, nodes): """ - Get layer, row, column from a list of MODFLOW node numbers. + Get layer, row, column from a list of zero based + MODFLOW node numbers. Returns ------- @@ -491,7 +492,7 @@ def get_lrc(self, nodes): nrc = self.nrow * self.ncol v = [] for node in nodes: - k = int(node / nrc) + k = int((node + 1) / nrc) if (k * nrc) < node: k += 1 ij = int(node - (k - 1) * nrc) @@ -499,12 +500,13 @@ def get_lrc(self, nodes): if (i * self.ncol) < ij: i += 1 j = ij - (i - 1) * self.ncol - v.append((k, i, j)) + v.append((k - 1, i - 1, j)) return v def get_node(self, lrc_list): """ - Get node number from a list of MODFLOW layer, row, column tuples. + Get node number from a list of zero based MODFLOW + layer, row, column tuples. Returns -------