[EuroPython] extended abstract for refereed paper at Europython Conference in Sweden

paul.nolan at nuigalway.ie paul.nolan at nuigalway.ie
Tue Apr 26 17:05:59 CEST 2005


I realise that I may be a little late but below is extended abstract for a paper
for the European Python conference. I could manage to have the full paper in
a couple of days.

best regards,

Paul Nolan
-------------- next part --------------
Implementing Continuous Time Simulation Systems in Python

Professor Paul J. Nolan
Department of Mechanical Engineering
National University of Ireland,

paul.nolan at nuigalway.ie


Computer simulation is very well established in studying complex systems. 
Simulation, often called 'the laboratory of management' allows us to develop 
a model of a real system (either existing or planned) and to run
WHAT-IF experiments on the model to predict what would happen in the real
system. The earliest of the so-called SPLs (Simulation Programming
Languages) were based on FORTRAN but C based system and subsequently C++
and a plethora of other language based systems evolved.  There are a huge 
number of SPLs -  as early as in the 1980's alone well over 100 systems
were reported. In many cases there was huge overlap between 'new' systems
and existing ones, many were promoted by commercial vendors and, their life 
cycle of many of these SPLs and packages has ended. 

Originally all simulation was performed on mainframes and simulation
was the preserve of academics or of big corporations. In the past 15 years
or so, with the widespread availability of PCs including notebook computers,
simulation .. Recent trends in simulation includes hierarchical modelling and 
object orientation, advanced GUIs including visual model builders, animations 
and so-called virtual environments.

Given the proliferation of simulation systems, one might be forgiven for being
less that enthusiastic about the introduction of YASL (Yet Another Simulation
Language). We are not proposing a commercial system but rather an open
source system which will allow us to perform medium scale simulations easily. 
There are some very strong arguments for using Python including the fact
that it is scripted, relatively easy syntax, allows rapid development, 
object orientated, available on a wide variety of platforms, easily
deployable on the web  and open source. The fact that there is a huge 
fraternity already using Python and the availability of Numerical Python, 
easy database integration and evolving GUI tools such as wxPython also add 
to its attraction.

A simulation system SimPy has been reported in the European Python conference.
The SimPy system is for so-called discrete event simulation used for modelling 
discrete processes when state changes at discrete times (event times). Another 
major class of simulation problems involves the study of continuous time 
systems. Such systems comprising physical devices e.g. electric, electronic, 
mechanical, hydraulic and  pneumatic components. The modelling of there is 
based the laws of physics and usually involves differential equations and 
coupled algebraic equations. These equations may in general be nonlinear.  
This is primarily the focus of our simulation work.

In this paper we describe a very small but yet extremely simulation system
written in Python. It is object orientated and different system models may be
readily incorporated. The simulator uses a simple trapezoidal rule for the numer
ical integration of the nonlinear differential equations describing the system.
The system is interactive and currently uses a command line interface. It has 
been used as a teaching aid in the study of computer control of 
electromechanical systems. As a specific example, the paper shows results
for the dynamic simulation of an asynchronous generator being driven by a 
wind turbine. 

Future plans on the incorporation of SFG (signal flow graphs), block diagrams 
and BG (bond graphs) for modelling as well use of a GUI, including model 
generator and animation system using wxPython is discussed.

More information about the EuroPython mailing list