diff --git a/make/makefile b/make/makefile
index 06b18b4d307..c61dd6fa2c7 100644
--- a/make/makefile
+++ b/make/makefile
@@ -181,10 +181,10 @@ $(OBJDIR)/IdmLoad.o \
$(OBJDIR)/BoundaryPackage.o \
$(OBJDIR)/VirtualBase.o \
$(OBJDIR)/BaseModel.o \
-$(OBJDIR)/PrintSaveManager.o \
$(OBJDIR)/PackageBudget.o \
$(OBJDIR)/HeadFileReader.o \
$(OBJDIR)/BudgetObject.o \
+$(OBJDIR)/PrintSaveManager.o \
$(OBJDIR)/SfrCrossSectionManager.o \
$(OBJDIR)/dag_module.o \
$(OBJDIR)/BoundaryPackageExt.o \
@@ -192,8 +192,8 @@ $(OBJDIR)/VirtualDataLists.o \
$(OBJDIR)/VirtualDataContainer.o \
$(OBJDIR)/SimStages.o \
$(OBJDIR)/NumericalModel.o \
-$(OBJDIR)/OutputControlData.o \
$(OBJDIR)/FlowModelInterface.o \
+$(OBJDIR)/OutputControlData.o \
$(OBJDIR)/Xt3dAlgorithm.o \
$(OBJDIR)/gwf3tvbase8.o \
$(OBJDIR)/gwf3sfr8.o \
@@ -207,9 +207,10 @@ $(OBJDIR)/gwf3drn8.o \
$(OBJDIR)/IndexMap.o \
$(OBJDIR)/VirtualModel.o \
$(OBJDIR)/BaseExchange.o \
+$(OBJDIR)/tsp1fmi1.o \
+$(OBJDIR)/GwtSpc.o \
$(OBJDIR)/OutputControl.o \
$(OBJDIR)/gwf3ic8.o \
-$(OBJDIR)/tsp1fmi1.o \
$(OBJDIR)/TspAdvOptions.o \
$(OBJDIR)/UzfCellGroup.o \
$(OBJDIR)/Xt3dInterface.o \
@@ -222,6 +223,7 @@ $(OBJDIR)/ImsLinearSettings.o \
$(OBJDIR)/ConvergenceSummary.o \
$(OBJDIR)/CellWithNbrs.o \
$(OBJDIR)/NumericalExchange.o \
+$(OBJDIR)/tsp1ssm1.o \
$(OBJDIR)/tsp1oc1.o \
$(OBJDIR)/tsp1ic1.o \
$(OBJDIR)/tsp1adv1.o \
@@ -230,7 +232,6 @@ $(OBJDIR)/gwf3disu8.o \
$(OBJDIR)/gwf3dis8.o \
$(OBJDIR)/gwf3uzf8.o \
$(OBJDIR)/gwt1apt1.o \
-$(OBJDIR)/GwtSpc.o \
$(OBJDIR)/gwt1mst1.o \
$(OBJDIR)/GwtDspOptions.o \
$(OBJDIR)/gwf3npf8.o \
@@ -250,7 +251,6 @@ $(OBJDIR)/DisConnExchange.o \
$(OBJDIR)/CsrUtils.o \
$(OBJDIR)/tsp1.o \
$(OBJDIR)/gwt1uzt1.o \
-$(OBJDIR)/gwt1ssm1.o \
$(OBJDIR)/gwt1src1.o \
$(OBJDIR)/gwt1sft1.o \
$(OBJDIR)/gwt1obs1.o \
diff --git a/msvs/mf6core.vfproj b/msvs/mf6core.vfproj
index a2929d27d39..624e667eb4e 100644
--- a/msvs/mf6core.vfproj
+++ b/msvs/mf6core.vfproj
@@ -179,7 +179,6 @@
-
@@ -208,7 +207,8 @@
-
+
+
diff --git a/src/Model/GroundWaterTransport/gwt1.f90 b/src/Model/GroundWaterTransport/gwt1.f90
index 3c563e79eed..5c41bb23911 100644
--- a/src/Model/GroundWaterTransport/gwt1.f90
+++ b/src/Model/GroundWaterTransport/gwt1.f90
@@ -16,7 +16,7 @@ module GwtModule
use BaseModelModule, only: BaseModelType
use BndModule, only: BndType, AddBndToList, GetBndFromList
use GwtDspModule, only: GwtDspType
- use GwtSsmModule, only: GwtSsmType
+ use TspSsmModule, only: TspSsmType
use GwtMvtModule, only: GwtMvtType
use GwtMstModule, only: GwtMstType
use GwtObsModule, only: GwtObsType
@@ -37,13 +37,11 @@ module GwtModule
type(GwtMstType), pointer :: mst => null() ! mass storage and transfer package
type(GwtDspType), pointer :: dsp => null() ! dispersion package
- type(GwtSsmType), pointer :: ssm => null() ! source sink mixing 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 :: inssm => null() ! unit number SSM
integer(I4B), pointer :: inobs => null() ! unit number OBS
contains
@@ -878,7 +876,6 @@ subroutine gwt_da(this)
!
! -- Scalars
call mem_deallocate(this%indsp)
- call mem_deallocate(this%inssm)
call mem_deallocate(this%inmst)
call mem_deallocate(this%inmvt)
call mem_deallocate(this%inobs)
@@ -968,13 +965,11 @@ subroutine allocate_scalars(this, modelname)
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%inssm, 'INSSM', this%memoryPath)
call mem_allocate(this%inobs, 'INOBS', this%memoryPath)
!
this%inmvt = 0
this%inmst = 0
this%indsp = 0
- this%inssm = 0
this%inobs = 0
!
! -- Return
@@ -1143,7 +1138,6 @@ subroutine create_gwt_packages(this, indis)
use SimVariablesModule, only: idm_context
use GwtMstModule, only: mst_cr
use GwtDspModule, only: dsp_cr
- use GwtSsmModule, only: ssm_cr
use GwtMvtModule, only: mvt_cr
use GwtObsModule, only: gwt_obs_cr
! -- dummy
@@ -1210,7 +1204,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 ssm_cr(this%ssm, this%name, this%inssm, 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)
!
diff --git a/src/Model/TransportModel/tsp1.f90 b/src/Model/TransportModel/tsp1.f90
index 08b36ee67c3..1a3be2973cb 100644
--- a/src/Model/TransportModel/tsp1.f90
+++ b/src/Model/TransportModel/tsp1.f90
@@ -14,6 +14,7 @@ module TransportModelModule
use TspIcModule, only: TspIcType
use TspFmiModule, only: TspFmiType
use TspAdvModule, only: TspAdvType
+ use TspSsmModule, only: TspSsmType
use TspOcModule, only: TspOcType
use BudgetModule, only: BudgetType
use MatrixBaseModule
@@ -30,11 +31,14 @@ module TransportModelModule
type(TspAdvType), pointer :: adv => null() !< advection package
type(TspIcType), pointer :: ic => null() !< initial conditions 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 :: inoc => null() !< unit number OC
+
+ integer(I4B), pointer :: inssm => null() !< unit number SSM
real(DP), pointer :: eqnsclfac => null() !< constant factor by which all terms in the model's governing equation are scaled (divided) for formulation and solution
! Labels that will be defined
character(len=LENVARNAME) :: tsptype = '' !< "solute" or "heat"
@@ -288,12 +292,14 @@ subroutine allocate_tsp_scalars(this, modelname)
call mem_allocate(this%inic, 'INIC', this%memoryPath)
call mem_allocate(this%infmi, 'INFMI', 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)
call mem_allocate(this%eqnsclfac, 'EQNSCLFAC', this%memoryPath)
!
this%inic = 0
this%infmi = 0
this%inadv = 0
+ this%inssm = 0
this%inoc = 0
this%eqnsclfac = DZERO
!
@@ -345,6 +351,7 @@ subroutine tsp_da(this)
call mem_deallocate(this%inic)
call mem_deallocate(this%infmi)
call mem_deallocate(this%inadv)
+ call mem_deallocate(this%inssm)
call mem_deallocate(this%inoc)
call mem_deallocate(this%eqnsclfac)
!
@@ -501,6 +508,7 @@ subroutine create_tsp_packages(this, indis)
use TspIcModule, only: ic_cr
use TspFmiModule, only: fmi_cr
use TspAdvModule, only: adv_cr
+ use TspSsmModule, only: ssm_cr
use TspOcModule, only: oc_cr
! -- dummy
class(TransportModelType) :: this
@@ -558,6 +566,8 @@ subroutine create_tsp_packages(this, indis)
this%infmi = inunit
case ('ADV6')
this%inadv = inunit
+ case ('SSM6')
+ this%inssm = inunit
case ('OC6')
this%inoc = inunit
end select
@@ -570,6 +580,8 @@ subroutine create_tsp_packages(this, indis)
this%depvartype)
call adv_cr(this%adv, this%name, this%inadv, this%iout, this%fmi, &
this%eqnsclfac)
+ call ssm_cr(this%ssm, this%name, this%inssm, this%iout, this%fmi, &
+ this%eqnsclfac, this%depvartype)
call oc_cr(this%oc, this%name, this%inoc, this%iout)
!
diff --git a/src/Model/GroundWaterTransport/gwt1ssm1.f90 b/src/Model/TransportModel/tsp1ssm1.f90
similarity index 92%
rename from src/Model/GroundWaterTransport/gwt1ssm1.f90
rename to src/Model/TransportModel/tsp1ssm1.f90
index b51164f3c74..ef1e806da4d 100644
--- a/src/Model/GroundWaterTransport/gwt1ssm1.f90
+++ b/src/Model/TransportModel/tsp1ssm1.f90
@@ -1,16 +1,16 @@
-!> @brief This module contains the GwtSsm Module
+!> @brief This module contains the TspSsm Module
!!
!! This module contains the code for handling sources and sinks
!! associated with groundwater flow model stress packages.
!!
!! todo: need observations for SSM terms
!<
-module GwtSsmModule
+module TspSsmModule
use KindModule, only: DP, I4B, LGP
use ConstantsModule, only: DONE, DZERO, LENAUXNAME, LENFTYPE, &
LENPACKAGENAME, LINELENGTH, &
- TABLEFT, TABCENTER, LENBUDROWLABEL
+ TABLEFT, TABCENTER, LENBUDROWLABEL, LENVARNAME
use SimModule, only: store_error, count_errors, store_error_unit
use SimVariablesModule, only: errmsg
use NumericalPackageModule, only: NumericalPackageType
@@ -21,7 +21,7 @@ module GwtSsmModule
use MatrixBaseModule
implicit none
- public :: GwtSsmType
+ public :: TspSsmType
public :: ssm_cr
character(len=LENFTYPE) :: ftype = 'SSM'
@@ -32,9 +32,8 @@ module GwtSsmModule
!! This derived type corresponds to the SSM Package, which adds
!! the effects of groundwater sources and sinks to the solute transport
!! equation.
- !!
!<
- type, extends(NumericalPackageType) :: GwtSsmType
+ type, extends(NumericalPackageType) :: TspSsmType
integer(I4B), pointer :: nbound !< total number of flow boundaries in this time step
integer(I4B), dimension(:), pointer, contiguous :: isrctype => null() !< source type 0 is unspecified, 1 is aux, 2 is auxmixed, 3 is ssmi, 4 is ssmimixed
@@ -44,6 +43,8 @@ module GwtSsmModule
type(TspFmiType), pointer :: fmi => null() !< pointer to fmi object
type(TableType), pointer :: outputtab => null() !< output table object
type(GwtSpcType), dimension(:), pointer :: ssmivec => null() !< array of stress package concentration objects
+ real(DP), pointer :: eqnsclfac => null() !< governing equation scale factor; =1. for solute; =rhow*cpw for energy
+ character(len=LENVARNAME) :: depvartype = ''
contains
@@ -68,7 +69,7 @@ module GwtSsmModule
procedure, private :: set_ssmivec
procedure, private :: get_ssm_conc
- end type GwtSsmType
+ end type TspSsmType
contains
@@ -76,15 +77,17 @@ module GwtSsmModule
!!
!! Create a new SSM package by defining names, allocating scalars
!! and initializing the parser.
- !!
!<
- subroutine ssm_cr(ssmobj, name_model, inunit, iout, fmi)
+ subroutine ssm_cr(ssmobj, name_model, inunit, iout, fmi, eqnsclfac, &
+ depvartype)
! -- dummy
- type(GwtSsmType), pointer :: ssmobj !< GwtSsmType object
+ type(TspSsmType), pointer :: ssmobj !< TspSsmType object
character(len=*), intent(in) :: name_model !< name of the model
integer(I4B), intent(in) :: inunit !< fortran unit for input
integer(I4B), intent(in) :: iout !< fortran unit for output
- type(TspFmiType), intent(in), target :: fmi !< GWT FMI package
+ type(TspFmiType), intent(in), target :: fmi !< Transport FMI package
+ real(DP), intent(in), pointer :: eqnsclfac !< governing equation scale factor
+ character(len=LENVARNAME), intent(in) :: depvartype
!
! -- Create the object
allocate (ssmobj)
@@ -99,10 +102,15 @@ subroutine ssm_cr(ssmobj, name_model, inunit, iout, fmi)
ssmobj%inunit = inunit
ssmobj%iout = iout
ssmobj%fmi => fmi
+ ssmobj%eqnsclfac => eqnsclfac
!
! -- Initialize block parser
call ssmobj%parser%Initialize(ssmobj%inunit, ssmobj%iout)
!
+ ! -- Store pointer to labels associated with the current model so that the
+ ! package has access to the corresponding dependent variable type
+ ssmobj%depvartype = depvartype
+ !
! -- Return
return
end subroutine ssm_cr
@@ -112,13 +120,12 @@ end subroutine ssm_cr
!! This routine is called from gwt_df(), but does not do anything because
!! df is typically used to set up dimensions. For the ssm package, the
!! total number of ssm entries is defined by the flow model.
- !!
!<
subroutine ssm_df(this)
! -- modules
use MemoryManagerModule, only: mem_setptr
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
! -- local
! -- formats
!
@@ -130,13 +137,12 @@ end subroutine ssm_df
!!
!! This routine is called from gwt_ar(). It allocates arrays, reads
!! options and data, and sets up the output table.
- !!
!<
subroutine ssm_ar(this, dis, ibound, cnew)
! -- modules
use MemoryManagerModule, only: mem_setptr
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
class(DisBaseType), pointer, intent(in) :: dis !< discretization package
integer(I4B), dimension(:), pointer, contiguous :: ibound !< GWT model ibound
real(DP), dimension(:), pointer, contiguous :: cnew !< GWT model dependent variable
@@ -188,12 +194,11 @@ end subroutine ssm_ar
!! each stress period. If any SPC input files are used to provide source
!! and sink concentrations, then period blocks for the current stress period
!! are read.
- !!
!<
subroutine ssm_rp(this)
! -- modules
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
! -- local
integer(I4B) :: ip
type(GwtSpcType), pointer :: ssmiptr
@@ -219,12 +224,11 @@ end subroutine ssm_rp
!! in this%nbound. Also, if any SPC input files are used to provide source
!! and sink concentrations and time series are referenced in those files,
!! then ssm concenrations must be interpolated for the time step.
- !!
!<
subroutine ssm_ad(this)
! -- modules
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
! -- local
integer(I4B) :: ip
type(GwtSpcType), pointer :: ssmiptr
@@ -267,12 +271,11 @@ end subroutine ssm_ad
!! and right-hand-side value for any package and package entry. It returns
!! several different optional variables that are used throughout this
!! package to update matrix terms, budget calculations, and output tables.
- !!
!<
subroutine ssm_term(this, ipackage, ientry, rrate, rhsval, hcofval, &
cssm, qssm)
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType
+ class(TspSsmType) :: this !< TspSsmType
integer(I4B), intent(in) :: ipackage !< package number
integer(I4B), intent(in) :: ientry !< bound number
real(DP), intent(out), optional :: rrate !< calculated mass flow rate
@@ -342,9 +345,9 @@ subroutine ssm_term(this, ipackage, ientry, rrate, rhsval, hcofval, &
!
! -- Add terms based on qbnd sign
if (qbnd <= DZERO) then
- hcoftmp = qbnd * omega
+ hcoftmp = qbnd * omega * this%eqnsclfac
else
- rhstmp = -qbnd * ctmp * (DONE - omega)
+ rhstmp = -qbnd * ctmp * (DONE - omega) * this%eqnsclfac
end if
!
! -- end of active ibound
@@ -357,23 +360,23 @@ subroutine ssm_term(this, ipackage, ientry, rrate, rhsval, hcofval, &
if (present(cssm)) cssm = ctmp
if (present(qssm)) qssm = qbnd
!
- ! -- return
+ ! -- Return
return
end subroutine ssm_term
- !> @ brief Provide bound concentration and mixed flag
- !!
- !! SSM concentrations can be provided in auxiliary variables or
- !! through separate SPC files. If not provided, the default
- !! concentration is zero. This single routine provides the SSM
- !! bound concentration based on these different approaches.
- !! The mixed flag indicates whether or not
+ !> @ brief Provide bound concentration (or temperature) and mixed flag
!!
+ !! SSM concentrations and temperatures can be provided in auxiliary variables
+ !! or through separate SPC files. If not provided, the default
+ !! concentration (or temperature) is zero. This single routine provides
+ !! the SSM bound concentration (or temperature) based on these different
+ !! approaches. The mixed flag indicates whether or not the boundary as a
+ !! mixed type.
!<
subroutine get_ssm_conc(this, ipackage, ientry, nbound_flow, conc, &
lauxmixed)
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType
+ class(TspSsmType) :: this !< TspSsmType
integer(I4B), intent(in) :: ipackage !< package number
integer(I4B), intent(in) :: ientry !< bound number
integer(I4B), intent(in) :: nbound_flow !< size of flow package bound list
@@ -396,7 +399,8 @@ subroutine get_ssm_conc(this, ipackage, ientry, nbound_flow, conc, &
conc = this%ssmivec(ipackage)%get_value(ientry, nbound_flow)
if (isrctype == 4) lauxmixed = .true.
end select
-
+ !
+ ! -- Return
return
end subroutine get_ssm_conc
@@ -404,12 +408,11 @@ end subroutine get_ssm_conc
!!
!! This routine adds the effects of the SSM to the matrix equations by
!! updating the a matrix and right-hand side vector.
- !!
!<
subroutine ssm_fc(this, matrix_sln, idxglo, rhs)
! -- modules
! -- dummy
- class(GwtSsmType) :: this
+ class(TspSsmType) :: this
class(MatrixBaseType), pointer :: matrix_sln
integer(I4B), intent(in), dimension(:) :: idxglo
real(DP), intent(inout), dimension(:) :: rhs
@@ -451,12 +454,11 @@ end subroutine ssm_fc
!! Calulate the resulting mass flow between the boundary and the connected
!! GWT model cell. Update the diagonal position of the flowja array so that
!! it ultimately contains the solute balance residual.
- !!
!<
subroutine ssm_cq(this, flowja)
! -- modules
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
real(DP), dimension(:), contiguous, intent(inout) :: flowja !< flow across each face in the model grid
! -- local
integer(I4B) :: ip
@@ -491,14 +493,13 @@ end subroutine ssm_cq
!!
!! Calculate the global SSM budget terms using separate in and out entries
!! for each flow package.
- !!
!<
subroutine ssm_bd(this, isuppress_output, model_budget)
! -- modules
use TdisModule, only: delt
use BudgetModule, only: BudgetType
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
integer(I4B), intent(in) :: isuppress_output !< flag to suppress output
type(BudgetType), intent(inout) :: model_budget !< budget object for the GWT model
! -- local
@@ -549,14 +550,13 @@ end subroutine ssm_bd
!! Based on user-specified controls, print SSM mass flow rates to the GWT
!! listing file and/or write the SSM mass flow rates to the GWT binary
!! budget file.
- !!
!<
subroutine ssm_ot_flow(this, icbcfl, ibudfl, icbcun)
! -- modules
use TdisModule, only: kstp, kper
use ConstantsModule, only: LENPACKAGENAME, LENBOUNDNAME, LENAUXNAME, DZERO
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
integer(I4B), intent(in) :: icbcfl !< flag for writing binary budget terms
integer(I4B), intent(in) :: ibudfl !< flag for printing budget terms to list file
integer(I4B), intent(in) :: icbcun !< fortran unit number for binary budget file
@@ -672,20 +672,19 @@ subroutine ssm_ot_flow(this, icbcfl, ibudfl, icbcun)
end if
end if
!
- ! -- return
+ ! -- Return
return
end subroutine ssm_ot_flow
!> @ brief Deallocate
!!
!! Deallocate the memory associated with this derived type
- !!
!<
subroutine ssm_da(this)
! -- modules
use MemoryManagerModule, only: mem_deallocate
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
! -- local
integer(I4B) :: ip
type(GwtSpcType), pointer :: ssmiptr
@@ -729,13 +728,12 @@ end subroutine ssm_da
!> @ brief Allocate scalars
!!
!! Allocate scalar variables for this derived type
- !!
!<
subroutine allocate_scalars(this)
! -- modules
use MemoryManagerModule, only: mem_allocate, mem_setptr
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
! -- local
!
! -- allocate scalars in NumericalPackageType
@@ -754,13 +752,12 @@ end subroutine allocate_scalars
!> @ brief Allocate arrays
!!
!! Allocate array variables for this derived type
- !!
!<
subroutine allocate_arrays(this)
! -- modules
use MemoryManagerModule, only: mem_allocate, mem_setptr
! -- dummy
- class(GwtSsmType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
! -- local
integer(I4B) :: nflowpack
integer(I4B) :: i
@@ -786,12 +783,11 @@ end subroutine allocate_arrays
!> @ brief Read package options
!!
!! Read and set the SSM Package options
- !!
!<
subroutine read_options(this)
! -- modules
! -- dummy
- class(GwtSSMType) :: this !< GwtSsmType object
+ class(TspSsmType) :: this !< TspSsmType object
! -- local
character(len=LINELENGTH) :: keyword
integer(I4B) :: ierr
@@ -838,17 +834,18 @@ end subroutine read_options
!> @ brief Read package data
!!
!! Read and set the SSM Package data
- !!
!<
subroutine read_data(this)
! -- dummy
- class(GwtSsmtype) :: this !< GwtSsmtype object
+ class(TspSsmType) :: this !< TspSsmType object
!
! -- read and process required SOURCES block
call this%read_sources_aux()
!
! -- read and process optional FILEINPUT block
call this%read_sources_fileinput()
+ !
+ ! -- Return
return
end subroutine read_data
@@ -856,11 +853,10 @@ end subroutine read_data
!!
!! Read SOURCES block and look for auxiliary columns in
!! corresponding flow data.
- !!
!<
subroutine read_sources_aux(this)
! -- dummy
- class(GwtSsmtype) :: this !< GwtSsmtype object
+ class(TspSsmType) :: this !< TspSsmType object
! -- local
character(len=LINELENGTH) :: keyword
character(len=20) :: srctype
@@ -959,11 +955,10 @@ end subroutine read_sources_aux
!!
!! Read optional FILEINPUT block and initialize an
!! SPC input file reader for each entry.
- !!
!<
subroutine read_sources_fileinput(this)
! -- dummy
- class(GwtSsmtype) :: this !< GwtSsmtype object
+ class(TspSsmType) :: this !< TspSsmType object
! -- local
character(len=LINELENGTH) :: keyword
character(len=LINELENGTH) :: keyword2
@@ -1080,11 +1075,10 @@ end subroutine read_sources_fileinput
!! through the auxiliary names in package ip and sets iauxpak
!! to the column number corresponding to the correct auxiliary
!! column.
- !!
!<
subroutine set_iauxpak(this, ip, packname)
! -- dummy
- class(GwtSsmtype), intent(inout) :: this !< GwtSsmtype
+ class(TspSsmType), intent(inout) :: this !< TspSsmType
integer(I4B), intent(in) :: ip !< package number
character(len=*), intent(in) :: packname !< name of package
! -- local
@@ -1114,7 +1108,7 @@ subroutine set_iauxpak(this, ip, packname)
write (this%iout, '(4x, a, i0, a, a)') 'USING AUX COLUMN ', &
iaux, ' IN PACKAGE ', trim(packname)
!
- ! -- return
+ ! -- Return
return
end subroutine set_iauxpak
@@ -1123,13 +1117,12 @@ end subroutine set_iauxpak
!! The next call to parser will return the input file name for
!! package ip in the SSM SOURCES block. The routine then
!! initializes the SPC input file.
- !!
!<
subroutine set_ssmivec(this, ip, packname)
! -- module
use InputOutputModule, only: openfile, getunit
! -- dummy
- class(GwtSsmtype), intent(inout) :: this !< GwtSsmtype
+ class(TspSsmType), intent(inout) :: this !< TspSsmType
integer(I4B), intent(in) :: ip !< package number
character(len=*), intent(in) :: packname !< name of package
! -- local
@@ -1147,21 +1140,21 @@ subroutine set_ssmivec(this, ip, packname)
call ssmiptr%initialize(this%dis, ip, inunit, this%iout, this%name_model, &
trim(packname))
- write (this%iout, '(4x, a, a, a, a)') 'USING SPC INPUT FILE ', &
- trim(filename), ' TO SET CONCENTRATIONS FOR PACKAGE ', trim(packname)
+ write (this%iout, '(4x, a, a, a, a, a)') 'USING SPC INPUT FILE ', &
+ trim(filename), ' TO SET ', trim(this%depvartype), &
+ 'S FOR PACKAGE ', trim(packname)
!
- ! -- return
+ ! -- Return
return
end subroutine set_ssmivec
!> @ brief Setup the output table
!!
!! Setup the output table by creating the column headers.
- !!
!<
subroutine pak_setup_outputtab(this)
! -- dummy
- class(GwtSsmtype), intent(inout) :: this
+ class(TspSsmType), intent(inout) :: this
! -- local
character(len=LINELENGTH) :: title
character(len=LINELENGTH) :: text
@@ -1199,8 +1192,8 @@ subroutine pak_setup_outputtab(this)
!end if
end if
!
- ! -- return
+ ! -- Return
return
end subroutine pak_setup_outputtab
-end module GwtSsmModule
+end module TspSsmModule
diff --git a/src/meson.build b/src/meson.build
index 6151f7e7c34..5e556012323 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -106,7 +106,6 @@ modflow_sources = files(
'Model' / 'GroundWaterTransport' / 'gwt1obs1.f90',
'Model' / 'GroundWaterTransport' / 'gwt1sft1.f90',
'Model' / 'GroundWaterTransport' / 'gwt1src1.f90',
- 'Model' / 'GroundWaterTransport' / 'gwt1ssm1.f90',
'Model' / 'GroundWaterTransport' / 'gwt1uzt1.f90',
'Model' / 'ModelUtilities' / 'BoundaryPackage.f90',
'Model' / 'ModelUtilities' / 'BoundaryPackageExt.f90',
@@ -134,6 +133,7 @@ modflow_sources = files(
'Model' / 'TransportModel' / 'tsp1fmi1.f90',
'Model' / 'TransportModel' / 'tsp1ic1.f90',
'Model' / 'TransportModel' / 'tsp1oc1.f90',
+ 'Model' / 'TransportModel' / 'tsp1ssm1.f90',
'Model' / 'BaseModel.f90',
'Model' / 'ExplicitModel.f90',
'Model' / 'NumericalModel.f90',