Skip to content

Commit

Permalink
feat(GWE): Introduce Groundwater Energy Transport
Browse files Browse the repository at this point in the history
  • Loading branch information
emorway-usgs committed Dec 8, 2023
1 parent 5b12e3d commit 7168c06
Show file tree
Hide file tree
Showing 163 changed files with 14,635 additions and 424 deletions.
500 changes: 500 additions & 0 deletions autotest/test_gwe_dsp.py

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions doc/Common/gwe-cntobs.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CNT & cnt & cellid or boundname & -- & Energy flow between the groundwater system and a constant-temperature boundary or a group of cells with constant-temperature boundaries.
1 change: 1 addition & 0 deletions doc/Common/gwe-esrobs.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ESR & esr & cellid or boundname & -- & Energy source loading rate between the groundwater system and a energy source loading boundary or a group of boundaries.
1 change: 1 addition & 0 deletions doc/Common/gwe-gweobs.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
GWE-GWE & flow-ja-face & exchange number or boundname & -- & Energy flow between model 1 and model 2 for a specified exchange (which is the consecutive exchange number listed in the EXCHANGEDATA block), or the sum of these exchange flows by boundname if boundname is specified.
25 changes: 25 additions & 0 deletions doc/Common/gwe-lkeobs.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
% general APT observations
LKE & temperature & ifno or boundname & -- & Lake temperature. If boundname is specified, boundname must be unique for each lake. \\
LKE & flow-ja-face & ifno or boundname & ifno or -- & Energy flow between two lakes connected by an outlet. If more than one outlet is used to connect the same two lakes, then the energy flow for only the first outlet can be observed. If a boundname is specified for ID1, then the result is the total energy flow for all outlets for a lake. If a boundname is specified for ID1 then ID2 is not used.\\
LKE & storage & ifno or boundname & -- & Simulated energy storage flow rate for a lake or group of lakes. \\
LKE & constant & ifno or boundname & -- & Simulated energy constant-flow rate for a lake or group of lakes. \\
LKE & from-mvr & ifno or boundname & -- & Simulated energy inflow into a lake or group of lakes from the MVE package. Energy inflow is calculated as the product of provider temperature and the mover flow rate. \\
LKE & to-mvr & outletno or boundname & -- & Energy outflow from a lake outlet, a lake, or a group of lakes that is available for the MVR package. If boundname is not specified for ID, then the outflow available for the MVR package from a specific lake outlet is observed. In this case, ID is the outlet number, which must be between 1 and NOUTLETS. \\
LKE & lkt & ifno or boundname & \texttt{iconn} or -- & Energy flow rate for a lake or group of lakes and its aquifer connection(s). If boundname is not specified for ID, then the simulated lake-aquifer flow rate at a specific lake connection is observed. In this case, ID2 must be specified and is the connection number \texttt{iconn} for lake \texttt{ifno}. \\

%observations specific to the lake package
% rainfall evaporation runoff ext-inflow withdrawal outflow
LKE & rainfall & ifno or boundname & -- & Rainfall rate applied to a lake or group of lakes multiplied by the rainfall temperature. \\
LKE & evaporation & ifno or boundname & -- & Simulated evaporation rate from a lake or group of lakes multiplied by latent heat of vaporization, heat capcity of the simulated fluid, and the density of the simulated fluid. \\
LKE & runoff & ifno or boundname & -- & Runoff rate applied to a lake or group of lakes multiplied by the runoff temperature. \\
LKE & ext-inflow & ifno or boundname & -- & Energy inflow into a lake or group of lakes calculated as the external inflow rate multiplied by the inflow temperature. \\
LKE & withdrawal & ifno or boundname & -- & Specified withdrawal rate from a lake or group of lakes multiplied by the simulated lake temperature. \\
LKE & ext-outflow & ifno or boundname & -- & External outflow from a lake or a group of lakes, through their outlets, to an external boundary. If the water mover is active, the reported ext-outflow value plus the rate to mover is equal to the total outlet outflow.

