Skip to content

CemGEMS web app tutorial

Redefining processes (using jsoneditor)

The provided process definition templates cover several most frequent scenarios in thermodynamic modeling of cement hydration, blending, and degradation by leaching, carbonation or salt ingress (attack). However, the actual scenarios of interest for CemGEMS users may go far beyound those implemented in process templates. In order to assist users creativity in this context, CemGEMS provides (for expert users) a possibility to clone a process document and modify it with help of the jsoneditor widget. Doing so requires some experience and understanding of the structure of CemGEMS JSON documents that define recipes and processes.

Creating a new process definition

Let us consider a process of "Ingress" type, created out of "Ingress::Add-Salts" template by doing selections as shown below:

Screenshot

After setting these selections and entering Recipe name and Process name, click on the "Simulate process" button to equilibrate the parent recipe, simulate process, and plot the simulation results. In the Plot Select row, change Abscissa to "Lead-linear" and Ordinate to "Volumes-solids" to see the plot frame below:

Screenshot

The "Ingress::Add-Salts" template defines a linear process with a stepwise addition of the mass (g) of "Salts" material (to mimick the in-diffusion of ions) and compenstating removal of CaO (to mimick the out-diffusion of Ca+2 and OH- ions). All template recipes by default define the "Salts" material as composed of 100 %mass CO2 constituent, hence, the "Ingress:Add-Salts:" will simulate the carbonation process (an addition of 0 to 10 g CO2 in 101 steps). To simulate the ingress of another salt, the parent recipe needs to be cloned and the composition of "Salts" material needs to be modified.

In this tutorial page, we will look at what can be modified directly in (cloned) process definition document. A look at the above plot tells that a more complete qualitative picture of cement carbonation can be obtained when the simulation is performed in a broader CO2 addition interval, namely 101 steps by adding 0 to 26 g CO2.

The first look at a process document

To get access to the process JSON document, click on the "Edit JSON data" button (a pencil inside of a rectangle) in the Process row. This will open the jsoneditor widget. By scrolling and clicking on triangles, expand the rows and edit data in fields "valstep" and "valstop", as shown below:

Screenshot

The main part of the JSON subdocument describing the process is the "inputSpans" list that contains one or more spans (three in this case). A span is the JSON object telling what and how changes from step to step in the current recipe inputs. This "ingress" process is defined by three spans; we have modified the first two spans.

The first span "Adding Salt" defines 101 steps ("numsteps" : "101") generated by linear stepping starting from 0 ("valstart" : "0.00000") and running until 26 ("valstop" : "26.0") with automatic step value for making 101 steps over the whole interval. The "targetPath" field contains a string (JSON path) showing which field of the current recipe input will be changed. In this case, the Quantity of Material #3 ("Salts") in recipe #0. Note that this field (and its units, "g") can be seen by expanding the input recipes and materials in the [inputRecipes (All recipes)] area of the tree-like table.

Attention: value types

Please be careful with value types. If any of numbers that you changed is shown in red color (indicating the field type 'number') then use the menu on the left side of this JSON field to change the type to 'string'.

After editing, click on the green tick in left-upper corner of jsoneditor window to save the changes, and then click on the "Simulate Process" button to re-run the carbonation process. After a few seconds, the plot frame appears. Change the Ordinate to "Masses" to look at an alternative view of results:

Screenshot

This time, the process proceeds until C-S-H is completely consumed and the solid part of the system is dominated by calcite, zeolites, SiO2,am and Al-hydroxide. By re-plotting with other ordinates, you can see the dramatic changes in solubilities of many elements, and a decrease in pH from 13 down to 6 or so, as the excess CaO is removed from the system. Back to the above plot, we recognise that the amount of residual (unreacted) Cement SR clinker remains constant (a gray area at the bottom) at the level set in the parent recipe (28 days). This is not a too realistic scenario because in the real world, cement carbonation (or ingress of any other ions) is a slow process controlled by diffusion. So, a more realistic scenario would be to allow the residual clinker slowly react more and more along with the carbonation progress. Fortunately, this more realistic (still qualitative) scenario is easy to implement.

To do this, let us first clone the process under the name "carbo-rxt-increase". In the Process row, click on the "Clone" button (squares and a green eye), enter the new process name, and click "Clone". The plot frame disappears. Before starting the simulation, we need to modify the cloned process document using the jsoneditor, as shown below:

Screenshot

