Skip to content

CemGEMS tutorial

Expert level

Advanced work with cement recipes, results and processes

Most of work in CemGEMS goes into the input cement recipe, which is a combination of materials (clinker, SCM, water, salts, etc.) and their constituents (alite C3S, belite C2S, ...; silica fume SF, slag GGBFS, limestone, ...).

In order to create a new recipe document, the user can choose one of 10 cement types each in one of 2 data types. This triggers loading one of 20 cement recipe templates, to be saved under the new recipe name and to be examined, modified or re-arranged by the user. These templates were initially prepared by CemGEMS developers using the data collected and recommended by top experts in cement chemistry (see more about recipe templates here). Even an expert would need 4 to 8 work hours to collect the data, prepare and check a valid cement recipe (template). For a student, it can be difficult to find out what data can be trusted and what not, hence this time could be much longer.

Even though any recipe created from a template can be immediately "equilibrated" to obtain a quite reasonable partially hydrated phase assemblage at 20 deg.C and 28 days reaction time, this is just a starting point of the real work. Easy and flexible ways of recipe modification to a desired state and composition are absolutely essential for the usability of CemGEMS. Such recipe modifications can be done in several alternative ways.

  • Editing recipe data in tree-like tables directly (e.g. properties or formulae compositions of constituents; properties and composition of materials in terms of quantities of constituents or of a shortcut formula list; properties of the whole recipe or its chemical composition given in a shortcut formula list).

  • Using jsoneditor to duplicate or delete formulae, constituents, materials or even recipes in the recipe JSON document (see below);

  • Using phaseAliases table to suppress/allow some hydrated phases, and to edit aliases of GEMS phase names to be shown in tree-like tables of in the equilibrated part of results, in plot legends and frames.

Editing properties in the recipe input

After creating a new recipe based upon one of recipe templates, the user can modify its overall properties such as temperature (0 to 99 C), pressure (1 to 101 bar), or water-binder ratio (W/B_ratio between 0 and 1.0). At the level of the whole recipe, the total Quantity can be changed, if needed; at the level of materials, their relative Quantity values define the addition of water and the composition of blended cement; at the level of constituents, their relative Quantity values can be changed along with the ReactExt (degree of reaction) value. Clicking the Equilibrate button will show the effect of changes upon the hydrated state of cement.


If at least one non-zero Quantity of a Formula or a Constituent is set in "%mass" units is then all other non-zero Quantities at the same level must be given in "%mass" units. The same applies to Quantity in "mol%" unit: all non-zero quantities at the same level must be set in "mol%" units. If Quantity values are given in %mass or mol% units and their sum for the overarching object is not equal to 100%, the values will be automatically rescaled to 100% (first visible after Equilibrate). If achieved changes and the resulting hydrated state needs to ba saved before further changes, then the recipe should be cloned into a new one, which will be modified further.

Simple and efficient access to the inputs via the tree-like Recipe Inputs Table is sufficient in most cases. However, an expert may need to introduce more clinker constituents or some SCMs or even materials, or a shortcut list of chemical formulae that were not available in any of the provided recipe templates. This can be done by invoking the jsoneditor widget by clicking on a pencil-like icon to the left of the object name. Refer to a detailed page "Reshaping recipes using jsoneditor" in this tutorial.

Controls using the input w/b ("W/B_ratio")

The water/binder mass ratio (w/b) is one of the main controls over cement paste preparation and cement hydration. Cement recipes are usually set in terms of w/b (sometimes w/c water-cement) ratio; addition of SCMs, activators, etc.; and the initial temperature.

In CemGEMS, it is assumed that three materials are checked regarding the w/b ratio: “Cement”, “SCM”, and “Water”. The WBmassRatio (w/b or wb, "W/B_ratio") value should be given in the interval {0.1; 10000}. The "binder" includes the Portland cement (clinker) together with any SCMs or activators, but excludes the filling in mortar or concrete (sand, pebbles) and any constituents in the "Salts" or "Other" materials.