%LKE & outlet-inflow & ifno or boundname & -- & Simulated inflow from upstream lake outlets into a lake or group of lakes. \\
%LKE & inflow & ifno or boundname & -- & Sum of specified inflow and simulated inflow from upstream lake outlets into a lake or group of lakes. \\
%LKE & outlet & outletno or boundname & -- & Simulate outlet flow rate from a lake outlet, a lake, or a group of lakes. If boundname is not specified for ID, then the flow from a specific lake outlet is observed. In this case, ID is the outlet number outletno. \\
%LKE & volume & ifno or boundname & -- & Simulated lake volume or group of lakes. \\
%LKE & surface-area & ifno or boundname & -- & Simulated surface area for a lake or group of lakes. \\
%LKE & wetted-area & ifno or boundname & \texttt{iconn} or -- & Simulated wetted-area for a lake or group of lakes and its aquifer connection(s). If boundname is not specified for ID, then the wetted area of a specific lake connection is observed. In this case, ID2 must be specified and is the connection number \texttt{iconn}. \\
%LKE & conductance & ifno or boundname & \texttt{iconn} or -- & Calculated conductance for a lake or group of lakes and its aquifer connection(s). If boundname is not specified for ID, then the calculated conductance of a specific lake connection is observed. In this case, ID2 must be specified and is the connection number \texttt{iconn}.
13 changes: 13 additions & 0 deletions doc/Common/gwe-mweobs.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
% general APT observations
MWE & temperature & ifno or boundname & -- & Well temperature. If boundname is specified, boundname must be unique for each well. \\
%flowjaface not included
MWE & storage & ifno or boundname & -- & Simulated energy storage flow rate for a well or group of wells. \\
MWE & constant & ifno or boundname & -- & Simulated energy constant-flow rate for a well or group of wells. \\
MWE & from-mvr & ifno or boundname & -- & Simulated energy inflow into a well or group of wells from the MVE package. Energy inflow is calculated as the product of provider temperature and the mover flow rate. \\
MWE & mwt & ifno or boundname & \texttt{iconn} or -- & Energy flow rate for a well or group of wells and its aquifer connection(s). If boundname is not specified for ID, then the simulated well-aquifer flow rate at a specific well connection is observed. In this case, ID2 must be specified and is the connection number \texttt{iconn} for well \texttt{ifno}. \\

% observations specific to the mwt package
MWE & rate & ifno or boundname & -- & Simulated energy flow rate for a well or group of wells. \\
MWE & fw-rate & ifno or boundname & -- & Simulated energy flow rate for a flowing well or group of flowing wells. \\
MWE & rate-to-mvr & well or boundname & -- & Simulated energy flow rate that is sent to the MVE Package for a well or group of wells.\\
MWE & fw-rate-to-mvr & well or boundname & -- & Simulated energy flow rate that is sent to the MVE Package from a flowing well or group of flowing wells. \\
2 changes: 2 additions & 0 deletions doc/Common/gwe-obs.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
GWE & temperature & cellid & -- & Temperature at a specified cell. \\
GWE & flow-ja-face & cellid & cellid & Energy flow in dimensions of watts between two adjacent cells. The energy flow rate includes the contributions from both advection (convection) and dispersion (conduction) if those packages are active
94 changes: 94 additions & 0 deletions doc/Common/gwe-obstypetable.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@

\begingroup
\makeatletter
\ifx\LT@ii\@undefined\else
\def\LT@entry#1#2{\noexpand\LT@entry{-#1}{#2}}
\xdef\LT@i{\LT@ii}
\fi
\endgroup

% model observations
\begin{longtable}{p{2cm} p{2.75cm} p{2cm} p{1.25cm} p{7cm}}
\caption{Available observation types for the GWE Model} \tabularnewline

\hline
\hline
\textbf{Model} & \textbf{Observation types} & \textbf{ID} & \textbf{ID2} & \textbf{Description} \\
\hline
\endfirsthead

\captionsetup{textformat=simple}
\caption*{\textbf{Table \arabic{table}.}{\quad}List of symbols used in this report.---Continued} \\

