Evgenii B. Rudnyi

Home Teaching Programming Publications

Top

Short History

I started programming when I was a student. I was in the 13th group at Chemistry Department of Moscow State University. Traditionally this group specialized in computing in chemistry. Many thanks to M. G. Anashkin who was responsible for our group. He has made a lot to give us the best access to computational resources that have been available at that time.

I started with MIR-2 and then from 1979 to 1988 was working on BESM-6. A cool thing. I worked from a terminal although occasionally I even used punch cards. I had about 6 Kb of space on my student account and hence needed to keep my program at the tape. In order to edit a program on the tape it was necessary to write a special editing job. ed-like editing, not speaking of vi, was a dream.

In 80th, we also had Elektronika D3-28 (at the middle of the linked page) at the lab. It was possible to enter assembler from a keyboard and then to save the code to the tape. Since the middle of 80th, there were SM-4 minicomputers as well.

I switched to PC since 1989 and then since 2001 was back to the real thing: Sun Ultra (4 processors with 4 Gb of RAM).

FORTRAN-IV was a natural choice for the first programming language. The slogan of that time was "Real Programmers Don't Use Pascal". During PC time I switched to Fortran 77. Yet, after I had written kcl, I understood that it is time to search for another programming language and switched to C++. I still like it.

At IMTEK, I used Mathematica for rapid prototyping. Well, I worked with Reduce during 90th but only at IMTEK I have learned the beauty of Lisp. I would say that Mathematica is Lisp with a human face.

At present, I am using Python with SciPy for rapid development.

Some codes from my archives are presented at this page.

Top

Fortran

eqconst: Simultaneous Treatment of Equilibrium Constants

Download

eqconst is a program that I have written in 1992 for my papers on the simultaneous treatment of equilibrium constants. Mathematically speaking, this is multivariant regression. The goal was to apply it for my special case. Basically, this is rather straightforward linear algebra.

The archive also contains the data files with the experimental equilibirum constants from the papers. In my view, the file format was not that bad as compared with conventional Fortran datafiles.

It is necessary to have either LIN3VP from IMSL or Lapack.

kcl: Vaporization Thermodynamics of KCl (Variance Component Analysis)

Download

This is the code that I wrote to make computations for papers on KCl. I have made it in 1992 for Lahey compiler at my PC. The archive also contains the original datafile with experimental results from many papers.

Mathematically speaking, this the maximum likelihood for a special case. Requirements: IMSL subroutines ZXSSQ and LINV3P.

The code is inflexible: using it for another case means almost a complete re-write. Yet, there were no way to make it flexible in Fortran 77 and since then I switched to C++. Technically speaking, I needed an array of pointers to functions not speaking of memory managment. The next step in this direction was varcomp.

Top

plasma: Computing Equilibrium Composition in Air Plasma

Download

The archive contains a sample code that I have written in 1993-1998 to compute equilibrium composition for my papers. The code is rather simple: this is a loop to run VCS several times to produce a file with results for plotting. The archive also contains the Gibbs energies required for computations.

Requirements: VCS subroutine from Smith and Missen's book.

Top

C++

varcomp: Variance Component Analysis under Linear Error Models

Download

varcomp is a library to perform the maximum likelihood method under the linear error model. First version was in 1994. I have used it extensively for many papers from 1994 to 1998. This was a huge improvement after kcl. It simplified the development of the code to make a paper significantly.

The archive contains the library, the code specific for each paper and the datafiles.

My next development in this direction was tdlib where I tried to reduce the programming to minimum in order to solve an application problem.

Top

bacuy_eq: Computing Phase Diagram of Ba-Cu-Y

Download

Computation of equilibrium composition in the multi-phase, multi-component system is a challenge. Mathematically speaking, this is a search for global minimum. The main problem is to find the global minimum indeed. The difference with other global minimization problems is that a good physical background and a criterion to check whether the minimum is global are available.

The code was my try to couple DONLP2 (Do NonLinear Programming) with an initial guess found from the physical background based on linear programming. It worked nicely for a three-component system in question. The question whether this approach can be generalized to four- and more- component systems is to be researched.

Top

sid2user and user2sid: Usefull NT Utilities for a Hacker

Download

I have written this in 1998 during the work on the book. These are simple codes with a pretty straightforward calls to Win32 functions LookupAccountName and LookupAccountSid. The most interesting was their creative use (see my message to NTBugtraq in the archive with the code).

Many, many people, working with Windows, used these utilities. For example, they were included in Hacking Exposed (as result, I got a book for free). You can browse Google results for sid2user.

Top

tdlib: Computational Chemical Thermodynamics

tdlib manual, Download (manual included)

tdlib was my major programming project from 1995 to 2000. Its feature was XML-like external representation for the developed classes. This was an effort to make a uniform computational framework for computational chemical thermodynamics. On one side, there were several iterations after species, on another, a new version of varcomp. The main drawback is that there is still no good solver to compute equilibrium in a multiphase system. Currently, this is possible only when co-existing phases are given. Originally to this end, I planned to generalize bacuy_eq, but I did not have time to accomplish it. It happened that for inverse tasks this was not the the major problem as one usually knows co-existing phases in this case.

Top

MOR for ANSYS (former mor4ansys): Model Order Reduction for ANSYS Models

MOR for ANSYS site

I have started working on model reduction in 2001 and on mor4ansys in 2003. From a programming viewpoint, this is much simpler than tdlib. The main problem here is in software integration. In order not to re-invent the wheel, one should use libraries. Yet, it also takes time to learn, hack, compile and link. I guess that it will take at least a few days for someone to make a mor4ansys binary if he is not familiar with the background libraries. Well, it is necessary to compile them first. And then linking. It is another song. By the way, a nice book in this respect is Linkers and Loaders.

Top

Mathematica

I started using Mathematica in 2001. I should say that I like its clean language.

Post4MOR: Postprocessing Model Reduction Results

Download the code

mor4ansys produces a compact model in the Matrix Market format. I use Mathematica to make transient and harmonic simulation for compact models produced by mor4ansys.

Top

Interface for quadpack

Download the code

This was an example for Mathematica Developer Conference on how to create a Mathlink application in order to interface an external code when a user function is defined within Mathematica. I have used a numerical integration with quadpack to demonstrate this. Alternatively, download the paper:

O. Ruebenkoenig, E. B. Rudnyi, J. G. Korvink.
MathLink + Netlib = MathLib.
2003 Mathematica Developer Conference.
Paper at library.wolfram.com.

Top

Interface for SLICOT

Download the code

Yet another Mathlink interface to SLICOT routines on model reduction. It supports Balance & Truncate model reduction (BTA) AB09AD; Singular perturbation approximation based model reduction (SPA) AB09BD; Hankel norm approximation based model reduction(HNA) AB09CD.

Top

Web Applications

pyros: Micropyros Software

Micropyros Software web page, Download

The application has been created during the Micropyros project in 2002-2003. It is written under webMathematica. The code consists from normal Mathematica scripts defining useful functions and Web pages that call these functions on the server side.

Top