Technical Reference =================== General description ------------------- This document describes how MetaSWAP and MODFLOW6 are coupled. It is intended for groundwater modellers, who need to know which variables are exchanged between computational kernels and at which moment. For details of the inner workings of the code, we refer to the docstrings in the code. Below is a flowchart showing the order in which one timestep is iteratively solved and when data is exchanged between MetaSWAP and MODFLOW6. .. image:: ./figures/MF6BMI_coupling.png :align: center Requirements ------------ * Currently only confined flow is supported, similar to a previous implementation of MetaSWAP-MODFLOW coupling. * Both the specific storage and the storage coefficient option of Modflow 6 are supported. * A recharge package (RCH) is required in the Modflow 6 model to facilitate the recharge flux of MetaSWAP. * A well package (WEL) is required in the Modflow 6 to facilitate the extraction of groundwater for MetaSWAP's sprinkling. * The sum of svat areas should not exceed the area of the Modflow cell they are coupled to. * Currently only multiple svats can be coupled to one Modflow cell, and not the other way around. It is not possible to couple multiple Modflow cells to one svat. Data exchanges ============== Modflow to MetaSWAP ------------------- Heads ~~~~~ Modflow sets the heads in MetaSWAP, to be specific the ``hgwmodf`` variable. When multiple svats are coupled to one Modflow cell, each svat is given Modflow's head. When multiple Modflow cells are coupled to one svat, the arithmatic average is taken. MetaSWAP to Modflow ------------------- MetaSWAP provides a recharge, sets the storage, and extracts groundwater from deeper layers for sprinkling (if switched on). Storage ~~~~~~~ MetaSWAP sets the storage in coupled Modflow cells. When multiple svats are coupled to one Modflow cell, storages are summed. Note that, in case the summed area of the svats is less than the Modflow cell area, the total storage of the remaining area is assumed zero. Recharge ~~~~~~~~ Recharge is provided by MetaSWAP to Modflow. MetaSWAP internally stores volumes that should be provided to Modflow, so these are converted to rates by dividing by the timestep length. When multiple svats are coupled to one Modflow cell, recharges rates are summed. Sprinkling ~~~~~~~~~~ Groundwater extraction rates to set sprinkling are computed by MetaSWAP based on irrigation requirements. MetaSWAP internally stores volumes that should be provided to Modflow, so these are converted to rates by dividing by the timestep length. When multiple svats are coupled to one Modflow cell, extraction rates are summed. Files ===== The following files are required to couple the two model codes. These files provide the mappings from MODFLOW indices to the MetaSWAP svats. MetaSWAP requires the file: - ``mod2svat.inp`` Modflow6 requires the files: - ``[filename].rch`` - ``[filename].wel`` (optional) The coupler itself requires the following files: - ``nodenr2svat.dxc`` - ``rchindex2svat.dxc`` - ``wellindex2svat.dxc`` (optional) Below we will describe the format for each file. MetaSWAP -------- mod2svat.inp ~~~~~~~~~~~~ The file format for this file is also described in the `SIMGRO IO manual `__. It is as follows: :: node_nr svat ly ... Were ``node_nr`` is the MODFLOW6 node number (to be specific: the user node number), which which replaces the MODFLOW 2005 CellID. ``svat`` is the MetaSWAP svat number and ``ly`` is the Modflow layer number. Note that the format for this file should be fixed to .. code:: python f"{nodenr:10d} {svat:10d}{ly:2d}" where the number behind the colon indicates the number of characters, padded with whitespace. Note the two whitespaces between ``nodenr`` and ``svat``. Modflow6 -------- [filename].rch ~~~~~~~~~~~~~~ A dummy recharge file, of which the fluxes will be overrided. The location of the recharge cells is used to assign an recharge index by Modflow6. The file format of the .rch file is described `here `__. To specify an uncoupled recharge as well, a second RCH package should be defined. How to define a second stress package is explained `here <#how-to-define-a-second-stress-package-for-modflow6>`__. Please note that in the model name file the `package name `__ should correspond to the package name specified :ref:`in the configuration file `. [filename].wel ~~~~~~~~~~~~~~ A dummy well file, of which the fluxes will be overrided. The location of the wells is used to assign a well index by Modflow6. The file format of the .wel file is described `here `__. To specify uncoupled extractions/injections as well, a second WEL package should be defined. How to define a second stress package is explained `here <#how-to-define-a-second-stress-package-for-modflow6>`__. Please note that the `package name in the model name file `__ should correspond to the package name specified :ref:`in the configuration file `. Coupler ------- nodenr2svat.dxc ~~~~~~~~~~~~~~~ This file takes care of mapping the MODFLOW node numbers to the MetaSWAP svats, which is required for coupling the heads and storages of both kernels, it thus excludes nodes connected where wells are for sprinkling. The file format is as follows: :: node_nr svat ly ... Where ``node_nr`` is the MODFLOW6 node number (to be specific: the user node number), which replaces the MODFLOW 2005 CellID. ``svat`` is the MetaSWAP svat number and ``ly`` is the Modflow layer number. rchindex2svat.dxc ~~~~~~~~~~~~~~~~~ This file takes care of mapping the recharge cells to the MetaSWAP svats. The file format is as follows: :: rch_index svat ly ... Where ``rch_index`` is the MODFLOW6 RCH index number, which equals the row number of the data specified under ``period`` in the ``.rch`` file. ``svat`` is the MetaSWAP svat number and ``ly`` is the Modflow layer number. wellindex2svat.dxc ~~~~~~~~~~~~~~~~~~ This file takes care of mapping MODFLOW wells to the MetaSWAP svats for sprinkling. The file format is as follows: :: well_index svat ly ... Where ``well_index`` is the MODFLOW6 WEL index number, which equals the row number of the data specified under ``period`` in the ``.wel`` file. ``svat`` is the MetaSWAP svat number and ``ly`` is the Modflow layer number. How to define a second stress package for Modflow6 -------------------------------------------------- A second stress package (in our case named ``WELL2``) can be defined in the flow model's ``.nam`` file (GWF_1.nam). :: begin options end options begin packages dis6 GWF_1/dis.dis chd6 GWF_1/chd.chd npf6 GWF_1/npf.npf ic6 GWF_1/ic.ic wel6 GWF_1/wel.wel WELLS_MSW wel6 GWF_1/wel2.wel WELL2 sto6 GWF_1/sto.sto oc6 GWF_1/oc.oc end packages The argument values ``WELLS_MSW`` and ``WELL2``, specify the packagenames to be printed in the water budget .lst file. :ref:`In the configuration file ` you have to specify which packagename is used for the coupling.