Sample Policy File
#
# WholesalePrices_Fuel_Hi.jl
#
using SmallModel
module WholesalePrices_Fuel_Hi
import ...SmallModel: ReadDisk,WriteDisk,Select
import ...SmallModel: HisTime,ITime,MaxTime,Zero,First,Last,Future,Final,Yr
import ...SmallModel: @finite_math,finite_inverse,finite_divide,finite_power,finite_exp,finite_log
import ...SmallModel: DB
const VariableArray{N} = Array{Float32,N} where {N}
const SetArray = Vector{String}
Base.@kwdef struct WholesalePrices_Fuel_Hi_Data
db::String
BCNameDB::String = ReadDisk(db,"E2020DB/BCNameDB") # Base Case Name
Area::SetArray = ReadDisk(db,"E2020DB/AreaKey")
AreaDS::SetArray = ReadDisk(db,"E2020DB/AreaDS")
Areas::Vector{Int} = collect(Select(Area))
ES::SetArray = ReadDisk(db,"E2020DB/ESKey")
ESDS::SetArray = ReadDisk(db,"E2020DB/ESDS")
ESs::Vector{Int} = collect(Select(ES))
Fuel::SetArray = ReadDisk(db,"E2020DB/FuelKey")
FuelDS::SetArray = ReadDisk(db,"E2020DB/FuelDS")
Fuels::Vector{Int} = collect(Select(Fuel))
Nation::SetArray = ReadDisk(db,"E2020DB/NationKey")
NationDS::SetArray = ReadDisk(db,"E2020DB/NationDS")
Nations::Vector{Int} = collect(Select(Nation))
Year::SetArray = ReadDisk(db,"E2020DB/YearKey")
YearDS::SetArray = ReadDisk(db,"E2020DB/YearDS")
Years::Vector{Int} = collect(Select(Year))
ANMap::VariableArray{2} = ReadDisk(db,"E2020DB/ANMap") # [Area,Nation] Map between Area and Nation
ENPN::VariableArray{3} = ReadDisk(db, "SOutput/ENPN") # [Fuel,Nation,Year] Primary Fuel Price ($/mmBtu)
xExchangeRateNation::VariableArray{2} = ReadDisk(db,"MInput/xExchangeRateNation") # [Nation,Year] Local Currency/US$ Exchange Rate (Local/US$)
xENPN::VariableArray{3} = ReadDisk(db,"SInput/xENPN") # [Fuel,Nation,Year] Wholesale Energy Prices (1985 US$/mmBtu)
xInflationNation::VariableArray{2} = ReadDisk(db,"MInput/xInflationNation") # [Nation,Year] Inflation Index ($/$)
# Scratch Variables
AEOPrices::VariableArray{2} = zeros(Float32,length(Fuel),length(Year)) # [Fuel,Year] AEO Wholesale Fuel Prices ($/mmBtu)
end
function PricePolicy(db)
data = WholesalePrices_Fuel_Hi_Data(; db)
(;ES,Fuel,Fuels,Nation,Nations,Years) = data
(;ANMap,ENPN,xExchangeRateNation,xENPN,xInflationNation) = data
(;AEOPrices) = data
CN = Select(Nation,"CN")
fuel = Select(Fuel,"NaturalGas")
xENPN[fuel,CN,Yr(2026)] = xENPN[fuel,CN,Yr(2026)]*(1 + 0.0 )
#
# Light Crude Oil Price
#
fuel = Select(Fuel,"LightCrudeOil")
xENPN[fuel,CN,Yr(2026)] = xENPN[fuel,CN,Yr(2026)]*(1 + 0.704)
#
# Heavy Crude Oil Price
#
fuel = Select(Fuel,"HeavyCrudeOil")
xENPN[fuel,CN,Yr(2026)] = xENPN[fuel,CN,Yr(2026)]*(1 + 0.716)
fuels = Select(Fuel,["LightCrudeOil","HeavyCrudeOil"])
for fuel in Fuels
ENPN[fuel,CN,Yr(2026)] = xENPN[fuel,CN,Yr(2026)]
end
WriteDisk(db,"SInput/xENPN",xENPN)
WriteDisk(db,"SOutput/ENPN",ENPN)
end
function PolicyControl(db)
@info "WholesalePrices_Fuel_Hi.jl - PolicyControl"
PricePolicy(db)
end
if abspath(PROGRAM_FILE) == @__FILE__
PolicyControl(DB)
end
end