diff --git a/make/makefile b/make/makefile index 6867c3485ae..06b18b4d307 100644 --- a/make/makefile +++ b/make/makefile @@ -181,6 +181,7 @@ $(OBJDIR)/IdmLoad.o \ $(OBJDIR)/BoundaryPackage.o \ $(OBJDIR)/VirtualBase.o \ $(OBJDIR)/BaseModel.o \ +$(OBJDIR)/PrintSaveManager.o \ $(OBJDIR)/PackageBudget.o \ $(OBJDIR)/HeadFileReader.o \ $(OBJDIR)/BudgetObject.o \ @@ -191,8 +192,8 @@ $(OBJDIR)/VirtualDataLists.o \ $(OBJDIR)/VirtualDataContainer.o \ $(OBJDIR)/SimStages.o \ $(OBJDIR)/NumericalModel.o \ +$(OBJDIR)/OutputControlData.o \ $(OBJDIR)/FlowModelInterface.o \ -$(OBJDIR)/PrintSaveManager.o \ $(OBJDIR)/Xt3dAlgorithm.o \ $(OBJDIR)/gwf3tvbase8.o \ $(OBJDIR)/gwf3sfr8.o \ @@ -206,11 +207,11 @@ $(OBJDIR)/gwf3drn8.o \ $(OBJDIR)/IndexMap.o \ $(OBJDIR)/VirtualModel.o \ $(OBJDIR)/BaseExchange.o \ +$(OBJDIR)/OutputControl.o \ $(OBJDIR)/gwf3ic8.o \ $(OBJDIR)/tsp1fmi1.o \ $(OBJDIR)/TspAdvOptions.o \ $(OBJDIR)/UzfCellGroup.o \ -$(OBJDIR)/OutputControlData.o \ $(OBJDIR)/Xt3dInterface.o \ $(OBJDIR)/gwf3tvk8.o \ $(OBJDIR)/gwf3vsc8.o \ @@ -221,6 +222,7 @@ $(OBJDIR)/ImsLinearSettings.o \ $(OBJDIR)/ConvergenceSummary.o \ $(OBJDIR)/CellWithNbrs.o \ $(OBJDIR)/NumericalExchange.o \ +$(OBJDIR)/tsp1oc1.o \ $(OBJDIR)/tsp1ic1.o \ $(OBJDIR)/tsp1adv1.o \ $(OBJDIR)/gwf3disv8.o \ @@ -229,7 +231,6 @@ $(OBJDIR)/gwf3dis8.o \ $(OBJDIR)/gwf3uzf8.o \ $(OBJDIR)/gwt1apt1.o \ $(OBJDIR)/GwtSpc.o \ -$(OBJDIR)/OutputControl.o \ $(OBJDIR)/gwt1mst1.o \ $(OBJDIR)/GwtDspOptions.o \ $(OBJDIR)/gwf3npf8.o \ @@ -252,7 +253,6 @@ $(OBJDIR)/gwt1uzt1.o \ $(OBJDIR)/gwt1ssm1.o \ $(OBJDIR)/gwt1src1.o \ $(OBJDIR)/gwt1sft1.o \ -$(OBJDIR)/gwt1oc1.o \ $(OBJDIR)/gwt1obs1.o \ $(OBJDIR)/gwt1mwt1.o \ $(OBJDIR)/gwt1mvt1.o \ diff --git a/msvs/mf6core.vfproj b/msvs/mf6core.vfproj index e9cd6a8356d..a2929d27d39 100644 --- a/msvs/mf6core.vfproj +++ b/msvs/mf6core.vfproj @@ -177,7 +177,6 @@ - @@ -208,7 +207,8 @@ - + + diff --git a/src/Model/GroundWaterFlow/gwf3oc8.f90 b/src/Model/GroundWaterFlow/gwf3oc8.f90 index 12e635b7963..03485adc738 100644 --- a/src/Model/GroundWaterFlow/gwf3oc8.f90 +++ b/src/Model/GroundWaterFlow/gwf3oc8.f90 @@ -59,7 +59,7 @@ end subroutine oc_cr !< subroutine oc_ar(this, head, dis, dnodata) ! -- dummy - class(GwfOcType) :: this !< GwtOcType object + class(GwfOcType) :: this !< GwfOcType object real(DP), dimension(:), pointer, contiguous, intent(in) :: head !< model head class(DisBaseType), pointer, intent(in) :: dis !< model discretization package real(DP), intent(in) :: dnodata !< no data value diff --git a/src/Model/GroundWaterTransport/gwt1.f90 b/src/Model/GroundWaterTransport/gwt1.f90 index 50c5e8c5941..3c563e79eed 100644 --- a/src/Model/GroundWaterTransport/gwt1.f90 +++ b/src/Model/GroundWaterTransport/gwt1.f90 @@ -15,12 +15,10 @@ module GwtModule use TransportModelModule, only: TransportModelType use BaseModelModule, only: BaseModelType use BndModule, only: BndType, AddBndToList, GetBndFromList - use TspFmiModule, only: TspFmiType use GwtDspModule, only: GwtDspType use GwtSsmModule, only: GwtSsmType use GwtMvtModule, only: GwtMvtType use GwtMstModule, only: GwtMstType - use GwtOcModule, only: GwtOcType use GwtObsModule, only: GwtObsType use BudgetModule, only: BudgetType use MatrixBaseModule @@ -41,13 +39,11 @@ module GwtModule 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(GwtOcType), pointer :: oc => null() ! output control 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 :: inoc => null() ! unit number OC integer(I4B), pointer :: inobs => null() ! unit number OBS contains @@ -885,7 +881,6 @@ subroutine gwt_da(this) call mem_deallocate(this%inssm) call mem_deallocate(this%inmst) call mem_deallocate(this%inmvt) - call mem_deallocate(this%inoc) call mem_deallocate(this%inobs) ! ! -- Parent class members @@ -974,14 +969,12 @@ subroutine allocate_scalars(this, modelname) 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%inoc, 'INOC ', this%memoryPath) call mem_allocate(this%inobs, 'INOBS', this%memoryPath) ! this%inmvt = 0 this%inmst = 0 this%indsp = 0 this%inssm = 0 - this%inoc = 0 this%inobs = 0 ! ! -- Return @@ -1152,7 +1145,6 @@ subroutine create_gwt_packages(this, indis) 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 @@ -1203,8 +1195,6 @@ subroutine create_gwt_packages(this, indis) mempathdsp = mempath case ('SSM6') this%inssm = inunit - case ('OC6') - this%inoc = inunit case ('OBS6') this%inobs = inunit case ('CNC6', 'SRC6', 'LKT6', 'SFT6', & @@ -1222,7 +1212,6 @@ subroutine create_gwt_packages(this, indis) 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 oc_cr(this%oc, this%name, this%inoc, this%iout) 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 239f3a2a5d1..08b36ee67c3 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 TspOcModule, only: TspOcType use BudgetModule, only: BudgetType use MatrixBaseModule @@ -28,10 +29,12 @@ 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(TspOcType), pointer :: oc => null() !< output control 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 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" @@ -285,11 +288,13 @@ 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%inoc, 'INOC ', this%memoryPath) call mem_allocate(this%eqnsclfac, 'EQNSCLFAC', this%memoryPath) ! this%inic = 0 this%infmi = 0 this%inadv = 0 + this%inoc = 0 this%eqnsclfac = DZERO ! ! -- Return @@ -340,6 +345,7 @@ subroutine tsp_da(this) call mem_deallocate(this%inic) call mem_deallocate(this%infmi) call mem_deallocate(this%inadv) + call mem_deallocate(this%inoc) call mem_deallocate(this%eqnsclfac) ! ! -- Return @@ -495,6 +501,7 @@ subroutine create_tsp_packages(this, indis) use TspIcModule, only: ic_cr use TspFmiModule, only: fmi_cr use TspAdvModule, only: adv_cr + use TspOcModule, only: oc_cr ! -- dummy class(TransportModelType) :: this integer(I4B), intent(inout) :: indis ! DIS enabled flag @@ -551,6 +558,8 @@ subroutine create_tsp_packages(this, indis) this%infmi = inunit case ('ADV6') this%inadv = inunit + case ('OC6') + this%inoc = inunit end select end do ! @@ -561,6 +570,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 oc_cr(this%oc, this%name, this%inoc, this%iout) + ! ! -- Return return diff --git a/src/Model/GroundWaterTransport/gwt1oc1.f90 b/src/Model/TransportModel/tsp1oc1.f90 similarity index 82% rename from src/Model/GroundWaterTransport/gwt1oc1.f90 rename to src/Model/TransportModel/tsp1oc1.f90 index d186d713259..df6b2f35873 100644 --- a/src/Model/GroundWaterTransport/gwt1oc1.f90 +++ b/src/Model/TransportModel/tsp1oc1.f90 @@ -1,4 +1,4 @@ -module GwtOcModule +module TspOcModule use BaseDisModule, only: DisBaseType use KindModule, only: DP, I4B @@ -8,29 +8,28 @@ module GwtOcModule implicit none private - public GwtOcType, oc_cr + public TspOcType, oc_cr - !> @ brief Output control for GWT + !> @ brief Output control !! - !! Concrete implementation of OutputControlType for the - !! GWT Model + !! Concrete implementation of OutputControlType for a + !! Transport Model !< - type, extends(OutputControlType) :: GwtOcType + type, extends(OutputControlType) :: TspOcType contains procedure :: oc_ar - end type GwtOcType + end type TspOcType contains - !> @ brief Create GwtOcType + !> @ brief Create TspOcType !! - !! Create by allocating a new GwtOcType object and initializing + !! Create by allocating a new TspOcType object and initializing !! member variables. - !! !< subroutine oc_cr(ocobj, name_model, inunit, iout) ! -- dummy - type(GwtOcType), pointer :: ocobj !< GwtOcType object + type(TspOcType), pointer :: ocobj !< TspOcType object character(len=*), intent(in) :: name_model !< name of the model integer(I4B), intent(in) :: inunit !< unit number for input integer(I4B), intent(in) :: iout !< unit number for output @@ -52,14 +51,13 @@ subroutine oc_cr(ocobj, name_model, inunit, iout) return end subroutine oc_cr - !> @ brief Allocate and read GwtOcType + !> @ brief Allocate and read TspOcType !! !! Setup concentration and budget as output control variables. - !! !< subroutine oc_ar(this, conc, dis, dnodata) ! -- dummy - class(GwtOcType) :: this !< GwtOcType object + class(TspOcType) :: this !< TspOcType object real(DP), dimension(:), pointer, contiguous, intent(in) :: conc !< model concentration class(DisBaseType), pointer, intent(in) :: dis !< model discretization package real(DP), intent(in) :: dnodata !< no data value @@ -97,4 +95,4 @@ subroutine oc_ar(this, conc, dis, dnodata) return end subroutine oc_ar -end module GwtOcModule +end module TspOcModule diff --git a/src/meson.build b/src/meson.build index d72ab2f9b7f..6151f7e7c34 100644 --- a/src/meson.build +++ b/src/meson.build @@ -104,7 +104,6 @@ modflow_sources = files( 'Model' / 'GroundWaterTransport' / 'gwt1mvt1.f90', 'Model' / 'GroundWaterTransport' / 'gwt1mwt1.f90', 'Model' / 'GroundWaterTransport' / 'gwt1obs1.f90', - 'Model' / 'GroundWaterTransport' / 'gwt1oc1.f90', 'Model' / 'GroundWaterTransport' / 'gwt1sft1.f90', 'Model' / 'GroundWaterTransport' / 'gwt1src1.f90', 'Model' / 'GroundWaterTransport' / 'gwt1ssm1.f90', @@ -134,6 +133,7 @@ modflow_sources = files( 'Model' / 'TransportModel' / 'tsp1adv1.f90', 'Model' / 'TransportModel' / 'tsp1fmi1.f90', 'Model' / 'TransportModel' / 'tsp1ic1.f90', + 'Model' / 'TransportModel' / 'tsp1oc1.f90', 'Model' / 'BaseModel.f90', 'Model' / 'ExplicitModel.f90', 'Model' / 'NumericalModel.f90',