Electrical Network Interactive Analysis Console
and the Eniac Extension language
About this projectThis project take his name from the famous ENIAC Electronic Numerical Integrator And Computer (external link).
Eniac (which I have changed acronym to Electrical Network Interactive Analysis Console)
is an educational software witch performs a lot of mathematical and engineering calculation,
and it was initially designed to study the behavior of electrical networks, but its use goes far beyond this purpose...
For this reason I have in mind to change the name into Engineering Numerical Interactive Analysis Console
Eniac is build on a new extension language (called "Eniac" in honour of the first general-purpose electronic computer) which could be use to "extend" your programs and applications, give them a programming possibility with a simple and powerful embeddable scripting language.
"This feature has grown slowly during the development of the program, but is becoming increasingly important, beginning to live their own life and is not necessarily connected to the original networks analisys, but can also be used for general purposes."
Eniac scripts are compiled and executed in an internal Virtual Machine that interprets a set of about fifty elementary instructions.
Eniac also provides the opportunity to debug the code step by step using both high level and low-level virtual machine instructions.
This again has an educational value in understanding how a compiler works.
I have started this project for these reasons:
How Eniac worksThe interface of the Eniac engine is basically an interactive console which respond to commands (like unix shell or windows cmd).
These commands are interpreted by a lexical analyzer using a particular semantic algebra, in this way, you can write expressions as you are habit to do,
Check the link Eniac Language to have a more detailed description of most constructs supported.
How it's possible analyze an electrical network with Eniac?
Take for example a simple RC network as shown in the figure:
We can introduce the schema as described below, having previously numbered nodes in the circuit, taking 0 as the ground node.
bode(f) plot bode diagrams on file bode.gif,
bode(f) plot nyquist diagram on file nyquist.gif,
rootlocus(f) plot root locus on file roots.gif
Look a more complex example here: Active pass band filter
History of E.n.i.a.c.Eniac start his life in 1989 as a BASIC program for CASIO FX850, starting from the lessons of Electrical Network Theory at Politecnico di Torino.
After that time, I decided to port it to a Macintosh II traslating it in C language, I maked also a nice GUI, and I renamed it "MacTronic".
Now, after a lot of years, I have just a printed copy of the source code of MacTronic, so I have decided to revive that project, rewriting it and returning to the original name.
Eniac will be composed by 2 main programs:
Download and test it!!Eniac is available for Win32 (I'm test it only on XP, I don't known if it run also on Vista) and Linux for intel.
I think there should be no problem to compile it on MacOSX, since I have not used any specific function and library of Windows or Linux.
(I'm sorry, but I'm not equipped to build Eniac on Mac)
If someone want to try to compile it on Mac, He will be welcome!
You can download and test the pre-release here:
Don't forget to give me your opinion and suggestion!!
LicensingEniac is a free software, open source and distributed under the terms of the GNU General Public License (external link).
SVN RepositoryYou can get last development version from: http://eniac-lab.svn.sourceforge.net/
NewsThis is a "spare time project" so, the development could be very slow, I'm sorry!
List of news from most recent to oldest:
Missing features and wrong things
PerformanceAs Eniac uses the C++ as programming language, the performance is not so excellent, but more than enough for the purpose of the program.
I hope to improve performances with next releases (for example to use of Gauss-Jordan to calculate determinants, or other more efficient algorithms)
LinksEniac Sourceforge Project Home
The Eniac Language
The Eniac programming language is somewhat inspired by the philosophy of Lua (opensource)
I have also taken other inspirations from Matlab (commercial) and Maxima, a Computer Algebra System (opensource),
softwares that I would recommend, if you're looking for something more mature and consolidated.