Skip to content

Alkali uptake by C-A-S-H (L'Hôpital et al. 2016) ​

Before this page

Validation against published data, whose section Alkali uptake by C-S-H compares the isotherms of Hong and Glasser (1999), on which the alkali end members of CSHQ were fitted.

L'Hôpital et al. (2016) synthesized C-A-S-H, with an Al/Si of 0.05, at six Ca/Si from 0.6 to 1.6, and three C-S-H without aluminum: 2 g of lime, silica fume and monocalcium aluminate in 90 mL of water or of a KOH or NaOH solution, from 0.01 to 0.5 mol/L, each sample equilibrated at 20 °C for 91, 182 or 364 days. They report the solutions, every element and the pH (their Appendix B), and the C-S-H, its Ca/Si and the alkali it took up, from the fall of the dissolved alkali (Appendix C). This page computes the same batches at equilibrium with the two models of the gel that carry the alkalis, and compares.

Which model was fitted to these data

The alkali end members of CSHQ (Kulik, 2011) were fitted on the isotherms of Hong and Glasser (1999) (Lothenbach et al., 2019; §2.7), not on these: for CSHQ the comparison is a prediction. CASH+NK was fitted on these very data, the NaOH series at 0.05 and 0.1 mol/L and the KOH series from 0.01 to 0.5 mol/L, among others (Miron et al., 2022; Table 4): for CASH+NK it checks that the model is applied as its authors fitted it.

1. The batches ​

The solids of each batch, in g per 90 mL of solution ((L'Hôpital et al., 2016; Appendix A)):

julia
using ChemistryLab, DynamicQuantities, OptimaSolver, Printf
include(joinpath(pkgdir(ChemistryLab), "scripts", "lhopital2016_alkali.jl"))

mix = lh16_table("mixing_proportions")
println("Al/Si  Ca/Si   CaO, g   SiO2, g   CaO·Al2O3, g")
for i in eachindex(mix.CaO)
    @printf("%5.2f  %5.1f  %7.3f  %8.3f  %10.3f\n", mix.Al_Si_target[i], mix.Ca_Si_target[i],
            ustrip(us"g", mix.CaO[i]), ustrip(us"g", mix.SiO2[i]), ustrip(us"g", mix.CaO_Al2O3[i]))
end
Al/Si  Ca/Si   CaO, g   SiO2, g   CaO·Al2O3, g
 0.00    0.6    0.718     1.282       0.000
 0.00    1.0    0.966     1.034       0.000
 0.00    1.6    1.198     0.802       0.000
 0.05    0.6    0.670     1.248       0.082
 0.05    0.8    0.809     1.118       0.074
 0.05    1.0    0.921     1.012       0.067
 0.05    1.2    1.014     0.925       0.061
 0.05    1.4    1.093     0.851       0.056
 0.05    1.6    1.159     0.789       0.052
 0.10    1.0    0.879     0.991       0.130

Each batch is computed as it was prepared (lh16_state): the lime, the silica and the aluminate as the Cemdata18 records of the three solids, which dissolve, in 90 g of water with the hydroxide dissolved in it, at 20 °C. Beside the gel the system holds portlandite, amorphous silica and the calcium aluminate hydrates of Cemdata18, hydrogarnet and its siliceous member, strätlingite and microcrystalline gibbsite among them, for the aluminum neither gel takes. The activity model is the one the authors used to speciate their solutions, the extended Debye–Hückel equation of Cemdata18 with the ion size and the b_γ of the hydroxide of the batch (Lothenbach et al., 2019).

ASSUMED: the 90 mL of solution are 90 g of water; the hydroxide solutions are pure, where the potassium ones carry 0.1 to 3.5 mmol/L of sodium.

2. The two gels ​

CSHQ with the alkali end member of the hydroxide of the batch, KSiOH or NaSiOH, and CASH+NK (Miron et al., 2022) on cemdata18-cashplus.json, whose twelve end members carry both alkalis, without the neutral aqueous complexes of the alkalis, as its authors fitted it. The three times of one solution are three samples of one composition, which an equilibrium does not tell apart: each of the 49 compositions is computed once, each series of one Ca/Si walked down from its most concentrated solution, each solve starting from the last.

julia
results = Dict{String, Any}()
for gel in ("CSHQ", "CASH+NK")
    results[gel] = lh16_compute(gel)
end
batches = sort(collect(keys(results["CSHQ"])); by = b -> (b[3], b[2], b[1], b[4]))
for gel in ("CSHQ", "CASH+NK")
    println(gel, ": ", length(results[gel]), " compositions, ",
            count(b -> results[gel][b].certified, batches), " certified")
end
CSHQ: 49 compositions, 49 certified
CASH+NK: 49 compositions, 49 certified

3. The alkali the gel takes up ​

The alkali over silicon of the gel, computed over measured, in the batches whose every measurement is positive. Above Ca/Si 1.2 the gel takes up so little that the fall of the dissolved alkali, the measured quantity, is within its own error, and several measurements are negative.

julia
println("              CSHQ             CASH+NK")
for ca in (0.6, 0.8, 1.0, 1.2, 1.4, 1.6)
    q, n = lh16_uptake_ratios(results["CSHQ"], ca), lh16_uptake_ratios(results["CASH+NK"], ca)
    @printf("Ca/Si %.1f  %5.2f to %5.2f    %5.2f to %5.2f   (%d batches)\n", ca,
            minimum(q), maximum(q), minimum(n), maximum(n), length(q))
end
              CSHQ             CASH+NK
Ca/Si 0.6   0.12 to  1.25     0.82 to  1.55   (7 batches)
Ca/Si 0.8   0.24 to  0.46     1.00 to  1.36   (5 batches)
Ca/Si 1.0   0.32 to  0.98     0.90 to  1.50   (8 batches)
Ca/Si 1.2   0.41 to  1.19     0.62 to  1.16   (5 batches)
Ca/Si 1.4   0.79 to  2.84     0.64 to  0.65   (2 batches)
Ca/Si 1.6   1.47 to  1.49     0.49 to  1.24   (2 batches)
Every batch: the alkali over silicon of the gel, and the dissolved alkali and silicon
julia
mean(x) = sum(x) / length(x)
println("                         alkali/Si of the gel                    alkali, mmol/L             Si, mmol/L")
println("Al/Si Ca/Si       mol/L  measured             CSHQ  CASH+NK    measured  CSHQ  CASH+NK    measured   CSHQ  CASH+NK")
for b in batches
    b[3] == "none" && continue
    m = lh16_measured(b, :alkali_Si)
    a, s = lh16_measured_solution(b, b[3] == "NaOH" ? "Na" : "K"), lh16_measured_solution(b, "Si")
    @printf("%4.2f  %3.1f %-4s %5.2f  %-19s %5.3f  %5.3f   %8.1f %6.1f %6.1f   %8.3f %6.3f %6.3f\n",
            b[1], b[2], b[3], b[4], join((@sprintf("%.3g", x) for x in m), " "),
            results["CSHQ"][b].alkali_Si, results["CASH+NK"][b].alkali_Si,
            isempty(a) ? NaN : mean(a), results["CSHQ"][b].alkali, results["CASH+NK"][b].alkali,
            isempty(s) ? NaN : mean(s), results["CSHQ"][b].Si, results["CASH+NK"][b].Si)
end
                         alkali/Si of the gel                    alkali, mmol/L             Si, mmol/L
Al/Si Ca/Si       mol/L  measured             CSHQ  CASH+NK    measured  CSHQ  CASH+NK    measured   CSHQ  CASH+NK
0.00  0.6 KOH   0.50  0.23                0.287  0.356      453.0  451.3  433.4     38.000 66.512 50.819
0.05  0.6 KOH   0.01  0.031 0.032 0.032   0.004  0.031        2.6    9.2    4.0      4.267 10.746  6.189
0.05  0.6 KOH   0.05  0.13 0.15 0.16      0.028  0.120       15.0   44.5   25.8     13.667 31.345 26.654
0.05  0.6 KOH   0.10  0.27 0.25 0.28      0.058  0.223       43.3   89.2   56.7     29.000 40.209 36.479
0.05  0.6 KOH   0.25  0.26 0.33           0.142  0.311      185.0  225.6  191.9     34.000 55.841 44.007
0.05  0.6 KOH   0.50  0.24 0.27 -1.21     0.280  0.356      442.0  454.0  435.1     15.490 66.038 49.709
0.05  0.8 KOH   0.01  0.031 0.03 0.031    0.007  0.031        3.5    8.6    3.6      1.633  2.100  1.827
0.05  0.8 KOH   0.05  0.12 0.13 0.13      0.033  0.157       20.7   43.8   18.6      1.400  7.375  2.414
0.05  0.8 KOH   0.10  0.24 0.23 0.25      0.061  0.241       48.7   88.7   51.7      4.600 12.141  1.934
0.00  1.0 KOH   0.50  0.21                0.205  0.316      457.0  464.3  440.3      0.590 10.990  0.254
0.05  1.0 KOH   0.01  0.013 0.013 0.014   0.006  0.013        7.5    8.9    7.7      0.113  0.488  0.152
0.05  1.0 KOH   0.05  0.079 0.064         0.027  0.088       35.5   45.3   34.0      0.215  1.624  0.249
0.05  1.0 KOH   0.10  0.15 0.16 0.17      0.051  0.151       68.7   91.2   72.6      0.410  3.145  0.228
0.05  1.0 KOH   0.25  0.15 0.18 0.26      0.114  0.256      211.0  230.7  203.5      0.770  7.398  0.236
0.05  1.0 KOH   0.50  0.43 0.19           0.207  0.341      434.5  465.3  438.3      1.280 12.671  0.320
0.10  1.0 KOH   0.50                      0.217  0.363      208.0  465.7  437.0      0.600 15.823  0.494
0.05  1.2 KOH   0.01  0.0037 0.0043 0.0052 0.005  0.003        9.2    9.2    9.5      0.030  0.224  0.048
0.05  1.2 KOH   0.05  0.03 0.018          0.021  0.028       46.0   46.7   45.5      0.065  0.427  0.073
0.05  1.2 KOH   0.10  0.092 0.095 0.1     0.039  0.065       82.7   93.9   89.4      0.210  0.758  0.098
0.05  1.2 KOH   0.25  0.068 -0.04 0.32    0.088  0.153      233.0  236.3  224.9      0.065  1.921  0.145
0.05  1.4 KOH   0.01  0.001 0.0014 0.0021 0.004  0.001        9.8    9.4    9.9      0.006  0.109  0.029
0.05  1.4 KOH   0.05  -0.006 -0.0076 -0.0079 0.014  0.007       51.0   48.1   49.0      0.009  0.114  0.037
0.05  1.4 KOH   0.10  0.031 0.034         0.026  0.021       95.0   96.5   97.0      0.029  0.140  0.054
0.00  1.6 KOH   0.50  0.048               0.070  0.060      493.0  491.4  491.7      0.040  0.083  0.099
0.05  1.6 KOH   0.01  -0.001 9.3e-05 0.0022 0.004  0.000        9.9    9.5   10.0      0.004  0.058  0.019
0.05  1.6 KOH   0.05  -0.014 0.0031 -0.008 0.010  0.002       51.3   48.8   49.8      0.008  0.051  0.020
0.05  1.6 KOH   0.10  0.012 0.016 0.0081  0.018  0.006       98.0   98.0   99.4      0.029  0.050  0.025
0.05  1.6 KOH   0.25  -0.11 0.063         0.040  0.025      234.3  245.4  247.0      0.041  0.063  0.053
0.05  1.6 KOH   0.50  -0.038 -0.34 -0.37  0.075  0.064      540.0  491.1  491.4      0.051  0.108  0.104
0.05  0.6 NaOH  0.05  0.11 0.14 0.1       0.035  0.102       22.3   43.2   29.6     19.667 30.580 30.240
0.05  0.6 NaOH  0.10  0.14 0.26 0.26      0.072  0.206       51.0   86.5   60.5     32.000 38.797 38.753
0.05  0.8 NaOH  0.05  0.12 0.15 0.11      0.040  0.141       21.7   42.3   22.1      4.100  6.959  3.576
0.05  0.8 NaOH  0.10  0.12 0.23 0.14      0.075  0.223       63.0   86.0   55.6      5.433 11.271  3.039
0.05  1.0 NaOH  0.05  0.077 0.1 0.067     0.033  0.073       33.0   44.2   36.7      0.440  1.528  0.358
0.05  1.0 NaOH  0.10  0.16 0.14           0.062  0.136       72.0   89.2   75.4      0.525  2.874  0.358
0.10  1.0 NaOH  0.50                      0.256  0.358        NaN  460.8  440.0      0.680 13.495  0.982
0.05  1.2 NaOH  0.05  0.043 0.041 0.029   0.026  0.023       42.7   45.9   46.3      0.120  0.408  0.080
0.05  1.2 NaOH  0.10  0.11 0.079          0.048  0.059       83.5   92.5   90.5      0.195  0.699  0.119
0.05  1.4 NaOH  0.05  0.00063 0.011 -0.0088 0.017  0.008       50.0   47.6   48.9      0.024  0.112  0.037
0.05  1.4 NaOH  0.10  -0.14 0.038 0.0048  0.031  0.023      107.7   95.7   96.8      0.033  0.135  0.056
0.05  1.6 NaOH  0.05  -0.014 0.0055 -0.015 -0.018 0.013  0.003       51.3   48.5   49.7      0.014  0.051  0.020
0.05  1.6 NaOH  0.10  -0.17 0.019 -0.018  0.022  0.009      111.3   97.5   99.1      0.018  0.049  0.025

4. The solution ​

The dissolved alkali, silicon and calcium, computed over the mean of the measured ones, as the smallest, the median and the largest of the batches, and the difference of pH; below and above Ca/Si 1.1, where the gel takes up the alkali and where it hardly does.

julia
med(x) = sort(x)[cld(length(x), 2)]
span(x) = @sprintf("%5.2f %5.2f %6.2f", minimum(x), med(x), maximum(x))
println("                     alkali               Si                    Ca               |ΔpH|")
println("                     min   median max     min   median max      min   median max   median  max")
for gel in ("CSHQ", "CASH+NK"), low in (true, false)
    r = lh16_solution_ratios(results[gel]; low)
    @printf("%-8s Ca/Si %s  %s    %s   %s    %4.2f  %4.2f\n", gel, low ? "< 1.1" : "> 1.1",
            span(r.alkali), span(r.Si), span(r.Ca), med(r.ΔpH), maximum(r.ΔpH))
end
                     alkali               Si                    Ca               |ΔpH|
                     min   median max     min   median max      min   median max   median  max
CSHQ     Ca/Si < 1.1   1.00  1.34   3.60     0.21  2.52  26.37    0.19  2.41  30.75    0.13  0.97
CSHQ     Ca/Si > 1.1   0.88  0.99   1.14     1.53  3.61  29.78    0.16  0.65   1.03    0.06  0.21
CASH+NK  Ca/Si < 1.1   0.88  1.04   2.10     0.25  0.96   3.21    0.18  1.67  10.81    0.09  0.55
CASH+NK  Ca/Si > 1.1   0.89  1.00   1.08     0.43  1.39   5.05    0.38  0.79   3.20    0.07  0.24

5. What the comparison says ​

CSHQ takes up too little alkali where the gel is poor in calcium. At a Ca/Si of 0.8 it takes up a quarter to a half of what was measured, at 0.6 and 1.0 as little as an eighth and a third; only in 0.5 mol/L KOH does it reach the measurement. This is the opposite of what CSHQ does on the isotherms it was fitted on, where it binds more than the gel did at 46 of 48 points (Validation against published data): its two alkali end members, fixed on one dataset, cannot follow both. The alkali it leaves in solution, at the median a third more than was measured below Ca/Si 1.1, raises the pH, by up to 0.6 in 0.05 mol/L KOH at Ca/Si 0.6. Above Ca/Si 1.1 the gel takes up little and CSHQ follows the dissolved alkali within 14 %. The largest difference of pH, 0.97, is the batch without alkali at Ca/Si 0.8, measured at 10.27, which CASH+NK misses by 0.55 as well.

CSHQ also dissolves too much silicon at a high pH, at the median 2.5 times the measurement below Ca/Si 1.1 and 3.6 times above, up to thirty times in the most concentrated hydroxides. The authors found the same with the same model (their Section 3.2, Fig. 10) and concluded that the model, built on alkali-free C-S-H, has to be extended to high pH.

CASH+NK reproduces the data it was fitted on. Its alkali over silicon is 0.62 to 1.55 times the measured one at every Ca/Si up to 1.2, within the error L'Hôpital et al. (2016) give the indirect method at high concentration, up to 100 %; the dissolved alkali is at the median the measured one, and the silicon within 4 % of it below Ca/Si 1.1 and 39 % above. The calcium is where both models differ most from the measurement, high below Ca/Si 1.1, by a factor of 2.4 at the median with CSHQ and 1.7 with CASH+NK, and low above.

For a user, the page draws the line this way: in a gel of a Portland cement, above Ca/Si 1.4, the two models take up the same small amount of alkali and give the same solution; in a gel poor in calcium, below a Ca/Si of about 1.1, the gel of a blend rich in silica fume, CSHQ underestimates the alkali the gel holds, and CASH+NK is the model whose alkali uptake was fitted there.

Where to go next ​

Aluminum uptake by C-S-H compares the companion syntheses without alkali, the aluminum taken by the gel. The models of the C-S-H gel lists the gels of the package and the databases they come from, and CEM II/B-V and CEM II/B-M (V-LL), with their CEM I, integrated in time runs CASH+NK in the pastes of a blended cement.