ObjectMath Home Page

Please check also the OpenModelica Modeling and Simulation Environment.

ObjectMath is a programming and modeling environment for object oriented mathematical modeling and generating efficient C++ or Fortran90 code for use in simulation applications, mostly (numerical, scientific) computing.
This system partly automates the conventional approach of hand translation from mathematical models to numerical simulation code e.g. in Fortran. The ObjectMath language is an object oriented extension to the Mathematica computer algebra language, which provides mathematical notation and symbolic transformations. Thus, the ObjectMath programming environment offers the following: ObjectMath is designed and supported by a team at PELAB (Programming Environment Lab), Linköping University, Sweden. Some of the new developments of ObjectMath are part of the Modelica modeling language design effort.

There is a collection of papers on various aspects of ObjectMath.

ObjectMath - the Process of Mathematical Modeling and Software Development

How we go from a initial model to the development of simulation applications ?

How is software development of a simulation application supported?

See roadmap of software development with ObjectMath.

See paper [4]

ObjectMath - An Object-oriented Computer Algebra Language

ObjectMath is an Object-Oriented extension to Mathematica, a computer algebra language from Wolfram Research . Mathematica functions and equations can be grouped into classes, in order to structure the mathematical model. Equations and functions can be inherited from general classes into more specific classes, which allows reuse within the mathematical model. Below are two example models. You can see classes and instances in these examples, as well as inheritance relations between them (including single and multiple inheritance). The part-of relation allows structured objects to be expressed as a composition of parts. The ObjectMath class browser can show both inheritance relations and part-of relations.

Inheritance allows formulae and equations to be reused. (For large models the amount of ObjectMath code is reduced approximately three times through reuse as compared to expressing the model in standard Mathematica).

This object oriented way of modeling is a natural way to describe physical systems.

See papers [4 , 5 , 8]

ObjectMath - a programming environment

The programming environment include the following components: See how the internal components of the environment are connected.

See small screendump of the environment

See big screendump of the environment

See papers [4 , 5 , 8]

ObjectMath - generating efficient code


A two-body example:

Applications to realistic models:

A mathematical model of surface interaction have been designed in cooperation with SKF.

Parallel code generator

This part of the system is more experimental, and has not been used in industrial applications. There are two approaches to Extracting Parallelism from Mathematical Models (so far in ObjectMath primarily for ODEs): See also papers [1,2,10,11,12,13]

Scientific visualisation using ObjectMath

We generate efficient C++/Fortran90 code from ObjectMath models which include geometry descriptions expressed as parametric surfaces. This code is linked together with a powerful 3D browsing environment which uses OpenGL with possible hardware support, e.g. Creator 24bit 3D graphics on UltraSparc workstations.

See screendump of the BEAST environment (GIF,color,85K) (PS, color 100K) (PS, B/W 100K)

See also papers [14]

The ObjectMath team

ObjectMath has been designed at the PELAB laboratory at Dept. of Computer and Information Science , Linköping University, Linköping,  Sweden . The team has the following members: Ex-members: Questions about availability of the implementation should be directed to Peter Fritzson.

Visit collection of ObjectMath papers and other documents

This page has been designed by Vadim Engelson vaden@ida.liu.se.
Last change 10 April 1997