if ($_SERVER['REQUEST_METHOD'] === 'POST') { if ($lambda_val === '' || !is_numeric($lambda_val) || (float)$lambda_val <= 0) { $errors[] = 'Please enter a valid positive wavelength.'; } if ($mode === 'beta2_to_D') { if ($beta2_val === '' || !is_numeric($beta2_val)) $errors[] = 'Please enter a valid β₂ value.'; } elseif ($mode === 'D_to_beta2') { if ($D_val === '' || !is_numeric($D_val)) $errors[] = 'Please enter a valid D value.'; } elseif ($mode === 'pulse_broadening') { if ($D_val === '' || !is_numeric($D_val)) $errors[] = 'Please enter a valid D value.'; if ($L_val === '' || !is_numeric($L_val) || (float)$L_val <= 0) $errors[] = 'Please enter a valid positive link length.'; if ($dlambda_val === '' || !is_numeric($dlambda_val) || (float)$dlambda_val <= 0) $errors[] = 'Please enter a valid positive spectral width.'; if ($T0_val !== '' && !is_numeric($T0_val)) $errors[] = 'Initial pulse width must be numeric, if provided.'; } else { $errors[] = 'Unknown calculation mode.'; } if (!$errors) { $lambda_m = to_meters($lambda_val, $lambda_unit); $two_pi = 2.0 * M_PI; if ($mode === 'beta2_to_D') { $beta2_si = beta2_to_SI($beta2_val, $beta2_unit); // D = -(2πc/λ²) * β2 $D_si = -($two_pi * $GLOBALS['C'] / ($lambda_m * $lambda_m)) * $beta2_si; $D_ps = D_from_SI($D_si, 'ps_per_nm_km'); $beta2_ps = beta2_from_SI($beta2_si, 'ps2_per_km'); $result_rows[] = ['Output', 'Value', 'Unit']; $result_rows[] = ['Dispersion parameter (D)', fmt(D_from_SI($D_si, $D_unit), 6), $D_unit === 'ps_per_nm_km' ? 'ps/(nm·km)' : 's/m²']; $result_rows[] = ['GVD coefficient (β₂)', fmt(beta2_from_SI($beta2_si, $beta2_unit), 6), $beta2_unit === 'ps2_per_km' ? 'ps²/km' : 's²/m']; $result_rows[] = ['Reference D', fmt($D_ps, 6), 'ps/(nm·km)']; $result_rows[] = ['Reference β₂', fmt($beta2_ps, 6), 'ps²/km']; $computed = true; } if ($mode === 'D_to_beta2') { $D_si = D_to_SI($D_val, $D_unit); // β2 = -(λ²/(2πc)) * D $beta2_si = -(($lambda_m * $lambda_m) / ($two_pi * $GLOBALS['C'])) * $D_si; $D_ps = D_from_SI($D_si, 'ps_per_nm_km'); $beta2_ps = beta2_from_SI($beta2_si, 'ps2_per_km'); $result_rows[] = ['Output', 'Value', 'Unit']; $result_rows[] = ['GVD coefficient (β₂)', fmt(beta2_from_SI($beta2_si, $beta2_unit), 6), $beta2_unit === 'ps2_per_km' ? 'ps²/km' : 's²/m']; $result_rows[] = ['Dispersion parameter (D)', fmt(D_from_SI($D_si, $D_unit), 6), $D_unit === 'ps_per_nm_km' ? 'ps/(nm·km)' : 's/m²']; $result_rows[] = ['Reference D', fmt($D_ps, 6), 'ps/(nm·km)']; $result_rows[] = ['Reference β₂', fmt($beta2_ps, 6), 'ps²/km']; $computed = true; } if ($mode === 'pulse_broadening') { $D_si = D_to_SI($D_val, $D_unit); $D_ps = D_from_SI($D_si, 'ps_per_nm_km'); $L_km = length_to_km($L_val, $L_unit); $dl_nm = (float)$dlambda_val; // First-order estimate: ΔT ≈ |D| · L · Δλ $dT_ps = abs($D_ps) * $L_km * $dl_nm; $dT_ns = $dT_ps / 1000.0; // Optional combined width (RMS-like): sqrt(T0^2 + ΔT^2) $T0_ps = is_numeric($T0_val) ? (float)$T0_val : 0.0; $Tout_ps = ($T0_ps > 0) ? sqrt($T0_ps * $T0_ps + $dT_ps * $dT_ps) : 0.0; // Also report β2 for completeness $two_pi = 2.0 * M_PI; $beta2_si = -(($lambda_m * $lambda_m) / ($two_pi * $GLOBALS['C'])) * $D_si; $result_rows[] = ['Output', 'Value', 'Unit']; $result_rows[] = ['Dispersion parameter (D)', fmt($D_ps, 6), 'ps/(nm·km)']; $result_rows[] = ['Link length (L)', fmt($L_km, 6), 'km']; $result_rows[] = ['Spectral width (Δλ)', fmt($dl_nm, 6), 'nm']; $result_rows[] = ['Broadening estimate (ΔT)', fmt($dT_ps, 6), 'ps']; $result_rows[] = ['Broadening estimate (ΔT)', fmt($dT_ns, 6), 'ns']; if ($T0_ps > 0) { $result_rows[] = ['Initial pulse width (T₀)', fmt($T0_ps, 6), 'ps']; $result_rows[] = ['Estimated output width', fmt($Tout_ps, 6), 'ps']; } $result_rows[] = ['GVD coefficient (β₂)', fmt(beta2_from_SI($beta2_si, 'ps2_per_km'), 6), 'ps²/km']; $computed = true; } } } ?> Group Velocity Dispersion Calculator

Group Velocity Dispersion Calculator

Analyze group velocity dispersion for optical waveguides easily. Switch units, compare scenarios, and export results. Use practical formulas to plan bandwidth and reach today.

Calculator Inputs

Choose conversion or a link-level broadening estimate.
Used in the conversion between D and β₂.
Typical single‑mode fiber is around −20 ps²/km near 1550 nm.
Standard telecom fiber often has D ≈ 17 ps/(nm·km) near 1550 nm.
nm
For lasers, Δλ may be small; for LEDs it can be wide.
ps
If provided, the tool also estimates the broadened width.
Reset

Formula used

This calculator uses the standard relationship between dispersion parameter D and group velocity dispersion coefficient β₂ at wavelength λ:

  • D = −(2πc/λ²) · β₂
  • β₂ = −(λ²/(2πc)) · D

For link broadening, a first‑order estimate is used: ΔT ≈ |D| · L · Δλ, where L is length and Δλ is spectral width.

How to use this calculator

  1. Select a calculation mode: convert β₂, convert D, or estimate broadening.
  2. Enter the wavelength and choose its unit.
  3. Provide β₂ or D depending on the chosen mode.
  4. For broadening, also enter link length and spectral width.
  5. Press Calculate. Results appear above the form.
  6. Use Download CSV or Download PDF to export.

Example data table

Mode λ (nm) Input Link Key output
Convert β₂ to D 1550 β₂ = −21.27 ps²/km D ≈ 17 ps/(nm·km)
Convert D to β₂ 1550 D = 17 ps/(nm·km) β₂ ≈ −21 ps²/km
Pulse broadening 1550 D = 17 ps/(nm·km) L = 50 km, Δλ = 0.2 nm ΔT ≈ 170 ps
Values are representative for common telecom links and are rounded.

Related Calculators

Optical waveguide lossOptical fiber attenuationOptical fiber dispersionFiber numerical apertureFiber V numberMode field diameterBending loss fiberCoupling efficiency fiberGraded index profileStep index fiber

Important Note: All the Calculators listed in this site are for educational purpose only and we do not guarentee the accuracy of results. Please do consult with other sources as well.