The evaporation rate of surface moisture from fresh concrete is a critical factor in preventing plastic shrinkage cracking. When water evaporates from the surface of the concrete faster than bleed water can rise to replace it, the surface dries out, shrinks, and eventually cracks while the concrete is still in a plastic state.
This calculator utilizes the standard formula derived from the Menzel nomograph, widely referenced in ACI 305R (Guide to Hot Weather Concreting). By monitoring environmental conditions, contractors can determine when protective measures are necessary.
Critical Threshold: According to ACI guidelines, precautionary measures are strongly recommended when the evaporation rate exceeds 0.2 lb/ft²/hr (1.0 kg/m²/hr). However, some concrete mixtures, particularly those with low bleed rates (like high-strength concrete or mixes with silica fume), may crack at rates as low as 0.1 lb/ft²/hr.
Factors Influencing Evaporation
Four primary environmental factors drive the rate at which moisture leaves the concrete surface:
Air Temperature: Higher air temperatures increase the capacity of the air to hold moisture, accelerating evaporation.
Concrete Temperature: Warm concrete heats the layer of air immediately above the surface, increasing vapor pressure and driving moisture away.
Relative Humidity: Low humidity creates a larger gradient between the saturated concrete surface and the dry air, speeding up moisture loss.
Wind Speed: Wind blows away the layer of humid air directly above the concrete, replacing it with drier air and significantly increasing the evaporation rate.
Interpreting the Results
The output of this calculator helps categorize the risk of plastic shrinkage:
Low Risk (< 0.1 lb/ft²/hr): Generally safe conditions for standard concrete mixes.
Moderate Caution (0.1 – 0.2 lb/ft²/hr): Risk of cracking increases. Monitor closely. If using mixes with low bleed water capacities, implement protective measures.
High Risk (> 0.2 lb/ft²/hr): Plastic shrinkage cracking is highly likely. Preventative measures are mandatory under ACI 305 guidelines.
Prevention Strategies
If your calculation shows a high evaporation rate, consider the following methods to reduce the risk:
Erect temporary windbreaks or sunshades.
Apply an evaporation retarder (monomolecular film) immediately after screeding.
Fog spray the air above the concrete to raise local humidity.
Cool the concrete mixture using chilled water or ice (to lower concrete temperature).
Schedule pours for early morning or evening when temperatures are lower and humidity is often higher.
function updateLabels() {
var system = document.getElementById('unitSystem').value;
var airLabel = document.getElementById('label-airTemp');
var concLabel = document.getElementById('label-concTemp');
var windLabel = document.getElementById('label-windSpeed');
var airInput = document.getElementById('airTemp');
var concInput = document.getElementById('concTemp');
var windInput = document.getElementById('windSpeed');
if (system === 'imperial') {
airLabel.innerText = "Air Temperature (°F)";
concLabel.innerText = "Concrete Temperature (°F)";
windLabel.innerText = "Wind Speed (mph)";
airInput.placeholder = "e.g. 85";
concInput.placeholder = "e.g. 80";
windInput.placeholder = "e.g. 10";
} else {
airLabel.innerText = "Air Temperature (°C)";
concLabel.innerText = "Concrete Temperature (°C)";
windLabel.innerText = "Wind Speed (km/h)";
airInput.placeholder = "e.g. 29";
concInput.placeholder = "e.g. 27";
windInput.placeholder = "e.g. 16";
}
}
function calculateEvaporation() {
// Get inputs
var system = document.getElementById('unitSystem').value;
var ta = parseFloat(document.getElementById('airTemp').value);
var rh = parseFloat(document.getElementById('relativeHumidity').value);
var tc = parseFloat(document.getElementById('concTemp').value);
var v = parseFloat(document.getElementById('windSpeed').value);
// Validation
if (isNaN(ta) || isNaN(rh) || isNaN(tc) || isNaN(v)) {
alert("Please enter valid numbers for all fields.");
return;
}
if (rh 100) {
alert("Relative Humidity must be between 0 and 100.");
return;
}
// Normalize inputs to Imperial for calculation (Menzel Formula standard)
var ta_f, tc_f, v_mph;
if (system === 'metric') {
// Celsius to Fahrenheit: (C * 9/5) + 32
ta_f = (ta * 9/5) + 32;
tc_f = (tc * 9/5) + 32;
// km/h to mph: km/h * 0.621371
v_mph = v * 0.621371;
} else {
ta_f = ta;
tc_f = tc;
v_mph = v;
}
// Menzel Formula (ACI 305R)
// E = [Tc^2.5 – (r * Ta^2.5)] * (1 + 0.4V) * 10^-6
// Note: This power function is an approximation of saturation vapor pressure curves
// Ensure bases are non-negative for Math.pow (Temperature in F is usually positive for concrete work,
// but if < 0F, Math.pow returns NaN for fractional exponent. Concrete work rarely happens at < 0F (-17C)).
if (ta_f < 0) ta_f = 0;
if (tc_f < 0) tc_f = 0;
var r = rh / 100;
var term1 = Math.pow(tc_f, 2.5);
var term2 = r * Math.pow(ta_f, 2.5);
var term3 = 1 + (0.4 * v_mph);
var evaporationImperial = (term1 – term2) * term3 * 0.000001;
// Handle negative results (physics: condensation happens, effectively 0 evaporation)
if (evaporationImperial < 0) evaporationImperial = 0;
// Prepare Display
var finalResult = 0;
var unitText = "";
var thresholdWarning = 0.2; // ACI critical limit in Imperial
var thresholdCaution = 0.1;
if (system === 'metric') {
// Convert lb/ft²/hr to kg/m²/hr
// 1 lb/ft²/hr = 4.8824 kg/m²/hr
finalResult = evaporationImperial * 4.8824;
unitText = "kg/m²/hr";
// Adjust thresholds for logic comparison (keep logic on imperial base or convert thresholds)
// Let's keep logic on the Imperial value since it's the source
} else {
finalResult = evaporationImperial;
unitText = "lb/ft²/hr";
}
// Display Results
var resultDiv = document.getElementById('result-container');
var resultValDiv = document.getElementById('evapResult');
var unitDisplay = document.getElementById('unitDisplay');
var riskStatus = document.getElementById('riskStatus');
var riskMsg = document.getElementById('riskMessage');
resultDiv.style.display = "block";
resultValDiv.innerText = finalResult.toFixed(3);
unitDisplay.innerText = unitText;
// Determine Risk
// Using Imperial Base for Logic
// Safe: 0.2
riskStatus.className = "status-badge"; // reset classes
if (evaporationImperial >= thresholdWarning) {
riskStatus.classList.add("status-danger");
riskStatus.innerText = "CRITICAL RISK";
resultDiv.style.backgroundColor = "#ffebeb";
resultDiv.style.border = "1px solid #ffc9c9";
riskMsg.innerHTML = "Action Required: The evaporation rate exceeds ACI 305 critical limits. Plastic shrinkage cracking is highly likely. Implement evaporation control measures immediately (fogging, wind breaks, or evaporation retarders).";
} else if (evaporationImperial >= thresholdCaution) {
riskStatus.classList.add("status-caution");
riskStatus.innerText = "MODERATE RISK";
resultDiv.style.backgroundColor = "#fff9db";
resultDiv.style.border = "1px solid #ffec99";
riskMsg.innerHTML = "Caution: Conditions are favorable for cracking, especially for specialized mixes with low bleed rates. Monitor surface moisture closely.";
} else {
riskStatus.classList.add("status-safe");
riskStatus.innerText = "LOW RISK";
resultDiv.style.backgroundColor = "#ebfbee";
resultDiv.style.border = "1px solid #c3fae8";
riskMsg.innerHTML = "Conditions are generally favorable. Standard curing procedures should be sufficient.";
}
}