14.4. CEL Technical Details

CEL is a byte code compiled language. Compiled languages, such as Fortran, rely on a translation program to convert them into the native machine language of the host platform. Interpreted languages are of two types: the fully interpreted languages such as the UNIX C shell, and the byte code compiled languages such as CEL. With byte codes, host machines are loaded with a client program (written in a compiled language and compiled for that machine architecture) that interprets the byte stream. The advantage of the byte code is that they can be the same on all host platforms, obviating the need for platform dependent codes.

Because the byte codes are interpreted, there is no need to re-link executable programs to perform a different calculation. Furthermore, many of the problems encountered by writing and linking in separate routines, for instance in C or Fortran, are averted, and the time taken to set up and debug complicated problems reduced considerably.

The link between CEL and the CFX-Solver is accomplished through an internal program called genicode. Genicode generates intermediate code from your CEL definitions and writes to a file that is then interpreted by the CFX-Solver during the solution process.