Boosd is an implementation of an object-oriented system dynamics language. Models have a simple, text-based representation:
main model {
timespec = {
start: 0
end: 50
dt: .5
save_step: 1
}
rate = .07
in flow = rate * accum
accum stock = {
inital: 200
inflow: in
}
}
This is influenced by go's syntax, but boosd models are declarative rather than imperitive. Currently the best documentation and background on boosd is my thesis.
The advantage of boosd is the formal grammar and semantics, and that the model equations are cleanly presented in a compact representation.
This is in a very rough stage. I currently test by running a pipeline like this:
time (f=`mktemp --suffix=.go`; go install && boosd models/exp.osm >$f; go run $f; rm $f)
boosd is offered under the MIT license, see LICENSE for details.