Progress on web apps

We are making progress in learning HTML5 technologies – Javascript and CSS – to make interactive web apps. Web app experiment 1, in the Resources section of this site, has been updated to feedback control of water level in a tank. We used the desktop app MACAW to graphically layout the main components of the web page and generate the HTML and CSS files.  Then we did some editing of the files generated by MACAW and added a link to our Javascript file.

We wrote the Javascript code ourselves. The Javascript code makes the web page interactive by getting user input, doing the computations, then updating the display. One thing we have discovered is that Javascript runs very fast in today’s browsers. Many years ago we compared the speed of computation of Javascript to some other languages and found it very slow. That situation has changed dramatically.

We are pretty happy with MACAW. It definitely speeds up the process of learning CSS and laying out a web page.  One very nice thing is that it generates standalone HTML and CSS files – you do NOT have to link your site to a proprietary library.

Livecode app on the web

We have added web app experiment 2 to the Resources, Web App Experiments page. This is a LiveCode 8 stack deployed in a web page. LiveCode 8 uses the open-source software Emscripten to compile the LiveCode engine to Javascript, which can then run LiveCode apps in a web page.

The advantage of this approach is that we can develop new apps quickly using LiveCode, which is a rapid app development tool.

One drawback is that a large Javascript file must be downloaded before a LiveCode web app can run. Once downloaded in a browser session, however, multiple stacks can be run without having to download the large file again.

This is very new technology for LiveCode and we expect much improvement in the near future. Get the free, open-source “Community” edition of LiveCode here (link).

Web app experiments

Web app experiments have been added to the Resources page. These are experiments using HTML5 and Javascript to do interactive simulations in a web page. We are just getting started with these experiments.

Reactor Lab is a desktop app with Internet connectivity. Is that the best way to do things, or should we move to web apps?

A nice set of web apps has been written by Professor Anthony Butterfield at the University of Utah. Anthony did his MS in Chemical Engineering at UCSD with our faculty. Here is a LINK to his web site with web apps.

LiveCode speed of execution

Reactor Lab was built using LiveCode. Get the free Community version at LiveCode is great because it is cross-platform: write once and deploy on many platforms. Another advantage is that the stack model and scripting language are very stable in the sense of supporting past versions: some of the script dates from 1993 and HyperCard.

In most cases in Reactor Lab, the speed of LiveCode is sufficiently fast. The most demanding lab using math computations in LiveCode script is Division 7 Biological Reactions, Lab 3 Immobilized Enzyme Profiles. In that lab, as the user moves a slider to change an input parameter, LiveCode solves a second-order, ordinary differential equation using the iterative shooting method, and then updates the graphics.

Calculations in the dynamic Catalyst Pellet are too demanding to run in LiveCode script. That lab has a detailed, elementary-step simulation of carbon monoxide oxidation over a porous solid catalyst. A function was written in C++ to do finite-difference integration of a set of partial differential equations. The external is then compiled separately on Mac and Windows to make an “external” (.bundle on Mac, .dll on Windows). The LiveCode stack calls this external to do the calculations. The advantage of an external is that it is fast. The disadvantage is that you must compile a separate executable for each platform.

When the Catalyst Pellet external was written in 2008, we used Revolution 4, where Revolution was the earlier name for LiveCode. The Catalyst Pellet and its external ran great when we finished it but it is not compatible with later versions of LiveCode. Therefore we pulled the dynamic Catalyst Pellet out into its own standalone app. The problem presumably is that the interface specification between externals and LiveCode changed. The stack and its external initially appear to run in LiveCode 7, but there appears to be a memory leak and a crash ensues. We haven’t had the time to keep the external up to date. The original version posted in the Download section works well.

The speed at which LiveCode 7 updates the card graphics appears to have slowed from previous versions. This may be related to the addition of resolution independence and higher resolution target displays. To speed things up, we lock the screen before changing many separate elements in the display, then unlock the screen when everything on the card has been updated.

Looking for SimzLab?

We closed the SimzLab project in order to concentrate our efforts here with Reactor Lab. An archival copy of SimzLab is posted at the Download page here at the Reactor Lab site. As we get time, we will incorporate some of the PureWaterLab and Control Lab modules from SimzLab into Reactor Lab.

Looking for PureWaterLab?

We closed the PureWaterLab project in order to concentrate our efforts here with Reactor Lab. PureWaterLab modules are incorporated in the archival copy of SimzLab, which can be downloaded from the Download page here at the Reactor Lab site. As we get time, we will incorporate some of the PureWaterLab modules into Reactor Lab.

Chemical Reaction Engineering Notes posted

See the RESOURCES tab above. Select the section “CRE Notes.” On that page there is a link to my Chemical Reaction Engineering (CRE) Notes.

The organization of these notes differs from most textbooks on CRE. These notes consider only Batch and Semi-Batch reactors at the start. Only after all the major topics (e.g., stoichiometry, change in gas density, thermal effects) are covered do they proceed to PFRs and CSTRs.

Why this organization? Some students told me that they got confused when they encountered a new topic (e.g., thermal effects) and lectures switched back and forth between the different types of reactors. I can understand their concern. I now think it is better to stick to Batch reactors until students learn them very well before switching to other reactors.