PetriMetaSens: dyn.py

File dyn.py, 1.4 KB (added by soldatov, 12 years ago)

DIANA simulation script

Line 
1import sys
2
3import diana
4try:
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
52except diana.ECapeUser, exc:
53    print '! Exception:', exc