Skip to content

Validation against a silica fume shotcrete paste (Lothenbach et al. 2014) ​

Before this page

Validation against a measured paste, for the Portland paste whose phase list this page reuses, and the CASH+ model, for the C-S-H model it tests.

Lothenbach et al. (2014) followed a low-pH shotcrete cement, ESDRED, made for contact with the clay barrier of a repository: 60 % CEM I 42.5 N and 40 % silica fume, with 4.8 g of an aluminum sulfate set accelerator and 1.2 g of a polycarboxylate superplasticizer per 100 g of binder, at a water/binder ratio of 0.5, sealed at 20 °C for 3.5 years. They analyzed the pore solution from one hour on and followed the clinker and the silica fume by ²⁹Si NMR. Miron et al. (2022) computed this paste to test the alkali end-members of the CASH+NK model of the C-S-H on a binder whose gel ends at a low Ca/Si. This page computes it at the measured degrees of reaction, with the C-S-H as CSHQ and as CASH+NK, and compares the pore solutions.

julia
using ChemistryLab, DynamicQuantities, Logging, OptimaSolver, Printf, Plots
default(framestyle = :box, grid = false)
include(joinpath(pkgdir(ChemistryLab), "scripts", "esdred_2014.jl"))

1. The binder and how far it has reacted ​

The silicates of the clinker and the silica fume are followed by NMR: the clinker's share of the silicon, and the silica fume left unreacted, which falls from 40 to 10 g per 100 g of binder in 3.5 years ((Lothenbach et al., 2014; Table 2)). They react here at those degrees; the aluminate and the ferrite, which the NMR does not see, by the law of Parrott and Killoh (1984) with the constants of this cement.

julia
nmr = es14_nmr_extents()
println("  days   alite and belite   silica fume")
for d in (1, 7, 28, 360, 1310)
    @printf("%6d   %16.2f %13.2f\n", d, extent(nmr.silicates, d), extent(nmr.silica_fume, d))
end
  days   alite and belite   silica fume
     1               0.18          0.10
     7               0.46          0.29
    28               0.56          0.57
   360               0.90          0.70
  1310               0.97          0.75

The binder is entered as Lothenbach et al. (2014) describe it: the normative phases of the CEM I (their Table 1, which sums to 100.31 g and is scaled to 100), the silica fume by its oxides, and the accelerator as an addition, its aluminum, sulfate and alkalis dissolved from the start. Miron et al. (2022) describe ESDRED as 40 % CEM I and 60 % silica fume; the paper they cite, and its Table 2, give 60 and 40, which is used here. The assumptions the script makes are listed at its head, scripts/esdred_2014.jl.

2. The formate of the accelerator ​

The accelerator brings organic carbon, which Lothenbach et al. (2014) identify as formate: 202 mM in the mixing water at the start, of which they estimate from the charge balance of each pore solution how much is still dissolved, 140 mM after one day and about 80 mM after a year (footnote a of their Table 3). Formate is an anion, and at these concentrations it is the main one. The measured solution after 28 days balances its charge only with it:

julia
d = 28.0
cations = es14_measured(d, "K") + es14_measured(d, "Na") + 2es14_measured(d, "Ca")
anions = es14_measured(d, "OH-") + 2es14_measured(d, "S") + es14_measured(d, "formate")
@printf("at %d days: cations %.0f meq/L; anions %.0f meq/L, of which formate %.0f\n",
        d, cations, anions, es14_measured(d, "formate"))
at 28 days: cations 88 meq/L; anions 86 meq/L, of which formate 65

Cemdata18 (Lothenbach et al., 2019) has no formate, and Miron et al. (2022) left it out, naming it as a possible cause of the gaps they found. The formate of the SUPCRT (Johnson et al., 1992) organic database can be added. It then has to stay formate, as it does in the paste: the reduced species of sulfur and iron of the database are left out, so that nothing in the system can oxidize it. But the model has no solid that takes formate up, where Lothenbach et al. (2014) estimate that the solids take a third to three-fifths of it. The two calculations below are therefore two bounds: without the formate, and with all of it in solution.

julia
model = cemdata18_activity_model(:KOH)
days = es14_days()
runs = Dict((gel, f) => hydrate(es14_recipe(; formate = f), es14_system(gel; formate = f), days; model)
            for gel in (:CSHQ, :CASHNK), f in (false, true))
for gel in (:CSHQ, :CASHNK), f in (false, true)
    @printf("%-7s %-15s certified at %d of %d ages\n", gel, f ? "with formate" : "without formate",
            count(rs -> rs.certificate.optimal, runs[(gel, f)].states), length(days))
end
CSHQ    without formate certified at 10 of 10 ages
CSHQ    with formate    certified at 10 of 10 ages
CASHNK  without formate certified at 10 of 10 ages
CASHNK  with formate    certified at 10 of 10 ages

3. The pore solutions ​

julia
gel_name(gel) = gel === :CSHQ ? "CSHQ" : "CASH+NK"
println("  days  element  measured   CSHQ: no formate  formate   CASH+NK: no formate  formate")
for (k, d) in enumerate(days), e in ("K", "Na", "Ca", "pH")
    m = es14_measured(d, e)
    v = [e == "pH" ? pH(runs[(g, f)].states[k].state, model) : pore_solution_mmol(runs[(g, f)].states[k].state)[e]
         for g in (:CSHQ, :CASHNK) for f in (false, true)]
    @printf("%6.0f  %-7s %9.3g %15.3g %9.3g %18.3g %9.3g\n", d, e, m, v...)
