diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index 33aa9f7..d303a0a --- a/.gitignore +++ b/.gitignore @@ -42,5 +42,8 @@ Makefile Raven Raven_errors.txt +# Directories +test/ + # JetBrains .idea diff --git a/RavenHydroFramework b/RavenHydroFramework new file mode 160000 index 0000000..c40065e --- /dev/null +++ b/RavenHydroFramework @@ -0,0 +1 @@ +Subproject commit c40065e9963ffd1251d5dc0c72c4c44cba35ba4e diff --git a/src/.depend b/src/.depend new file mode 100644 index 0000000..8d049f8 --- /dev/null +++ b/src/.depend @@ -0,0 +1,849 @@ +Abstraction.o: Abstraction.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h DepressionProcesses.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +Advection.o: Advection.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h Advection.h Model.h StateVariables.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + EnergyTransport.h +Assimilate.o: Assimilate.cpp RavenInclude.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +Baseflow.o: Baseflow.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SoilWaterMovers.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +CapillaryRise.o: CapillaryRise.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SoilWaterMovers.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +ChannelXSect.o: ChannelXSect.cpp ChannelXSect.h RavenInclude.h Model.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +ChemEquilibrium.o: ChemEquilibrium.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h ChemEquilibrium.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +CommonFunctions.o: CommonFunctions.cpp RavenInclude.h +ConstituentModel.o: ConstituentModel.cpp RavenInclude.h HydroProcessABC.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h Model.h StateVariables.h LateralExchangeABC.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h \ + HeatConduction.h EnergyTransport.h +ControlStructures.o: ControlStructures.cpp ControlStructures.h \ + RavenInclude.h StageDischargeRelations.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +Convolution.o: Convolution.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h Convolution.h +CropGrowth.o: CropGrowth.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h CropGrowth.h Model.h StateVariables.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +CustomOutput.o: CustomOutput.cpp CustomOutput.h RavenInclude.h ModelABC.h \ + Model.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +CustomTable.o: CustomTable.cpp CustomOutput.h RavenInclude.h ModelABC.h \ + Model.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +DDS.o: DDS.cpp ModelEnsemble.h RavenInclude.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +Decay.o: Decay.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h Decay.h Model.h StateVariables.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +DemandExpressionHandling.o: DemandExpressionHandling.cpp \ + DemandOptimization.h RavenInclude.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h Properties.h SoilAndLandClasses.h \ + GlobalParams.h SoilProfile.h LateralExchangeABC.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + LookupTable.h Demands.h Expression.h +DemandGroups.o: DemandGroups.cpp Demands.h RavenInclude.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Expression.h LookupTable.h +DemandOptimization.o: DemandOptimization.cpp DemandOptimization.h \ + RavenInclude.h Model.h ModelABC.h StateVariables.h HydroProcessABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + TransientParam.h Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h LookupTable.h Demands.h \ + Expression.h +DepressionProcesses.o: DepressionProcesses.cpp HydroProcessABC.h \ + RavenInclude.h ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h \ + GlobalParams.h SoilProfile.h DepressionProcesses.h Model.h \ + StateVariables.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + TransientParam.h Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +Diagnostics.o: Diagnostics.cpp TimeSeriesABC.h RavenInclude.h ParseLib.h \ + Diagnostics.h TimeSeries.h Forcings.h +Drain.o: Drain.cpp GWSWProcesses.h RavenInclude.h HydroProcessABC.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h GroundwaterModel.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +EnergyTransport.o: EnergyTransport.cpp RavenInclude.h EnergyTransport.h \ + Transport.h Model.h ModelABC.h StateVariables.h HydroProcessABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + TransientParam.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +EnKF.o: EnKF.cpp EnKF.h ModelEnsemble.h RavenInclude.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h Matrix.h +Evaporation.o: Evaporation.cpp RavenInclude.h Properties.h Radiation.h \ + HydroUnits.h ModelABC.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h Model.h StateVariables.h HydroProcessABC.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +Flush.o: Flush.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SoilWaterMovers.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +ForcingGrid.o: ForcingGrid.cpp ForcingGrid.h RavenInclude.h ParseLib.h \ + Forcings.h Model.h ModelABC.h StateVariables.h HydroProcessABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ModelEnsemble.h GroundwaterModel.h \ + GWSWProcesses.h Convolution.h DemandOptimization.h LookupTable.h \ + Demands.h Expression.h +Forcings.o: Forcings.cpp RavenInclude.h +FrozenLake.o: FrozenLake.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h FrozenLake.h Transport.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Diagnostics.h ForcingGrid.h ModelEnsemble.h GroundwaterModel.h \ + GWSWProcesses.h Convolution.h DemandOptimization.h LookupTable.h \ + Demands.h Expression.h EnergyTransport.h +Gauge.o: Gauge.cpp Gauge.h RavenInclude.h TimeSeries.h TimeSeriesABC.h \ + ParseLib.h Forcings.h +GlacierProcesses.o: GlacierProcesses.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h GlacierProcesses.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +GlobalParams.o: GlobalParams.cpp Properties.h RavenInclude.h \ + GlobalParams.h +GreenAmpt.o: GreenAmpt.cpp Model.h RavenInclude.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + Infiltration.h +GroundwaterModel.o: GroundwaterModel.cpp RavenInclude.h MFUSGpp.h \ + GroundwaterModel.h Model.h ModelABC.h StateVariables.h HydroProcessABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + TransientParam.h Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GWSWProcesses.h Convolution.h DemandOptimization.h LookupTable.h \ + Demands.h Expression.h GWRiverConnection.h +GWRecharge.o: GWRecharge.cpp GWSWProcesses.h RavenInclude.h \ + HydroProcessABC.h ModelABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h GroundwaterModel.h \ + Model.h StateVariables.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + TransientParam.h Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +GWRiverConnection.o: GWRiverConnection.cpp GWRiverConnection.h \ + RavenInclude.h GroundwaterModel.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h Properties.h SoilAndLandClasses.h \ + GlobalParams.h SoilProfile.h LateralExchangeABC.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h MFUSGpp.h +GWSWProcessABC.o: GWSWProcessABC.cpp GWSWProcesses.h RavenInclude.h \ + HydroProcessABC.h ModelABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h GroundwaterModel.h \ + Model.h StateVariables.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + TransientParam.h Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +HeatConduction.o: HeatConduction.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h HeatConduction.h Transport.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Diagnostics.h ForcingGrid.h ModelEnsemble.h GroundwaterModel.h \ + GWSWProcesses.h Convolution.h DemandOptimization.h LookupTable.h \ + Demands.h Expression.h +HRUGroups.o: HRUGroups.cpp HydroUnits.h RavenInclude.h ModelABC.h \ + Properties.h SoilAndLandClasses.h GlobalParams.h SoilProfile.h +HydroProcessABC.o: HydroProcessABC.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h StateVariables.h +HydroUnits.o: HydroUnits.cpp HydroUnits.h RavenInclude.h ModelABC.h \ + Properties.h SoilAndLandClasses.h GlobalParams.h SoilProfile.h \ + Forcings.h Radiation.h +Infiltration.o: Infiltration.cpp Model.h RavenInclude.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + Infiltration.h +Interflow.o: Interflow.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SoilWaterMovers.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +IrregularTimeSeries.o: IrregularTimeSeries.cpp IrregularTimeSeries.h \ + TimeSeriesABC.h RavenInclude.h ParseLib.h +IsotopeTransport.o: IsotopeTransport.cpp RavenInclude.h \ + IsotopeTransport.h Transport.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h Properties.h SoilAndLandClasses.h \ + GlobalParams.h SoilProfile.h LateralExchangeABC.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +LandUseClass.o: LandUseClass.cpp Properties.h RavenInclude.h \ + SoilAndLandClasses.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h GlobalParams.h SoilProfile.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +LatAdvection.o: LatAdvection.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h LatAdvection.h LateralExchangeABC.h Model.h \ + StateVariables.h SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h \ + ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +LatEquilibrate.o: LatEquilibrate.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h LateralExchangeABC.h Model.h StateVariables.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +LateralExchangeABC.o: LateralExchangeABC.cpp LateralExchangeABC.h \ + RavenInclude.h ModelABC.h Model.h StateVariables.h HydroProcessABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h \ + ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +LatFlush.o: LatFlush.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h LateralExchangeABC.h Model.h StateVariables.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +LookupTable.o: LookupTable.cpp LookupTable.h RavenInclude.h +MassLoading.o: MassLoading.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h MassLoading.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +MassRouting.o: MassRouting.cpp RavenInclude.h SubBasin.h HydroUnits.h \ + ModelABC.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h ChannelXSect.h Model.h StateVariables.h HydroProcessABC.h \ + LateralExchangeABC.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Gauge.h CustomOutput.h TransientParam.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +Matrix.o: Matrix.cpp Matrix.h RavenInclude.h +Model.o: Model.cpp Model.h RavenInclude.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h Properties.h SoilAndLandClasses.h \ + GlobalParams.h SoilProfile.h LateralExchangeABC.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h \ + EnergyTransport.h +ModelEnsemble.o: ModelEnsemble.cpp ModelEnsemble.h RavenInclude.h Model.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +ModelForcingGrids.o: ModelForcingGrids.cpp Model.h RavenInclude.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +ModelInitialize.o: ModelInitialize.cpp Model.h RavenInclude.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + IrregularTimeSeries.h HeatConduction.h +ModelParamCheck.o: ModelParamCheck.cpp Model.h RavenInclude.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +NetCDFReading.o: NetCDFReading.cpp RavenInclude.h +OpenWaterEvap.o: OpenWaterEvap.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h OpenWaterEvap.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +OrographicCorrections.o: OrographicCorrections.cpp Model.h RavenInclude.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +ParseEnsembleFile.o: ParseEnsembleFile.cpp RavenInclude.h Model.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + EnKF.h +ParseFEWSRunInfo.o: ParseFEWSRunInfo.cpp RavenInclude.h Model.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + EnKF.h +ParseGWFile.o: ParseGWFile.cpp RavenInclude.h Properties.h Model.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + GWRiverConnection.h +ParseHRUFile.o: ParseHRUFile.cpp RavenInclude.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +ParseInitialConditionFile.o: ParseInitialConditionFile.cpp RavenInclude.h \ + Model.h ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h \ + Properties.h SoilAndLandClasses.h GlobalParams.h SoilProfile.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h EnergyTransport.h +ParseInput.o: ParseInput.cpp RavenInclude.h Properties.h Model.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + Precipitation.h Infiltration.h SoilWaterMovers.h SnowMovers.h \ + VegetationMovers.h GlacierProcesses.h Albedo.h CropGrowth.h \ + DepressionProcesses.h OpenWaterEvap.h Advection.h MassLoading.h Decay.h \ + ChemEquilibrium.h LatAdvection.h PrairieSnow.h ProcessGroup.h \ + HeatConduction.h SurfaceEnergyExchange.h EnergyTransport.h FrozenLake.h \ + EnKF.h +ParseLib.o: ParseLib.cpp ParseLib.h RavenInclude.h +ParseLiveFile.o: ParseLiveFile.cpp RavenInclude.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +ParseManagementFile.o: ParseManagementFile.cpp RavenInclude.h Model.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +ParsePropertyFile.o: ParsePropertyFile.cpp RavenInclude.h Properties.h \ + Model.h ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +ParseTimeSeriesFile.o: ParseTimeSeriesFile.cpp RavenInclude.h Model.h \ + ModelABC.h StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + IrregularTimeSeries.h +PartitionPrecip.o: PartitionPrecip.cpp Model.h RavenInclude.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + Precipitation.h Infiltration.h +Percolation.o: Percolation.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SoilWaterMovers.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +PotentialMelt.o: PotentialMelt.cpp Model.h RavenInclude.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +PrairieSnow.o: PrairieSnow.cpp RavenInclude.h HydroUnits.h ModelABC.h \ + Properties.h SoilAndLandClasses.h GlobalParams.h SoilProfile.h \ + SubBasin.h ChannelXSect.h Model.h StateVariables.h HydroProcessABC.h \ + LateralExchangeABC.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Gauge.h CustomOutput.h TransientParam.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h PrairieSnow.h +ProcessGroup.o: ProcessGroup.cpp ProcessGroup.h RavenInclude.h \ + HydroProcessABC.h ModelABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h Model.h \ + StateVariables.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + TransientParam.h Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +Radiation.o: Radiation.cpp RavenInclude.h Radiation.h HydroUnits.h \ + ModelABC.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h Model.h StateVariables.h HydroProcessABC.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +Raven_BMI.o: Raven_BMI.cpp RavenInclude.h RavenMain.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + Raven_BMI.h BMI.h +RavenMain.o: RavenMain.cpp RavenInclude.h RavenMain.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + UnitTesting.h GracefulEndStandalone.h +Recharge.o: Recharge.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SoilWaterMovers.h GroundwaterModel.h Model.h \ + StateVariables.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + TransientParam.h Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GWSWProcesses.h Convolution.h DemandOptimization.h LookupTable.h \ + Demands.h Expression.h +Reservoir.o: Reservoir.cpp Reservoir.h RavenInclude.h ParseLib.h \ + HydroUnits.h ModelABC.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h TimeSeries.h TimeSeriesABC.h Forcings.h SubBasin.h \ + ChannelXSect.h Model.h StateVariables.h HydroProcessABC.h \ + LateralExchangeABC.h Gauge.h CustomOutput.h TransientParam.h Transport.h \ + Diagnostics.h ForcingGrid.h ModelEnsemble.h GroundwaterModel.h \ + GWSWProcesses.h Convolution.h DemandOptimization.h LookupTable.h \ + Demands.h Expression.h ControlStructures.h StageDischargeRelations.h +RiverReach.o: RiverReach.cpp RiverReach.h RavenInclude.h \ + GroundwaterModel.h Model.h ModelABC.h StateVariables.h HydroProcessABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h LateralExchangeABC.h SubBasin.h ChannelXSect.h \ + TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + TransientParam.h Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GWSWProcesses.h Convolution.h DemandOptimization.h LookupTable.h \ + Demands.h Expression.h +SnowAlbedo.o: SnowAlbedo.cpp HydroProcessABC.h RavenInclude.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h Albedo.h Model.h StateVariables.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +SnowBalance.o: SnowBalance.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SnowMovers.h Model.h StateVariables.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +SnowMeltRefreeze.o: SnowMeltRefreeze.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SnowMovers.h Model.h StateVariables.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +SnowParams.o: SnowParams.cpp Properties.h RavenInclude.h GlobalParams.h \ + HydroUnits.h ModelABC.h SoilAndLandClasses.h SoilProfile.h Model.h \ + StateVariables.h HydroProcessABC.h LateralExchangeABC.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +SnowTempEvolve.o: SnowTempEvolve.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SnowMovers.h Model.h StateVariables.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +SoilBalance.o: SoilBalance.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SoilWaterMovers.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +SoilClass.o: SoilClass.cpp Properties.h RavenInclude.h \ + SoilAndLandClasses.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h GlobalParams.h SoilProfile.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +SoilEvaporation.o: SoilEvaporation.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SoilWaterMovers.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +SoilParams.o: SoilParams.cpp Properties.h RavenInclude.h \ + SoilAndLandClasses.h +SoilProfile.o: SoilProfile.cpp Properties.h RavenInclude.h \ + SoilAndLandClasses.h SoilProfile.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h GlobalParams.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +Solvers.o: Solvers.cpp RavenInclude.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h Properties.h SoilAndLandClasses.h \ + GlobalParams.h SoilProfile.h LateralExchangeABC.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h \ + GWRiverConnection.h +SparseMatrix.o: SparseMatrix.cpp SparseMatrix.h RavenInclude.h +StageDischargeRelations.o: StageDischargeRelations.cpp RavenInclude.h \ + StageDischargeRelations.h +StandardOutput.o: StandardOutput.cpp Model.h RavenInclude.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +StateVariables.o: StateVariables.cpp RavenInclude.h StateVariables.h \ + Transport.h Model.h ModelABC.h HydroProcessABC.h HydroUnits.h \ + Properties.h SoilAndLandClasses.h GlobalParams.h SoilProfile.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Diagnostics.h ForcingGrid.h ModelEnsemble.h GroundwaterModel.h \ + GWSWProcesses.h Convolution.h DemandOptimization.h LookupTable.h \ + Demands.h Expression.h +SubBasin.o: SubBasin.cpp SubBasin.h RavenInclude.h HydroUnits.h \ + ModelABC.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h ChannelXSect.h Model.h StateVariables.h HydroProcessABC.h \ + LateralExchangeABC.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Gauge.h CustomOutput.h TransientParam.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +SubbasinGroups.o: SubbasinGroups.cpp SubBasin.h RavenInclude.h \ + HydroUnits.h ModelABC.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h ChannelXSect.h Model.h StateVariables.h HydroProcessABC.h \ + LateralExchangeABC.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Gauge.h CustomOutput.h TransientParam.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h +Sublimation.o: Sublimation.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h SnowMovers.h Model.h StateVariables.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +SurfaceEnergyExchange.o: SurfaceEnergyExchange.cpp \ + SurfaceEnergyExchange.h RavenInclude.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + EnergyTransport.h +TerrainClass.o: TerrainClass.cpp Properties.h RavenInclude.h \ + SoilAndLandClasses.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h GlobalParams.h SoilProfile.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +TimeSeriesABC.o: TimeSeriesABC.cpp TimeSeriesABC.h RavenInclude.h \ + ParseLib.h +TimeSeries.o: TimeSeries.cpp TimeSeries.h TimeSeriesABC.h RavenInclude.h \ + ParseLib.h Forcings.h +Transformation.o: Transformation.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h Decay.h Model.h StateVariables.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h +TransientParam.o: TransientParam.cpp TransientParam.h RavenInclude.h \ + Properties.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + SoilAndLandClasses.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h GlobalParams.h SoilProfile.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h Reservoir.h \ + ControlStructures.h StageDischargeRelations.h Gauge.h CustomOutput.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +Transport.o: Transport.cpp RavenInclude.h HydroProcessABC.h ModelABC.h \ + HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h Model.h StateVariables.h LateralExchangeABC.h SubBasin.h \ + ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h Forcings.h \ + Reservoir.h ControlStructures.h StageDischargeRelations.h Gauge.h \ + CustomOutput.h TransientParam.h Transport.h Diagnostics.h ForcingGrid.h \ + ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h Convolution.h \ + DemandOptimization.h LookupTable.h Demands.h Expression.h \ + HeatConduction.h EnergyTransport.h IsotopeTransport.h +UnitTesting.o: UnitTesting.cpp RavenInclude.h Model.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + Radiation.h UnitTesting.h +UpdateForcings.o: UpdateForcings.cpp Model.h RavenInclude.h ModelABC.h \ + StateVariables.h HydroProcessABC.h HydroUnits.h Properties.h \ + SoilAndLandClasses.h GlobalParams.h SoilProfile.h LateralExchangeABC.h \ + SubBasin.h ChannelXSect.h TimeSeries.h TimeSeriesABC.h ParseLib.h \ + Forcings.h Reservoir.h ControlStructures.h StageDischargeRelations.h \ + Gauge.h CustomOutput.h TransientParam.h Transport.h Diagnostics.h \ + ForcingGrid.h ModelEnsemble.h GroundwaterModel.h GWSWProcesses.h \ + Convolution.h DemandOptimization.h LookupTable.h Demands.h Expression.h \ + Radiation.h +UTM_to_LatLong.o: UTM_to_LatLong.cpp RavenInclude.h +VegetationClass.o: VegetationClass.cpp Properties.h RavenInclude.h \ + SoilAndLandClasses.h Model.h ModelABC.h StateVariables.h \ + HydroProcessABC.h HydroUnits.h GlobalParams.h SoilProfile.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +VegetationMovers.o: VegetationMovers.cpp HydroProcessABC.h RavenInclude.h \ + ModelABC.h HydroUnits.h Properties.h SoilAndLandClasses.h GlobalParams.h \ + SoilProfile.h VegetationMovers.h SnowMovers.h Model.h StateVariables.h \ + LateralExchangeABC.h SubBasin.h ChannelXSect.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Reservoir.h ControlStructures.h \ + StageDischargeRelations.h Gauge.h CustomOutput.h TransientParam.h \ + Transport.h Diagnostics.h ForcingGrid.h ModelEnsemble.h \ + GroundwaterModel.h GWSWProcesses.h Convolution.h DemandOptimization.h \ + LookupTable.h Demands.h Expression.h +VegetationParams.o: VegetationParams.cpp Properties.h RavenInclude.h \ + SoilAndLandClasses.h HydroUnits.h ModelABC.h GlobalParams.h \ + SoilProfile.h +WaterDemands.o: WaterDemands.cpp Demands.h RavenInclude.h TimeSeries.h \ + TimeSeriesABC.h ParseLib.h Forcings.h Expression.h LookupTable.h diff --git a/src/EnergyTransport.cpp b/src/EnergyTransport.cpp old mode 100644 new mode 100755 index 0db1720..e09d917 --- a/src/EnergyTransport.cpp +++ b/src/EnergyTransport.cpp @@ -235,6 +235,7 @@ void CEnthalpyModel::SetBedTemperature(const int p,const double &val) { _aBedTemp[p]=val; } + ////////////////////////////////////////////////////////////////// /// \brief Set hyporheic layer index /// \param m [in] soil layer @@ -246,73 +247,89 @@ void CEnthalpyModel::SetHyporheicLayer(const int m) } _mHyporheic=m; } + ////////////////////////////////////////////////////////////////// /// \brief Calculates individual energy gain terms from lake/reservoir over current time step -/// \param p subbasin index -/// \param Q_sens [out] energy gain from convective/sensible heating [MJ/d] -/// \param Q_cond [out] energy gain from conductive exchange with bed [MJ/d] -/// \param Q_lat [out] energy gain from latent heat exchange [MJ/d] -/// \param Q_rad [out] energy gain from SW/LW radiation at surface [MJ/d] -/// \param Q_lw_out [out] (negative) energy gain from -/// \param Q_rain [out] energy gain from precip inputs [MJ/d] -/// \returns total energy lost from reach over current time step [MJ] +/// \param p [in] subbasin index +/// \param Q_sens [out] energy gain from convective/sensible heating [MJ/d] +/// \param Q_conv [out] energy gain from convective exchange between layers [MJ/d] +/// \param Q_lat [out] energy gain from latent heat exchange [MJ/d] +/// \param Q_sw_in [out] energy gain from incoming SW radiation at surface [MJ/d] +/// \param Q_lw_in [out] energy gain from incoming LW radiation at surface [MJ/d] +/// \param Q_lw_out[out] (negative) energy gain from LW radiation at surface [MJ/d] +/// \param Q_rain [out] energy gain from precip inputs [MJ/d] +/// \param Q_adv [out] energy gain advective heat exchange between layers [MJ/d] +/// \param kdiff [out] coefficient controlling convection between layers [MJ/m2/d/K] +/// \returns total energy lost from lake/reservoir over current time step [MJ] // -double CEnthalpyModel::GetEnergyLossesFromLake(const int p, double &Q_sens, double &Q_cond, double &Q_lat, double &Q_sw_in, double &Q_lw_in, double &Q_lw_out, double &Q_rain) const +double CEnthalpyModel::GetEnergyLossesFromLake(const int p, + double &Q_sens, + double &Q_conv, + double &Q_lat, + double &Q_sw_in, + double &Q_lw_in, + double &Q_lw_out, + double &Q_rain, + double &Q_adv, + double &kdiff) const { double tstep = _pModel->GetOptStruct()->timestep; CSubBasin *pBasin = _pModel->GetSubBasin(p); CReservoir *pRes = _pModel->GetSubBasin(p)->GetReservoir(); if (pRes==NULL){return 0.0;} + CHydroUnit* pHRU=_pModel->GetHydroUnit(pRes->GetHRUIndex()); double V_new = pRes->GetStorage(); - double V_old = pRes->GetOldStorage(); - double Q_new = pRes->GetOutflowRate() * SEC_PER_DAY; - double Q_old = pRes->GetOldOutflowRate() * SEC_PER_DAY; double A_new = pRes->GetSurfaceArea(); - double A_old = pRes->GetOldSurfaceArea(); - double A_avg = 0.5 * (A_new + A_old); - - CHydroUnit* pHRU=_pModel->GetHydroUnit(pRes->GetHRUIndex()); + double V_h_new = pRes->GetHypolimnionStorage(); + double V_h_old = pRes->GetOldHypolimnionStorage(); + double V_e_new = V_new-V_h_new; + double A_h_new = pRes->GetMixingArea(); + double zm = pRes->GetMixingDepth(); + + double Q_dn_new(0),Q_up_new(0); + double Q_vert = (V_h_new - V_h_old)/tstep; + if (Q_vert> 0){ + Q_dn_new = Q_vert; Q_up_new = 0.0; + } else { + Q_dn_new = 0.0; Q_up_new = -Q_vert; + } double Acorr=1.0; - double SW(0), LW(0), LW_in(0), temp_air(0), AET(0); - double hstar(0),ksed(0),Vsed=0.001; - double T_new =ConvertVolumetricEnthalpyToTemperature(_aMres[p] / V_new); - double T_old =ConvertVolumetricEnthalpyToTemperature(_aMres_last[p] / V_old); - double Ts_new=ConvertVolumetricEnthalpyToTemperature(_aMsed[p] / Vsed ); - double Ts_old=ConvertVolumetricEnthalpyToTemperature(_aMsed_last[p] / Vsed ); - - if(pHRU!=NULL) { //otherwise only simulate advective mixing+ rain input - - Acorr =pHRU->GetArea()*M2_PER_KM2/A_avg; //handles the fact that GetAET() returns mm/d normalized by HRU area, not actual area - - temp_air =pHRU->GetForcingFunctions()->temp_ave; //[C] - SW =pHRU->GetForcingFunctions()->SW_radia_net; //[MJ/m2/d] - not using canopy correction! - LW_in =pHRU->GetForcingFunctions()->LW_incoming; //[MJ/m2/d] - - LW =-STEFAN_BOLTZ*EMISS_WATER*0.5*(pow(T_new+ZERO_CELSIUS,4)+pow(T_old+ZERO_CELSIUS,4)); - - AET =pRes->GetAET()*Acorr/ MM_PER_METER ; //[m/d] //*pHRU->GetArea()/A_avg - - hstar = pRes->GetLakeConvectionCoeff(); //[MJ/m2/d/K] - Vsed = pRes->GetLakebedThickness() * pHRU->GetArea()*M2_PER_KM2; - ksed = pRes->GetLakebedConductivity() / 0.5 / pRes->GetLakebedThickness();//[MJ/m2/d/K] + double hstar(0), ksed(0), Vsed=0.001; + double T_new =ConvertVolumetricEnthalpyToTemperature(_aMres[p] / V_e_new); + double Ts_new=ConvertVolumetricEnthalpyToTemperature(_aMsed[p] / V_h_new ); + + if(pHRU!=NULL) { //otherwise only simulate advective mixing+rain input + Acorr =pHRU->GetArea()*M2_PER_KM2/A_new; //handles the fact that GetAET() returns mm/d normalized by HRU area, not actual area + temp_air =pHRU->GetForcingFunctions()->temp_ave; //[C] + SW =pHRU->GetForcingFunctions()->SW_radia_net; //[MJ/m2/d] - not using canopy correction! + LW_in =pHRU->GetForcingFunctions()->LW_incoming; //[MJ/m2/d] + LW =-STEFAN_BOLTZ*EMISS_WATER*pow(T_new+ZERO_CELSIUS,4); //[MJ/m2/d] + AET =pRes->GetAET()*Acorr/ MM_PER_METER ; //[m/d] //*pHRU->GetArea()/A_avg + hstar =pRes->GetLakeConvectionCoeff(); //[MJ/m2/d/K] + Vsed =pRes->GetLakebedThickness() * pHRU->GetArea()*M2_PER_KM2; + ksed =pRes->GetLakebedConductivity() / 0.5 / pRes->GetLakebedThickness(); //[MJ/m2/d/K] } - - Q_sens =hstar* A_avg * (temp_air -0.5*(T_new+T_old)); - Q_cond =ksed * A_avg * (0.5*(Ts_new+Ts_old)- 0.5*(T_new+T_old)); - Q_sw_in =(SW )*A_avg; - Q_lw_in =(LW_in )*A_avg; - Q_lw_out=(LW )*A_avg; - Q_lat =-(AET * DENSITY_WATER * LH_VAPOR)*A_avg; - Q_rain =_aMresRain[p]; - - return -(Q_sens + Q_cond + Q_sw_in + Q_lw_in + Q_lw_out + Q_lat + Q_rain) * tstep; //[MJ] + kdiff = pRes->GetLakeLyrConvectionCoeff(); //[MJ/m2/d/K] + + Q_sens =hstar * A_new * (temp_air - T_new); //[MJ/d] + Q_conv =kdiff * A_h_new * (Ts_new - T_new); //[MJ/d] + Q_sw_in =(SW )*A_new; //[MJ/d] + Q_lw_in =(LW_in )*A_new; //[MJ/d] + Q_lw_out=(LW )*A_new; //[MJ/d] + Q_lat =-(AET * DENSITY_WATER * LH_VAPOR)*A_new; //[MJ/d] + Q_rain =_aMresRain[p]; //[MJ/d] + Q_adv = (Q_up_new*_aMsed[p]/V_e_new - Q_dn_new*_aMres[p]/V_h_new); //[MJ/d] + + //return -(Q_sens + Q_cond + Q_sw_in + Q_lw_in + Q_lw_out + Q_lat + Q_rain) * tstep; //[MJ] + return -(Q_sens + Q_sw_in + Q_lw_in + Q_lw_out + Q_lat + Q_rain) * tstep; //[MJ] } + ////////////////////////////////////////////////////////////////// -/// \brief Calculates Res_mass (total reservoir energ) and ResSedMass (total sediment energy) in basin with reservoir at end of time step +/// \brief Calculates Res_mass (total reservoir energy) and ResSedMass (total sediment energy) in basin with reservoir at end of time step /// /// \param p [in] subbasin index /// \param aMout_new[] [in] Array of energy outflows at downstream end of each segment at end of current timestep [MJ/d] [size: nsegs] @@ -322,7 +339,7 @@ double CEnthalpyModel::GetEnergyLossesFromLake(const int p, double &Q_sens, doub /// \param tt [in] Time structure // void CEnthalpyModel::RouteMassInReservoir (const int p, // SB index - const double *aMout_new, // [MJ/d][size: nsegs ] + const double *aMout_new, // [MJ/d][size: nsegs] double &Res_mass, // [MJ] double &ResSedMass, // [MJ] const optStruct &Options, @@ -332,48 +349,138 @@ void CEnthalpyModel::RouteMassInReservoir (const int p, // CReservoir* pRes = _pModel->GetSubBasin(p)->GetReservoir(); int nSegments = _pModel->GetSubBasin(p)->GetNumSegments(); - double V_new=pRes->GetStorage (); - double V_old=pRes->GetOldStorage (); - double Q_new=pRes->GetOutflowRate ()*SEC_PER_DAY; - double Q_old=pRes->GetOldOutflowRate()*SEC_PER_DAY; - double A_new=pRes->GetSurfaceArea(); - double A_old=pRes->GetOldSurfaceArea(); - double A_avg=0.5*(A_new+A_old); - double tstep=Options.timestep; - + double V_new = pRes->GetStorage(); + double V_old = pRes->GetOldStorage(); + if((V_old<=0.0) || (V_new<=0.0)) { Res_mass=ResSedMass=0.0; return;} //handles dried out reservoir/lake + + double V_h_new = pRes->GetHypolimnionStorage(); + double V_h_old = pRes->GetOldHypolimnionStorage(); + double V_e_new = V_new-V_h_new; + double V_e_old = V_old-V_h_old; + double Q_new = pRes->GetOutflowRate() * SEC_PER_DAY; + double Q_old = pRes->GetOldOutflowRate() * SEC_PER_DAY; + double Q_dn_old = pRes->GetOldDownwardFlowRate(); + double Q_up_old = pRes->GetOldUpwardFlowRate(); + double A_new = pRes->GetSurfaceArea(); + double A_old = pRes->GetOldSurfaceArea(); + double A_avg = 0.5 * (A_new + A_old); + double A_h_new = pRes->GetMixingArea(); + double A_h_old = pRes->GetOldMixingArea(); + double A_h_avg = 0.5 * (A_h_new + A_h_old); + double zm = pRes->GetMixingDepth(); + double kdiff_max = _pModel->GetGlobalParams()->GetParams()->lake_lyr_conv_coeff_max; + + double tstep=Options.timestep; + + double Q_dn_new(0), Q_up_new(0); + double Q_vert = (V_h_new - V_h_old)/tstep; + if (Q_vert> 0){ + Q_dn_new = Q_vert; Q_up_new = 0.0; + } else { + Q_dn_new = 0; Q_up_new = -Q_vert; + } CHydroUnit* pHRU=_pModel->GetHydroUnit(pRes->GetHRUIndex()); - double Acorr=1.0; - - double T_old =ConvertVolumetricEnthalpyToTemperature(_aMres_last[p]/V_old); + double T_old =ConvertVolumetricEnthalpyToTemperature(_aMres[p]/V_e_old); + double Ts_old =ConvertVolumetricEnthalpyToTemperature(_aMsed[p]/V_h_old); double SW(0), LW(0), LW_in(0), temp_air(0), AET(0); - double hstar(0), ksed(0), Vsed=0.001; + double hstar(0); // ksed=0.0, Vsed=0.001; + double dens_e(0), dens_h(0); //Water density in each layer [kg/m3] + double N2 = 5.0E-12; //Brunt-Väisälä frequency when dens_e >= dens_h [1/s2] + if(pHRU!=NULL) { //otherwise only simulate advective mixing+ rain input - Acorr =pHRU->GetArea()*M2_PER_KM2/A_avg; //handles the fact that GetAET() returns mm/d normalized by HRU area, not actual area - - temp_air =pHRU->GetForcingFunctions()->temp_ave; //[C] - SW =pHRU->GetForcingFunctions()->SW_radia_net; //[MJ/m2/d] - LW_in =pHRU->GetForcingFunctions()->LW_incoming; //[MJ/m2/d] - - LW =-STEFAN_BOLTZ*EMISS_WATER*pow(T_old+ZERO_CELSIUS,4); //[MJ/m2/d] //TMP DEBUG -time-lagged - should include in the N-R formulation - - AET =pRes->GetAET()*Acorr/ MM_PER_METER ; //[m/d] - - Vsed =pRes->GetLakebedThickness() * pHRU->GetArea()*M2_PER_KM2; - hstar =pRes->GetLakeConvectionCoeff(); //[MJ/m2/d/K] - ksed =pRes->GetLakebedConductivity()/0.5/ pRes->GetLakebedThickness();//[MJ/m2/d/K] + Acorr =pHRU->GetArea()*M2_PER_KM2/A_avg; //handles the fact that GetAET() returns mm/d normalized by HRU area, not actual area + temp_air =pHRU->GetForcingFunctions()->temp_ave; //[C] + SW =pHRU->GetForcingFunctions()->SW_radia_net; //[MJ/m2/d] + LW_in =pHRU->GetForcingFunctions()->LW_incoming; //[MJ/m2/d] + LW =-STEFAN_BOLTZ*EMISS_WATER*pow(T_old+ZERO_CELSIUS,4); //[MJ/m2/d] //TMP DEBUG -time-lagged - should include in the N-R formulation + AET =pRes->GetAET()*Acorr/ MM_PER_METER ; //[m/d] +// Vsed =pRes->GetLakebedThickness() * pHRU->GetArea()*M2_PER_KM2; + hstar =pRes->GetLakeConvectionCoeff(); //[MJ/m2/d/K] +// ksed =pRes->GetLakebedConductivity()/0.5/ pRes->GetLakebedThickness();//[MJ/m2/d/K] } - - double T_sed_old=ConvertVolumetricEnthalpyToTemperature(_aMsed_last[p]/Vsed); - - // N-R solution of Crank-nicolson problem as set of two non-linear algebraic equations + + //Water density in each layer as a function of water temperature. Reference: + // (Hostetler and Bartlein, 1990) + double a0 = -1.954e-5; + dens_e = DENSITY_WATER*(1.0+a0*pow(abs((T_old + ZERO_CELSIUS)-277.0),1.68)); + dens_h = DENSITY_WATER*(1.0+a0*pow(abs((Ts_old + ZERO_CELSIUS)-277.0),1.68)); + + //Estimate layer thicknesses + double Ze = V_e_old/A_old; //Average epilimnion thickness [m] + double Zh = V_h_old/A_h_old; //Average hypolimnion thickness [m] + double Zc = (Ze+Zh)/2.0; //Characteristic length [m] + + //Estimate density gradient dp/dz over length Zc, and Brunt-Väisälä frequency across + // the thermocline depth (Jennings et al. 2012) + if(dens_e Vertical convection coefficient as function of N2 (Quay et el. 1980; Figure 10) + //double vdiff(0.0), kdiff(0.0); + //double m = -0.65; + //double b = -3.1; + //vdiff = pow(10,m*log10(N2)+b)/100/100; + //kdiff = vdiff*HCP_WATER*SEC_PER_DAY; + ///////////////// + + /// Option 2 --> kdiff = md*(Ke+Ked+Km) as per Community Land Model v5 (Lawrence et al, 2020) + double u2 = pHRU->GetForcingFunctions()->wind_vel; + double kstar = 0.0; + double wstar = 0.0; //Surface friction velocity [m/s] + double Ri = 0.0; //Richardson number + double Ke(0.0),Ked(0.0),Km(0.0),kdiff(0.0); //Diffusion coefficient [MJ/m2/K/d] + double md = 1.0; //Diffusion scaling factor in each layer + + //Molecular diffusion coefficient, Km can be calculated as per Community Land Model v5 + // (Lawrence et al, 2020) + Km = TC_WATER/HCP_WATER; // [m2/d] + + //Wind-driven eddy diffusion coefficient, Ke, calculated as per per Community Land + //Model v5 (Lawrence et al, 2020) + if(T_old > FREEZING_TEMP){ + wstar = 0.0012*u2; //Surface friction velocity [m/s] + kstar = 6.6*pow(u2, -1.84) * sqrt(abs(sin(pHRU->GetLatRad()))); + Ri = 40.0*N2*pow(VON_KARMAN,2.0)*pow(zm,2.0); + Ri /= pow(wstar,2.0); + Ri /= exp(-2*kstar*zm); + Ri += 1.0; + Ri = (-1 + sqrt(Ri))/20.0; // Richardson number + if(Ri < 1e+20){ + Ke = VON_KARMAN*wstar*zm/(1.0 + 37.0*pow(Ri,2.0)) * exp(-kstar*zm); //[m2/s] + Ke *= SEC_PER_DAY; //[m2/d] + } + } + + //Enhanced diffusivity intended to represent unresolved mixing processes + if (N2 >= 7.5e-5){ + Ked = 1.04e-8 * pow(N2,-0.43)*SEC_PER_DAY; //[m2/d] + } + + //Increase the overall diffusivity for large lakes, intended to represent + //3-dimensional mixing processes such as caused by horizontal temperature + // gradient. Calculated as per Community Land Model v5 (Lawrence et al, 2020) + if ((Ze+Zh) >= 25.0){ + //md = 10.0; //Diffusion scaling factor + md = 1.0; + } + + //Final diffusion coefficient + kdiff = threshMin(md*(Ke+Ked+Km)*HCP_WATER, kdiff_max, 0.0); //[MJ/m2/K/d] + //////////////////////////////// + + pRes->SetLakeLyrConvectionCoeff(kdiff); + + // N-R solution of Crank-nicolson problem as set of two non-linear algebraic equations [A][E]=[B] // ----------------------------------------------------------------------------------------- - //dE /dt=Qh_in-Qh_out+(Rnet*A+P*hrain*A)-ET*rho*LH*A+k*(Tair-T(E))*A+ksed*(Tsed-T(E))*A //[MJ/d] - //dEsed/dt= -ksed*(Tsed-T(E))*A //[MJ/d] - // + //dEe/dt = Qh_in - Qh_out - Qdn*Ee/Ve + Qup*Eh/Vh + As*(Rnet+Phrain-ET*rho*LH) + As*k*(Tair-Te) + Ah*kdiff*(Th-Te) // [MJ/d] + //dEh/dt = Qdn*Ee/Ve – Qup*Eh/Vh + Ah*kdiff*(Te-Th) // [MJ/d] + //Allocate memory double *B=new double [2]; double *R=new double [2]; @@ -386,76 +493,113 @@ void CEnthalpyModel::RouteMassInReservoir (const int p, // for (int j = 0; j < 2; j++) {A[i][j]=J[i][j]=0.0;} } - B[0] = 0.5*(aMout_new[nSegments-1]+_aMout[p][nSegments-1])*tstep; // inflow [MJ] - B[0]+=_aMresRain[p]*tstep; // rainfall inputs [MJ] - B[0]+= A_avg *(SW+LW_in)*tstep; // net incoming radiation [MJ] - B[0]+= A_avg *(LW )*tstep; // net outgoing radiation [MJ] - B[0]-= A_avg *(AET*DENSITY_WATER*LH_VAPOR)*tstep; // latent heat [MJ] - B[0]+= A_avg *(hstar*temp_air)*tstep; // sensible heat exhange [MJ] - - B[0]+=(1.0-0.5*tstep/V_old*Q_old)*_aMres_last[p]; - B[0]-=0.5*tstep*hstar*A_old*T_old; - B[0]-=0.5*tstep*ksed *A_avg*T_old; - B[0]+=0.5*tstep*ksed *A_avg*T_sed_old; - - B[1] =0.5*tstep*ksed *A_avg*T_old; - B[1]+=_aMsed_last[p]-0.5*tstep*ksed *A_avg*T_sed_old; + //Constants matrix + B[0] = 0.5*(aMout_new[nSegments-1]+_aMout[p][nSegments-1])*tstep; // inflow [MJ] + B[0]+=(1.0-0.5*tstep/V_e_old*Q_old)*_aMres[p]; // outflow [MJ] + B[0]+=_aMresRain[p]*tstep; // rainfall inputs [MJ] + B[0]+= A_avg*(SW+LW_in)*tstep; // net incoming radiation [MJ] + B[0]+= A_avg*(LW )*tstep; // net outgoing radiation [MJ] + B[0]-= A_avg*(AET*DENSITY_WATER*LH_VAPOR)*tstep; // latent heat [MJ] + B[0]+= A_avg*hstar*(temp_air-0.5*T_old)*tstep; // sensible heat exhange [MJ] + B[0]+=0.5*kdiff*A_h_avg*(Ts_old-T_old)*tstep; // diffusive heat exchange [MJ] + B[0]-=0.5*tstep/V_e_old*Q_dn_old*_aMres[p]*tstep; // downward advection [MJ] + B[0]+=0.5*Q_up_old/V_h_old*_aMsed[p]*tstep; // upward advection [MJ] + + B[1] =0.5*kdiff*A_h_avg*(T_old-Ts_old)*tstep; // diffusive heat exchange [MJ] + B[1]+=0.5/V_e_old*Q_dn_old*_aMres[p]*tstep; // downward advection [MJ] + B[1]+=(1-0.5*tstep/V_h_old*Q_up_old)*_aMsed[p]; // upward advection [MJ] int iter=0; double change=ALMOST_INF; - double tolerance=1e-2; //[deg C] + double tolerance=1e-2; //[deg C] double T_guess,Ts_guess; double dE,dEs; - double E_guess =_aMres_last[p]; - double Es_guess =_aMsed_last[p]; + double E_guess =_aMres[p]; + double Es_guess =_aMsed[p]; while (change > tolerance) { - T_guess = ConvertVolumetricEnthalpyToTemperature(E_guess/V_new); - Ts_guess= ConvertVolumetricEnthalpyToTemperature(Es_guess/Vsed); + T_guess = ConvertVolumetricEnthalpyToTemperature(E_guess /V_e_new); + Ts_guess= ConvertVolumetricEnthalpyToTemperature(Es_guess/V_h_new); - A[0][0] = 1.0 + 0.5 * tstep * Q_new/V_new; - A[1][1] = 1.0; - A[1][0] = 0.0; - A[0][1] = 0.0; + A[0][0] = 1.0 + 0.5*tstep*(Q_new + Q_dn_new)/V_e_new; + A[1][1] = 1.0 + 0.5*tstep*Q_up_new/V_h_new; + A[1][0]-= 0.5*tstep*Q_dn_new/V_e_new; + A[0][1]-= 0.5*tstep*Q_up_new/V_h_new; if (E_guess!=0.0){ - A[0][0]+= 0.5*tstep*hstar*A_new*T_guess/E_guess; - A[0][0]+= 0.5*tstep*ksed *A_avg*T_guess/E_guess; //[MJ/m2/d/K]*[m2]/[MJ/m3/K] = [m3/d] - A[1][0]-= 0.5*tstep*ksed *A_avg*T_guess/E_guess; + A[0][0]+= 0.5*tstep*hstar*A_avg* T_guess/E_guess; + A[0][0]+= 0.5*tstep*kdiff*A_h_avg*T_guess/E_guess; + A[1][0]-= 0.5*tstep*kdiff*A_h_avg*T_guess/E_guess; } if (Es_guess!=0.0){ - A[0][1]-= 0.5*tstep*ksed *A_avg*Ts_guess/Es_guess; - A[1][1]+= 0.5*tstep*ksed *A_avg*Ts_guess/Es_guess; + A[0][1]-= 0.5*tstep*kdiff*A_h_avg*Ts_guess/Es_guess; + A[1][1]+= 0.5*tstep*kdiff*A_h_avg*Ts_guess/Es_guess; } //J_ij=A_ij+E*dA_ij/dE = Jacobian - J[0][0]=A[0][0]+0.5*tstep*(hstar*A_new+ksed*A_avg) * (TemperatureEnthalpyDerivative(E_guess /V_new)/ V_new); - J[0][1]=A[0][1]-0.5*tstep*( ksed*A_avg) * (TemperatureEnthalpyDerivative(Es_guess/Vsed )/ Vsed ); - J[1][0]=A[1][0]-0.5*tstep*( ksed*A_avg) * (TemperatureEnthalpyDerivative(E_guess /V_new)/ V_new); - J[1][1]=A[1][1]+0.5*tstep*( ksed*A_avg) * (TemperatureEnthalpyDerivative(Es_guess/Vsed )/ Vsed ); + J[0][0]=A[0][0]+0.5*tstep*(hstar*A_avg+kdiff*A_h_avg) * (TemperatureEnthalpyDerivative(E_guess /V_e_new)/V_e_new); + J[0][1]=A[0][1]-0.5*tstep*( kdiff*A_h_avg) * (TemperatureEnthalpyDerivative(Es_guess/V_h_new)/V_h_new ); + J[1][0]=A[1][0]-0.5*tstep*( kdiff*A_h_avg) * (TemperatureEnthalpyDerivative(E_guess /V_e_new)/V_e_new); + J[1][1]=A[1][1]+0.5*tstep*( kdiff*A_h_avg) * (TemperatureEnthalpyDerivative(Es_guess/V_h_new)/V_h_new ); - R[0] =-A[0][0]*E_guess-A[0][1]*Es_guess+B[0]; - R[1] =-A[1][0]*E_guess-A[1][1]*Es_guess+B[1]; + R[0] = -A[0][0]*E_guess-A[0][1]*Es_guess+B[0]; + R[1] = -A[1][0]*E_guess-A[1][1]*Es_guess+B[1]; //invert 2x2 matrix analytically double den= (J[0][1]*J[1][0]-J[0][0]*J[1][1]); dE = (J[0][1]*R[1]-J[1][1]*R[0])/den; dEs = (J[1][0]*R[0]-J[0][0]*R[1])/den; - change =sqrt(dE*dE+dEs*dEs)/ V_new / HCP_WATER; //convert to approx temp difference (for >0C water) + change =sqrt(dE*dE+dEs*dEs)/V_new/HCP_WATER; //convert to approx temp difference (for >0C water) E_guess +=dE; Es_guess +=dEs; iter++; - //if (iter>2){cout<<"iter: "<2){cout<<"iter: "<25){ + // Estimate from most recent known values and best guess for current temperatures + T_guess = ConvertVolumetricEnthalpyToTemperature(_aMres[p]/V_e_new); + Ts_guess= ConvertVolumetricEnthalpyToTemperature(_aMsed[p]/V_h_new); + dE = aMout_new[nSegments-1]*tstep; // inflow [MJ] + dE -= Q_new/V_e_new*_aMres[p]*tstep; // outflow [MJ] + dE -= Q_dn_new/V_e_new*_aMres[p]*tstep; // downward advection [MJ] + dE += Q_up_new/V_h_new*_aMsed[p]*tstep; // upward advection [MJ] + dE += _aMresRain[p]*tstep; // rainfall inputs [MJ] + LW = -STEFAN_BOLTZ*EMISS_WATER*pow(T_guess+ZERO_CELSIUS,4); + dE += A_new*(SW+LW_in+LW)*tstep; // net radiation [MJ] + dE -= A_new*(AET*DENSITY_WATER*LH_VAPOR)*tstep; // latent heat [MJ] + dE += A_new*hstar*(temp_air-T_guess)*tstep; // sensible heat exhange [MJ] + dE += kdiff*A_h_new*(Ts_guess-T_guess)*tstep; // diffusive heat exchange [MJ] + + dEs = Q_dn_new/V_e_new*_aMres[p]*tstep; // downward advection [MJ] + dEs+= Q_up_new/V_h_new*_aMsed[p]*tstep; // upward advection [MJ] + dEs+= kdiff*A_h_new*(T_guess-Ts_guess)*tstep; // diffusive heat exchange [MJ] + + E_guess = _aMres[p] + dE; + Es_guess = _aMsed[p] + dEs; + + break; + } } + + //string thisdate=tt.date_string; + //string thishour=DecDaysToHours(tt.julian_day); + //if (iter>25){cout<<"Name: "<GetReservoirName()<<" Date: "<SetOldDownwardFlowRate(Q_dn_new); + pRes->SetOldUpwardFlowRate(Q_up_new); delete [] B; delete [] R; for (int i=0;i<2;i++){delete [] A[i]; delete[] J[i]; } delete[] A; delete[] J; } + ////////////////////////////////////////////////////////////////// /// \brief returns total energy lost from subbasin reach over current time step [MJ] /// \param p [in] subbasin index @@ -1111,14 +1255,17 @@ void CEnthalpyModel::WriteOutputFileHeaders(const optStruct& Options) _LAKEOUT << name << " Eout [MJ/m2/d],"; _LAKEOUT << name << " Q_rain [MJ/m2/d],"; _LAKEOUT << name << " Q_sens [MJ/m2/d],"; - _LAKEOUT << name << " Q_cond [MJ/m2/d],"; + _LAKEOUT << name << " Q_conv [MJ/m2/d],"; + _LAKEOUT << name << " Q_adv [MJ/m2/d],"; + _LAKEOUT << name << " kdiff [MJ/m2/K/d],"; _LAKEOUT << name << " Q_lat [MJ/m2/d],"; _LAKEOUT << name << " Q_sw_in [MJ/m2/d],"; _LAKEOUT << name << " Q_lw_in [MJ/m2/d],"; _LAKEOUT << name << " Q_lw_out [MJ/m2/d],"; - _LAKEOUT << name << " lake storage [MJ/m2],"; - _LAKEOUT << name << " lake temp [C],"; - _LAKEOUT << name << " lake sed temp [C],"; + _LAKEOUT << name << " lake lyr1 storage [MJ/m2],"; + _LAKEOUT << name << " lake lyr2 storage [MJ/m2],"; + _LAKEOUT << name << " lake lyr1 temp [C],"; + _LAKEOUT << name << " lake lyr2 temp [C],"; _LAKEOUT << name << " inflow temp [C],"; _LAKEOUT << name << " pct froz [0..1],"; } @@ -1144,7 +1291,9 @@ void CEnthalpyModel::WriteMinorOutput(const optStruct& Options,const time_struct // StreamReachEnergyBalances.csv //-------------------------------------------------------------------- int p; - double Q_sens,Q_cond,Q_lat,Q_GW,Q_sw_in,Q_lw_in,Q_lw_out,Q_lateral,Q_fric,Q_rain,Tave; + double Q_sens,Q_lat,Q_GW,Q_sw_in,Q_lw_in,Q_lw_out,Q_fric,Q_rain,Q_adv,Tave; + double Q_cond, Q_conv, Q_lateral; + double kdiff; double Ein,Eout,mult; CSubBasin *pSB; @@ -1198,32 +1347,36 @@ void CEnthalpyModel::WriteMinorOutput(const optStruct& Options,const time_struct if ((pRes != NULL) && (pRes->GetHRUIndex() != DOESNT_EXIST)) { double HRUarea= _pModel->GetHydroUnit(pRes->GetHRUIndex())->GetArea()*M2_PER_KM2; - double V_sed = pRes->GetLakebedThickness() * HRUarea; + //double V_sed = pRes->GetLakebedThickness() * HRUarea; double V_new = pRes->GetStorage(); + double V_h_new = pRes->GetHypolimnionStorage(); + double V_e_new = V_new-V_h_new; mult = 1.0 / HRUarea; - Ein = 0.5 * (_aMout_last[p] + _aMout[p][_pModel->GetSubBasin(p)->GetNumSegments() - 1]); - Eout = 0.5 * (_aMout_res [p] + _aMout_res_last[p]); + Ein = _aMout[p][_pModel->GetSubBasin(p)->GetNumSegments() - 1]; + Eout = _aMout_res [p]; double Qin=_pModel->GetSubBasin(p)->GetOutflowArray()[_pModel->GetSubBasin(p)->GetNumSegments()-1]*SEC_PER_DAY; //[m3/d] - GetEnergyLossesFromLake(p,Q_sens,Q_cond,Q_lat,Q_sw_in,Q_lw_in,Q_lw_out,Q_rain); + GetEnergyLossesFromLake(p,Q_sens,Q_conv,Q_lat,Q_sw_in,Q_lw_in,Q_lw_out,Q_rain,Q_adv,kdiff); - double lakeTemp =ConvertVolumetricEnthalpyToTemperature(_aMres[p] / V_new); - double sedTemp =ConvertVolumetricEnthalpyToTemperature(_aMsed[p] / V_sed); + double lakeTemp =ConvertVolumetricEnthalpyToTemperature(_aMres[p] / V_e_new); + double sedTemp =ConvertVolumetricEnthalpyToTemperature(_aMsed[p] / V_h_new); double inflowTemp=ConvertVolumetricEnthalpyToTemperature( Ein / Qin ); - double pctFroz =ConvertVolumetricEnthalpyToIceContent (_aMres[p] / V_new); + double pctFroz =ConvertVolumetricEnthalpyToIceContent (_aMres[p] / V_e_new); _LAKEOUT << mult * Ein << "," << mult * Eout << ","; _LAKEOUT << mult * Q_rain << "," << mult * Q_sens << ","; - _LAKEOUT << mult * Q_cond << "," << mult * Q_lat << ","; + _LAKEOUT << mult * Q_conv << "," << mult * Q_adv << ","; + _LAKEOUT << kdiff << ","; + _LAKEOUT << mult * Q_lat << ","; _LAKEOUT << mult * Q_sw_in << "," << mult * Q_lw_in << "," << mult * Q_lw_out << ","; - _LAKEOUT << mult * _aMres[p] << ","; - if (V_new!=0){_LAKEOUT << lakeTemp << ",";}else{_LAKEOUT<<",";} - if (V_sed!=0){_LAKEOUT << sedTemp << ",";}else{_LAKEOUT<<",";} - if (Qin !=0){_LAKEOUT << inflowTemp << ",";}else{_LAKEOUT<<",";} - if (V_new!=0){_LAKEOUT << pctFroz << ",";}else{_LAKEOUT<<",";} + _LAKEOUT << mult * _aMres[p] << "," << mult * _aMsed[p] << ","; + if (V_e_new!=0){_LAKEOUT << lakeTemp << ",";}else{_LAKEOUT<<",";} + if (V_h_new!=0){_LAKEOUT << sedTemp << ",";}else{_LAKEOUT<<",";} + if (Qin !=0){_LAKEOUT << inflowTemp << ",";}else{_LAKEOUT<<",";} + if (V_e_new!=0){_LAKEOUT << pctFroz << ",";}else{_LAKEOUT<<",";} } } } diff --git a/src/EnergyTransport.h b/src/EnergyTransport.h index 84c270b..1229d1b 100644 --- a/src/EnergyTransport.h +++ b/src/EnergyTransport.h @@ -60,8 +60,8 @@ class CEnthalpyModel :public CConstituentModel double GetWaterTemperature (const double *state_vars, const int iWater) const; double GetEnergyLossesInTransit(const int p,double &Q_sens,double &Q_GW) const; + double GetEnergyLossesFromLake (const int p,double &Q_sens,double &Q_cond,double &Q_lat,double &Q_rad_in,double &Q_lw_in, double &Q_lw_out, double &Q_rain, double &Q_adv, double &kdiff) const; double GetEnergyLossesFromReach(const int p,double &Q_sens,double &Q_cond,double &Q_lat,double &Q_GW,double &Q_rad_in,double &Q_lw_in, double &Q_lw_out,double &Q_lateral, double &Q_fric, double &Tave) const; - double GetEnergyLossesFromLake (const int p,double &Q_sens,double &Q_cond,double &Q_lat,double &Q_rad_in,double &Q_lw_in, double &Q_lw_out, double &Q_rain) const; double GetOutflowIceFraction (const int p) const; double GetAvgLatentHeatFlux () const; diff --git a/src/GlobalParams.cpp b/src/GlobalParams.cpp index 36a27c5..a1159a0 100644 --- a/src/GlobalParams.cpp +++ b/src/GlobalParams.cpp @@ -156,6 +156,31 @@ void CGlobalParams::AutoCalculateGlobalParams(const global_struct &Gtmp, const g { G.GAMMA_SCALE_multiplier=1.0;//default=nothing (no warning needed) } + + autocalc=SetCalculableValue(G.mix_depth_coef,Gtmp.mix_depth_coef,Gtemplate.mix_depth_coef); + if (autocalc) + { + G.mix_depth_coef=0.25; + warn="The required global parameter MIX_DEPTH_COEF was autogenerated with value "+to_string(G.mix_depth_coef); + if (chatty){WriteAdvisory(warn,false);} + } + + autocalc=SetCalculableValue(G.mix_depth_expn,Gtmp.mix_depth_expn,Gtemplate.mix_depth_expn); + if (autocalc) + { + G.mix_depth_expn=0.45; + warn="The required global parameter MIX_DEPTH_EXPN was autogenerated with value "+to_string(G.mix_depth_expn); + if (chatty){WriteAdvisory(warn,false);} + } + + autocalc=SetCalculableValue(G.lake_lyr_conv_coeff_max,Gtmp.lake_lyr_conv_coeff_max,Gtemplate.lake_lyr_conv_coeff_max); + if (autocalc) + { + G.lake_lyr_conv_coeff_max=2.5; + warn="The required global parameter KDIFF_MAX was autogenerated with value "+to_string(G.lake_lyr_conv_coeff_max); + if (chatty){WriteAdvisory(warn,false);} + } + autocalc=SetCalculableValue(G.reference_flow_mult,Gtmp.reference_flow_mult,Gtemplate.reference_flow_mult); if (autocalc) { @@ -417,6 +442,11 @@ void CGlobalParams::InitializeGlobalParameters(global_struct &g, bool is_templat g.TIME_TO_PEAK_multiplier =DefaultParameterValue(is_template,true); g.GAMMA_SHAPE_multiplier =DefaultParameterValue(is_template,true); g.GAMMA_SCALE_multiplier =DefaultParameterValue(is_template,true); + + g.mix_depth_coef =DefaultParameterValue(is_template,true); + g.mix_depth_expn =DefaultParameterValue(is_template,true); + g.lake_lyr_conv_coeff_max =DefaultParameterValue(is_template,true); + //model-specific parameters g.avg_annual_snow =DefaultParameterValue(is_template,false); @@ -564,6 +594,11 @@ void CGlobalParams::SetGlobalProperty (global_struct &G, else if (!name.compare("HBVEC_LAPSE_RATE" )){G.HBVEC_lapse_rate=value; } else if (!name.compare("HBVEC_LAPSE_UPPER" )){G.HBVEC_lapse_upper=value; } else if (!name.compare("HBVEC_LAPSE_ELEV" )){G.HBVEC_lapse_elev=value; } + + else if (!name.compare("MIX_DEPTH_COEF" )){G.mix_depth_coef=value;} + else if (!name.compare("MIX_DEPTH_EXPN" )){G.mix_depth_expn=value;} + else if (!name.compare("KDIFF_MAX" )){G.lake_lyr_conv_coeff_max=value;} + else{ WriteWarning("CGlobalParams::SetGlobalProperty: Unrecognized/invalid global parameter name ("+name+") in .rvp file",false); @@ -687,6 +722,11 @@ double CGlobalParams::GetGlobalProperty(const global_struct &G, string param_na else if (!name.compare("HBVEC_LAPSE_RATE" )){return G.HBVEC_lapse_rate; } else if (!name.compare("HBVEC_LAPSE_UPPER" )){return G.HBVEC_lapse_upper; } else if (!name.compare("HBVEC_LAPSE_ELEV" )){return G.HBVEC_lapse_elev; } + + else if (!name.compare("MIX_DEPTH_COEF" )){return G.mix_depth_coef;} + else if (!name.compare("MIX_DEPTH_EXPN" )){return G.mix_depth_expn;} + else if (!name.compare("KDIFF_MAX" )){return G.lake_lyr_conv_coeff_max;} + else{ if (strict){ string msg="CGlobalParams::GetParameter: Unrecognized/invalid global parameter name in .rvp file: "+name; diff --git a/src/Makefile b/src/Makefile old mode 100644 new mode 100755 index d897009..797974d --- a/src/Makefile +++ b/src/Makefile @@ -25,9 +25,9 @@ LDFLAGS := # OPTION 0) some compilers require the c++11 flag, some may not CXXFLAGS += -std=c++11 -fPIC -# OPTION 1) include netcdf - uncomment following two commands (assumes netCDF path = /usr/local): -#CXXFLAGS += -Dnetcdf -#LDLIBS += -L/usr/local -lnetcdf +# OPTION 1) include netcdf - uncomment following two commands (assumes netCDF path = /usr/local): +CXXFLAGS += -Dnetcdf +LDLIBS += -L/usr/local -lnetcdf # OPTION 1b) include netcdf - for newer MacOS with Apple Silicon (use with option 1 also uncommented) #CXXFLAGS += -I/opt/homebrew/include diff --git a/src/ParseHRUFile.cpp b/src/ParseHRUFile.cpp index c923009..480cac1 100644 --- a/src/ParseHRUFile.cpp +++ b/src/ParseHRUFile.cpp @@ -425,7 +425,7 @@ bool ParseHRUPropsFile(CModel *&pModel, const optStruct &Options, bool terrain_r //in*=CGlobalParams::GetParameter("TOC_MULTIPLIER"); // use to be this; but has its own multiplier now; maybe set default to TOC_MULTIPLIER?? in *= pModel->GetGlobalParams()->GetParameter("TIME_TO_PEAK_MULTIPLIER"); } - if(!aParamStrings[i].compare("GAMMA_SHAPE") && (in!=AUTO_COMPUTE) && (in!=USE_TEMPLATE_VALUE)){ + if(!aParamStrings[i].compare("GAMMA_SHAPE") && (in!=AUTO_COMPUTE) && (in!=USE_TEMPLATE_VALUE)){ in *= pModel->GetGlobalParams()->GetParameter("GAMMA_SHAPE_MULTIPLIER"); } if(!aParamStrings[i].compare("GAMMA_SCALE") && (in!=AUTO_COMPUTE) && (in!=USE_TEMPLATE_VALUE)){ @@ -1915,15 +1915,15 @@ CReservoir *ReservoirParse(CParser *p,string name,const CModel *pModel,long long //------------------------------------------------------------------------------------ if((type==CURVE_POWERLAW) || (type==CURVE_LINEAR)) { - pRes=new CReservoir(name,SBID,a_V,b_V,a_Q,b_Q,a_A,b_A,crestht,max_depth); + pRes=new CReservoir(name,SBID,a_V,b_V,a_Q,b_Q,a_A,b_A,crestht,max_depth,pModel); } else if(type==CURVE_DATA) { - pRes=new CReservoir(name,SBID,aQ_ht,aQ,aQund,aA,aV,NQ);//presumes aQ_ht=aV_ht=aA_ht; NA=NV=NQ + pRes=new CReservoir(name,SBID,aQ_ht,aQ,aQund,aA,aV,NQ,pModel);//presumes aQ_ht=aV_ht=aA_ht; NA=NV=NQ } else if(type==CURVE_VARYING) { - pRes=new CReservoir(name,SBID,nDates,aDates,aQ_ht,aQQ,aQund,aA,aV,NQ);//presumes aQ_ht=aV_ht=aA_ht; NA=NV=NQ + pRes=new CReservoir(name,SBID,nDates,aDates,aQ_ht,aQQ,aQund,aA,aV,NQ,pModel);//presumes aQ_ht=aV_ht=aA_ht; NA=NV=NQ } else if(type==CURVE_LAKE) { @@ -1940,7 +1940,7 @@ CReservoir *ReservoirParse(CParser *p,string name,const CModel *pModel,long long } } - pRes=new CReservoir(name,SBID,weircoeff,cwidth,crestht,lakearea,max_depth); + pRes=new CReservoir(name,SBID,weircoeff,cwidth,crestht,lakearea,max_depth,pModel); } else { diff --git a/src/ParsePropertyFile.cpp b/src/ParsePropertyFile.cpp index d41e83d..01c5364 100644 --- a/src/ParsePropertyFile.cpp +++ b/src/ParsePropertyFile.cpp @@ -167,6 +167,15 @@ bool ParseClassPropertiesFile(CModel *&pModel, aP [0]="GAMMA_SCALE_MULTIPLIER"; aPC[0]=CLASS_GLOBAL; AddToMasterParamList(aPmaster, aPCmaster,nPmaster, aP, aPC, 1); + + aP [0]="MIX_DEPTH_COEF"; aPC[0]=CLASS_GLOBAL; + AddToMasterParamList(aPmaster, aPCmaster,nPmaster, aP, aPC, 1); + + aP [0]="MIX_DEPTH_EXPN"; aPC[0]=CLASS_GLOBAL; + AddToMasterParamList(aPmaster, aPCmaster,nPmaster, aP, aPC, 1); + + aP [0]="KDIFF_MAX"; aPC[0]=CLASS_GLOBAL; + AddToMasterParamList(aPmaster, aPCmaster,nPmaster, aP, aPC, 1); //Throw warning if NULL Terrain but terrain parameter is needed terrain_required=false; diff --git a/src/Properties.h b/src/Properties.h index 52a210d..7c3cb3d 100644 --- a/src/Properties.h +++ b/src/Properties.h @@ -396,6 +396,7 @@ struct global_struct double avg_annual_snow; ///< [mm] avg annual snow as SWE double avg_annual_runoff; ///< [mm] avg annual runoff from basin + double reference_flow_mult; ///< [-] multiplier for reference flow relative to annual mean flow ///< (10 for flood modelling, 0.5 for low-flow conditions) @@ -426,6 +427,9 @@ struct global_struct double TIME_TO_PEAK_multiplier; ///< [0..1+] time to peak multiplier double GAMMA_SHAPE_multiplier; ///< [0..1+] Gamma shape multiplier double GAMMA_SCALE_multiplier; ///< [0..1+] Gamma scale multiplier + double mix_depth_coef; ///< [m] Reservoir mixing depth coefficient + double lake_lyr_conv_coeff_max; ///< [MJ/m2/d/K] Upper limit for convection coefficient between lake layers + double mix_depth_expn; ///< [-] Reservoir mixing depth exponent double assimilation_fact; ///< [0..1] assimilation factor (0=no assimilation to 1= full replacement) double assim_upstream_decay; ///< [1/km] assimilation upstream decay factor (0= overrides everything upstream, large- observation influence decays quickly with distance from gauge) [~0.01] double assim_time_decay; ///< [1/d] assimilation temporal decay factor (0=diminishes in future, 0.1 - diminshes in 3 days) [0.2] diff --git a/src/RavenInclude.h b/src/RavenInclude.h index e6cafcf..cc30106 100644 --- a/src/RavenInclude.h +++ b/src/RavenInclude.h @@ -181,7 +181,7 @@ const double TC_CLAY =0.216; const double TC_ORGANIC =0.0216; ///< [MJ/m/d/K] Thermal conductivity of organic matter (0.25 W/m/K) const double TC_AIR =0.00199; ///< [MJ/m/d/K] Thermal conductivity of air (0.023 W/m/K) -const double COM_WATER =4.58e-10; ///< [1/Pa] Compressiblity of Water +const double COM_WATER =4.58e-10; ///< [1/Pa] Compressiblity of Water const double COM_ICE =4.58e-10; ///< [1/Pa] Compressiblity of Ice const double HCP_WATER =4.186; ///< [MJ/m3/K] Volumetric Heat Capacity of Water const double HCP_ICE =1.938; ///< [MJ/m3/K] Volumetric Heat Capacity of Ice diff --git a/src/Reservoir.cpp b/src/Reservoir.cpp old mode 100644 new mode 100755 index 59b05c5..266485d --- a/src/Reservoir.cpp +++ b/src/Reservoir.cpp @@ -18,10 +18,13 @@ void CReservoir::BaseConstructor(const string Name,const long long SBID) _SBID=SBID; _pDownSB=NULL; - + _Q_dn_old = 0.0; + _Q_up_old = 0.0; + _mixing_depth=0.0; _lakebed_thick=1.0; _lakebed_cond =0.0; _lake_convcoeff=2.0; + _lake_lyr_convcoeff=0.0; _stage =0.0; _stage_last=0.0; @@ -30,7 +33,7 @@ void CReservoir::BaseConstructor(const string Name,const long long SBID) _Qout =0.0; _Qout_last =0.0; _MB_losses =0.0; - _AET =0.0; + _AET =0.0; _Precip =0.0; _GW_seepage=0.0; _aQstruct=NULL; @@ -85,6 +88,7 @@ void CReservoir::BaseConstructor(const string Name,const long long SBID) _nControlStructures=0; _pControlStructures=NULL; + _seepage_const=0; _local_GW_head=0.0; @@ -117,7 +121,7 @@ CReservoir::CReservoir(const string Name,const long long SBID) /// \param b_V [in] power law exponent for volume rating curve [-] /// \param a_Q [in] power law coefficient for discharge rating curve [m3/s*m^-b_Q] /// \param b_Q [in] power law exponent for discharge rating curve [-] -/// \param a_A[in] surface area of reservoir/lake when stage at absolute crest height [m2] +/// \param a_A [in] surface area of reservoir/lake when stage at absolute crest height [m2] /// \param b_A [in] power law exponent for area rating curve [-] (0 for prismatic reservoir) // @@ -125,7 +129,8 @@ CReservoir::CReservoir(const string Name, const long long SBID, const double a_V, const double b_V, const double a_Q, const double b_Q, const double a_A, const double b_A, - const double crestht,const double depth) + const double crestht,const double depth, + const CModelABC* pModel) { BaseConstructor(Name,SBID); @@ -139,6 +144,10 @@ CReservoir::CReservoir(const string Name, const long long SBID, double aA=a_A; double bA=b_A; + + double COEFF_RER_A = pModel->GetGlobalParams()->GetParams()->mix_depth_coef; + double COEFF_RER_B = pModel->GetGlobalParams()->GetParams()->mix_depth_expn; + if(aA==AUTO_COMPUTE) {aA=a_V/depth*b_V;} if(bA==AUTO_COMPUTE) {bA=b_V-1.0; } @@ -147,6 +156,7 @@ CReservoir::CReservoir(const string Name, const long long SBID, _min_stage =_crest_ht-depth; _max_stage =_crest_ht+6.0; // a postive value relative to _crest_ht dh=(_max_stage-_min_stage)/(double)(_Np-1); + _mixing_depth = COEFF_RER_A*pow(sqrt(aA),COEFF_RER_B); for(int i=0;i<_Np;i++) { @@ -167,13 +177,13 @@ CReservoir::CReservoir(const string Name, const long long SBID, /// \param SBID [in] subbasin ID /// \param a_ht[] [in] array of reservoir stages [size: nPoints] /// \param a_Q[] [in] array of reservoir discharges [size: nPoints] -/// \param a_A[] [in] array of reservoir volumes [size: nPoints] -/// \param a_V[] [in] array of reservoir areas [size: nPoints] +/// \param a_A[] [in] array of reservoir areas [size: nPoints] +/// \param a_V[] [in] array of reservoir volumes [size: nPoints] // CReservoir::CReservoir(const string Name, const long long SBID, const double *a_ht, const double *a_Q, const double *a_Qund,const double *a_A, const double *a_V, - const int nPoints) + const int nPoints,const CModelABC* pModel) { BaseConstructor(Name,SBID); @@ -189,6 +199,8 @@ CReservoir::CReservoir(const string Name, const long long SBID, _aArea =new double [_Np]; _aVolume=new double [_Np]; ExitGracefullyIf(_aVolume==NULL,"CReservoir::constructor (2)",OUT_OF_MEMORY); + double COEFF_RER_A = pModel->GetGlobalParams()->GetParams()->mix_depth_coef; + double COEFF_RER_B = pModel->GetGlobalParams()->GetParams()->mix_depth_expn; string warn; for (int i=0;i<_Np;i++) @@ -223,6 +235,7 @@ CReservoir::CReservoir(const string Name, const long long SBID, } } _max_capacity=_aVolume[_Np-1]; + _mixing_depth = COEFF_RER_A*pow(sqrt(_aArea[_Np-1]),COEFF_RER_B); } ////////////////////////////////////////////////////////////////// @@ -243,7 +256,8 @@ CReservoir::CReservoir(const string Name, const long long SBID, const double *a_Qund, const double *a_A, const double *a_V, - const int nPoints) + const int nPoints, + const CModelABC* pModel) { BaseConstructor(Name,SBID); @@ -268,6 +282,9 @@ CReservoir::CReservoir(const string Name, const long long SBID, _aVolume=new double [_Np]; ExitGracefullyIf(_aVolume==NULL,"CReservoir::constructor (2)",OUT_OF_MEMORY); + double COEFF_RER_A = pModel->GetGlobalParams()->GetParams()->mix_depth_coef; + double COEFF_RER_B = pModel->GetGlobalParams()->GetParams()->mix_depth_expn; + string warn; for (int i=0;i<_Np;i++) { @@ -300,6 +317,7 @@ CReservoir::CReservoir(const string Name, const long long SBID, } } _max_capacity=_aVolume[_Np-1]; + _mixing_depth = COEFF_RER_A*pow(sqrt(_aArea[_Np-1]),COEFF_RER_B); } ////////////////////////////////////////////////////////////////// /// \brief Constructor for prismatic lake reservoir controlled by weir coefficient @@ -316,7 +334,8 @@ CReservoir::CReservoir(const string Name, const double crestw, const double crestht, const double A, - const double depth) + const double depth, + const CModelABC* pModel) { BaseConstructor(Name,SBID); @@ -338,7 +357,10 @@ CReservoir::CReservoir(const string Name, _aArea =new double [_Np]; _aVolume=new double [_Np]; ExitGracefullyIf(_aVolume==NULL,"CReservoir::constructor (4)",OUT_OF_MEMORY); - + + double COEFF_RER_A = pModel->GetGlobalParams()->GetParams()->mix_depth_coef; + double COEFF_RER_B = pModel->GetGlobalParams()->GetParams()->mix_depth_expn; + double dh; string warn; dh=(_max_stage-_crest_ht)/(_Np-2); //spacing = 0.05m @@ -346,6 +368,7 @@ CReservoir::CReservoir(const string Name, _aQ [0]=0.0; _aQunder[0]=0.0; _aArea [0]=A; + _aVolume[0]=0.0; for (int i=1;i<_Np;i++) // - Edited by KL to reference crest height properly { @@ -356,6 +379,7 @@ CReservoir::CReservoir(const string Name, _aVolume[i]=A*(_aStage[i]-_min_stage); } _max_capacity=_aVolume[_Np-1]; + _mixing_depth = COEFF_RER_A*pow(sqrt(A),COEFF_RER_B); } ////////////////////////////////////////////////////////////////// @@ -398,6 +422,10 @@ CReservoir::~CReservoir() // long long CReservoir::GetSubbasinID () const { return _SBID; } +/// \returns mixing depth [m] +// +double CReservoir::GetMixingDepth () const { return _mixing_depth;} + ////////////////////////////////////////////////////////////////// /// \returns Reservoir name // @@ -409,6 +437,14 @@ string CReservoir::GetReservoirName() const { return _name; } // double CReservoir::GetStorage () const { return GetVolume(_stage); } +/// \returns reservoir hypoliminion storage [m3] +// +double CReservoir::GetHypolimnionStorage () const { return GetVolume(_stage-_mixing_depth); } + +/// \returns reservoir old hypoliminion storage [m3] +// +double CReservoir::GetOldHypolimnionStorage () const { return GetVolume(_stage_last-_mixing_depth); } + ////////////////////////////////////////////////////////////////// /// \returns current stage [m] // @@ -445,6 +481,8 @@ double CReservoir::GetSillElevation(const int nn) const } return _crest_ht+weir_adj; } +////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////// /// \returns current surface area [m2] // @@ -455,6 +493,16 @@ double CReservoir::GetSurfaceArea () const { return GetArea(_stage); } // double CReservoir::GetOldSurfaceArea () const { return GetArea(_stage_last); } +////////////////////////////////////////////////////////////////// +/// \returns current mixing area [m2] +// +double CReservoir::GetMixingArea () const { return GetArea(_stage-_mixing_depth); } + +////////////////////////////////////////////////////////////////// +/// \returns current old mixing area [m2] +// +double CReservoir::GetOldMixingArea () const { return GetArea(_stage_last-_mixing_depth); } + ////////////////////////////////////////////////////////////////// /// \returns lakebed thickness [m] // @@ -470,6 +518,11 @@ double CReservoir::GetLakebedConductivity() const { return _lakebed_cond; } // double CReservoir::GetLakeConvectionCoeff() const { return _lake_convcoeff; } +////////////////////////////////////////////////////////////////// +/// \returns lake between-layer thermal convection coefficient [MJ/m2/d/K] +// +double CReservoir::GetLakeLyrConvectionCoeff() const { return _lake_lyr_convcoeff; } + ////////////////////////////////////////////////////////////////// /// \returns current outflow rate [m3/s] // @@ -500,6 +553,17 @@ double CReservoir::GetIntegratedControlOutflow(const int i, const double& tstep { return 0.5*(_aQstruct[i]+_aQstruct_last[i])*(tstep*SEC_PER_DAY); //integrated } + +////////////////////////////////////////////////////////////////// +/// \returns previous downward flow rate between reservoir layers [m3/d] +// +double CReservoir::GetOldDownwardFlowRate() const { return _Q_dn_old; } + +////////////////////////////////////////////////////////////////// +/// \returns previous upward flow rate between reservoir layers [m3/d] +// +double CReservoir::GetOldUpwardFlowRate() const { return _Q_up_old; } + ////////////////////////////////////////////////////////////////// /// \returns previous storage [m3] // @@ -555,6 +619,7 @@ double CReservoir::GetCrestWidth() const { return _crest_width; } + ////////////////////////////////////////////////////////////////// /// \brief gets max capacity /// \returns capacity, in m3 @@ -939,6 +1004,8 @@ void CReservoir::SetCrestWidth(const double& width) _crest_width=width; } } + + ////////////////////////////////////////////////////////////////// /// \brief sets max capacity /// \param capacity, in m3 @@ -980,6 +1047,12 @@ void CReservoir::SetLakeConvectionCoeff(const double& conv) { _lake_convcoeff=conv; } ////////////////////////////////////////////////////////////////// +/// \brief sets lake between-layer convection coeff +// +void CReservoir::SetLakeLyrConvectionCoeff(const double& conv) { + _lake_lyr_convcoeff=conv; +} +////////////////////////////////////////////////////////////////// /// \brief gets current constraint name /// \returns current constraint applied to estimate stage/flow // @@ -1475,6 +1548,24 @@ void CReservoir::SetMinStage(const double &min_z) _min_stage=min_z; } +////////////////////////////////////////////////////////////////// +/// \brief sets previous downward flow rate +/// \param Q_dn [in] downward flow rate between lake layers [m3/d] +// +void CReservoir::SetOldDownwardFlowRate(const double &Q_dn) +{ + _Q_dn_old=Q_dn; +} + +////////////////////////////////////////////////////////////////// +/// \brief sets previous upward flow rate +/// \param Q_up [in] upward flow rate between lake layers [m3/d] +// +void CReservoir::SetOldUpwardFlowRate(const double &Q_up) +{ + _Q_up_old=Q_up; +} + ////////////////////////////////////////////////////////////////// /// \brief Routes water through reservoir /// \param Qin_old [in] inflow at start of timestep diff --git a/src/Reservoir.h b/src/Reservoir.h old mode 100644 new mode 100755 index fc5229a..667a9c1 --- a/src/Reservoir.h +++ b/src/Reservoir.h @@ -55,10 +55,12 @@ class CReservoir string _name; ///< reservoir name long long _SBID; ///< subbasin ID double _max_capacity; ///< maximum reservoir capacity [m3] + double _mixing_depth; double _lakebed_thick; ///< lakebed thickness [m] double _lakebed_cond; ///< lakebed thermal conductivity [MJ/m/K/d] double _lake_convcoeff; ///< lake surface thermal convection coefficient [MJ/m2/d/K] + double _lake_lyr_convcoeff; ///< lake between-layer thermal convection coefficient [MJ/m2/d/K] const CHydroUnit *_pHRU; ///< (potentially zero-area) HRU used for Precip/ET calculation (or NULL for no ET) @@ -107,6 +109,8 @@ class CReservoir double _stage_last; ///< stage at beginning of current time step [m] double _Qout; ///< outflow corresponding to current stage [m3/s] double _Qout_last; ///< outflow at beginning of current time step [m3/s] + double _Q_dn_old; ///< downward flow between layers at beginning of current time step [m3/d] + double _Q_up_old; ///< upward flow between layers at beginning of current time step [m3/d] double _MB_losses; ///< losses over current time step [m3] double _AET; ///< losses through AET only [m3] double _Precip; ///< gains through precipitation [m3] @@ -160,17 +164,20 @@ class CReservoir const double a_v, const double b_v, const double a_Q, const double b_Q, const double a_A, const double b_A, - const double crestht, const double depth); - CReservoir(const string name, const long long SBID, + const double crestht, const double depth, + const CModelABC* pModel); + CReservoir(const string name, const long SubID, const double *a_ht, const double *a_Q, const double *aQ_und,const double *a_A, const double *a_V, - const int nPoints); - CReservoir(const string Name, const long long SBID, + const int nPoints, + const CModelABC* pModel); + CReservoir(const string Name, const long SubID, const int nDates, const int *aDates, const double *a_ht, double **a_QQ, const double *aQ_und, const double *a_A, const double *a_V, - const int nPoints); - CReservoir(const string Name, const long long SBID, const double weircoeff, //Lake constructor - const double crestw, const double crestht, const double A, const double depth); + const int nPoints, + const CModelABC* pModel); + CReservoir(const string Name, const long SubID, const double weircoeff, //Lake constructor + const double crestw, const double crestht, const double A, const double depth,const CModelABC* pModel); ~CReservoir(); //Accessors @@ -179,10 +186,14 @@ class CReservoir double GetStorage () const; //[m3] double GetOldStorage () const; //[m3] + double GetHypolimnionStorage () const; //[m3] + double GetOldHypolimnionStorage () const; //[m3] double GetOutflowRate () const; //[m3/s] double GetOldOutflowRate () const; //[m3/s] double GetIntegratedOutflow (const double &tstep) const; //[m3] double GetControlOutflow (const int i) const; //[m3] + double GetOldUpwardFlowRate () const; //[m3/d] + double GetOldDownwardFlowRate () const; //[m3/d] double GetIntegratedControlOutflow(const int i, const double& tstep) const; //[m3] double GetReservoirLosses (const double &tstep) const; //[m3] double GetReservoirEvapLosses (const double &tstep) const; //[m3] @@ -192,14 +203,18 @@ class CReservoir double GetOldStage () const; //[m] double GetSurfaceArea () const; //[m2] double GetOldSurfaceArea () const; //[m2] + double GetMixingArea () const; //[m2] + double GetOldMixingArea () const; //[m2] double GetLakebedThickness () const; //[m] double GetLakebedConductivity () const; //[MJ/m/K/d] double GetLakeConvectionCoeff () const; //[MJ/m2/d/K] + double GetLakeLyrConvectionCoeff() const; //[MJ/m2/d/K] double GetDischargeFromStage (const double &stage, const int nn) const; //[m3/s] double GetStageDischargeDerivative(const double &stage,const int nn) const; //[m3/s/d] double GetMinStage (const int nn) const;//[m] double GetMaxStage (const int nn) const;//[m] double GetSillElevation (const int nn) const;//[m] + double GetMixingDepth () const; //[m] int GetNumWaterDemands () const; CDemand *GetWaterDemandObj (const int ii) const; @@ -239,6 +254,9 @@ class CReservoir void SetLakebedThickness (const double &thick); void SetLakebedConductivity (const double &cond); void SetLakeConvectionCoeff (const double &conv); + void SetLakeLyrConvectionCoeff(const double &conv); + void SetOldUpwardFlowRate (const double &Q_up); + void SetOldDownwardFlowRate (const double &Q_dn); void AddDemand (CDemand *pDemand); diff --git a/src/Transport.h b/src/Transport.h index c772240..a22ddc9 100644 --- a/src/Transport.h +++ b/src/Transport.h @@ -217,6 +217,11 @@ class CConstituentModel double *_aMout_res; ///< array storing reservoir mass outflow [mg/d] or heat loss [MJ/d] [size: nSubBasins] double *_aMout_res_last; ///< array storing reservoir mass outflow [mg/d] or enthalpy outflow [MJ/d] at start of timestep [size: nSubBasins] double *_aMresRain; ///< array storing reservoir rain inputs [mg/d] or enthalpy input [MJ/d] [size: nSubBasins] + + double *_aMres_epo; ///< array used for storing epolimnion layer masses [mg] or enthalpy [MJ] [size: nSubBasins] + double *_aMres_epo_last; ///< array used for storing epolimnion layer masses [mg] at start of timestep [size: nSubBasins] + double *_aMres_hyp; ///< array used for storing hypolimnion layer masses [mg] or enthalpy [MJ] [size: nSubBasins] + double *_aMres_hyp_last; ///< array used for storing hypolimnion layer masses [mg] at start of timestep [size: nSubBasins] // Mass balance tracking variables double *_channel_storage; ///< array storing channel storage [mg] or [MJ] [size: nSubBasins]