# RiverWare_Model 7.1 Development
# Created 13:34 January 26, 2017
# CADSWES, University of Colorado at Boulder, http://cadswes.colorado.edu/
#
# The catalog command is parsed by the RiverSMART
# RiverWare model plugin:
# - It must appear in the first 100 lines of the file.
# - Lines up to and including it must not exceed 4K bytes.
# - Its name must not change.
Catalog {\
\
\
\
\
\
\
\
\
\
\
\
\
} # End Catalog
ModelSimObjCount 1
ModelAccountCount 0
ModelSupplyCount 0
ModelExchangeCount 0
DST 0
$ws.Model.FileInfo saveInfo 1 {philw} {01-26-2017 13:34:56} {RiverWare 7.1}
$ws.Model.FileInfo comment {}
$ws.Model.RunHistoryRecord 1 0 {} {} \
{} {01-01-1800 00:00:00} {01-01-1800 00:00:00} {Not Running}
SaveOutputs 1
SaveExtPrecision 0
FlagEncoding 3
BaselineModel 0
ModelLockSet 0
ObjectListWidth 256
WsObjListOrderMode SORT_BY_NAME
LockedIcons 0
SelWindowIcon {RwIconStandard}
WorkspaceSize 6450 6450
AccountingSize 6450 6450
GeospatialSize 6450 6450
DisplayProperties 0
EpochBeginYear 1800
OverrideDefaultPlotAxesForVertDist 0
CurrCanvasType SIMULATION
InitCanvasSpec SIMULATION {\
\
\
\
}
InitCanvasSpec ACCOUNTING {\
\
\
\
}
InitCanvasSpec GEOSPATIAL {\
\
\
\
}
WaterYearStartMonthIndex 9 YearNamedFromEnd
SlotGroupsEnabled 1
SlotDlgPrefs {\
\
\
\
\
}
$ws.runInfo pauseAtDate {01-26-2017 18:00:00}
$ws.runInfo pauseAtPriority 2
$ws.runInfo setDescription {Model Run}
$ws.runInfo runParam {01-26-2017 12:00:00} {01-27-2017 12:00:00} 6 HOUR
$ws.runInfo setType 0
$ws.runInfo setResumedRun 0 {01-26-2017 18:00:00}
$ws.runInfo setActiveCategories 1 0
$ws.runInfo setInlineCategories 1 0
$ws.runInfo setMaxSimIterations 40
$ws.runInfo setMaxAcctIterations 20
$ws.runInfo setSeriesExtensionIncrement 1
$ws.runInfo setWarnOutOfBounds 0
$ws.multiRunInfo setDescription {Model Run}
$ws.multiRunInfo runParam {01-26-2017 12:00:00} {01-27-2017 12:00:00} 6 HOUR
$ws.multiRunInfo setType 3
$ws.multiRunInfo setResumedRun 0 {01-26-2017 18:00:00}
$ws.multiRunInfo setActiveCategories 1 0
$ws.multiRunInfo setInlineCategories 1 0
$ws.multiRunInfo setMaxSimIterations 40
$ws.multiRunInfo setMaxAcctIterations 20
$ws.multiRunInfo setSeriesExtensionIncrement 1
$ws.multiRunInfo setWarnOutOfBounds 0
# Section: Unit Manager
Section {Unit Manager}
set unitMgr "$ws.UnitMgr"
$unitMgr initScaledUnits 61
$unitMgr scaledUnit 0 {NONE} 1 {NONE}
$unitMgr scaledUnit 1 {Length} 1 {m}
$unitMgr scaledUnit 2 {Length} 1 {ft}
$unitMgr scaledUnit 3 {SqrtLength} 1 {m1/2}
$unitMgr scaledUnit 4 {Area} 1 {m2}
$unitMgr scaledUnit 5 {Area} 1 {acre}
$unitMgr scaledUnit 6 {Volume} 1 {m3}
$unitMgr scaledUnit 7 {Volume} 1 {acre-ft}
$unitMgr scaledUnit 8 {Volume} 1 {acre-feet}
$unitMgr scaledUnit 9 {Flow} 1 {cms}
$unitMgr scaledUnit 10 {Flow} 1 {cfs}
$unitMgr scaledUnit 11 {Flow} 1 {acre-ft/day}
$unitMgr scaledUnit 12 {FlowSquared} 1 {cms2}
$unitMgr scaledUnit 13 {FlowPerSqrtLength} 1 {cms/m1/2}
$unitMgr scaledUnit 14 {PerFlow} 1 {1/cms}
$unitMgr scaledUnit 15 {Power} 1 {MW}
$unitMgr scaledUnit 16 {PowerPerFlow} 1 {MW/cms}
$unitMgr scaledUnit 17 {Energy} 1 {MWH}
$unitMgr scaledUnit 18 {Time} 1 {hr}
$unitMgr scaledUnit 19 {Time} 1 {day}
$unitMgr scaledUnit 20 {TimeSquared} 1 {hour2}
$unitMgr scaledUnit 21 {Mass} 1 {g}
$unitMgr scaledUnit 22 {Mass} 1 {tons}
$unitMgr scaledUnit 23 {Heat} 1 {J}
$unitMgr scaledUnit 24 {EnergyFlux} 1 {J/m2sec}
$unitMgr scaledUnit 25 {MassFlux} 1 {g/m2sec}
$unitMgr scaledUnit 26 {VolFlux} 1 {g/m3sec}
$unitMgr scaledUnit 27 {Concentration} 1 {g/m3}
$unitMgr scaledUnit 28 {Concentration} 1 {lb/ft3}
$unitMgr scaledUnit 29 {AreaPerTime} 1 {m2/s}
$unitMgr scaledUnit 30 {PerTime} 1 {1/sec}
$unitMgr scaledUnit 31 {Temperature} 1 {C}
$unitMgr scaledUnit 32 {LengthPerTemperature_F} 1 {m/F}
$unitMgr scaledUnit 33 {TemperatureInFahren} 1 {F}
$unitMgr scaledUnit 34 {SpecificHeat} 1 {J/gC}
$unitMgr scaledUnit 35 {Velocity} 1 {m/s}
$unitMgr scaledUnit 36 {VelocityPerTemperature_F} 1 {m/s-F}
$unitMgr scaledUnit 37 {Density} 1 {kg/m3_dens}
$unitMgr scaledUnit 38 {PowerCost} 1 {$/MWh}
$unitMgr scaledUnit 39 {Value} 1 {$}
$unitMgr scaledUnit 40 {ValuePerFlow} 1 {$/cms}
$unitMgr scaledUnit 41 {ValuePerVolume} 1 {$/m3}
$unitMgr scaledUnit 42 {LengthPerVolume} 1 {m/m3}
$unitMgr scaledUnit 43 {LengthPerFlow} 1 {m/cms}
$unitMgr scaledUnit 44 {PerLength} 1 {1/m}
$unitMgr scaledUnit 45 {PerLengthTime} 1 {1/m-s}
$unitMgr scaledUnit 46 {FlowPerLength} 1 {cms/m}
$unitMgr scaledUnit 47 {VolumePerFlow} 1 {m3/cms}
$unitMgr scaledUnit 48 {energyPerLength} 1 {MWH/m}
$unitMgr scaledUnit 49 {powerPerLength} 1 {MW/m}
$unitMgr scaledUnit 50 {Fraction} 1 {decimal}
$unitMgr scaledUnit 51 {FractionPerFlow} 1 {decimal/cms}
$unitMgr scaledUnit 52 {FractionPerLength} 1 {decimal/m}
$unitMgr scaledUnit 53 {noDimension} 1 {m/m}
$unitMgr scaledUnit 54 {VolumeSquared} 1 {m6}
$unitMgr scaledUnit 55 {TimePerLength} 1 {s/m}
$unitMgr scaledUnit 56 {FlowVolume} 1 {m6/t}
$unitMgr scaledUnit 57 {FlowTime} 1 {cmshour}
$unitMgr scaledUnit 58 {FlowPerTime} 1 {cmss}
$unitMgr scaledUnit 59 {DateTime} 1 {FullDateTime}
$unitMgr scaledUnit 60 {DateTime} 1 {MonthAndDay}
$unitMgr end
# Section: Unit Schemes
"$ws.unitScheme" addUserScheme {\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
}
"$ws.unitScheme" activeUnitScheme {Scheme 1}
"$ws.unitScheme" skipTransitionScheme true
CanvasConfig SIMULATION IconLabelLocation {Below}
CanvasConfig SIMULATION CanvasColor #ffffff
CanvasConfig SIMULATION IconLabelFont {MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0}
CanvasConfig SIMULATION IconLabelFontColor #000000
CanvasConfig ACCOUNTING IconLabelLocation {Below}
CanvasConfig ACCOUNTING CanvasColor #ffffff
CanvasConfig ACCOUNTING IconLabelFont {MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0}
CanvasConfig ACCOUNTING IconLabelFontColor #000000
CanvasConfig GEOSPATIAL ProjDescription {}
CanvasConfig GEOSPATIAL ProjectionUnitsString {} 0
CanvasConfig GEOSPATIAL ProjHorizAxisText {x}
CanvasConfig GEOSPATIAL ProjVertAxisText {y}
CanvasConfig GEOSPATIAL GeoDescription {}
CanvasConfig GEOSPATIAL GeoUnitsString {deg} 4
CanvasConfig GEOSPATIAL GeoHorizAxisText {long}
CanvasConfig GEOSPATIAL GeoVertAxisText {lat}
CanvasConfig GEOSPATIAL ProjWellKnownText {}
CanvasConfig GEOSPATIAL CanvasLowerLeft 0 0
CanvasConfig GEOSPATIAL CanvasUpperRight 6450 6450
CanvasConfig GEOSPATIAL IconLabelLocation {Below}
CanvasConfig GEOSPATIAL IconSize 40
CanvasConfig GEOSPATIAL CanvasColor #ffffff
CanvasConfig GEOSPATIAL IconLabelFont {MS Shell Dlg 2,8.25,-1,5,50,0,0,0,0,0}
CanvasConfig GEOSPATIAL IconLabelFontColor #000000
CanvasConfig GEOSPATIAL DisplayScale 1
CanvasConfig GEOSPATIAL DisplayScaleFromImage 1
# Section: DMI (part one)
set mgr "$ws.dmiMgr"
"$mgr" numInvRec 0
# Section: New Time Series Text Annotation Notes
set annoMgr "$ws.AnnoMgr"
# Section: Objects
Section {Objects}
set obj {IterativeMRM_Outputs}
set o "$ws.IterativeMRM_Outputs"
$ws SimObj $obj {DataObj} 72 61 {Cyan} 16 31 227157 3494123
"$o" geospatialCoords 0 0 227157.143714 3494123.14824
"$o" objAttributes { \
}
"$o" userDescript {This object holds output/computed data from the Iterative MRM runs. Values on these slots should only be set by Iterative MRM rules and should not be input by the user.}
"$o" objOrd wsList 5576
"$o" objOrd coordMgr 438
"$o" objSlotOrderType ListOrder_DEFAULT 0 Ascend
"$o" {SeriesSlot} {IterativeRunFlag}
set s "$o.IterativeRunFlag"
"$s" order 1
"$s" userDescript {This slot is used as a check to see if we are in an iterative MRM run. It is set to 1.0 by the Pre-MRM rules. In a single run, it should be empty/NaN.
DO NOT INPUT VALUES IN THIS SLOT.}
"$s" cvg 2 0.0001
"$s" unit 0 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {NONE} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {NONE} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$o" {SeriesSlot} {UseHistoricalTraces}
set s "$o.UseHistoricalTraces"
"$s" order 0
"$s" userDescript {This slot is used by those MRM configurations that will be using historical traces instead of finding the closest years.
DO NOT INPUT VALUES HERE}
"$s" cvg 2 0.0001
"$s" unit 0 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {NONE} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {NONE} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$o" {AggSeriesSlot} {DaysInArticleVII}
set s "$o.DaysInArticleVII"
"$s" order 2
"$s" userDescript {This integer indexed slot shows the number of days ArticleVII is active.}
"$s" cvg 2 0.0001
"$s" unit 0 {%f} 0
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {NONE} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 1 @ 10
"$s" setDSeries {NONE} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 11 @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {DaysInArticleVII.SubsequentYears} "$o"
set s "$o.DaysInArticleVII.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 0 {%f} 0
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {NONE} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 1 @ 10
"$s" setDSeries {NONE} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 222 @ 10
"$o" {AggSeriesSlot} {Abiquiu_EOYStorage}
set s "$o.Abiquiu_EOYStorage"
"$s" order 5
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Abiquiu_EOYStorage.SubsequentYears} "$o"
set s "$o.Abiquiu_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {ElephantButte_EOYStorage}
set s "$o.ElephantButte_EOYStorage"
"$s" order 9
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {ElephantButte_EOYStorage.SubsequentYears} "$o"
set s "$o.ElephantButte_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Jemez_EOYStorage}
set s "$o.Jemez_EOYStorage"
"$s" order 19
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Jemez_EOYStorage.SubsequentYears} "$o"
set s "$o.Jemez_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Heron_EOYStorage}
set s "$o.Heron_EOYStorage"
"$s" order 16
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Heron_EOYStorage.SubsequentYears} "$o"
set s "$o.Heron_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {ElVado_EOYStorage}
set s "$o.ElVado_EOYStorage"
"$s" order 12
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {ElVado_EOYStorage.SubsequentYears} "$o"
set s "$o.ElVado_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Cochiti_EOYStorage}
set s "$o.Cochiti_EOYStorage"
"$s" order 8
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Cochiti_EOYStorage.SubsequentYears} "$o"
set s "$o.Cochiti_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Caballo_EOYStorage}
set s "$o.Caballo_EOYStorage"
"$s" order 7
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Caballo_EOYStorage.SubsequentYears} "$o"
set s "$o.Caballo_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Heron_MRGCD_EOYStorage}
set s "$o.Heron_MRGCD_EOYStorage"
"$s" order 18
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Heron_MRGCD_EOYStorage.SubsequentYears} "$o"
set s "$o.Heron_MRGCD_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Heron_Albuquerque_EOYStorage}
set s "$o.Heron_Albuquerque_EOYStorage"
"$s" order 15
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Heron_Albuquerque_EOYStorage.SubsequentYears} "$o"
set s "$o.Heron_Albuquerque_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Heron_FederalSanJuan_EOYStorage}
set s "$o.Heron_FederalSanJuan_EOYStorage"
"$s" order 17
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Heron_FederalSanJuan_EOYStorage.SubsequentYears} "$o"
set s "$o.Heron_FederalSanJuan_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {ElVado_MRGCD_EOYStorage}
set s "$o.ElVado_MRGCD_EOYStorage"
"$s" order 13
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {ElVado_MRGCD_EOYStorage.SubsequentYears} "$o"
set s "$o.ElVado_MRGCD_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {ElVado_RioGrande_EOYStorage}
set s "$o.ElVado_RioGrande_EOYStorage"
"$s" order 14
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {ElVado_RioGrande_EOYStorage.SubsequentYears} "$o"
set s "$o.ElVado_RioGrande_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Abiquiu_Albuquerque_EOYStorage}
set s "$o.Abiquiu_Albuquerque_EOYStorage"
"$s" order 4
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Abiquiu_Albuquerque_EOYStorage.SubsequentYears} "$o"
set s "$o.Abiquiu_Albuquerque_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Abiquiu_Reclamation_EOYStorage}
set s "$o.Abiquiu_Reclamation_EOYStorage"
"$s" order 6
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Abiquiu_Reclamation_EOYStorage.SubsequentYears} "$o"
set s "$o.Abiquiu_Reclamation_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {ElephantButte_NMCredit_EOYStorage}
set s "$o.ElephantButte_NMCredit_EOYStorage"
"$s" order 10
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {ElephantButte_NMCredit_EOYStorage.SubsequentYears} "$o"
set s "$o.ElephantButte_NMCredit_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {ElephantButte_RioGrande_EOYStorage}
set s "$o.ElephantButte_RioGrande_EOYStorage"
"$s" order 11
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {ElephantButte_RioGrande_EOYStorage.SubsequentYears} "$o"
set s "$o.ElephantButte_RioGrande_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Nambe_EOYStorage}
set s "$o.Nambe_EOYStorage"
"$s" order 20
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Nambe_EOYStorage.SubsequentYears} "$o"
set s "$o.Nambe_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Platoro_EOYStorage}
set s "$o.Platoro_EOYStorage"
"$s" order 21
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Platoro_EOYStorage.SubsequentYears} "$o"
set s "$o.Platoro_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Platoro_Conejos_EOYStorage}
set s "$o.Platoro_Conejos_EOYStorage"
"$s" order 22
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Platoro_Conejos_EOYStorage.SubsequentYears} "$o"
set s "$o.Platoro_Conejos_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Platoro_ConejosProjectStorage_EOYStorage}
set s "$o.Platoro_ConejosProjectStorage_EOYStorage"
"$s" order 23
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Platoro_ConejosProjectStorage_EOYStorage.SubsequentYears} "$o"
set s "$o.Platoro_ConejosProjectStorage_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" {AggSeriesSlot} {Platoro_RelinquishedWater_EOYStorage}
set s "$o.Platoro_RelinquishedWater_EOYStorage"
"$s" order 24
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 2 @ 10
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 09:00:00} 1 HOUR -1 NaN @ 10
"$s" setAggLabel {CurrentYear}
"$s" AggSubSlot {Platoro_RelinquishedWater_EOYStorage.SubsequentYears} "$o"
set s "$o.Platoro_RelinquishedWater_EOYStorage.SubsequentYears"
"$s" order 500
"$s" cvg 2 0.0001
"$s" unit 8 {%f} 2
"$s" minMax NaN NaN
"$s" usersIndexByInt
"$s" setFSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 2
"$s" setDSeries {m3} {01-01-1800 00:00:00} {01-01-1800 00:00:00} 1 HOUR -1 NaN
"$o" hideSlots 0 hideOff hideEmptyOff
# Section: Objects/Snapshots
# Section: Object Relationships
set obj {IterativeMRM_Outputs}
set o "$ws.IterativeMRM_Outputs"
# Section: Workspace Ornaments
Section {Workspace Ornaments}
Section {Links}
# Section: Links
# Section: Link Groups
$ws LinkGroup {Default} {linkDisplayInfo Sty:Solid Vis:1 Wid:0 Color:0 Pri:1 Ena:1}
$ws LinkGroup {Main Channel Links} {linkDisplayInfo Sty:Solid Vis:1 Wid:0 Color:0 Pri:0 Ena:1}
# Section: SimObj Groups
# Section: Multiple Run Management
Section {Multiple Run Management}
$ws.mrm format 2
$ws.mrm iterRplSet {RULESET\
NAME "Iterative MRM Rules Set";\
AGENDA_ORDER ASCENDING;\
DESCRIPTION "";\
PRECISION 8;\
BEGIN\
\
END\
}
$ws.mrm policyGroup { POLICY_GROUP "Previous Run Analysis";\
DESCRIPTION "";\
ACTIVE TRUE;\
BEGIN\
\
RULE "Output EOY Storage";\
DESCRIPTION "Output the EOY reservoir storage for all reservoirs for both the current year and subsequent years (if defined). For subsequent years, only the finish year's storages are output. This rule is called after each run in an iterative MRM run.";\
ACTIVE TRUE;\
RULE_EXEC_CONSTRAINT TRUE;\
BEGIN\
\
DESCRIPTION "Copy end of (current) year reservoir storages to integer indexed series slots.";\
FOREACH (OBJECT res IN "ListSubbasin"( "Reservoir" )) DO\
% "IterativeMRM_Outputs" & ( res CONCAT "_EOYStorage" ) ["GetRunIndex"( ), "CurrentYear"] := res & "Storage" ["EndOfCurrentYear"( )];\
\
ENDFOREACH;\
\
DESCRIPTION "Copy end of (subsequent) year reservoir storages to integer indexed series slots.";\
IF_STATEMENT (@"Start Year" != @"Finish Year") THEN\
FOREACH (OBJECT res IN "ListSubbasin"( "Reservoir" )) DO\
% "IterativeMRM_Outputs" & ( res CONCAT "_EOYStorage" ) ["GetRunIndex"( ), "SubsequentYears"] := res & "Storage" [@"Finish Timestep"];\
\
ENDFOREACH;\
\
END_IF_STATEMENT;\
\
END;\
\
RULE "Output EOY Account Storage";\
DESCRIPTION "Output the EOY account storage for various accounts for both the current year and subsequent years (if defined). For subsequent years, only the finish year's storages are output. This rule is called after each run in an iterative MRM run.";\
ACTIVE TRUE;\
RULE_EXEC_CONSTRAINT TRUE;\
BEGIN\
\
DESCRIPTION "Copy end of (current) year account storages to integer indexed series slots.";\
FOREACH (LIST objectAccount IN "ListOfOutputObjectsAndAccounts"( )) DO\
% "IterativeMRM_Outputs" & ( ( ( GET @INDEX 0.00000000 FROM objectAccount ) CONCAT "_" CONCAT GET @INDEX 1.00000000 FROM objectAccount ) CONCAT "_EOYStorage" ) ["GetRunIndex"( ), "CurrentYear"] := ( GET @INDEX 0.00000000 FROM objectAccount ) ~ ( ( GET @INDEX 1.00000000 FROM objectAccount ) CONCAT ".Storage" ) ["EndOfCurrentYear"( )];\
\
ENDFOREACH;\
\
DESCRIPTION "Copy end of (subsequent) year account storages to integer indexed series slots.";\
IF_STATEMENT (@"Start Year" != @"Finish Year") THEN\
FOREACH (LIST objectAccount IN "ListOfOutputObjectsAndAccounts"( )) DO\
% "IterativeMRM_Outputs" & ( ( ( GET @INDEX 0.00000000 FROM objectAccount ) CONCAT "_" CONCAT GET @INDEX 1.00000000 FROM objectAccount ) CONCAT "_EOYStorage" ) ["GetRunIndex"( ), "SubsequentYears"] := ( GET @INDEX 0.00000000 FROM objectAccount ) ~ ( ( GET @INDEX 1.00000000 FROM objectAccount ) CONCAT ".Storage" ) [@"Finish Timestep"];\
\
ENDFOREACH;\
\
END_IF_STATEMENT;\
\
END;\
\
RULE "Count Days in Article VII";\
DESCRIPTION "This rule sums the values in the the RioGrandeCompact.ArticleVIISwitch slot for the current year and for subsequent years (if defined). This essentially counts the number of days in which ArticleVII of the RioGrande Compact is in effect. This rule is called after each run in an iterative MRM run.";\
ACTIVE TRUE;\
RULE_EXEC_CONSTRAINT TRUE;\
BEGIN\
\
DESCRIPTION "Count the number of days in Article VII for the current year.";\
$ "IterativeMRM_Outputs.DaysInArticleVII" ["GetRunIndex"( ), "CurrentYear"] := "SumSlotSkipNaN"( $ "RioGrandeCompact.ArticleVIISwitch", @"Start Timestep", "EndOfCurrentYear"( ) );\
\
DESCRIPTION "Count the number of days in Article VII for the subsequent years (if configured).";\
IF_STATEMENT (@"Start Year" != @"Finish Year") THEN\
$ "IterativeMRM_Outputs.DaysInArticleVII" ["GetRunIndex"( ), "SubsequentYears"] := "SumSlotSkipNaN"( $ "RioGrandeCompact.ArticleVIISwitch", "EndOfCurrentYear"( ) + 1.00000000 "day", @"Finish Timestep" );\
\
END_IF_STATEMENT;\
\
END;\
\
END}
$ws.mrm policyGroup { POLICY_GROUP "Run Setup";\
DESCRIPTION "";\
ACTIVE TRUE;\
BEGIN\
\
RULE "Increment Trace";\
DESCRIPTION "Increment the "Trace" on each forecast data object to the next year in the list of years to run in IterativeMRM_Inputs.RunsToMake integer indexed series slot. This rule is called at the beginning of each run in the TracesAndForecasts iterative MRM run configuration.";\
ACTIVE TRUE;\
RULE_EXEC_CONSTRAINT TRUE;\
STOP_ON_NAN;\
BEGIN\
\
FOREACH (STRING periodInModelRun IN { "PreForecast" , "Forecast" , "PostForecast" }) DO\
FOREACH (STRING forecastLocation IN "InputForecastLocations"( )) DO\
% "HistoricalYearsForAOPRuns" & periodInModelRun [1.00000000, forecastLocation] := $ "IterativeMRM_Inputs.RunsToMake" ["GetRunIndex"( ), "Year To Run"];\
\
ENDFOREACH;\
\
ENDFOREACH;\
\
END;\
\
END}
$ws.mrm policyGroup { POLICY_GROUP "General";\
DESCRIPTION "";\
ACTIVE TRUE;\
BEGIN\
\
RULE "Use Historical Traces";\
DESCRIPTION "This rule sets a flag on a data object indicating that the MRM run is going to use historical traces (instead of finding similar years). It is called at the start of each run within a "TracesAndForecasts" iterative MRM run.";\
ACTIVE TRUE;\
RULE_EXEC_CONSTRAINT TRUE;\
BEGIN\
\
$ "IterativeMRM_Outputs.UseHistoricalTraces" ["GetRunIndex"( )] := "GetRunIndex"( );\
\
END;\
\
RULE "Set Iterative Run Flag";\
DESCRIPTION "This rule sets a flag on a data object indicating that an iterative MRM run is in progress. It is called at the start of each run within an iterative run.";\
ACTIVE TRUE;\
RULE_EXEC_CONSTRAINT TRUE;\
BEGIN\
\
$ "IterativeMRM_Outputs.IterativeRunFlag" ["GetRunIndex"( )] := "GetRunIndex"( );\
\
END;\
\
END}
$ws.mrm utilityGroup { UTILITY_GROUP "Functions";\
DESCRIPTION "";\
ACTIVE TRUE;\
BEGIN\
\
FUNCTION "StartOfRunEndOfMonth" ( )\
RETURN_TYPE DATETIME;\
SCALE_UNITS "";\
DESCRIPTION "This function returns a datetime that represents the end of month for the start month. It does this by processing lots of strings that represent the hours, month, days in that month and year. This function is necessary as iterative rules cannot use the syntax Current Month and there is no other way to get this end of month datetime.";\
ACTIVE TRUE;\
PRE_EXEC_DIAG FALSE;\
POST_EXEC_DIAG FALSE;\
BEGIN\
\
WITH DATETIME startDate = "RunStartDate"( ) DO\
"GetDate"( "24:00 " CONCAT "GetMonthAsString"( startDate ) CONCAT " " CONCAT "GetWholeNumberAsString"( "GetDaysInMonth"( startDate ) ) CONCAT ", " CONCAT "GetWholeNumberAsString"( "GetYear"( startDate ) ) )\
ENDWITH;\
\
END;\
\
FUNCTION "GetWholeNumberAsString" ( NUMERIC number )\
RETURN_TYPE STRING;\
SCALE_UNITS "";\
DESCRIPTION "Convert a number to a string, split the string into a list containing the whole number and decimal portion, t