Intended audience

This document addresses users, developers, system integrators and architects of solutions based on the LIBPF™ technology.


This document provides a high-level introduction to the LIBPF™ technology.




LIBPF™ (LIBrary for Process Flowsheeting) is a flexible technology to model continuous industrial processes at steady state.

Steady-state models of continuous industrial processes can be used for example to:

  • simulate a process during the design stage

  • analyze, monitor and diagnose a process during operation

  • forecast the behavior of the process with changing feeds and operating conditions

  • optimize the product quality and the energy requirements

  • train operators and technicians.

With LIBPF™ you can create smart forecasting solutions that incorporate these models and put them at work to add value to your business:

  • bring your process models everywhere with mobile apps

  • expand the reach of the models within your organization with easy-to-use, small-footprint, standalone custom process simulators that anyone can use

  • interface the models with other enterprise IT systems such as SCADA, MES and ERP thanks to the several available interfaces.

Thanks to a thorough analysis and rethink of methods and technologies for process simulation started around 2005, LIBPF™ is innovative, employs modern technologies and concepts, and reuses of existing libraries and 3rd party tools whenever possible:

  • Open and based on vendor-independent standards such as the C++ programming language according to ISO/IEC 14882:2011 (C++11), SQL, XML, JSON, HTML5, etc.

  • Portable: the library supports a wide array of platforms (from embedded devices to the cloud) and of operating systems (from Microsoft Windows Vista to Apple OS X 10.9 and all Linux distributions)

  • Lean: the core library source code is less than 100k SLOC (Standard Lines Of Code)

  • Object Oriented: provides over 300 classes to make it easier for process engineers to represent continuous industrial process models with the C++ programming language:

    • Quantities with physical units of measurement

    • Pure components, food components, biomasses and custom components

    • Physical, Chemical and Transport properties

    • Material streams with unlimited phases (vapors, liquids, solids)

    • Phase equilibria

    • Reactions and equilibrium reactions

    • Unit operations such as compressors, heat exchangers, reactors, dryers etc.

    • Multi-stage combinations of the above to represent distributed unit operations such as distillation columns, fuel cells, membranes etc.

    • Flow-sheets where unit operations are connected with streams and controlled with feed-back or feed-forward process specifications


A team comprising several technical roles is required to prototype, develop and deploy solutions based on the LIBPF™ technology:

  • Process Expert: has a chemical or process engineering background with no programming skills; knows very well a specific process or process family;

  • Model Developer: based on informations gathered from the process experts and using the low-level SDK, writes simple C++ code and links it to the LIBPF library to implement the models; has hybrid, basic process / programming skills

  • System Integrator: using the high level Model User API integrates the models developed by the model developer and creates a deployable solution; has industrial / process automation / IT system skills

  • Client Developer: using the high level Model User API creates web / light client / desktop application elements; has app development / client programming / UX designer skills

  • Model User: receives the models as a black-box application or app or API; in this form there is no access to the underlying equations and assumptions, no way to change the model structure except for the configuration options set up for them by the model developer; she / he / it can consume the models by instantiating them, changing the allowed inputs, performing calculations and accessing results. Human model users such as technicians and process engineers, or non-technical employees or even customers and suppliers may interact with the kernel directly via the user interface, or programmatic via scripts or automation; but a model user could well be a machine whose embedded control system connects to a remote (private cloud) server to perform process simulations on demand.


LIBPF™ can be accessed at different levels thanks to the several available interfaces.

  • low-level SDK: full C++ LIBPF API for the model developer

  • high level Model User API: simpler API for the model user, available via C++, Python, command line, Java, .NET (C#, Visual Basic) and a RESTful HTTP API

  • database: the database schema used internally by LIBPF to persist model instances is documented and can be used for bulk access to data

  • OPC Data Access 2.0: the industry-standard vendor-independent interface for data exchange in process automation

  • Desktop user interface: for interactive use of the models and integrated with other desktop software (LibreOffice or Microsoft Office spread sheets).


Thanks to the several interfaces, solutions based on the LIBPF™ technology can be arranged according to various architectures, for example:

  1. standalone desktop application standalone desktop application

  2. public / private cloud desktop application cloud desktop application

  3. public / private cloud mobile app cloud mobile app

  4. public / private rich webapp cloud web app

  5. standalone online application (online = communicates with the control system) standalone online application

  6. standalone embedded application (embedded = integrated with the control system) standalone embedded application

  7. public / private cloud embedded application (M2M i.e. machine-to-machine) cloud embedded application