Maybe there is not much about EMSO on this forum because although the
EMSO Model Library (EML) is an open-source piece of code, EMSO itself is
not.
People can inspect the source code of EML at
http://www.enq.ufrgs.br/trac/alsoc and also can download the simulator.
Further, the page above is also intended to be a portal for sharing new
user models.
Or perhaps because this forum was much about the development of a
(sequential) modular static simulator and EMSO is an equation-oriented
dynamic simulator. Of course static simulations are also possible with
EMSO.
Anyway, thank you for the comments.
Regards.
-
D.Sc. Rafael de Pelegrini Soares
raf...@enq.ufrgs.br - www.rps.eng.br
I should mention that before I started working with Art Westerberg and
Ben Allen on the ASCEND project I did quite a bit of work with help from
Rafael on modelling with EMSO. I really liked the EMSO language, and it
was an inspiration for some parts of the PyGTK GUI that ASCEND now has.
I did quite a bit of modelling with EMSO including development of custom
CalcObjects and some attempts at writing a new solver. Rafael has
documented EMSO very well, and the APIs are very nice and clean.
I guess that for me the key issue is that EMSO is closed source, so
things like adding a Python API are impossible for outside
collaborators. One can't be sure that it won't just disappear like Sim42
did. Rafael has assured me that it will not, but all the same, the
closed source nature makes it impossible to work collaboratively on
adding new features to EMSO such as the Python bindings that you mention.
One other issue that I found with ASCEND as compared with EMSO was that
being open source, one has the opportunity to write solvers that
interact with the system of equations in a much more intimate way. For
example, a 'blocking' solver can be devised that solves a subset of the
system of equations at a time, and for equations with only one unknown,
a 'direct solution' can be performed by algebraic manipulation of that
single equation. This sort of thing is not possible with the current
EMSO solver API AFAIK, but has been implemented in the rather nice QRSlv
solver provided by ASCEND.
ASCEND contains quite a bit of old C code, which means that although it
is open, some of the data structures are a bit difficult to understand,
it uses a number of global variables, isn't thread-safe and some of the
code is rather wordy. It would be nice to be able to rewrite some of
that. From what I understand from Rafael about EMSO, on the other hand,
is that it has been coded up in more object-oriented ways using C++, and
is thread-safe. It would be really nice if it could be opened up!
Gani, your comment about the lack of 'crispness' of the ASCEND language
is a fair comment. I think that Rafael did a much better job of defining
a natural and concise modelling language. The ASCEND language has
strange 'sentence-like' grammar with lots of capitals and underscores
that feel very clunky to the C or Python programmer. I think that the
main areas of improvement to the ASCEND language would be in the syntax
for differential equations (currently works, but is atrocious to use)
and for conditional modelling (works, and is powerful, but very clunky).
EMSO's conditional modelling syntax is concise but limited; it's
differential equation syntax is really nice.
Finally, given that we're talking here on the DWSIM mailing list, I'd
mention that both EMSO and ASCEND (as well as OpenModelica) are
equation-based modelling systems, and that makes them quite different
from DWSIM, which is sequential-modular. These are two quite different
approaches, and I think there is room for both kinds of tools.
Cheers
JP
http://ascendwiki.cheme.cmu.edu/