DianaICSolver: AdsColumn.py

File AdsColumn.py, 2.3 KB (added by miroshkin, 14 years ago)

Adsorption column: python script

Line 
1import diana
2try:
3  N = 10;
4  dmain=diana.GetDianaMain()
5
6  # get Diana model manger
7  mmanger=dmain.GetModelManager();
8
9  # create model
10  model=mmanger.CreateModel(diana.CAPE_CONTINUOUS, "Adscolumn.so");
11  model.Initialize();
12  eso=model.GetActiveESO();
13  esopar=eso.GetParameters();
14  esopar["n"].SetValue(N);
15  ri=dmain.CreateReportingInterface("basic");
16  ri.SetComponentName("data");
17  sfactory = dmain.GetSolverFactory();
18
19  # residuals with initial guess
20  print "Initial guess"
21  print "States:", eso.GetAllVariables();
22  print "Derivatives:", eso.GetAllDerivatives();
23  print "Residuals:", eso.GetAllResiduals();
24
25  # create consistent initial conditions solver
26  icsolver=sfactory.CreateSolver(diana.CAPE_IC, model, "icsolver.so");
27  icsolver.Initialize();
28  icpar=icsolver.GetParameters();
29  icpar["VerboseLevel"].SetValue(1);
30  icsolver.Solve();
31
32  # residuals with initial guess
33  print "Consistent initial conditions"
34  print "States:", eso.GetAllVariables();
35  print "Derivatives:", eso.GetAllDerivatives();
36  print "Residuals:", eso.GetAllResiduals();
37
38# create solver
39  solver=sfactory.CreateSolver(diana.CAPE_DAE, model, "ida.so");
40  solver.Initialize();
41  solpar=solver.GetParameters();
42  solver.SetReportingInterface(ri);
43  ri.Add(solpar["T"]);
44
45  for i in range(1,N+1):
46        name = "c_a["+str(i)+"]";
47        ri.Add(eso.GetStateVariables().ItemByName(name));
48  for i in range(1,N+1):
49        name = "c_b["+str(i)+"]";
50        ri.Add(eso.GetStateVariables().ItemByName(name));
51  for i in range(1,N+1):
52        name = "q_a["+str(i)+"]";
53        ri.Add(eso.GetStateVariables().ItemByName(name));
54  for i in range(1,N+1):
55        name = "q_b["+str(i)+"]";
56        ri.Add(eso.GetStateVariables().ItemByName(name));
57
58  esopar["cina"].SetValue(8);
59  esopar["cinb"].SetValue(8);
60  esopar["v"].SetValue(1);
61  esopar["l"].SetValue(20);
62  esopar["n"].SetValue(N);
63  solpar["VerboseLevel"].SetValue(1);
64  solpar["Tend"].SetValue(2);
65  solver.Solve();
66  esopar["cina"].SetValue(0);
67  esopar["cinb"].SetValue(0);
68  solpar["Tend"].SetValue(100);
69  solver.Solve();
70
71# create directory and store results
72  import os
73  if not os.path.isdir('results'):
74          os.mkdir('results');
75  ri.WriteData("results/AdsColumn");
76  ri.WriteDataMatlab("results/AdsColumn.m");
77
78except diana.ECapeUser, exc:
79  print repr(exc)
80