Skip to content

Commit

Permalink
refactor(dfn2f90): factor out paths (MODFLOW-USGS#1456)
Browse files Browse the repository at this point in the history
  • Loading branch information
wpbonelli authored Nov 21, 2023
1 parent d93ad1f commit 103793f
Showing 1 changed file with 60 additions and 67 deletions.
127 changes: 60 additions & 67 deletions utils/idmloader/scripts/dfn2f90.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import os
import sys
import json
from pathlib import Path
from enum import Enum

MF6_LENVARNAME = 16
F90_LINELEN = 82
PROJ_ROOT = Path(__file__).parents[3]
DFN_PATH = PROJ_ROOT / "doc" / "mf6io" / "mf6ivar" / "dfn"
SRC_PATH = PROJ_ROOT / "src"


class Dfn2F90:
Expand Down Expand Up @@ -46,7 +46,6 @@ def add_dfn_entry(self, dfn_d=None):

def write_f90(self, ofspec=None):
with open(ofspec, "w") as f:

# file header
f.write(self._source_file_header(self.component, self.subcomponent))

Expand Down Expand Up @@ -138,7 +137,6 @@ def _set_var_d(self):
vd = {}

for line in lines:

# skip blank lines
if len(line.strip()) == 0:
if len(vd) > 0:
Expand Down Expand Up @@ -303,7 +301,6 @@ def _set_blk_param_strs(self, blockname, component, subcomponent):
r = ".false."

for k in self._var_d:

varname, bname = k
if bname != blockname:
continue
Expand Down Expand Up @@ -341,7 +338,7 @@ def _set_blk_param_strs(self, blockname, component, subcomponent):
shape = shape.replace(")", "")
shape = shape.replace(",", "")
shape = shape.upper()
if (shape == "NCOL*NROW; NCPL"):
if shape == "NCOL*NROW; NCPL":
# grid array input syntax
if mf6vn == "AUXVAR":
# for grid, set AUX as DOUBLE2D
Expand Down Expand Up @@ -534,7 +531,7 @@ def write(self):
self._write_master()

def _write_master(self):
ofspec = f"../../../src/Utilities/Idm/selector/IdmDfnSelector.f90"
ofspec = SRC_PATH / "Utilities" / "Idm" / "selector" / "IdmDfnSelector.f90"
with open(ofspec, "w") as fh:
self._write_master_decl(fh)
self._write_master_defn(fh, defn="param", dtype="param")
Expand All @@ -548,7 +545,11 @@ def _write_master(self):
def _write_selectors(self):
for c in self._d:
ofspec = (
f"../../../src/Utilities/Idm/selector/Idm{c.title()}DfnSelector.f90"
SRC_PATH
/ "Utilities"
/ "Idm"
/ "selector"
/ f"Idm{c.title()}DfnSelector.f90"
)
with open(ofspec, "w") as fh:
self._write_selector_decl(fh, component=c, sc_list=self._d[c])
Expand Down Expand Up @@ -584,9 +585,7 @@ def _write_selector_decl(self, fh=None, component=None, sc_list=None):
len_sc = len(sc)
spacer = space * (len_c + len_sc)

s += (
f" use {c.title()}{sc.title()}InputModule\n"
)
s += f" use {c.title()}{sc.title()}InputModule\n"

s += (
f"\n implicit none\n"
Expand All @@ -597,7 +596,7 @@ def _write_selector_decl(self, fh=None, component=None, sc_list=None):
f" public :: {c.lower()}_idm_multi_package\n"
f" public :: {c.lower()}_idm_integrated\n\n"
)
s += (f"contains\n\n")
s += f"contains\n\n"

fh.write(s)

Expand Down Expand Up @@ -727,9 +726,7 @@ def _write_master_decl(self, fh=None):
for c in self._d:
len_c = len(c)
spacer = space * (len_c)
s += (
f" use Idm{c.title()}DfnSelectorModule\n"
)
s += f" use Idm{c.title()}DfnSelectorModule\n"

s += (
f"\n implicit none\n"
Expand Down Expand Up @@ -841,10 +838,7 @@ def _write_master_component(self, fh=None):
)

for c in dfn_d:
s += (
f" case ('{c}')\n"
f" integrated = .true.\n"
)
s += f" case ('{c}')\n" f" integrated = .true.\n"

s += (
f" case default\n"
Expand All @@ -857,101 +851,100 @@ def _write_master_component(self, fh=None):


if __name__ == "__main__":

dfns = [
# ** Add a new dfn parameter set to MODFLOW 6 by adding a new entry to this list **
# [relative path of input dnf, relative path of output f90 definition file]
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-chd.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3chd8idm.f90"),
DFN_PATH / "gwf-chd.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3chd8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-dis.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3dis8idm.f90"),
DFN_PATH / "gwf-dis.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3dis8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-disu.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3disu8idm.f90"),
DFN_PATH / "gwf-disu.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3disu8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-disv.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3disv8idm.f90"),
DFN_PATH / "gwf-disv.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3disv8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-drn.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3drn8idm.f90"),
DFN_PATH / "gwf-drn.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3drn8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-evt.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3evt8idm.f90"),
DFN_PATH / "gwf-evt.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3evt8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-evta.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3evta8idm.f90"),
DFN_PATH / "gwf-evta.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3evta8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-ghb.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3ghb8idm.f90"),
DFN_PATH / "gwf-ghb.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3ghb8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-ic.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3ic8idm.f90"),
DFN_PATH / "gwf-ic.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3ic8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-npf.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3npf8idm.f90"),
DFN_PATH / "gwf-npf.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3npf8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-rch.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3rch8idm.f90"),
DFN_PATH / "gwf-rch.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3rch8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-rcha.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3rcha8idm.f90"),
DFN_PATH / "gwf-rcha.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3rcha8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-riv.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3riv8idm.f90"),
DFN_PATH / "gwf-riv.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3riv8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-wel.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3wel8idm.f90"),
DFN_PATH / "gwf-wel.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3wel8idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwt-dis.dfn"),
Path("../../../src/Model/GroundWaterTransport", "gwt1dis1idm.f90"),
DFN_PATH / "gwt-dis.dfn",
SRC_PATH / "Model" / "GroundWaterTransport" / "gwt1dis1idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwt-disu.dfn"),
Path("../../../src/Model/GroundWaterTransport", "gwt1disu1idm.f90"),
DFN_PATH / "gwt-disu.dfn",
SRC_PATH / "Model" / "GroundWaterTransport" / "gwt1disu1idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwt-disv.dfn"),
Path("../../../src/Model/GroundWaterTransport", "gwt1disv1idm.f90"),
DFN_PATH / "gwt-disv.dfn",
SRC_PATH / "Model" / "GroundWaterTransport" / "gwt1disv1idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwt-dsp.dfn"),
Path("../../../src/Model/GroundWaterTransport", "gwt1dsp1idm.f90"),
DFN_PATH / "gwt-dsp.dfn",
SRC_PATH / "Model" / "GroundWaterTransport" / "gwt1dsp1idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwt-cnc.dfn"),
Path("../../../src/Model/GroundWaterTransport", "gwt1cnc1idm.f90"),
DFN_PATH / "gwt-cnc.dfn",
SRC_PATH / "Model" / "GroundWaterTransport" / "gwt1cnc1idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwt-ic.dfn"),
Path("../../../src/Model/GroundWaterTransport", "gwt1ic1idm.f90"),
DFN_PATH / "gwt-ic.dfn",
SRC_PATH / "Model" / "GroundWaterTransport" / "gwt1ic1idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwf-nam.dfn"),
Path("../../../src/Model/GroundWaterFlow", "gwf3idm.f90"),
DFN_PATH / "gwf-nam.dfn",
SRC_PATH / "Model" / "GroundWaterFlow" / "gwf3idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "gwt-nam.dfn"),
Path("../../../src/Model/GroundWaterTransport", "gwt1idm.f90"),
DFN_PATH / "gwt-nam.dfn",
SRC_PATH / "Model" / "GroundWaterTransport" / "gwt1idm.f90",
],
[
Path("../../../doc/mf6io/mf6ivar/dfn", "sim-nam.dfn"),
Path("../../../src", "simnamidm.f90"),
DFN_PATH / "sim-nam.dfn",
SRC_PATH / "simnamidm.f90",
],
]

Expand Down

0 comments on commit 103793f

Please sign in to comment.