import diana
try:
    dmain=diana.GetDianaMain()
    # get Diana model manger
    mmanger=dmain.GetModelManager();

    # create model
    model=mmanger.CreateModel(diana.CAPE_CONTINUOUS, "HafkeReactor.so");
    model.Initialize();
    eso=model.GetActiveESO();
    esopar=eso.GetParameters();
    
    ri=dmain.CreateReportingInterface("basic");
    ri.SetComponentName("data");
    
    # create solver
    sfactory=dmain.GetSolverFactory();
    solver=sfactory.CreateSolver(diana.CAPE_DAE, model, "ida.so");
    solver.Initialize();
    solpar=solver.GetParameters();
    solver.SetReportingInterface(ri);
    ri.Add(solpar["T"]);
    ri.Add(eso.GetStateVariables().ItemByName("tk"));
    
    solpar["VerboseLevel"].SetValue(2);
    solpar["Tend"].SetValue(16000);
    solver.Solve();
    # create directory and store results
    import os
    if not os.path.isdir('results'): os.mkdir('results');
    ri.WriteData("results/dyn");
    ri.WriteDataMatlab("results/dyn.m");
except diana.ECapeUser, exc:
    print exc
