Software products


Online platform for engineering calculations and simulations. Learn more about SmoWeb here.



SmoFlow is a software developed to meet the demand for precision modeling of thermal and fluid processes.


Solid and fluid models
  • solid material models
    • constant
    • temperature-dependent
  • fluid material models
    • constant properties
    • ideal gas
    • table-defined properties
    • interface to CoolProp for complex analytical fluid models (including phase transitions)
1D fluid networks

Components to model common fluid networks

  • chamber volumes
  • valves
  • pipes with heat exchange
  • fluid sources
  • property sensors
Heat exchange processes
The library includes models for heat (and mass) exchange processes based on semiempiric correlations. These include heat exchange in forced and free convection in various geometric configurations: flow of fluid inside or outside a pipe, convection over a flat surface, flow in annular channels, pipe immersed in a steady fluid, etc. Models are taken mainly from the VDI Heat Atlas (VDI Wärmeatlas).
Thermal solver
Transient and steady state heat exchange processes in real-world 3D geometries can be computed using the SmoFlow thermal solver. The geometry is represented by a mixed 1D (e.g. pipes), 2D (surfaces) and 3D (volumes) mesh. In a preprocessing step, the materials, bodies and boundary condition types are defined and much of the heavy-weight calculations are done, converting the 3D geometry into a system of material nodes and interactions between them. Currently the solver can handle solid conduction, with multiple materials and temperature dependent material properties (thermal radiation is next on the list). The thermal calculations are done using our own FEM solver (or rather a finite volume node-centered solver).


Open source, work in progress, prototype available. A completely open-source toolchain is available for the thermal solver:

  • Salome for geomety creation (or import from STEP) and meshing
  • SmoFlow thermal preprocessor for defining the thermal model on the mesh
  • ParaView for postprocessing the results

FSM Controller Editor

Finite State Machine controller is a controller which has a discreet predefined set of states. Think about a laundry machine - it can be soaking, washing, rinsing, filling water, pumping water out or centrifuging. At each moment only one of this modes of operation is activated, and there are criteria for switching to another one. For example:

if filling level > max filling level then start heating water

if water temperature > 50°C then start washing


Putting the control algorithm in some programming language (typically C) can be a very tedious task if there are many states and many conditions for transitions between them. For that purpose we have developed a GUI (graphical user interface), which allows in a systematic way to define the components of the controller:

  • states
  • conditions for state transitions
  • actions on state entry
  • actions on state exit
  • output values, for state-dependent outputs

Once the controller is defined via the GUI, C-code can be automatically generated and compiled, resulting in an executable or dynamic library, ready to be integrated into the simulation.

The GUI is based on Eclipse and Eclipse EMF (Eclipse Modeling Framework).



Ferma is a small Python application for managing small to medium-sized animal farms. It allows the user to enter and keep track of animal information, informs them of upcoming events related to individual animals and helps them keep all the important documentation in an electronic format for easy search and access.




  • Keeps record of individual animals, as well as parent-children relations
  • Keeps a health record of each animal, with any illnesses, treatments and treatment results
  • Keeps track of the animal estrous cycles and warns the user when one is expected
  • Keeps track of lactation information (the yield from each animal), allowing individual animal observation and selection
  • Keeps track of feeding records, allowing the effect on milk yield to be analyzed
  • Keeps electronic copies of each animal's passport and other important documents


The application is written in Python using Enthought Traits/TraitsUI. Traits is a framework for rapid application development, providing an out-of-the-box Model-View-Controller implementation. Traits takes care of the communication between the model classes and the user interface, so each time the user changes a value in the application window, the model is updated and vice versa.

The application data is stored in a text file in JSON format. This adds flexibility to the program, allowing to easily change the data structure.

Hardware products

Programmable thermostat

The thermostat uses a modular architecture which allows it to be used for a very basic application (controling a single temperature within a predefined range) or very advanced applications (observing, recording and controling multiple temperatures with complex time-varying temperature profiles)


  • Controls temperature (and optionally humidity)
  • Can be used in a combined heating and cooling mode (activates a heater when temperature falls below a low threshold value, and a cooler when it rises above a high treshold value)
  • Has an integrated real time clock (DS1307) and data logger, which can record temperature, humidity, etc. on an SD card
  • Supports the Maxim 1-wire interface allowing an arbitrary number of temperature sensors (DS18B20) to be connected. DS18B20 is a high-resolution digital temperature sensor (0.0625°C when operating at 12-bit mode).
  • Compatible with analog LM35 temperature sensors and DHT22 digital temperature/humidity sensors
  • Can send sensor readings to a computer using a Serial-to-USB cable
  • Integrated LCD and keypad for temperature observation and basic user control
  • Fully reprogrammable, allowing custom configurations
  • Based on the ATMega328 microcontroller unit (16 MHz, 32 kB program memory, 2 kB RAM). Can be upgraded to ATMega64xx or ATMega128xx MCU.
  • Can communicate with external devices using the I2C or UART protocols.
  • Open source hardware and software design


This is what the compact version of the controller looks like. You can see the power supply (top right, salvaged Nokia charger), the solid state relay (bottom right), the LCD screen & keypad. The microcontroller circuit is behind the keypad. Attached are one DS18B20 waterproof temperature sensor and one DHT22 temperature/humidity sensor


And this is the schematic of the Rev. 7 of the controller. You can download it also as a pdf


Dynamical system models

