Welding Heat Input & Cooling Rate Calculator (Rosenthal Solution) Back
Welding / Thermal

Welding Heat Input & Cooling Rate Calculator (Rosenthal Solution)

Calculate welding heat input and peak temperature distribution using the Rosenthal analytical solution. Adjust welding current, voltage, travel speed, and material to evaluate HAZ width and cooling rates.

Welding Process

Welding Parameters

1200
501000
1050
0.101.0

Base Metal & Plate

150
0300
0.550
Results
Heat Input HI (kJ/mm)
t₈₅ (s) 800→500°C
Cooling Rate CR (°C/s)
HAZ Width (mm)
Thermal Cycle T(t) - Temperature History at Observation Point r
Isotherm Contours (Top View) - Weld Pool and HAZ Boundary
Peak Temperature T_peak vs Distance from Weld Line r
Welding Heat Source Animation - Moving Heat Source and Temperature Field
// Weld heat source animation (function() { const el = document.getElementById('weldAnimCanvas'); const ctx = el.getContext('2d'); let weldX = 0; let animT = 0; function getParams() { const v_el = document.getElementById('vel'); const v = v_el ? parseFloat(v_el.value) || 10 : 10; // mm/s const I_el = document.getElementById('curr'); const V_el = document.getElementById('volt'); const I = I_el ? parseFloat(I_el.value) || 200 : 200; const V = V_el ? parseFloat(V_el.value) || 24 : 24; const Q = I * V; // W (gross heat input) const eta_el = document.getElementById('eta'); const eta = eta_el ? parseFloat(eta_el.value) || 0.8 : 0.8; return { v, Q, eta }; } function resize() { const dpr = window.devicePixelRatio || 1; const w = el.parentElement.clientWidth - 36; const H = Math.round(w * 0.38); if (Math.abs(el.width - w * dpr) > 2 || el.height !== H * dpr) { el.width = w * dpr; el.height = H * dpr; el.style.height = H + 'px'; ctx.setTransform(dpr, 0, 0, dpr, 0, 0); weldX = 0; } return { W: w, H }; } function frame() { const { W, H } = resize(); const { v, Q, eta } = getParams(); animT += 1/60; // Move heat source const pixPerSec = (v / 100) * W * 0.8; weldX += pixPerSec / 60; if (weldX > W * 0.9) weldX = W * 0.05; ctx.clearRect(0, 0, W, H); ctx.fillStyle = '#001F3F'; ctx.fillRect(0, 0, W, H); const cy = H / 2; const weldY = cy; // Draw base metal ctx.fillStyle = '#003060'; ctx.fillRect(0, weldY - 8, W, 16); // Thermal field around heat source const Qeff = Q * eta; const thermalRadius = Math.min(W * 0.35, 20 + Qeff / 100); const nRings = 8; for (let i = nRings; i >= 0; i--) { const r = thermalRadius * (1 - i / nRings); const T_frac = Math.exp(-i * 0.5); // hot at center const red = Math.round(T_frac * 255); const green = Math.round(T_frac * 100); const alpha = T_frac * 0.7; ctx.beginPath(); // Elliptical thermal field (elongated in travel direction behind) ctx.ellipse(weldX, weldY, r * 1.8, r, 0, 0, Math.PI * 2); ctx.fillStyle = `rgba(${red},${green},0,${alpha})`; ctx.fill(); } // Heat source point (arc/laser spot) ctx.beginPath(); ctx.arc(weldX, weldY, 5, 0, Math.PI * 2); ctx.fillStyle = '#fff'; ctx.fill(); // Sparks const nSparks = 6; for (let i = 0; i < nSparks; i++) { const sAngle = animT * 15 + i * (Math.PI * 2 / nSparks); const sr = 8 + Math.sin(animT * 8 + i) * 6; const sx = weldX + Math.cos(sAngle) * sr; const sy = weldY + Math.sin(sAngle) * sr * 0.4; ctx.beginPath(); ctx.arc(sx, sy, 1.5, 0, Math.PI * 2); ctx.fillStyle = `rgba(255,200,0,0.8)`; ctx.fill(); } // Weld pool outline ctx.strokeStyle = 'rgba(255,180,0,0.6)'; ctx.lineWidth = 1.5; ctx.setLineDash([3, 2]); ctx.beginPath(); ctx.ellipse(weldX, weldY, thermalRadius * 0.9, thermalRadius * 0.5, 0, 0, Math.PI * 2); ctx.stroke(); ctx.setLineDash([]); // Weld bead (behind heat source) const beadLen = weldX - W * 0.05; if (beadLen > 0) { const beadGrad = ctx.createLinearGradient(W * 0.05, 0, weldX - 10, 0); beadGrad.addColorStop(0, 'rgba(120,60,0,0.6)'); beadGrad.addColorStop(1, 'rgba(200,120,0,0.8)'); ctx.fillStyle = beadGrad; ctx.fillRect(W * 0.05, weldY - 4, beadLen, 8); } // Direction arrow ctx.strokeStyle = 'rgba(255,255,255,0.5)'; ctx.lineWidth = 1.5; ctx.beginPath(); ctx.moveTo(weldX + 20, weldY - 20); ctx.lineTo(weldX + 45, weldY - 20); ctx.stroke(); ctx.fillStyle = 'rgba(255,255,255,0.5)'; ctx.beginPath(); ctx.moveTo(weldX + 45, weldY - 20); ctx.lineTo(weldX + 40, weldY - 24); ctx.lineTo(weldX + 40, weldY - 16); ctx.closePath(); ctx.fill(); // Labels ctx.fillStyle = 'rgba(255,255,255,0.7)'; ctx.font = '10px Roboto Mono'; ctx.textAlign = 'left'; ctx.fillText(`Q = ${Q}W, η = ${(eta*100).toFixed(0)}%, v = ${v}mm/s`, 8, 16); ctx.fillStyle = '#e17055'; ctx.fillText('Weld pool', weldX + 5, weldY + thermalRadius * 0.6 + 12); requestAnimationFrame(frame); } frame(); })();