end
  days  element  measured   CSHQ: no formate  formate   CASH+NK: no formate  formate
     1  K             217             148       220               59.2       170
     1  Na            100            21.3      48.6               24.2      59.1
     1  Ca            6.3           0.237      3.18              0.478      17.6
     1  pH           13.2              13      12.1                 13      12.1
     2  K             236             128       226               51.4       165
     2  Na            110            15.3      46.5               21.2      58.9
     2  Ca            5.2           0.252      5.48              0.562      23.4
     2  pH           13.3              13        12               12.9      12.1
     4  K             139             101       240               43.2       158
     4  Na             76            9.63      44.1               18.1        59
     4  Ca            4.3           0.275      11.3              0.686      34.2
     4  pH             13            12.9      11.9               12.9        12
     7  K            85.7             104       247                 17       111
     7  Na             57            9.29      42.6               8.83      48.9
     7  Ca           1.87           0.335      12.3              0.436        62
     7  pH           12.7            12.6      11.6               12.4      11.4
    14  K              39             141       273               12.4      58.4
    14  Na             37            12.6      42.4               7.33      31.4
    14  Ca            9.8           0.695      13.6                2.3       103
    14  pH           12.3            11.9      11.1               11.1      10.2
    28  K              29             226       321               18.2      44.9
    28  Na             33            25.4      52.3               10.7      24.6
    28  Ca             13            3.25      22.1               13.2       107
    28  pH           12.2            11.1      10.4               10.3      9.94
    56  K              24             160       308               17.1      44.8
    56  Na             32            13.1      41.8               10.3      25.4
    56  Ca             20            1.12      19.4               13.3       124
    56  pH           12.1            11.5      10.8               10.3      9.92
   207  K              19             127       327               11.9      47.1
   207  Na             29            9.14      42.5               7.17      26.9
   207  Ca             29           0.779      25.6               4.83       132
   207  pH           11.7            11.8      10.9               10.8      10.1
   360  K              14             101       344               8.43      53.2
   360  Na             25            6.71      42.5               5.04      29.6
   360  Ca             27           0.605      35.7               1.67       132
   360  pH           11.3              12        11               11.2      10.4
  1310  K              11            95.7       364               8.14      52.8
  1310  Na             22            6.14      43.2               4.87      29.6
  1310  Ca             29           0.597      42.9               1.69       139
  1310  pH           11.7              12        11               11.2      10.4
julia
panels = map(("K", "Ca", "pH")) do e
    # The legend sits above the curves of calcium, its axis raised to make room.
    p = plot(; xscale = :log10, title = e == "pH" ? "pH" : "$e (mmol/L or mmol/kg)", xlabel = "time (days)",
             legend = e == "Ca" ? :top : false, ylims = e == "Ca" ? (0, 240) : :auto)
    for (gel, color) in ((:CSHQ, :darkorange), (:CASHNK, :steelblue)), (f, style) in ((false, :solid), (true, :dash))
        y = [e == "pH" ? pH(rs.state, model) : pore_solution_mmol(rs.state)[e] for rs in runs[(gel, f)].states]
        plot!(p, days, y; color, linestyle = style, linewidth = 2,
              label = "$(gel_name(gel)), " * (f ? "all formate" : "no formate"))
    end
    scatter!(p, days, [es14_measured(d, e) for d in days]; color = :black, label = "measured")
    p
end
fig = plot(panels...; layout = (1, 3), size = (1000, 380), left_margin = 6Plots.mm, bottom_margin = 7Plots.mm)

4. What the comparison says ​

Without the formate, CASH+NK follows the fall of the alkalis as the silica fume reacts and decalcifies the gel, from two weeks on: the potassium comes down to 8 mmol/kg after 3.5 years, where 11 mmol/L were measured, while CSHQ keeps 96. That is the result Miron et al. (2022) report for their fine-tuned model. In the first days CASH+NK takes too much of it, 43 to 59 mmol/kg where 139 to 236 were measured, and the sodium stays below the measurement throughout with both gels. The calcium is reproduced at 28 and 56 days by CASH+NK, 13 mmol/kg against 13 and 20 mmol/L, and by neither later, where the measured solution holds 27 to 29 and the computed ones 0.6 to 5. Between two weeks and two months the pH falls below the measured one, by half a unit to a unit with CSHQ and by one to two with CASH+NK; later CASH+NK comes back within a unit of it and CSHQ goes above it.

With all the formate in solution the calcium and the alkalis rise past the measured ones, the formate having to be balanced by cations, and the pH falls further. After the first weeks the measured calcium lies between the two bounds, as it should if the solids take up part of the formate. No model of the package, nor of Cemdata18, describes that uptake by the hydrates, and a calculation of this paste is only as good as what replaces it. What this page settles is narrower: the late alkalis of a silica fume binder are followed by CASH+NK and not by CSHQ, and its calcium and pH are not followed by either without an account of the formate of its accelerator.

Where to go next ​

The CASH+ model computes the Portland cement paste Miron et al. (2022) also used, and the CEM IV page a pozzolanic binder with CSHQ and CNASH_ss.