\hline
\hline
\textbf{Model} & \textbf{Observation types} & \textbf{ID} & \textbf{ID2} & \textbf{Description} \\
\hline
\endhead

\hline
\endfoot

\input{../Common/gwe-obs.tex}
\end{longtable}
\addtocounter{table}{-1}

% stress packages
\begin{longtable}{p{2cm} p{2.75cm} p{2cm} p{1.25cm} p{7cm}}
\hline
\hline
\textbf{Stress Package} & \textbf{Observation type} & \textbf{ID} & \textbf{ID2} & \textbf{Description} \\
\hline
\endfirsthead

\captionsetup{textformat=simple}
\caption*{\textbf{Table \arabic{table}.}{\quad}Available GWE observation types.---Continued} \\

\hline
\hline
\textbf{Stress Package} & \textbf{Observation types} & \textbf{ID} & \textbf{ID2} & \textbf{Description} \\
\hline
\endhead

\hline
\endfoot

\input{../Common/gwe-cntobs.tex} \\
\hline
% \input{../Common/gwe-esrobs.tex} \\
% \hline
% \input{../Common/gwe-sfeobs.tex} \\
% \hline
% \input{../Common/gwe-lkeobs.tex} \\
% \hline
% \input{../Common/gwe-mweobs.tex} \\
\hline
\input{../Common/gwe-uzeobs.tex}
\label{table:gwe-obstypetable}
\end{longtable}
\addtocounter{table}{-1}

% exchange
\begin{longtable}{p{2cm} p{2.75cm} p{2cm} p{1.25cm} p{7cm}}
\hline
\hline
\textbf{Exchange} & \textbf{Observation type} & \textbf{ID} & \textbf{ID2} & \textbf{Description} \\
\hline
\endfirsthead

\captionsetup{textformat=simple}
\caption*{\textbf{Table \arabic{table}.}{\quad}Available GWE observation types.---Continued} \\

\hline
\hline
\textbf{Exchange} & \textbf{Observation types} & \textbf{ID} & \textbf{ID2} & \textbf{Description} \\
\hline
\endhead

\hline
\endfoot

\input{../Common/gwe-gweobs.tex}
\end{longtable}

\normalsize
16 changes: 16 additions & 0 deletions doc/Common/gwe-sfeobs.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
% general APT observations
SFE & temperature & ifno or boundname & -- & Reach temperature. If boundname is specified, boundname must be unique for each reach. \\
SFE & flow-ja-face & ifno or boundname & ifno or -- & Energy flow between two reaches. If a boundname is specified for ID1, then the result is the total energy flow for all reaches. If a boundname is specified for ID1 then ID2 is not used.\\
SFE & storage & ifno or boundname & -- & Simulated energy storage flow rate for a reach or group of reaches. \\
SFE & constant & ifno or boundname & -- & Simulated energy constant-flow rate for a reach or group of reaches. \\
SFE & from-mvr & ifno or boundname & -- & Simulated energy inflow into a reach or group of reaches from the MVE package. Energy inflow is calculated as the product of provider temperature and the mover flow rate. \\
SFE & to-mvr & ifno or boundname & -- & Energy outflow from a reach, or a group of reaches that is available for the MVR package. If boundname is not specified for ID, then the outflow available for the MVR package from a specific reach is observed. \\
SFE & sfe & ifno or boundname & -- & Energy flow rate for a reach or group of reaches and its aquifer connection(s). \\

