--- A simple water in the tub model.
-- @arg data.water The initial stock of water measured in gallons. The default value is 40.
-- @arg data.outFlow The flow of water outside the tub each minute. The default is 5.
-- @arg data.inFlow The flow of water into the tub each ten minutes. The default is zero.
-- @arg data.finalTime The final time of the simulation in minutes. The default value is 8.
-- @image tub.bmp
Tub = Model{
water = 40,
outFlow = 5,
inFlow = 0,
finalTime = 8,
execute = function(model)
model.water = model.water - model.outFlow
if model.water < 0 then
model.water = 0
end
end,
init = function (model)
model.chart = Chart{
target = model,
select = "water"
}
model.timer = Timer{
Event{action = model},
Event{period = 10, action = function()
model.water = model.water + model.inFlow
end},
Event{action = model.chart}
}
end
}