Home Products Screenshots News Events Papers Support Download Contact us


Description > Equation solver

EcosimPro as a pure equation solver

Apart from all the qualities which make EcosimPro a powerful simulation environment for very complex hybrid systems (thermal fluid dynamics, chemical, mechanical, electrical, ...), its mathematical capabilities to solve differential-algebraic equation systems can be used to solve any mathematical problem of this type; in other words, it can be used as a mathematical calculation tool.

EcosimPro uses a modelling language that is very easy to learn, so entering a system of equations to be solved is a trivial task. It also has a graphical user interface, so its use is quite intuitive.

Types of equations

EcosimPro can solve any type of linear, non-linear, differential-algebraic (DAE) or ordinary-differential (ODE) equation. Additionally, when modelling, it is possible to enter discrete events so that the simulation halts enabling the user to change the conditions.

The solvers used are DASSL (L. Petzold) for the DAEs, and fourth order Runge-Kutta for the ODEs. It also has a Newton-Raphson based solver for non-linear equations, and its own algorithms for extracting roots.

Non-causal modelling

Non-causal modelling means that when an equation is entered, the order is not predefined. We are not entering assignations but equivalences which must be complied with at all times. For example, if we model Ohm's law with the equation:

V = R * I

we could have written it in other ways, such as:

0 = V - R * I
R = V / I
R - V / I = 0

These are all the same to EcosimPro as the program takes the initiative to isolate any variable whenever necessary. Sometimes it may be interested in the law when it knows "I" and "R", other times when it knows "V" and "R" and other times when it knows "V" and "I". EcosimPro's symbolic algorithms will transform the correct equation in each case.

Order of equations

When components are modelled with several equations, the order in which they are entered is not important, as EcosimPro will sort them optimally at the end of the process.

For instance, when modelling a pendulum using Cartesian coordinates:

CONST REAL g = 9.806 "gravity (m/s**2)"

COMPONENT pendulum
   DATA
      REAL m = 1 "Mass (Kg)"
      REAL L = 1 "Length (m)"
   DECLS
      REAL x "X axis position (m)"
      REAL y "Y axis position (m)"
      REAL T "Tension (N)"
   CONTINUOUS
      m * x'' = - T * x / L
      m * y'' = m * g - T * y / L
      x**2 + y**2 = L**2
END COMPONENT

the order of the equations (and the format) can be changed. EcosimPro will sort them automatically.

Math wizards

EcosimPro has three types of math wizards to help create the correct and final mathematical model:

Example

Particle movement

Suppose we want to model the exact movement of a mass following Newton's laws. This could be modelled using EL (EcosimPro Language) as follows:

COMPONENT particle
   DATA
      REAL m = 1 "Particle mass (Kg)"
   DECLS
      REAL F "External force (N)"
      REAL x "Particle position (m)"
   CONTINUOUS
         -- Newton's law
      F = m * x''
END COMPONENT

As can be seen, the modelling is done intuitively. From this point onwards, EcosimPro will help the user to achieve a consistent mathematical model. In this case we could take "F" as a boundary condition, since "m" is a datum and "x" is dynamic. The user could run an experiment to integrate the model by making the force follow the value of "sin(TIME)". For example, the user could integrate between "0" and "15" seconds, with a "0.1" second communication interval. The code would be as follows:

EXPERIMENT exp1 ON particle.model
   BOUNDS -- init boundary variables
      F = sin(TIME)
   BODY
      REPORT_TABLE("myReport.rpt","*")
      TIME = 0.
      TSTOP = 15.
      CINT = 0.1
      INTEG( )
END EXPERIMENT

The results of the simulation are written to the "myReport.rpt" file. We can also use EcosimPro's simulation and monitoring interface "EcosimPro Monitor" and the following graph would be displayed:

Particle movement plot

This is a trivial example, but in the same way as we have solved one equation, we can just as easily do it for many. EcosimPro always handles the complexities of ordering, isolation of variables, detection of algebraic loops, resolution of high index problems, and calls to numerical solvers.

Going a little further, we get to object-oriented system modelling, which is in fact the main application. In this case the complex models are not modelled with a single component but with many of them. A component can have instances of other objects within itself. This is where the true power of EcosimPro begins. If you visit other applications of the tool, you will be able to see this powerful concept in action.