diff --git a/make/makefile b/make/makefile
index c61dd6fa2c7..137466623fd 100644
--- a/make/makefile
+++ b/make/makefile
@@ -225,6 +225,7 @@ $(OBJDIR)/CellWithNbrs.o \
$(OBJDIR)/NumericalExchange.o \
$(OBJDIR)/tsp1ssm1.o \
$(OBJDIR)/tsp1oc1.o \
+$(OBJDIR)/tsp1mvt1.o \
$(OBJDIR)/tsp1ic1.o \
$(OBJDIR)/tsp1adv1.o \
$(OBJDIR)/gwf3disv8.o \
@@ -255,7 +256,6 @@ $(OBJDIR)/gwt1src1.o \
$(OBJDIR)/gwt1sft1.o \
$(OBJDIR)/gwt1obs1.o \
$(OBJDIR)/gwt1mwt1.o \
-$(OBJDIR)/gwt1mvt1.o \
$(OBJDIR)/gwt1lkt1.o \
$(OBJDIR)/gwt1ist1.o \
$(OBJDIR)/gwt1dsp1.o \
diff --git a/msvs/mf6core.vfproj b/msvs/mf6core.vfproj
index 624e667eb4e..a70e28355f0 100644
--- a/msvs/mf6core.vfproj
+++ b/msvs/mf6core.vfproj
@@ -174,7 +174,6 @@
-
@@ -207,6 +206,7 @@
+
diff --git a/src/Exchange/GwtGwtExchange.f90 b/src/Exchange/GwtGwtExchange.f90
index faf7d1345ba..bf93edda837 100644
--- a/src/Exchange/GwtGwtExchange.f90
+++ b/src/Exchange/GwtGwtExchange.f90
@@ -22,7 +22,7 @@ module GwtGwtExchangeModule
use VirtualModelModule, only: get_virtual_model
use DisConnExchangeModule, only: DisConnExchangeType
use GwtModule, only: GwtModelType
- use GwtMvtModule, only: GwtMvtType
+ use TspMvtModule, only: TspMvtType
use ObserveModule, only: ObserveType
use ObsModule, only: ObsType
use SimModule, only: count_errors, store_error, &
@@ -66,7 +66,7 @@ module GwtGwtExchangeModule
!
! -- Mover transport package
integer(I4B), pointer :: inmvt => null() !< unit number for mover transport (0 if off)
- type(GwtMvtType), pointer :: mvt => null() !< water mover object
+ type(TspMvtType), pointer :: mvt => null() !< water mover object
!
! -- Observation package
integer(I4B), pointer :: inobs => null() !< unit number for GWT-GWT observations
@@ -937,7 +937,7 @@ end function parse_option
!<
subroutine read_mvt(this, iout)
! -- modules
- use GwtMvtModule, only: mvt_cr
+ use TspMvtModule, only: mvt_cr
! -- dummy
class(GwtExchangeType) :: this !< GwtExchangeType
integer(I4B), intent(in) :: iout
@@ -947,6 +947,7 @@ subroutine read_mvt(this, iout)
! for gwtmodel1 so that a call to save flows has an associated dis
! object.
call mvt_cr(this%mvt, this%name, this%inmvt, iout, this%gwtmodel1%fmi, &
+ this%gwtmodel1%eqnsclfac, &
gwfmodelname1=this%gwfmodelname1, &
gwfmodelname2=this%gwfmodelname2, &
fmi2=this%gwtmodel2%fmi)
diff --git a/src/Model/GroundWaterTransport/gwt1.f90 b/src/Model/GroundWaterTransport/gwt1.f90
index 5c41bb23911..b1cc864d250 100644
--- a/src/Model/GroundWaterTransport/gwt1.f90
+++ b/src/Model/GroundWaterTransport/gwt1.f90
@@ -16,8 +16,6 @@ module GwtModule
use BaseModelModule, only: BaseModelType
use BndModule, only: BndType, AddBndToList, GetBndFromList
use GwtDspModule, only: GwtDspType
- use TspSsmModule, only: TspSsmType
- use GwtMvtModule, only: GwtMvtType
use GwtMstModule, only: GwtMstType
use GwtObsModule, only: GwtObsType
use BudgetModule, only: BudgetType
@@ -37,9 +35,7 @@ module GwtModule
type(GwtMstType), pointer :: mst => null() ! mass storage and transfer package
type(GwtDspType), pointer :: dsp => null() ! dispersion package
- type(GwtMvtType), pointer :: mvt => null() ! mover transport package
type(GwtObsType), pointer :: obs => null() ! observation package
- integer(I4B), pointer :: inmvt => null() ! unit number MVT
integer(I4B), pointer :: inmst => null() ! unit number MST
integer(I4B), pointer :: indsp => null() ! DSP enabled flag
integer(I4B), pointer :: inobs => null() ! unit number OBS
@@ -877,7 +873,6 @@ subroutine gwt_da(this)
! -- Scalars
call mem_deallocate(this%indsp)
call mem_deallocate(this%inmst)
- call mem_deallocate(this%inmvt)
call mem_deallocate(this%inobs)
!
! -- Parent class members
@@ -962,12 +957,10 @@ subroutine allocate_scalars(this, modelname)
call this%allocate_tsp_scalars(modelname)
!
! -- allocate members that are part of model class
- call mem_allocate(this%inmvt, 'INMVT', this%memoryPath)
call mem_allocate(this%inmst, 'INMST', this%memoryPath)
call mem_allocate(this%indsp, 'INDSP', this%memoryPath)
call mem_allocate(this%inobs, 'INOBS', this%memoryPath)
!
- this%inmvt = 0
this%inmst = 0
this%indsp = 0
this%inobs = 0
@@ -1138,7 +1131,6 @@ subroutine create_gwt_packages(this, indis)
use SimVariablesModule, only: idm_context
use GwtMstModule, only: mst_cr
use GwtDspModule, only: dsp_cr
- use GwtMvtModule, only: mvt_cr
use GwtObsModule, only: gwt_obs_cr
! -- dummy
class(GwtModelType) :: this
@@ -1178,10 +1170,8 @@ subroutine create_gwt_packages(this, indis)
mempath = mempaths(n)
inunit => inunits(n)
!
- ! -- create dis package first as it is a prerequisite for other packages
+ ! -- create dis package as it is a prerequisite for other packages
select case (pkgtype)
- case ('MVT6')
- this%inmvt = inunit
case ('MST6')
this%inmst = inunit
case ('DSP6')
@@ -1204,7 +1194,6 @@ subroutine create_gwt_packages(this, indis)
call mst_cr(this%mst, this%name, this%inmst, this%iout, this%fmi)
call dsp_cr(this%dsp, this%name, mempathdsp, this%indsp, this%iout, &
this%fmi)
- call mvt_cr(this%mvt, this%name, this%inmvt, this%iout, this%fmi)
call gwt_obs_cr(this%obs, this%inobs)
!
! -- Check to make sure that required ftype's have been specified
diff --git a/src/Model/TransportModel/tsp1.f90 b/src/Model/TransportModel/tsp1.f90
index 1a3be2973cb..50547148205 100644
--- a/src/Model/TransportModel/tsp1.f90
+++ b/src/Model/TransportModel/tsp1.f90
@@ -15,6 +15,7 @@ module TransportModelModule
use TspFmiModule, only: TspFmiType
use TspAdvModule, only: TspAdvType
use TspSsmModule, only: TspSsmType
+ use TspMvtModule, only: TspMvtType
use TspOcModule, only: TspOcType
use BudgetModule, only: BudgetType
use MatrixBaseModule
@@ -30,12 +31,14 @@ module TransportModelModule
type(TspFmiType), pointer :: fmi => null() ! flow model interface
type(TspAdvType), pointer :: adv => null() !< advection package
type(TspIcType), pointer :: ic => null() !< initial conditions package
+ type(TspMvtType), pointer :: mvt => null() !< mover transport package
type(TspOcType), pointer :: oc => null() !< output control package
type(TspSsmType), pointer :: ssm => null() !< source sink mixing package
type(BudgetType), pointer :: budget => null() !< budget object
integer(I4B), pointer :: infmi => null() ! unit number FMI
integer(I4B), pointer :: inadv => null() !< unit number ADV
integer(I4B), pointer :: inic => null() !< unit number IC
+ integer(I4B), pointer :: inmvt => null() !< unit number MVT
integer(I4B), pointer :: inoc => null() !< unit number OC
integer(I4B), pointer :: inssm => null() !< unit number SSM
@@ -135,7 +138,6 @@ subroutine tsp_ac(this, sparse)
class(TransportModelType) :: this
type(sparsematrix), intent(inout) :: sparse
! -- local
-! ------------------------------------------------------------------------------
!
! -- Return
return
@@ -152,7 +154,6 @@ subroutine tsp_mc(this, matrix_sln)
class(TransportModelType) :: this
class(MatrixBaseType), pointer :: matrix_sln !< global system matrix
! -- local
-! ------------------------------------------------------------------------------
!
! -- Return
return
@@ -167,7 +168,6 @@ end subroutine tsp_mc
subroutine tsp_ar(this)
! -- dummy variables
class(TransportModelType) :: this
-! ------------------------------------------------------------------------------
!
! -- Return
return
@@ -181,7 +181,6 @@ end subroutine tsp_ar
subroutine tsp_rp(this)
! -- dummy variables
class(TransportModelType) :: this
-! ------------------------------------------------------------------------------
!
! -- Return
return
@@ -195,7 +194,6 @@ end subroutine tsp_rp
subroutine tsp_ad(this)
! -- dummy variables
class(TransportModelType) :: this
-! ------------------------------------------------------------------------------
!
! -- Return
return
@@ -212,7 +210,6 @@ subroutine tsp_fc(this, kiter, matrix_sln, inwtflag)
integer(I4B), intent(in) :: kiter
class(MatrixBaseType), pointer :: matrix_sln
integer(I4B), intent(in) :: inwtflag
-! ------------------------------------------------------------------------------
!
! -- Return
return
@@ -234,7 +231,6 @@ subroutine tsp_cc(this, innertot, kiter, iend, icnvgmod, cpak, ipak, dpak)
integer(I4B), intent(inout) :: ipak
real(DP), intent(inout) :: dpak
! -- local
-! ------------------------------------------------------------------------------
!
! -- Return
return
@@ -251,7 +247,6 @@ subroutine tsp_cq(this, icnvg, isuppress_output)
integer(I4B), intent(in) :: icnvg
integer(I4B), intent(in) :: isuppress_output
! -- local
-! ------------------------------------------------------------------------------
!
! -- Return
return
@@ -267,7 +262,6 @@ subroutine tsp_bd(this, icnvg, isuppress_output)
class(TransportModelType) :: this
integer(I4B), intent(in) :: icnvg
integer(I4B), intent(in) :: isuppress_output
-! ------------------------------------------------------------------------------
!
! -- Return
return
@@ -283,7 +277,6 @@ subroutine allocate_tsp_scalars(this, modelname)
! -- dummy
class(TransportModelType) :: this
character(len=*), intent(in) :: modelname
-! ------------------------------------------------------------------------------
!
! -- allocate members from (grand)parent class
call this%NumericalModelType%allocate_scalars(modelname)
@@ -291,6 +284,7 @@ subroutine allocate_tsp_scalars(this, modelname)
! -- allocate members that are part of model class
call mem_allocate(this%inic, 'INIC', this%memoryPath)
call mem_allocate(this%infmi, 'INFMI', this%memoryPath)
+ call mem_allocate(this%inmvt, 'INMVT', this%memoryPath)
call mem_allocate(this%inadv, 'INADV', this%memoryPath)
call mem_allocate(this%inssm, 'INSSM', this%memoryPath)
call mem_allocate(this%inoc, 'INOC ', this%memoryPath)
@@ -298,6 +292,7 @@ subroutine allocate_tsp_scalars(this, modelname)
!
this%inic = 0
this%infmi = 0
+ this%inmvt = 0
this%inadv = 0
this%inssm = 0
this%inoc = 0
@@ -352,6 +347,7 @@ subroutine tsp_da(this)
call mem_deallocate(this%infmi)
call mem_deallocate(this%inadv)
call mem_deallocate(this%inssm)
+ call mem_deallocate(this%inmvt)
call mem_deallocate(this%inoc)
call mem_deallocate(this%eqnsclfac)
!
@@ -509,6 +505,7 @@ subroutine create_tsp_packages(this, indis)
use TspFmiModule, only: fmi_cr
use TspAdvModule, only: adv_cr
use TspSsmModule, only: ssm_cr
+ use TspMvtModule, only: mvt_cr
use TspOcModule, only: oc_cr
! -- dummy
class(TransportModelType) :: this
@@ -564,6 +561,8 @@ subroutine create_tsp_packages(this, indis)
this%inic = inunit
case ('FMI6')
this%infmi = inunit
+ case ('MVT6')
+ this%inmvt = inunit
case ('ADV6')
this%inadv = inunit
case ('SSM6')
@@ -582,6 +581,8 @@ subroutine create_tsp_packages(this, indis)
this%eqnsclfac)
call ssm_cr(this%ssm, this%name, this%inssm, this%iout, this%fmi, &
this%eqnsclfac, this%depvartype)
+ call mvt_cr(this%mvt, this%name, this%inmvt, this%iout, this%fmi, &
+ this%eqnsclfac)
call oc_cr(this%oc, this%name, this%inoc, this%iout)
!
diff --git a/src/Model/GroundWaterTransport/gwt1mvt1.f90 b/src/Model/TransportModel/tsp1mvt1.f90
similarity index 79%
rename from src/Model/GroundWaterTransport/gwt1mvt1.f90
rename to src/Model/TransportModel/tsp1mvt1.f90
index 1f045772acc..a0b1530dc80 100644
--- a/src/Model/GroundWaterTransport/gwt1mvt1.f90
+++ b/src/Model/TransportModel/tsp1mvt1.f90
@@ -2,7 +2,7 @@
! -- This module is responsible for sending mass from providers into
! -- receiver qmfrommvr arrays and writing a mover transport budget
-module GwtMvtModule
+module TspMvtModule
use KindModule, only: DP, I4B
use ConstantsModule, only: LINELENGTH, MAXCHARLEN, DZERO, LENPAKLOC, &
@@ -19,15 +19,16 @@ module GwtMvtModule
implicit none
private
- public :: GwtMvtType
+ public :: TspMvtType
public :: mvt_cr
- type, extends(NumericalPackageType) :: GwtMvtType
+ type, extends(NumericalPackageType) :: TspMvtType
character(len=LENMODELNAME) :: gwfmodelname1 = '' !< name of model 1
character(len=LENMODELNAME) :: gwfmodelname2 = '' !< name of model 2 (set to modelname 1 for single model MVT)
integer(I4B), pointer :: maxpackages !< max number of packages
integer(I4B), pointer :: ibudgetout => null() !< unit number for budget output file
integer(I4B), pointer :: ibudcsv => null() !< unit number for csv budget output file
+ real(DP), pointer :: eqnsclfac => null() !< governing equation scale factor; =1. for solute; =rhow*cpw for energy
type(TspFmiType), pointer :: fmi1 => null() !< pointer to fmi object for model 1
type(TspFmiType), pointer :: fmi2 => null() !< pointer to fmi object for model 2 (set to fmi1 for single model)
type(BudgetType), pointer :: budget => null() !< mover transport budget object (used to write balance table)
@@ -58,24 +59,21 @@ module GwtMvtModule
procedure :: set_fmi_pr_rc
procedure, private :: mvt_setup_outputtab
procedure, private :: mvt_print_outputtab
- end type GwtMvtType
+ end type TspMvtType
contains
- subroutine mvt_cr(mvt, name_model, inunit, iout, fmi1, gwfmodelname1, &
- gwfmodelname2, fmi2)
-! ******************************************************************************
-! mvt_cr -- Create a new initial conditions object
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
+ !> @brief Create a new mover transport object
+ !<
+ subroutine mvt_cr(mvt, name_model, inunit, iout, fmi1, eqnsclfac, &
+ gwfmodelname1, gwfmodelname2, fmi2)
! -- dummy
- type(GwtMvtType), pointer :: mvt
+ type(TspMvtType), pointer :: mvt
character(len=*), intent(in) :: name_model
integer(I4B), intent(in) :: inunit
integer(I4B), intent(in) :: iout
type(TspFmiType), intent(in), target :: fmi1
+ real(DP), intent(in), pointer :: eqnsclfac !< governing equation scale factor
character(len=*), intent(in), optional :: gwfmodelname1
character(len=*), intent(in), optional :: gwfmodelname2
type(TspFmiType), intent(in), target, optional :: fmi2
@@ -113,20 +111,19 @@ subroutine mvt_cr(mvt, name_model, inunit, iout, fmi1, gwfmodelname1, &
! -- create the budget object
call budgetobject_cr(mvt%budobj, 'TRANSPORT MOVER')
!
+ ! -- Store pointer to governing equation scale factor
+ mvt%eqnsclfac => eqnsclfac
+ !
! -- Return
return
end subroutine mvt_cr
+ !> @brief Define mover transport object
+ !<
subroutine mvt_df(this, dis)
-! ******************************************************************************
-! mvt_df -- Define
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
class(DisBaseType), pointer, intent(in) :: dis
! -- local
! -- formats
@@ -162,21 +159,17 @@ end subroutine mvt_df
!!
!<
subroutine set_pointer_mvrbudobj(this, mvrbudobj)
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
type(BudgetObjectType), intent(in), target :: mvrbudobj
this%mvrbudobj => mvrbudobj
end subroutine set_pointer_mvrbudobj
+ !> @brief Allocate and read mover-for-transport information
+ !<
subroutine mvt_ar(this)
-! ******************************************************************************
-! mvt_ar -- Allocate and read water mover information
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
! -- locals
! ------------------------------------------------------------------------------
!
@@ -187,17 +180,13 @@ subroutine mvt_ar(this)
return
end subroutine mvt_ar
+ !> @brief Read and prepare mover transport object
+ !<
subroutine mvt_rp(this)
-! ******************************************************************************
-! mvt_rp -- Read and prepare
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
use TdisModule, only: kper, kstp
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
! -- local
! -- formats
! ------------------------------------------------------------------------------
@@ -224,22 +213,18 @@ subroutine mvt_rp(this)
return
end subroutine mvt_rp
+ !> @brief Calculate coefficients and fill amat and rhs
+ !!
+ !! The mvt package adds the mass flow rate to the provider qmfrommvr array.
+ !! The advanced packages know enough to subract any mass that is leaving, so
+ !! the mvt just adds mass coming in from elsewhere. Because the movers
+ !! change by stress period, their solute effects must be added to the right-
+ !! hand side of the transport matrix equations.
+ !<
subroutine mvt_fc(this, cnew1, cnew2)
-! ******************************************************************************
-! mvt_fc -- Calculate coefficients and fill amat and rhs
-!
-! The mvt package adds the mass flow rate to the provider qmfrommvr
-! array. The advanced packages know enough to subract any mass that is
-! leaving, so the mvt just adds mass coming in from elsewhere. Because the
-! movers change change by stress period, their solute effects must be
-! added to the right-hand side of the gwt matrix equations.
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
real(DP), intent(in), dimension(:), contiguous, target :: cnew1
real(DP), intent(in), dimension(:), contiguous, target :: cnew2
! -- local
@@ -313,7 +298,7 @@ subroutine mvt_fc(this, cnew1, cnew2)
! water into the same receiver
if (fmi_rc%iatp(irc) /= 0) then
fmi_rc%datp(irc)%qmfrommvr(id2) = fmi_rc%datp(irc)%qmfrommvr(id2) - &
- q * cp
+ q * cp * this%eqnsclfac
end if
end do
end if
@@ -325,17 +310,16 @@ end subroutine mvt_fc
!> @ brief Set the fmi_pr and fmi_rc pointers
!!
- !! The fmi_pr and fmi_rc arguments are pointers to the provider
- !! and receiver FMI Packages. If this MVT Package is owned by
- !! a single GWT model, then these pointers are both set to the
- !! FMI Package of this GWT model's FMI Package. If this MVT
- !! Package is owned by a GWTGWT Exchange, then the fmi_pr and
- !! fmi_rc pointers may be assigned to FMI Packages in different models.
- !!
+ !! The fmi_pr and fmi_rc arguments are pointers to the provider and receiver
+ !! FMI Packages. If this MVT Package is owned by a single GWT model, then
+ !! these pointers are both set to the FMI Package of this GWT model's FMI
+ !! package. If this MVT package is owned by a GWTGWT exchange, then the
+ !! fmi_pr and fmi_rc pointers may be assigned to FMI Packages in different
+ !! models.
!<
subroutine set_fmi_pr_rc(this, ibudterm, fmi_pr, fmi_rc)
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
integer(I4B), intent(in) :: ibudterm
type(TspFmiType), pointer :: fmi_pr
type(TspFmiType), pointer :: fmi_rc
@@ -389,19 +373,16 @@ subroutine set_fmi_pr_rc(this, ibudterm, fmi_pr, fmi_rc)
print *, 'Could not find FMI Package...'
stop "error in set_fmi_pr_rc"
end if
-
+ !
+ ! -- Return
return
end subroutine set_fmi_pr_rc
+ !> @brief Extra convergence check for mover
+ !<
subroutine mvt_cc(this, kiter, iend, icnvgmod, cpak, dpak)
-! ******************************************************************************
-! mvt_cc -- extra convergence check for mover
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
integer(I4B), intent(in) :: kiter
integer(I4B), intent(in) :: iend
integer(I4B), intent(in) :: icnvgmod
@@ -412,7 +393,6 @@ subroutine mvt_cc(this, kiter, iend, icnvgmod, cpak, dpak)
character(len=*), parameter :: fmtmvrcnvg = &
"(/,1x,'MOVER PACKAGE REQUIRES AT LEAST TWO OUTER ITERATIONS. CONVERGE &
&FLAG HAS BEEN RESET TO FALSE.')"
-! ------------------------------------------------------------------------------
!
! -- If there are active movers, then at least 2 outers required
if (associated(this%mvrbudobj)) then
@@ -427,16 +407,12 @@ subroutine mvt_cc(this, kiter, iend, icnvgmod, cpak, dpak)
return
end subroutine mvt_cc
+ !> @brief Write mover terms to listing file
+ !<
subroutine mvt_bd(this, cnew1, cnew2)
-! ******************************************************************************
-! mvt_bd -- Write mover terms to listing file
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
real(DP), dimension(:), contiguous, intent(in) :: cnew1
real(DP), dimension(:), contiguous, intent(in) :: cnew2
! -- local
@@ -449,17 +425,13 @@ subroutine mvt_bd(this, cnew1, cnew2)
return
end subroutine mvt_bd
+ !> @brief Write mover budget terms
+ !<
subroutine mvt_ot_saveflow(this, icbcfl, ibudfl)
-! ******************************************************************************
-! mvt_bd -- Write mover terms
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
use TdisModule, only: kstp, kper, delt, pertim, totim
! -- dummy
- class(GwtMvttype) :: this
+ class(TspMvttype) :: this
integer(I4B), intent(in) :: icbcfl
integer(I4B), intent(in) :: ibudfl
! -- locals
@@ -481,16 +453,12 @@ subroutine mvt_ot_saveflow(this, icbcfl, ibudfl)
return
end subroutine mvt_ot_saveflow
+ !> @brief Print mover flow table
+ !<
subroutine mvt_ot_printflow(this, icbcfl, ibudfl)
-! ******************************************************************************
-! mvr_ot_printflow -- Print mover flow table
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
integer(I4B), intent(in) :: icbcfl
integer(I4B), intent(in) :: ibudfl
! -- locals
@@ -505,18 +473,14 @@ subroutine mvt_ot_printflow(this, icbcfl, ibudfl)
return
end subroutine mvt_ot_printflow
+ !> @brief Write mover budget to listing file
+ !<
subroutine mvt_ot_bdsummary(this, ibudfl)
-! ******************************************************************************
-! mvt_ot_bdsummary -- Write mover budget to listing file
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
use TdisModule, only: kstp, kper, delt, totim
use ArrayHandlersModule, only: ifind, expandarray
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
integer(I4B), intent(in) :: ibudfl
! -- locals
integer(I4B) :: i, j, n
@@ -582,17 +546,15 @@ subroutine mvt_ot_bdsummary(this, ibudfl)
return
end subroutine mvt_ot_bdsummary
+ !> @ brief Deallocate memory
+ !!
+ !! Method to deallocate memory for the package.
+ !<
subroutine mvt_da(this)
-! ******************************************************************************
-! mvt_da -- deallocate
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
use MemoryManagerModule, only: mem_deallocate
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
! -- local
! ------------------------------------------------------------------------------
!
@@ -634,17 +596,15 @@ subroutine mvt_da(this)
return
end subroutine mvt_da
+ !> @ brief Allocate scalar variables for package
+ !!
+ !! Method to allocate scalar variables for the MVT package.
+ !<
subroutine allocate_scalars(this)
-! ******************************************************************************
-! allocate_scalars
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
use MemoryManagerModule, only: mem_allocate, mem_setptr
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
! -- local
! ------------------------------------------------------------------------------
!
@@ -665,18 +625,14 @@ subroutine allocate_scalars(this)
return
end subroutine allocate_scalars
+ !> @brief Read mover-for-transport options block
+ !<
subroutine read_options(this)
-! ******************************************************************************
-! read_options -- Read Options
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
use OpenSpecModule, only: access, form
use InputOutputModule, only: getunit, openfile
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
! -- local
character(len=LINELENGTH) :: errmsg, keyword
character(len=MAXCHARLEN) :: fname
@@ -751,17 +707,13 @@ subroutine read_options(this)
return
end subroutine read_options
+ !> @brief Set up the budget object that stores all the mvr flows
+ !<
subroutine mvt_setup_budobj(this)
-! ******************************************************************************
-! mvt_setup_budobj -- Set up the budget object that stores all the mvr flows
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
use ConstantsModule, only: LENBUDTXT
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
! -- local
integer(I4B) :: nbudterm
integer(I4B) :: ncv
@@ -798,22 +750,17 @@ subroutine mvt_setup_budobj(this)
maxlist, .false., .false., &
naux)
end do
-
!
- ! -- return
+ ! -- Return
return
end subroutine mvt_setup_budobj
+ !> @brief Copy mover-for-transport flow terms into this%budobj
+ !<
subroutine mvt_fill_budobj(this, cnew1, cnew2)
-! ******************************************************************************
-! mvt_fill_budobj -- copy flow terms into this%budobj
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- modules
! -- dummy
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
real(DP), intent(in), dimension(:), contiguous, target :: cnew1
real(DP), intent(in), dimension(:), contiguous, target :: cnew2
! -- local
@@ -864,7 +811,7 @@ subroutine mvt_fill_budobj(this, cnew1, cnew2)
! -- Calculate solute mover rate
rate = DZERO
if (fmi_rc%iatp(irc) /= 0) then
- rate = -q * cp
+ rate = -q * cp * this%eqnsclfac
end if
!
! -- add the rate to the budterm
@@ -879,21 +826,18 @@ subroutine mvt_fill_budobj(this, cnew1, cnew2)
return
end subroutine mvt_fill_budobj
+ !> @brief Determine max number of packages in use
+ !!
+ !! Scan through the gwf water mover budget object and determine the maximum
+ !! number of packages and unique package names
+ !<
subroutine mvt_scan_mvrbudobj(this)
-! ******************************************************************************
-! mvt_scan_mvrbudobj -- scan through the gwf water mover budget object and
-! determine the maximum number of packages and unique package names
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
- class(GwtMvtType) :: this
+ class(TspMvtType) :: this
integer(I4B) :: nbudterm
integer(I4B) :: maxpackages
integer(I4B) :: i, j
integer(I4B) :: ipos
logical :: found
-! ------------------------------------------------------------------------------
!
! -- Calculate maxpackages, which is the the square of nbudterm
nbudterm = this%mvrbudobj%nbudterm
@@ -931,22 +875,17 @@ subroutine mvt_scan_mvrbudobj(this)
return
end subroutine mvt_scan_mvrbudobj
+ !> @brief Set up the mover-for-transport output table
+ !<
subroutine mvt_setup_outputtab(this)
-! ******************************************************************************
-! mvt_setup_outputtab -- set up output table
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- dummy
- class(GwtMvtType), intent(inout) :: this
+ class(TspMvtType), intent(inout) :: this
! -- local
character(len=LINELENGTH) :: title
character(len=LINELENGTH) :: text
integer(I4B) :: ntabcol
integer(I4B) :: maxrow
integer(I4B) :: ilen
-! ------------------------------------------------------------------------------
!
! -- allocate and initialize the output table
if (this%iprflow /= 0) then
@@ -984,17 +923,13 @@ subroutine mvt_setup_outputtab(this)
return
end subroutine mvt_setup_outputtab
+ !> @brief Set up mover-for-transport output table
+ !<
subroutine mvt_print_outputtab(this)
-! ******************************************************************************
-! mvt_print_outputtab -- set up output table
-! ******************************************************************************
-!
-! SPECIFICATIONS:
-! ------------------------------------------------------------------------------
! -- module
use TdisModule, only: kstp, kper
! -- dummy
- class(GwtMvttype), intent(inout) :: this
+ class(TspMvttype), intent(inout) :: this
! -- local
character(len=LINELENGTH) :: title
character(len=LENMODELNAME + LENPACKAGENAME + 1) :: cloc1, cloc2
@@ -1045,5 +980,5 @@ subroutine mvt_print_outputtab(this)
return
end subroutine mvt_print_outputtab
-end module GwtMvtModule
+end module TspMvtModule
diff --git a/src/meson.build b/src/meson.build
index 5e556012323..4f1192993d7 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -101,7 +101,6 @@ modflow_sources = files(
'Model' / 'GroundWaterTransport' / 'gwt1ist1.f90',
'Model' / 'GroundWaterTransport' / 'gwt1lkt1.f90',
'Model' / 'GroundWaterTransport' / 'gwt1mst1.f90',
- 'Model' / 'GroundWaterTransport' / 'gwt1mvt1.f90',
'Model' / 'GroundWaterTransport' / 'gwt1mwt1.f90',
'Model' / 'GroundWaterTransport' / 'gwt1obs1.f90',
'Model' / 'GroundWaterTransport' / 'gwt1sft1.f90',
@@ -133,6 +132,7 @@ modflow_sources = files(
'Model' / 'TransportModel' / 'tsp1fmi1.f90',
'Model' / 'TransportModel' / 'tsp1ic1.f90',
'Model' / 'TransportModel' / 'tsp1oc1.f90',
+ 'Model' / 'TransportModel' / 'tsp1mvt1.f90',
'Model' / 'TransportModel' / 'tsp1ssm1.f90',
'Model' / 'BaseModel.f90',
'Model' / 'ExplicitModel.f90',