What is the Rosenthal Solution?

🙋
What exactly is the "Rosenthal solution" this simulator is based on? It sounds complicated.
🎓
Basically, it's a classic mathematical model that predicts how heat spreads during welding. Imagine moving a tiny, incredibly hot torch along a piece of metal. The Rosenthal solution gives us a way to calculate the temperature at any point around that moving heat source, which is crucial for understanding the weld's quality.
🙋
Wait, really? So if I change the welding speed or power in the simulator, it's recalculating that whole temperature field?
🎓
Exactly! That's the power of this model. For instance, when you move the "Welding Speed" slider above, you're changing how fast the heat source travels. A slower speed lets heat soak in deeper, widening the molten zone, while a faster speed creates a narrower, shallower weld. Try it and watch the temperature contours change shape.
🙋
The results show a "cooling rate." Why is that so important compared to just the peak temperature?
🎓
Great question. The cooling rate, especially around 500°C, directly controls the microstructure of the steel. Too fast, and you get a hard, brittle martensite structure that can crack. Too slow, and grains grow too large, weakening the weld. The "Distance from Weld Centerline" slider lets you probe this critical cooling rate at different locations.

Physical Model & Key Equations

The core of the Rosenthal solution for a moving point heat source on a thick plate is the temperature distribution equation. It assumes a quasi-steady state, meaning the temperature pattern around the heat source is stable as it moves.

$$T - T_0 = \frac{Q}{2 \pi k R}\exp\left(-\frac{v (R + x)}{2 \alpha}\right)$$

Where:
$T$ = Temperature at a point (K)
$T_0$ = Initial/ambient temperature (K)
$Q$ = Heat input power (W) = Arc efficiency × Voltage × Current
$k$ = Thermal conductivity (W/m·K)
$v$ = Welding speed (m/s)
$\alpha$ = Thermal diffusivity (m²/s)
$R$ = Distance from the heat source (m), $R = \sqrt{x^2 + y^2 + z^2}$
$x$ = Coordinate in the welding direction

A primary output of practical interest is the cooling rate. For many steels, the critical cooling rate is evaluated at 500°C. A simplified derivative of the Rosenthal solution gives this rate.

$$\frac{dT}{dt}\bigg|_{T=500}= - 2 \pi k \frac{(500 - T_0)^2}{Q/v}$$

This equation reveals a key insight: the cooling rate is proportional to the square of the temperature difference and inversely proportional to the heat input per unit length ($Q/v$). This is why, in the simulator, increasing the voltage or current (which increases $Q$) slows down the cooling, while increasing the welding speed $v$ makes cooling much faster.

Real-World Applications

Procedure Qualification & WPS Development: Before welding on a critical structure like a pressure vessel, engineers use this calculation to define a Welding Procedure Specification (WPS). They ensure the chosen voltage, current, and speed yield a cooling rate that avoids brittle microstructures, preventing catastrophic failure in service.

High-Strength Steel Welding: Advanced steels used in military vehicles or mining equipment are highly sensitive to heat. Engineers simulate different scenarios to find the narrow "window" of parameters that provides enough penetration without causing excessive hardening and cracking in the Heat-Affected Zone (HAZ).

Automotive Tailor-Welded Blanks: In car body manufacturing, different grades and thicknesses of steel are laser-welded together before stamping. Controlling heat input is vital to maintain the strength of each material. The model helps optimize laser power and travel speed for a consistent, strong seam.

Pipeline Girth Welding: During the construction of cross-country pipelines, welding must be done in various environmental temperatures. Engineers adjust pre-heat temperature (the $T_0$ parameter in the simulator) based on forecasts to ensure the cooling rate stays within safe limits, guaranteeing weld integrity over decades.

Common Misunderstandings and Points to Note

When starting to use this tool, there are several pitfalls that engineers, especially those learning CAE on the job, often fall into. First and foremost, understand that the Rosenthal solution is not a universal solution. It is a classical solution based on the bold assumption of a "moving point heat source." For instance, a real arc has a width rather than being a point, and material thermal properties change with temperature. Consider the tool's results as a "first approximation" for grasping trends, and make it a habit to always verify with actual measurements or higher-fidelity FEM simulations, especially for critical components.

Second, the setting for thermal efficiency η. The default value (e.g., 0.8 for MIG) is merely a representative value. In reality, it varies with factors like shield gas type, wire stick-out length, and beading. A difference of just 0.1 in this value can significantly change the calculated t8/5. In practice, the trick is to estimate an η suitable for your own process by back-calculating from t8/5 values measured under your company's standard welding conditions.

Third, the selection criteria for "thin plate" vs. "thick plate". Simple judgments like "Is 5mm a thin plate? Is 12mm a thick plate?" are risky. What's important is "whether heat spreads uniformly in the plate thickness direction." If forced cooling from the backside (e.g., using a water-cooled jig) is applied, the condition becomes closer to the thick plate model. Conversely, even with a 15mm plate, welding simultaneously from both sides might be better approximated by the thin plate model. Develop an intuition for selecting the appropriate model by comparing simulation results with measured thermal histories.