If Quantity (in mass units) of Cement, SCM and Water materials are specified in the recipe by positive values then, upon "Equilibrate Recipe", the w/b value will be automatically computed or corrected, and will appear in the inputRecipes widget. However, CemGEMS lets the user to enter the desired "W/B_ratio" value and let the masses of Water or Cement and/or SCM materials be adjusted automatically upon "Equilibrate". Several cases are possible (assuming that "Cement" is the first material in the recipe, "SCM" is the second one, and "Water" is the third material).

In the recipe input, the masses (Quantity) of all of the above mentioned materials, the total recipe Quantity, and the w/b ratio can be all set to non-zero values; some values can be inconsistent with the others; or any or all values may be zeros. Note that setting of all Materials Quantities in %mass or %vol is not allowed (only mass or amount units are possible). The GEMSW back-end code uses the following prioritization of values to analyze possible cases:

Value Symbol Priority Comment
WBmassRatio wb 1
Cement Quantity cq 2
SCM Quantity sq 3
Salts (other) Quantity oq 3 also recipe-level formula list
Water Quantity wq 4
Recipe Quantity rq 5

This resolves into the following cases.

If all quantities and w/b ratio are entered as positive values, then (with necessary units converisons)

  • wq = wb * (cq + sq)
  • rq = wq + cq + sq + oq

This also includes cases when initially wq = 0 and/or rq = 0.

If wb = 0 and (cq > 0 or sq > 0) and wq > 0 then

  • wb = wq / (cq + sq)
  • rq = wq + cq + sq + oq

If wb = 0 and (cq > 0 or sq > 0) and wq = 0 and rq > 0 then

  • wq = rq - oq - cq - sq
  • wb = wq / (cq + sq)

If wb = 0 and cq = 0 and sq = 0 and wq = 0 and rq > 0 then wb = 0.5 is assumed, and

  • wq = rq/3
  • cq = rq*2/3
  • rq = wq + cq + sq + oq
  • wb = 0.5

Finally, if all values wb, cq, sq, wq and rq are zeros,

  • cq = 100 g
  • wb = 0.5
  • wq = cq * wb
  • rq = wq + cq + sq + oq

This algorithm allows the user to change w/b ratio with automatic adjustment of wq, rq while keeping cq and sq values as given, if possible.

For example, if Cement Quantity is given as 0.09 kg and SCM Quantity as 10 g then any adjustment of w/b will retain these values and change the Water Quantity and the recipe total Quantity.

Controlling the GEMS equilibrated part using phaseAliases

Using the phaseAliases table, the user can edit aliases of GEMS equilibrated phase names and/or block/allow some phases from appearing in the equilibrated part mass balance. This table opens by clicking on a triangle near "phasesAliases" entry, located just before the "outputResults" one. Further details are provided in the phases-aliases tutorial page.

Fine-tuning process definition document

Process definitions can be viewed/edited by expanding the Process Settings Table and further expanding two sub-tables: Spans and Params (at least one of those must be present). The Spans table contains a list of iterators controlling stepwise changes of quantities or other input properties of recipes, materials, constituents or formulae. The Params table contains a list of parameter sets for built-in hydration models (Parrot-Killoh or logistic equation 5PL) that control reaction extents of materials and/or constituents. To remove or duplicate spans or params, use the jsoneditor widget by clicking on a pencil-like icon to the left of the header of the Process Settings Table. More about configuring the process can be found in Expert level and Redefining processes tutorial pages. Details about the available process templates are given in the process templates tutorial page.

Fine-tuning plot definition document

Plot definitions can be viewed/edited by invoking the jsoneditor widget by clicking on a pencil-like icon to the left of the plot name. Most common reasons include the need to edit plot- or axis names; choose the axis scales; or change the color and/or the order of items in the legend. Details about plot templates can be found in the plot templates tutorial page.