discopt.dae#
discopt.dae – DAE discretization for dynamic optimization.
Transcribe ODE/DAE systems into algebraic constraints using orthogonal collocation on finite elements or finite differences. Compatible with the standard discopt modeling API – no changes to the DAG compiler or solver.
Quick Start#
>>> import discopt.modeling as dm
>>> from discopt.dae import ContinuousSet, DAEBuilder
>>>
>>> m = dm.Model("batch_reactor")
>>> cs = ContinuousSet("t", bounds=(0, 5), nfe=30, ncp=3)
>>> dae = DAEBuilder(m, cs)
>>> dae.add_state("C", initial=1.0, bounds=(0, 2))
>>> dae.set_ode(lambda t, s, a, c: {"C": -0.5 * s["C"]})
>>> dae.discretize()
>>> m.minimize(dae.get_state("C")[-1, -1] ** 2)
>>> result = m.solve()