The edited JSON fields are highlighted in green. Note that this time, we did not touch the first two process spans, as before. We have only expanded and edited the third span (with index 2) that was set by default not to change the ReactExtent field for the cement clinker (material #0). Now we want it to go from the 'auto' value taken from the parent recipe to 0.99 with valstep determined such that all 101 process steps are covered. When done with editing, close the jsoneditor and run the process (click on the Simulate Process button). The resulting plot (shown as StackedBars chart) comes out as shown below:

Screenshot

We see that, indeed, the mass of residual Cement SR clinker goes down from 15% to 1%, as expected. Because more Ca,Al,OH-rich components become avaialble for the reaction, the process stops at not so extreme point as the previous one, namely, just where C-S-H and ettringite are completely consumed. Also pH goes gradually down to about 10 and makes a jump to 7 at the last two steps only. A large pink field in the left-lower part of the diagram is visible, it belongs to Si-Hydrogarnet-ss (siliceous hydrogarnet solid solution) phase. To explore what happens if Si-Hydrogarnet-ss cannot precipitate, for instance due to kinetic hindrances, open the phaseAliases table in the recipe; find Si-Hydrogarnet-ss phase and restrict its amount to 0; then re-run the simulation and observe how the process diagram has changed.

Adjusting parameters and controls in hydration kinetics processes

In CemGEMS, two built-in methods are currently available for simulating cement hydration as function of time:

  • (a) Modified Parrot & Killoh model;
  • (b) 4PL (5PL) logistic model.

Both models control the reaction extents (degrees) of cement clinker phases and/or SCM constituents, but do this in different ways and using different sets of parameters. The time stepping is the same in both models (either linear or log10 time scale in hours). In the current version of CemGEMS, the use of P&K model is restricted to parent recipes made of OPC (min) templates; the use of 4PL (5PL) logistic model is only restricted to (min) cement templates. A time-dependent Hydration-M (or Hydration-PK or Hydration-4PL) template-based process, created on top of a (min)-based recipe, can contain spans using either mP&K or 4PL/5PL model to control reaction extents.

As shown below in snippets from JSON documents generated for created processes, the time span, stepping, or number of time steps can be easily adjusted by tweaking the (string) values in "timestart", "timestep", "timestop", "numtimestep" fields. If "timestep" was changed, the value "auto" should be entered into "numtimestep" field, and vice versa. The value "auto" will be automatically replaced by a consistent number whenever possible.

(a) The modified Parrot & Killoh model

The kinetic cement hydration model of Parrot and Killoh describes the dissolution of clinker constituents (phases) C3S, C2S, C3A, C4AF, with a set of empirical equations for the different rate-controlling mechanisms, including nucleation and growth of hydrated phases, and diffusion of solutes. The dissolution rates at any time by each of these mechanisms depend on the instantaneous degree of hydration alpha(t-1), w/c ratio, and six empirical parameters for each phase. The empirical equations of the modified Parrot and Killoh (mP&K) model are shown below:

Screenshot

From B.Lothenbach @Empa, see also details in the paper:

  • Lothenbach, B., Le Saout, G., Gallucci, E., Scrivener, K. (2008) Influence of limestone on the hydration of Portland cements. Cement and Concrete Research, 38(6), 848-860.

The overall rate Rov (1/day, time t in days) used in the last equation above is the minimum of three rates defined by three uppermost equations:

Rov = min( Rng, Rdf, Rhs )

where Rng is the rate of nucleation and growth (of hydrated products) with rate constant K1; Rdf is the rate of diffusion (of dissolved components) with rate constant K2; and Rhs is the rate of secondary products shell formation, with rate constant K3. T is the actual temperature (K) and T0 is the reference temperature (298.15 K). Parameters such as rh (relative humidity), wc (water/binder mass ratio), and specific surface area in m2/kg are obtained from the parent recipe for the process. The values of empirical parameters K1, N1, K2, K3, N3, H, and Ea (activation energy in J/mol) in this order are provided as parameters values in spans of the Hydration-MPK (or Hydration-PK) process templates.

It is important to know that the rates and reaction extents (degrees) in the mP&K model, computed at time t, depend on the rates computed at the previous time step (at time t-1) and on the time step duration dt. This is in contrast with the 4PL/5PL model, where the reaction extent only depends on current value of time t and not on any previous history of the simulation.

(b) The 5PL (4PL) logistic function model

This is a simple empirical model used in cement chemistry for calculating the degree of hydration (reaction extent) of clinker or SCM materials or constituents alpha(t) at time t (in days). The full 5PL (5-parameter logistic) function is

alpha(t) = D+((A-D)/(1.0+((t/C)^B)))^G

where alpha(t) is in %% of the material reacted at time t, and the parameters (in order of appearance in process span parameters value list) are

  • A minimum asymptote ( usually 0) at zero time, in %% (0 <= A < 100)
  • B steepness of the sigmoid curve slope
  • C time position of the inflection point, in days (C > 0)
  • D maximum asymptote at infinite time, in %% (A < D < 100)
  • G skew (asymmetry) parameter (0.1 <= G <= 5.0); setting G=1 reduces to 4PL model

As CemGEMS Process simulator uses time in hours and ReactExtent in unit fraction scale (0 < ReactExtent < 1), the time t and alpha(t) are rescaled accordingly to use equation (5PL) with parameters in scales typical for cement literature.

The above equation (4PL or 5PL) describes a sigmoidal curve that starts at the minimum asymptote, increases rather steeply at some defined slope in the middle, and levels off to the maximum asymptote, optionally with some skew to either side. In applications to cement hydration, these parameters are usually regressed from XRD measurements of how the amounts of clinker minerals or SCMs change with time. In comparison with the mP&K hydration kinetics model, actually applicable to Portland cements only, the 4PL or 5PL equation can be used for any cement hydration process, provided that the empirical XRD data on the evolution of volume or mass of anhydrous minerals or SCM constituents are available. However, the logistic function model is purely empirical and has no internal controls for changing temperature, relative humidity, specific surface area, and other factors.

More about the 4PL and 5PL logistic (sigmoidal) functions can be found in this paper:

  • Gottschalk, P.G., Dunn, J.R. (2005). The five-parameter logistic: A characterization and comparison with the four-parameter logistic. Analytical Biochemistry 343, 54–65.

Modified Parrot & Killoh (mP&K) model example

After creating or cloning and simulating the 'Hydration-PK' process, you can open the process definition document in jsoneditor by clicking on the pencil-like button to the right of the process key. In the Text mode of jsoneditor, you can see the JSON text similar to that shown in the snippet below (remember that the order of fields in any JSON document is not fixed except for array elements).

  {
    "Comment": "Kinetics of hydration of CEM-I in log10(hours) time scale up to 10000 hours (417 days) using the modified Parrot-Killoh (MPK) model acting on reaction degrees of CEM clinker minerals",
    "Process": "PC-hydration-logtime",
    "built_in_model": "MULTIPLE",
    "numtimesteps": "101",
    "processType": "hydration",
    "timeUnit": "hour",
    "timestart": "-2.000000",
    "timestep": "0.060000",
    "timestepping": "log10",
    "timestop": "4.000000",
    "inputSpans": [
      {
        "Comment": "Built-in mP&K hydration kinetics for Alite C3S",
        "InputSpan": "P&K-C3S",
        "parameters": {
          "comment": "In this order: K1, N1, K2, K3, N3, H, Ea",
          "model": "mP&K",
          "source": "Lothenbach_ea, CCR 38 (2008), table 3, modified",
          "values": [
            1.5,
            0.7,
            0.05,
            1.1,
            3.3,
            2,
            41570
          ]
        },
        "targetPath": "/recipes/0/materials/0/constituents/0/ReactExtent",
        "targetUnit": "1"
      },

The time span and stepping can be modified as described above. The 'inputSpans' array contains the JSON elements, each describing the so-called 'span' for an input data field that has to be changed by the process. The snippet shows the first of several spans that changes the ReactExtent input value of the C3S constituent of Cement material in the recipe, as addressed in the 'targetPath' string. The indexes used in this string (all zeros in the snippet) correspond to those in the parent recipe of the process. For example, belite C2S is addressed as follows:

"targetPath": "/recipes/0/materials/0/constituents/1/ReactExtent",

The actual value of the target is computed by a built-in subroutine of CemGEMS backend GEMSW code, according to the 'model' code and the contents of the 'parameters' data object. In the 'values' array, you can change any of these parameters that must follow in a strict order. The value ranges and units of measurements correspond to the description in the paper cited in the 'source' field, except the last one - the activation energy - provided later by Prof. B.Lothenbach.

Empirical 4PL (5PL) logistic function model example

After creating or cloning and simulating the 'Hydration-MPK' or 'Hydration-5PL' process, you can open the process definition document in jsoneditor by clicking on the pencil-like button to the right of the process key. In the Text mode of jsoneditor, you can see the JSON text similar to that shown in the snippet below (remember that the order of fields in any JSON document is not fixed except for array elements).

 {
    "Comment": "Kinetics of hydration of CSA-C or BYF-C in log10(hours) time scale up to 10000 hours (417 days) using the empirical sigmoidal (4PK or 5PK) model acting on the reaction degrees of CSA or BYF clinker minerals",
    "Process": "CSA-hydration-logtime",
    "built_in_model": "MULTIPLE",
    "processType": "hydration",
    "timeUnit": "hour",
    "numtimesteps": "101",
    "timestart": "-1.0",
    "timestep": "auto",
    "timestepping": "log10",
    "timestop": "4.0",
    "inputSpans": [
      {
        "Comment": "Built-in empirical 4PL hydration kinetics for Belite C2S at 20-25 C",
        "InputSpan": "5PL-C2S",
        "parameters": {
          "comment": "In this order: A, B, C, D, G (G=1 for 4PL)",
          "model": "5PL",
          "source": "Chitvoranund_et_al, ACR 29 (2017), Figure 5",
          "values": [
            0,
            0.5,
            14,
            50,
            1
          ]
        },
        "targetPath": "/recipes/0/materials/0/constituents/0/ReactExtent",
        "targetUnit": "1"
      },

The actual value of the target is computed by a built-in subroutine of CemGEMS backend at each process step, according to the 'model' code and the contents of the 'parameters' data object. In the 'values' array, you can change any of these input parameters while preserving a strict order. The value ranges and units of measurements correspond to the description in the paper cited in the 'source' field, except the last G parameter that expands the 4PL model into the 5PL one, if set to a value different from 1.0.


Last update: February 13, 2021