CEM I 52.5 N HTS and CEM II/A-L 42.5 R from 0 to 60 °C
Before this page
Validation on pore solutions from 7 to 80 °C, the temperature dependence of the solubility products tested on measured pore solutions, and CEM I 52.5 R with slag and limestone at 5, 20 and 40 °C, the rate laws at three temperatures.
Lothenbach et al. (2008) calculated the hydrates of a sulfate-resisting CEM I 52.5 N HTS (SRPC) and of a Portland-limestone CEM II/A-L 42.5 R (PLC) from 0 to 60 °C, with the thermodynamic data of cemdata2007, at the degree of hydration the clinker reaches in 150 days, kept the same at every temperature (their Figs. 5 and 6). Above about 48 °C they find monosulfate more stable than ettringite and monocarbonate; taking the solubility products uncertain by 0.1 log units spreads that temperature from 42 to 54 °C. This page computes the same pastes with Cemdata18 (Lothenbach et al., 2019) and the phase list the package uses for a Portland paste, and compares the two calculations.
1. The pastes
The cements are those of Lothenbach et al. (2008), Table 1: the four clinker phases of its normative composition, the free lime, the calcite, the calcium sulfate (as anhydrite, the formula the table prints) and the alkali sulfates. Each clinker phase is at the degree the law of Parrott and Killoh (1984) gives it after 150 days at 20 °C, with the constants of (Lothenbach et al., 2008; Table 2), its w/c factor and the fineness of Table 1; the SRPC is a paste at w/c 0.4, the PLC a mortar at 0.58. ASSUMED: the minor oxides held in the clinker phases are released at the overall degree of the clinker, the article giving their amounts and not how the phases share them.
using ChemistryLab, DynamicQuantities, OptimaSolver, Printf, Plots
include(joinpath(pkgdir(ChemistryLab), "scripts", "lothenbach2008_temperature.jl"))
cements = ("SRPC", "PLC")
for c in cements
@printf("%-4s at w/c %.2f: %s; overall %.0f %%, the article about %.0f %%\n", c, l08t_water_cement(c),
join((@sprintf("%s %.0f %%", p, 100a) for (p, a) in l08t_degrees(c)), ", "),
100 * l08t_overall_degree(c), l08t_value(c == "SRPC" ? "overall_degree_srpc" : "overall_degree_plc"))
endSRPC at w/c 0.40: alite 73 %, belite 63 %, aluminate 73 %, ferrite 70 %; overall 71 %, the article about 80 %
PLC at w/c 0.58: alite 88 %, belite 71 %, aluminate 89 %, ferrite 83 %; overall 83 %, the article about 85 %The same law with the same constants leaves more of the SRPC unreacted than Lothenbach et al. (2008) find, 71 % against about 80 %; the PLC is within two points. The article does not detail how it applies the fineness, "on the initial hydration", and its degrees could not be traced further: the SRPC below holds about two cubic centimeters more clinker than its Fig. 5.
2. The hydrates from 0 to 60 °C
The equilibrium of each paste at every five degrees, the volumes in cm³ per 100 g of cement, the species gathered as the figures of Lothenbach et al. (2008) label their layers:
cs = l08t_system()
materials = Dict(c => l08t_material(c) for c in cements)
temperatures = 0.0:5.0:60.0
shown = ("ettringite", "monocarbonate", "monosulfate", "calcite", "portlandite", "hydrotalcite", "C-S-H", "iron hydroxide", "unhydrated clinker")
volumes = Dict(c => [l08t_grouped(l08t_volumes(l08t_state(c, T; cs, material = materials[c]))) for T in temperatures]
for c in cements)
for c in cements
println(c, ", cm³/100 g")
println(" °C ", join((lpad(first(g, 11), 12) for g in shown)))
for (T, v) in zip(temperatures, volumes[c])
@printf("%3.0f %s\n", T, join((@sprintf("%12.2f", v[g]) for g in shown)))
end
endSRPC, cm³/100 g
°C ettringite monocarbona monosulfate calcite portlandite hydrotalcit C-S-H iron hydrox unhydrated
0 6.59 1.53 0.00 1.15 10.54 0.83 23.98 0.57 8.00
5 6.59 1.53 0.00 1.15 10.57 0.83 23.93 0.57 8.00
10 6.59 1.53 0.00 1.15 10.60 0.83 23.89 0.57 8.00
15 6.59 1.53 0.00 1.15 10.63 0.83 23.84 0.57 8.00
20 6.59 1.53 0.00 1.15 10.66 0.83 23.80 0.57 8.00
25 6.59 1.53 0.00 1.15 10.69 0.83 23.77 0.57 8.00
30 6.59 1.53 0.00 1.15 10.71 0.83 23.73 0.57 8.00
35 6.59 1.53 0.00 1.15 10.74 0.83 23.69 0.57 8.00
40 6.59 1.53 0.00 1.15 10.76 0.83 23.66 0.57 8.00
45 6.59 1.53 0.00 1.15 10.79 0.83 23.63 0.57 8.00
50 6.59 1.53 0.00 1.15 10.81 0.83 23.60 0.57 8.00
55 4.62 0.00 2.67 1.37 10.82 0.83 23.57 0.57 8.00
60 4.60 0.00 2.68 1.37 10.85 0.83 23.54 0.57 8.00
PLC, cm³/100 g
°C ettringite monocarbona monosulfate calcite portlandite hydrotalcit C-S-H iron hydrox unhydrated
0 7.26 4.71 0.00 5.24 9.43 2.03 20.18 0.86 3.76
5 7.25 4.71 0.00 5.24 9.45 2.03 20.14 0.86 3.76
10 7.25 4.71 0.00 5.24 9.48 2.03 20.10 0.86 3.76
15 7.25 4.71 0.00 5.24 9.50 2.03 20.07 0.86 3.76
20 7.24 4.71 0.00 5.24 9.53 2.03 20.03 0.86 3.76
25 7.24 4.71 0.00 5.24 9.55 2.03 20.00 0.86 3.76
30 7.23 4.72 0.00 5.24 9.57 2.03 19.97 0.86 3.76
35 7.21 4.72 0.00 5.24 9.60 2.03 19.94 0.86 3.76
40 7.19 4.73 0.00 5.24 9.62 2.03 19.92 0.86 3.76
45 7.17 4.74 0.00 5.24 9.64 2.03 19.89 0.86 3.76
50 7.13 4.75 0.00 5.23 9.66 2.03 19.86 0.86 3.76
55 0.93 0.00 8.31 5.90 9.65 2.03 19.84 0.86 3.76
60 0.71 0.00 8.41 5.90 9.68 2.03 19.82 0.86 3.76The same volumes stacked, from the unhydrated clinker up, as the figures of Lothenbach et al. (2008) draw them:
layers = reverse([g for g in shown if any(v -> v[g] > 0.01, vcat(volumes["SRPC"], volumes["PLC"]))])
panel(c) = areaplot(collect(temperatures), reduce(hcat, [[v[g] for v in volumes[c]] for g in layers]);
label = permutedims(layers), xlabel = "temperature (°C)", ylabel = "cm³ per 100 g of cement",
title = "$c, w/c $(l08t_water_cement(c))", titlefontsize = 10, legend = false,
palette = :tab10, lw = 0.5)
# The legend as a panel of its own, so that the two plots keep one width.
key = plot(fill(NaN, 1, length(layers)); label = permutedims(layers), palette = :tab10, lw = 8,
framestyle = :none, legend = :left)
plot(panel("SRPC"), panel("PLC"), key; layout = @layout([a b c{0.2w}]),
size = (1000, 420), left_margin = 5Plots.mm, bottom_margin = 5Plots.mm)
Between the transitions nothing changes but by fractions of a cubic centimeter: the portlandite, the calcite, the C-S-H and the hydrotalcite are there at every temperature, as in Lothenbach et al. (2008).
3. The transition
The temperature above which each paste holds monosulfate, by bisection to 0.05 °C (l08t_transition):
transition = Dict(c => l08t_transition(c; cs, material = materials[c]) for c in cements)
for c in cements
@printf("%-4s monosulfate from %.1f °C\n", c, transition[c])
end
@printf("the article: about %.0f °C, from %.0f to %.0f °C for solubility products uncertain by 0.1 log units\n",
l08t_value("transition_temperature"), l08t_value("transition_temperature_low"), l08t_value("transition_temperature_high"))SRPC monosulfate from 53.1 °C
PLC monosulfate from 52.6 °C
the article: about 48 °C, from 42 to 54 °C for solubility products uncertain by 0.1 log unitsThis calculation puts the change five degrees above that of Lothenbach et al. (2008), at the upper end of the range the article gives for the uncertainty of its own data, and at the same temperature in both cements within a degree, as the article finds it.
4. Against the article on either side
The volumes Lothenbach et al. (2008) calculate, read from their Figs. 5 and 6 at 5 and 58 °C to 0.2 cm³ (data/literature/Lothenbach2008.json), against those above:
fig = literature_table(L08T, "hydrate_volumes")
for c in cements, T in (5, 58)
v = l08t_grouped(l08t_volumes(l08t_state(c, float(T); cs, material = materials[c])))
println(c, " at ", T, " °C article computed")
for g in shown
k = findfirst(i -> fig.cement[i] == c && ustrip(fig.temperature_C[i]) == T && fig.phase[i] == g, eachindex(fig.phase))
a = k === nothing ? " –" : @sprintf("%7.2f", ustrip(us"cm^3", fig.volume[k]))
(k === nothing && v[g] < 0.01) && continue
@printf(" %-17s %s %8.2f\n", g, a, v[g])
end
endSRPC at 5 °C article computed
ettringite 6.47 6.59
monocarbonate 4.51 1.53
calcite 0.73 1.15
portlandite 11.27 10.57
hydrotalcite 1.07 0.83
C-S-H 21.58 23.93
iron hydroxide – 0.57
unhydrated clinker 6.12 8.00
SRPC at 58 °C article computed
ettringite 0.96 4.61
monosulfate 7.50 2.67
calcite 1.29 1.37
portlandite 11.78 10.84
hydrotalcite 0.90 0.83
C-S-H 21.41 23.55
iron hydroxide – 0.57
unhydrated clinker 6.12 8.00
PLC at 5 °C article computed
ettringite 7.80 7.25
monocarbonate 8.41 4.71
calcite 4.86 5.24
portlandite 8.36 9.45
hydrotalcite 2.26 2.03
C-S-H 17.44 20.14
iron hydroxide – 0.86
unhydrated clinker 3.83 3.76
PLC at 58 °C article computed
ettringite – 0.80
monocarbonate 3.04 0.00
monosulfate 9.44 8.37
calcite 5.54 5.90
portlandite 8.91 9.67
hydrotalcite 1.99 2.03
C-S-H 17.33 19.83
iron hydroxide – 0.86
unhydrated clinker 3.83 3.765. What the comparison says
The sequence is that of Lothenbach et al. (2008), the temperature five degrees higher. Below the transition both pastes hold ettringite and monocarbonate, above it monosulfate and more calcite, as in the article; this calculation moves the change from about 48 to 53 °C, within the 42 to 54 °C that the article's 0.1 log units of uncertainty allow. On either side the portlandite and the calcite agree within 1.1 cm³ per 100 g of cement, the hydrotalcite within 0.3, and the ettringite of both pastes below the transition within 0.6; the C-S-H is larger here, by 2.1 to 2.7 cm³.
The monocarbonate is where the two calculations part. Below the transition the package's list forms a third of the monocarbonate of Lothenbach et al. (2008) in the SRPC and a little over half in the PLC; above it, the PLC of the article keeps monocarbonate and no ettringite, and the package's keeps a little ettringite and no monocarbonate, and the SRPC more ettringite than the article's. Two differences between the calculations act on the aluminum and the iron the AFm and AFt phases share with the sulfate. The article's ettringite, monocarbonate, monosulfate and hydrotalcite are solid solutions of their aluminum and iron analogues (its footnote 1), where the package's Portland list puts the iron in an iron hydroxide (0.6 to 0.9 cm³ here); and its clinker is less hydrated in the SRPC, while the sulfate is all dissolved in both.
Where to go next
Validation on pore solutions from 7 to 80 °C tests the same temperature dependence on measured solutions, and CEM I 52.5 R with slag and limestone at 5, 20 and 40 °C the rate laws that set the degrees of hydration.