1 | import diana |
---|
2 | try: |
---|
3 | dmain=diana.GetDianaMain() |
---|
4 | # get Diana model manger |
---|
5 | mmanger=dmain.GetModelManager(); |
---|
6 | |
---|
7 | # create model |
---|
8 | model=mmanger.CreateModel(diana.CAPE_CONTINUOUS, "Cstr.so"); |
---|
9 | model.Initialize(); |
---|
10 | eso=model.GetActiveESO(); |
---|
11 | esopar=eso.GetParameters(); |
---|
12 | ri=dmain.CreateReportingInterface("basic"); |
---|
13 | ri.SetComponentName("data"); |
---|
14 | |
---|
15 | # create solver |
---|
16 | sfactory=dmain.GetSolverFactory(); |
---|
17 | |
---|
18 | ## consistent initial conditions solver calling |
---|
19 | icsolver=sfactory.CreateSolver(diana.CAPE_IC, model, "icsolver.so"); |
---|
20 | icsolver.Initialize(); |
---|
21 | icpar=icsolver.GetParameters(); |
---|
22 | icpar['VerboseLevel'].SetValue(0); |
---|
23 | icsolver.Solve(); |
---|
24 | ## |
---|
25 | |
---|
26 | solver=sfactory.CreateSolver(diana.CAPE_DAE, model, "ida.so"); |
---|
27 | solver.Initialize(); |
---|
28 | solpar=solver.GetParameters(); |
---|
29 | solver.SetReportingInterface(ri); |
---|
30 | |
---|
31 | ri.Add(solpar["T"]); |
---|
32 | ri.Add(eso.GetStateVariables().ItemByName("x1")); |
---|
33 | ri.Add(eso.GetStateVariables().ItemByName("x2")); |
---|
34 | |
---|
35 | solpar["VerboseLevel"].SetValue(1); |
---|
36 | solpar["Tend"].SetValue(100); |
---|
37 | solver.Solve(); |
---|
38 | |
---|
39 | # create directory and store results |
---|
40 | import os |
---|
41 | if not os.path.isdir('results'): os.mkdir('results'); |
---|
42 | ri.WriteData("results/Cstr"); |
---|
43 | ri.WriteDataMatlab("results/Cstr.m"); |
---|
44 | except diana.ECapeUser, exc: |
---|
45 | print repr(exc) |
---|