%observations specific to the stream transport package
% rainfall evaporation runoff ext-inflow withdrawal outflow
SFE & rainfall & ifno or boundname & -- & Rainfall rate applied to a reach or group of reaches multiplied by the rainfall temperature. \\
SFE & evaporation & ifno or boundname & -- & Simulated evaporation rate from a reach or group of reaches multiplied by the latent heat of vaporization, heat capacity of the simulated fluid, and the density of the simulated fluid. \\
SFE & runoff & ifno or boundname & -- & Runoff rate applied to a reach or group of reaches multiplied by the runoff temperature. \\
SFE & ext-inflow & ifno or boundname & -- & Energy inflow into a reach or group of reaches calculated as the external inflow rate multiplied by the inflow temperature. \\
SFE & ext-outflow & ifno or boundname & -- & External outflow from a reach or group of reaches to an external boundary. If boundname is not specified for ID, then the external outflow from a specific reach is observed. In this case, ID is the reach ifno.
14 changes: 14 additions & 0 deletions doc/Common/gwe-uzeobs.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
% general APT observations
UZE & temperature & ifno or boundname & -- & uze cell temperature. If boundname is specified, boundname must be unique for each uze cell. \\
UZE & flow-ja-face & ifno or boundname & ifno or -- & Energy flow between two uze cells. If a boundname is specified for ID1, then the result is the total energy flow for all uze cells. If a boundname is specified for ID1 then ID2 is not used.\\
UZE & storage & ifno or boundname & -- & Simulated energy storage flow rate for a uze cell or group of uze cells. \\
UZE & constant & ifno or boundname & -- & Simulated energy constant-flow rate for a uze cell or a group of uze cells. \\
UZE & from-mvr & ifno or boundname & -- & Simulated energy inflow into a uze cell or group of uze cells from the MVE package. Energy inflow is calculated as the product of provider temperature and the mover flow rate. \\
UZE & uze & ifno or boundname & -- & Energy flow rate for a uze cell or group of uze cells and its aquifer connection(s). \\

%observations specific to the uze package
% infiltration rej-inf uzet rej-inf-to-mvr
UZE & infiltration & ifno or boundname & -- & Infiltration rate applied to a uze cell or group of uze cells multiplied by the infiltration temperature. \\
UZE & rej-inf & ifno or boundname & -- & Rejected infiltration rate applied to a uze cell or group of uze cells multiplied by the infiltration temperature. \\
UZE & uzet & ifno or boundname & -- & Unsaturated zone evapotranspiration rate applied to a uze cell or group of uze cells multiplied by the latent heat of vaporization, heat capacity of the simulated fluid, and density of the simulated flued. \\
UZE & rej-inf-to-mvr & ifno or boundname & -- & Rejected infiltration rate applied to a uze cell or group of uze cells multiplied by the infiltration temperature that is sent to the mover package. \\
22 changes: 22 additions & 0 deletions doc/MODFLOW6References.bib
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,28 @@
@article{mazheng2010,
author = {Ma, Rui and Zheng, Chunmiao},
title = {Effects of Density and Viscosity in Modeling Heat as a Groundwater Tracer},
journal = {Groundwater},
year = {2010},
volume = {48},
number = {3},
pages = {380--389},
doi = {10.1111/j.1745-6584.2009.00660.x},
}

@article{hechtmendez,
author = {Hecht-Mendez, J. and Molina-Giraldo, N. and Blum, P. and Bayer, P.},
title = {Evaluating MT3DMS for Heat Transport Simulation of Closed Geothermal Systems},
journal = {Groundwater},
year = {2010},
volume = {48},
number = {5},
pages = {741--756},
doi = {10.1111/j.1745-6584.2010.00678.x},
}

