bdestombe / python-flopy-parser

Convert MODFLOW input files to Python
https://github.com/bdestombe/python-flopy-parser
MIT License
10 stars 2 forks source link

Bringing this into flopy #3

Open wpbonelli opened 1 year ago

wpbonelli commented 1 year ago

Hi @bdestombe, in recent development talks there is some interest in a flopy facility to convert MODFLOW/etc input files to equivalent Python. One motivation, besides those you list in the readme, is programmatic access to example models. A first step in this direction is to define the models in Python, to avoid the need to package input files with flopy.

This project seems like a great starting point. Would it be OK to build on your work here? The idea being to generalize it and add support for MF6.

If you'd like to contribute that would be very welcome, but certainly no obligation/expectation. In any case, if this does make it into flopy, the authors/citation could be updated to reflect your efforts here. Thanks in advance.

@langevin-usgs

bdestombe commented 1 year ago

Hi @wpbonelli, sounds like a great plan and I am happy to help! I do see it as something useful, however I didn't get into supporting the mf6 ecosystem. It makes me very happy that this work would make others happy.

bdestombe commented 1 year ago

The additional motivation you are describing makes perfect sense, however I do see it as the last steps of the implementation as it is important that every step along the way can be tested. I would start with creating a representation string of all the various parameter types (lists, arrays, mflist, recarrays etc. ), because these string representations can be tested independently.

Second step would be to gather parameter names, parameter values, default values, and parameter descriptions by inspecting the package object, after which a representation string of a package can be created. This step can be tested by ensuring that the input file written by the package object is the same as input file written by evaluating the representation string.

The final step would be load full models and ensure that models, the simulation packages, and the model packages all work nicely together. Again this can be tested by ensuring that the input files that were loaded before are the same as the ones created by evaluating the created script.