/[ascend]/trunk/pygtk/simulation.h
ViewVC logotype

Contents of /trunk/pygtk/simulation.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 775 - (show annotations) (download) (as text)
Sat Jul 15 07:18:54 2006 UTC (13 years, 7 months ago) by johnpye
File MIME type: text/x-chdr
File size: 2859 byte(s)
Tidied up headers in slvDOF.h
Added 'show freeable vars' to GUI.
Fixed up the 'check' function a bit. It was doing strange things.
1 #ifndef ASCXX_SIMULATION_H
2 #define ASCXX_SIMULATION_H
3
4 #include <string>
5 #include <vector>
6 #include <map>
7
8 #include "symchar.h"
9 #include "type.h"
10 #include "instance.h"
11 #include "variable.h"
12 #include "relation.h"
13
14 #include "config.h"
15 extern "C"{
16 #include <compiler/createinst.h>
17 #include <solver/slv_types.h>
18 }
19
20 class Solver;
21 class SolverParameters;
22 class SolverStatus;
23 class IncidenceMatrix;
24 class SolverReporter;
25
26 /**
27 A class to contain singularity information as returned by the DOF
28 function slvDOF_structsing.
29 */
30 class SingularityInfo{
31 public:
32 bool isSingular() const;
33 std::vector<Relation> rels; /**< relations involved in the singularity */
34 std::vector<Variable> vars; /**< variables involved in the singularity */
35 std::vector<Variable> freeablevars; /**< vars that should be freed */
36 };
37
38 enum StructuralStatus{
39 ASCXX_DOF_UNDERSPECIFIED=1,
40 ASCXX_DOF_SQUARE=2, /* = everything's ok */
41 ASCXX_DOF_OVERSPECIFIED=4,
42 ASCXX_DOF_STRUCT_SINGULAR=3
43 };
44
45 /**
46 @TODO This class is for *Simulation* instances.
47
48 Handle instantiating, running initialisation functions, solving
49 and outputing results of solutions.
50
51 In ASCEND C-code, a simulation is a special type of Instance. It
52 has a 'simulation root' instance which often needs to be used for
53 solving, inspecting, etc, rather than the simulation instance itself.
54 */
55 class Simulation : public Instanc{
56 friend class IncidenceMatrix;
57 friend class SolverStatus;
58 friend class Integrator;
59
60 private:
61 Instanc simroot;
62 slv_system_structure *sys;
63 bool is_built;
64 SingularityInfo *sing; /// will be used to store this iff singularity found
65
66 // options to pass to BinTokenSetOptions
67 /// @TODO these should probably be put somewhere else
68 std::string *bin_srcname;
69 std::string *bin_objname;
70 std::string *bin_libname;
71 std::string *bin_cmd;
72 std::string *bin_rm;
73
74 int activeblock;
75
76 protected:
77 slv_system_structure *getSystem();
78
79 public:
80 explicit Simulation(Instance *i, const SymChar &name);
81 Simulation(const Simulation &);
82 ~Simulation();
83
84 Instanc &getModel();
85 void run(const Method &method);
86 void run(const Method &method, Instanc &model);
87 enum StructuralStatus checkDoF() const;
88 void checkInstance();
89 void build();
90 void solve(Solver s, SolverReporter &reporter);
91 std::vector<Variable> getFixableVariables();
92 std::vector<Variable> getVariablesNearBounds(const double &epsilon=1e-4);
93
94 void write();
95
96 void setSolver(Solver &s);
97 const Solver getSolver() const;
98
99 SolverParameters getSolverParameters() const;
100 void setSolverParameters(SolverParameters &);
101
102 IncidenceMatrix getIncidenceMatrix();
103
104 const std::string getInstanceName(const Instanc &) const;
105
106 void processVarStatus();
107 const int getNumVars();
108
109 const int getActiveBlock() const;
110
111 std::vector<Variable> getFreeableVariables();
112 bool checkStructuralSingularity();
113 const SingularityInfo &getSingularityInfo() const;
114 };
115
116
117 #endif

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22