We can model complex circuits in the thermal, fluid, mechanical, electrical and other domains. These simulations are typically transient, showing the development of various system variables over time. The CO2 heat pump shown here, for example, consists of a compressor, condenser, expansion valve, evaportor and recuperator (counterflow heat exchanger). The different componnents are laid out graphically and are interconnected. After the simulation run, some results are shown on the graph. In this case we were interested in the temperatures at the different parts of the system.


Heat pump circuit



The components used in system simulations are taken from various libraries of componets. These can include individual software libraries (e.g. AMESim Thermal Library) or standard libraries (Modelica Standard Library). Sometimes, however, no component exists for the particular need. In this case we can develop a new component model based on an analytical physical model, empirical correlations or interpolation. The models can be developed either in C/C++ or in the Modelica language.

Finite Element / Finite Volume 3D models

When heat exchange processes, mechanical stresses or fluid flow occur in an object of complex geometry, the only way to accurately predict the object's behaviour is to use some form of FEM (finite element model). The geometrical object (or objects) has to be partitioned into simple elements (e.g. tetrahedrals, prisms or hexahedrals, triangles, quadrangles, etc). The FEM solver finds an approximate solution to the partial differential equations at discrete points (the vertices of the elements), and interpolates (linearly, bilinearly, quadratically etc.) within the elements.


Thermal finite element/volume modeling

Thermal FEM is used when heat exchange processes and the resulting temperatures are of interest.

  • Heat conduction in solid volumes
  • Radiation between solid surfaces (important at high temperatures or in vacuum)
  • Fixed temperature, fixed heat flow or convection boundary conditions

Sometimes not the temperatures, but rather the integral heat fluxes are of interest. In this case using the standard FEM method may yield incorrect results, as it is not conservative in general. That is, the net heat balance through all the surfaces may turn out to be non-zero (it will approach zero as the mesh gets finer, but at the cost of increased computational time). In this case, a low-order FEM method called FVM (finite volume method) can be used. (e.g. see SmoFlow Thermal Solver). The temperature values resulting from FVM may not be as accurate, but the heat fluxes are guaranteed to be conserved.


Mechanical finite element modeling

Mechanical FEM is typically used to find the critical stresses in a component as a result of mechanical loads. Because stresses are high-order quantities (they depend on the derivative of the displacement), a higher-order FEM method is usually used (e.g. quadratic interpolation in space). Some materials are also anisotropic (that is, stronger in one direction than in others), which complicates additionally the calculation.

There are two different types of mechanical analysis:

  • Steady state: constant loads/displacements are applied to the component. Results are stresses/strains
  • Eigenmode (resonant): oscillating loads are applied to the component. Results are stresses/strains and resonant frequencies

Computational Fluid Dynamics (CFD)

Fluid processes modeling is an absolute necessity in many egineering designs. Pressure drop, heat exchange, separation and mixing are complex phenomena, affecting the performance of pumps, valves, turbines, reaction chambers and many other systems. A modification of FEM, called Finite Volume Method, is typically used to describe the transport of mass, momentum, energy, turbulence, etc. occuring in fluids.


Other Finite Volume Tools

Although the finite volumes method is primarily used for fluid flow, it is applicable to every problem which involves transport of mass and energy. Multiphysics models involving heat exchange, diffusion and advection of materials often use finite volume models, too.

  • FiPy (open-source)

Pre- and post-processing

Whether commercial or open-source sofware is used, the steps involved in the solution process are quite the same. First, a mesh is created in order to partition the component geometry. Then the mesh is used as input to the solver together with additional user input (material properties, boudary conditions, initial conditions, etc.). Finally, the results from the solver are inspected and processed to extract valuable data (e.g. temperature at a given point, heat flux at a boundary, position and value of the maximal stress, etc.).

Various software tools can be used in the pre- and post-processing steps. Each commercial software typically has its own tools (e.g. CFX Pre and CFX Post). There are some "standard" open-source tools which are used by many solvers. For mesh generation the Salome platform (integrating many different meshing algorithms) or GMSH can be used. For post-processing ParaView is the de-facto standard. (Mayavi2 is another alternative, also based on the Visualization Toolkit - VTK)


The computer models, software tools and hardware prototypes that we develop can be applied in many areas ranging from large-scale energy production to home automation.


  • Conventional and innovative fuel systems (hydrogen, natural gas, LPG) including
    • storage tanks
    • refueling systems
    • fuel conditioning components (pressure regulators, fuel heaters, etc.)
  • Fuel cells
    • chemical reaction modeling
    • thermal management
    • pressure management
  • Engine thermal management
  • Fuel injectors
  • Stresses and fatigue calculations


  • Refrigerant properties and fluid selection
  • Compressor/expander models
  • Thermal efficiency of heat exchangers, condensors, evaporators
  • Complete system models including control logic
  • Heat management of buildings

Energy generation

  • Thermodynamic cycle models
  • Exergy-based analysis
  • Optimization of thermodynamic efficiency
  • Low temperature ORC (Organic Rankine Cycles)
  • Ground heat storages

Fuels: natural gas, oil, hydrogen

  • CNG Pipeline models
  • Natural gas liquifiers
  • LNG vessels
  • LNG pipelines
  • LNG evaporators
  • Fueling stations
    • high-pressure CNG and CGH2 stations
    • liquid hydrogen stations

Automation and control

  • Developing control concepts
  • PID, state machine, fuzzy controllers
  • Simulink modeling
  • Code implementation