gPROMS overview – modeling language and facilities
A powerful modeling language specifically designed for the process industries
gPROMS language and quality assurance
Because the underlying gPROMS language problem description is always kept up-to-date with changes made via the graphical editors, it is easy to compare model versions and log changes.
gPROMS first-principles models are expressed in gPROMS language, a text-based language designed specifically for the modelling of complex processes.
Dual graphical and language views
Many elements of a gPROMS problem description are represented graphically as well. For example:
- stream connections can be expressed, in a flowsheet representation
- optimisation and parameter estimation problems can be described using forms and dialogs
- equations and other textual information are represented in simple text form.
gPROMS – uniquely among modelling tools – maintains dual language and graphical representations consistently at all times.
This means that you can view and understand flowsheet information easily while maintaining text records of the same information for future quality-assurance and maintenance.
Powerful and flexible modelling language
Underlying gPROMS is a powerful modelling language specifically designed to address process industry requirements.
This allows model developers to create models of the most complex processes and their operating procedures by writing equations almost as they appear on paper.
The clear, concise language and the "intelligent editors" of gPROMS ModelBuilder mean that model developers can easily document their work, capturing the knowledge assets of the company for future use and enabling complex models to be quality assured.
And to simplify things further, context-sensitive assistance prompts the user with variable names, unit names and keywords when requested.
gPROMS language features
gPROMS language provides many – often unique – advantages:
This clarity means that models are easily maintainable and auditable.
Variables can be distributed in a number of dimensions, which may represent spatial dimensions (for example, axial or radial concentration distribution of concentration along a fixed bed reactor) or, for example particle size or molecular weight distribution.
Distributions can be set up and named arbitrarily – for example, "AXIAL" and "RADIAL" for space dimensions; "MWD", for molecular weight distribution of a polymer, or "PSD", for describing a crystal particle size distribution.
Dynamic models can easily be solved for steady-state simply by setting the appropriate model specifications – there is no need to iterate to a steady-state.
The concept extends all throught the gPROMS language: it is possible – for example – to have an array of units or ports within a unit. Zero-length arrays are also possible, to allow – for example – the construction of models where reaction may occur, but is not always present.
Once procedures are implemented within gPROMS's task language, dynamic optimisation can be used to determine the optimal operation – for example, the minimum start-up time achievable within equipment and operating constraints.
It also provides information for gPROMS's model-based experiment design facilitie's whic can be used to design experiments that maximise experimental information content.
gPROMS has comprehensive facilities for propagating parameter and other information correctly through the hierarchy.
As a consequence, it is very easy to add significant value by optimising a design or its operation once you have been through the effort of building a robust underlying model.
This makes models easy to follow, easy to maintain and smaller in size, thereby reducing solution times.
gPROMS's state-of-the-art initialisation language captures modellers' experience in a structured way to eliminate this problem.
External functions are simply called from within the equation; the actual resolution of the call (for example, a fugacity call to a physical property package) can be resolved at runtime.
This means that models can be written completely generically, without having to know which actual external package will be present at solution time.




