Special Interest Group for Simulation

Difference between version 32 and 33 - Previous - Next
[Arjen Markus] (20 December 2017) On the brink of the new year I have decided it is time to try and realize an old idea: form a group of Tcl'ers with a common interest in (system) simulation.
By simulation I mean both natural systems and engineering systems and possibly other sorts of systems as well. (I have bluntly stolen the title from the ACM ...)

This page is currently a place holder, but the group has been formed: Adrien Peulvast is also keen to participate. Concrete ideas are budding, as I write this, but they are far from mature ;).

If you are interested, leave your name here. 

**Update**
[Arjen Markus] (21 february 2018) FYI: I am a trifle busy until the end of this month, but I intend to pick this up again asap.



**Persons expressing interest**
Arjen Markus (arjen) - I mainly deal with simulations of "natural" systems, using PDEs and ODEs, as well as statistical techniques. But in my spare time I am interested in a much wider category of systems.

Denny Moore (dmoore)

Adrien Peulvast (APE) - I deal with simulation of transportation systems (subway, train) for training (with the help of Tk for visual presentation), debugging and testing purpose.

[DGP]

Gerald Lester ([GWL]) - simulation for gaming.

[Luc Moulinier] - Complex systems simulation

Sean Woods [hypnotoad] - I deal with systems of systems simulations, as well as visualizing shipboard casualties in 2d and 3d. This includes tracking crew movement, fire spread, flooding, and structure damage.

[RZ] - I maintain a nuclear and a fossil power plant simulator. I have written most of the user interfaces in Tcl/Tk.

**Objectives**
Things to aim for with this group:

   * Delineate what sort of systems (or simulations of systems) we are interested in
   * Identify the tools we have and identify what tools we lack
   * Define/build/develop - in a pragmatic way! - a framework for simulating and testing the sort of systems we are interested in. (''Note:'' It may be very ambitious to put everything we want to do with simulation into a single "solution", so perhaps we should aim for several more dedicated frameworks)
   * Demonstrate the strong points of Tcl/Tk regarding such systems

From a more technical point of view:

   * We may need to include third-party libraries, such as databases or queuing systems

**Roadmap**
[APE] : I propose to let interested persons to add their names above until end of January, and then we will start thinking about the next steps. It doesn't mean that other persons cannot participate, but they will on-board in on-going activities.


%|roadmap item|target date|%
&|initial list of participants|?|&
&|system simulation group start meeting|?|&
&|next steps definition|?|&

**Definitions**
[APE] : having a common shared understanding is mandatory to discuss. Let's start with first ones - simulation and system - and a third one linking them.


   * '''System''' (Wikipedia) : ''A system is a regularly interacting or interdependent group of items forming a unified whole. Every system is delineated by its spatial and temporal boundaries, surrounded and influenced by its environment, described by its structure and purpose and expressed in its functioning ''


   * '''Simulation''' (Wikipedia) : ''Simulation is the imitation of the operation of a real-world process or system over time. The act of simulating something first requires that a model be developed; this model represents the key characteristics, behaviors and functions of the selected physical or abstract system or process. The model represents the system itself, whereas the simulation represents the operation of the system over time.''


   * '''Ontology''' (Wikipedia) : ''In computer science and information science, an ontology is a formal naming and definition of the types, properties, and interrelationships of the entities that really exist in a particular domain of discourse. Thus, it is basically a taxonomy. It does not draw on the 'old' philosophical discipline 'ontology' as it was established in antiquity. An ontology (in information science) compartmentalizes the variables needed for some set of computations and establishes the relationships between them.''

   * '''synchronous/asynchronous system''' : Asynchronous systems gives inputs/outputs at undefined time or continuously. Synchronous systems get inputs at periodic or given time and produce outputs at periodic or given time (could include a notion of clock, cyclic execution). A system of synchronous systems also shoud take into account transmission time between system components. In the simulation framework (see references below), the basis is an asynchronous system (which does not mean that time is not involved). In control/command computer safety systems (like train control systems), the subsystems are based on synchronous computer systems (cyclic computation, like a PLC).

**References**
[APE] : can be anything used to support the group discussions from Wikipedia, white-papers, wiki pages.

[APE] : [Simulation framework] is very interesting to look at

**Discussions**

[arjen] Already quite a few years ago I added a module "simulation" to Tcllib. It covers only a very small set of simulation types, but it might serve as a beginning.

[hypnotoad] - I've been working an a rapid prototyping system for adapting C code into Tcl. It includes a vector library and Tcl value representation for arrays of doubles, geometrical figures like polygons, and object oriented containers for having physical items interact.

[DDG] Sounds interesting, but I currently use R for this type of simulations such as here in this Monte Carlo simulation paper https://www.nature.com/articles/ejcn201645 - what would be the advantages using Tcl?

[arjen] That is a good question, offhand I would say there is no intrinsic advantage to use either instead of the other, but I myself feel a lot more comfortable with Tcl.

[lm] Two little things: (1) Paul Obermeier ( [po] ) aside tcl3d developed a C utility library to manipulate vectors and matrices. Maybe this could help ? (2) For R, a good compromise is to work in Tcl and send commands to R. I have a working piece of code for that, but the greatest way to do so would be to use Rserve, which is a R server running as a daemon. You connect to the daemon using a client. Unfortunately, there is no client for Tcl ... The Rserve communication protocol seems complex. Maybe writing a Tcl Rclient could be a first contribution of the group ? (there are clients in C++, and maybe java)

[DDG] Thinking myself: one issue with R is the licensing schema. R is mostly GPL-like, TCL is mostly BSD-like, + for Tcl here.    RServe-Client would be a good point, it would do something useful on it's own. @lm - which library you mean? We have a lot of matrix and array providing packages in Tcl, may be too many to decide which is the one to go with :(

[arjen] I would like to read the article you referred to :). Unfortunately I have no access.

[DDG] I send you an E-Mail.

[lm] I tried the new version of the [Rtcl] package and it works like a charm ! That opens the HUGE R library to the Tcl world.
[DDG] 12/31/2019 : I did not got [RTcl] running within Win7-64bit, only within Linux-64bit. As I have to deliver applications also for Windows machines I gave up on using [Rtcl] at this point. Currently I write R-code mainly and use the tcltk package of R as well some starkit approaches to wrap my R-code. I also use my TclTk-megawidgets within R. 

[APE] 12/31/2019 : Year 2020 resolution, I would like to contribute to this group and hope it will progress :-) 

<<categories>> Person