1 | import sys |
---|
2 | |
---|
3 | import diana |
---|
4 | try: |
---|
5 | dmain=diana.GetDianaMain() |
---|
6 | # get Diana model manger |
---|
7 | mmanger=dmain.GetModelManager() |
---|
8 | # create model |
---|
9 | model=mmanger.CreateModel(diana.CAPE_CONTINUOUS, "Example.so") |
---|
10 | model.Initialize() |
---|
11 | eso = model.GetActiveESO() |
---|
12 | epar = eso.GetParameters() |
---|
13 | evar = eso.GetStateVariables() |
---|
14 | |
---|
15 | # create sensitivity model based on base model |
---|
16 | #sensmodel = model.GetSensitivityModel(['p1', 'p2', 'p3'], []) |
---|
17 | sensmodel = model.GetSensitivityModel(['p1'], []) |
---|
18 | sensmodel.Initialize() |
---|
19 | |
---|
20 | # create solver |
---|
21 | sfactory = dmain.GetSolverFactory() |
---|
22 | solver = sfactory.CreateSolver(diana.CAPE_DAE, sensmodel, "petri_meta_sens") |
---|
23 | solver.Initialize() |
---|
24 | spar = solver.GetParameters() |
---|
25 | spar['VerboseLevel'].SetValue(6) |
---|
26 | spar['Tend'].SetValue(40) |
---|
27 | |
---|
28 | # create report |
---|
29 | ri=dmain.CreateReportingInterface("basic") |
---|
30 | ri.SetComponentName("data") |
---|
31 | solver.SetReportingInterface(ri) |
---|
32 | ri.Add(spar['T']) |
---|
33 | ri.Add(evar['x1']) |
---|
34 | ri.Add(evar['x2']) |
---|
35 | ri.Add(epar['state_l']) |
---|
36 | ri.Add(epar['from_l_to_v']) |
---|
37 | ri.Add(epar['from_v_to_l']) |
---|
38 | |
---|
39 | solver.Solve() |
---|
40 | spar['T'].GetValue() |
---|
41 | |
---|
42 | z = sensmodel.GetSensESO() |
---|
43 | print "=" * 20 |
---|
44 | print z.GetAllSensitivities() |
---|
45 | |
---|
46 | # store results into directory |
---|
47 | import os |
---|
48 | if not os.path.isdir('results'): os.mkdir('results'); |
---|
49 | ri.WriteData("results/dyn") |
---|
50 | ri.WriteDataMatlab("results/dyn.m") |
---|
51 | |
---|
52 | except diana.ECapeUser, exc: |
---|
53 | print '! Exception:', exc |
---|