@article{morway2021,
author = {Morway, Eric D. and Langevin, Christian D. and Hughes, Joseph D.},
title = {Use of the {MODFLOW 6} Water Mover Package to Represent Natural and Managed Hydrologic Connections},
Expand Down
5 changes: 5 additions & 0 deletions doc/mf6io/body.tex
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@
\SECTION{Groundwater Transport (GWT) Model Input}
\input{gwt/gwt.tex}

%GWE Model Input Instructions
\newpage
\SECTION{Groundwater Energy Transport (GWE) Model Input}
\input{gwe/gwe.tex}

%Sparse Matrix Solution (IMS)
\newpage
\SECTION{Iterative Model Solution}
Expand Down
16 changes: 16 additions & 0 deletions doc/mf6io/gwe/adv.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
Advection (ADV) Package information is read from the file that is specified by ``ADV6'' as the file type. Only one ADV Package can be specified for a GWE model.

\vspace{5mm}
\subsubsection{Structure of Blocks}
\lstinputlisting[style=blockdefinition]{./mf6ivar/tex/gwe-adv-options.dat}

\vspace{5mm}
\subsubsection{Explanation of Variables}
\begin{description}
\input{./mf6ivar/tex/gwe-adv-desc.tex}
\end{description}

\vspace{5mm}
\subsubsection{Example Input File}
\lstinputlisting[style=inputfile]{./mf6ivar/examples/gwe-adv-example.dat}

47 changes: 47 additions & 0 deletions doc/mf6io/gwe/cnt.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
Constant Temperature (CNT) Package information is read from the file that is specified by ``CNT6'' as the file type. Any number of CNT Packages can be specified for a single GWE model, but the same cell cannot be designated as a constant temperature by more than one CNT entry.

\vspace{5mm}
\subsubsection{Structure of Blocks}
\vspace{5mm}

\noindent \textit{FOR EACH SIMULATION}
\lstinputlisting[style=blockdefinition]{./mf6ivar/tex/gwe-cnt-options.dat}
\lstinputlisting[style=blockdefinition]{./mf6ivar/tex/gwe-cnt-dimensions.dat}
\vspace{5mm}
\noindent \textit{FOR ANY STRESS PERIOD}
\lstinputlisting[style=blockdefinition]{./mf6ivar/tex/gwe-cnt-period.dat}
\packageperioddescription

\vspace{5mm}
\subsubsection{Explanation of Variables}
\begin{description}
\input{./mf6ivar/tex/gwe-cnt-desc.tex}
\end{description}

\vspace{5mm}
\subsubsection{Example Input File}
\lstinputlisting[style=inputfile]{./mf6ivar/examples/gwe-cnt-example.dat}

\vspace{5mm}
\subsubsection{Available observation types}
CNT Package observations are limited to the simulated constant temperature energy flow rate (\texttt{cnt}). The data required for the CNT Package observation type is defined in table~\ref{table:gwe-cntobstype}. Negative and positive values for an observation represent a loss from and gain to the GWE model, respectively.

\begin{longtable}{p{2cm} p{2.75cm} p{2cm} p{1.25cm} p{7cm}}
\caption{Available CNT Package observation types} \tabularnewline

\hline
\hline
\textbf{Model} & \textbf{Observation type} & \textbf{ID} & \textbf{ID2} & \textbf{Description} \\
\hline
\endhead

\hline
\endfoot

\input{../Common/gwe-cntobs.tex}
\label{table:gwe-cntobstype}
\end{longtable}

\vspace{5mm}
\subsubsection{Example Observation Input File}
\lstinputlisting[style=inputfile]{./mf6ivar/examples/gwe-cnt-example-obs.dat}
17 changes: 17 additions & 0 deletions doc/mf6io/gwe/dsp.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Dispersion (DSP) Package information is read from the file that is specified by ``DSP6'' as the file type. Only one DSP Package can be specified for a GWE model. The DSP Package is based on the mathematical formulation presented for the XT3D option of the NPF Package available to represent full three-dimensional anisotropy in groundwater flow. XT3D can be computationally expensive and can be turned off to use a simplified and approximate form of the dispersion equations. For most problems, however, XT3D will be required to accurately represent dispersion.

\vspace{5mm}
\subsubsection{Structure of Blocks}
\lstinputlisting[style=blockdefinition]{./mf6ivar/tex/gwe-dsp-options.dat}
\lstinputlisting[style=blockdefinition]{./mf6ivar/tex/gwe-dsp-griddata.dat}

\vspace{5mm}
\subsubsection{Explanation of Variables}
\begin{description}
\input{./mf6ivar/tex/gwe-dsp-desc.tex}
\end{description}

\vspace{5mm}
\subsubsection{Example Input File}
\lstinputlisting[style=inputfile]{./mf6ivar/examples/gwe-dsp-example.dat}

Loading

0 comments on commit 7168c06

Please sign in to comment.