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 4946599f741..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,9 +1138,7 @@ 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 GwtOcModule, only: oc_cr use GwtObsModule, only: gwt_obs_cr ! -- dummy class(GwtModelType) :: this @@ -1211,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',