SkillAgentSearch skills...

EngineeringUnits

Working with units made easy with automatic unit-check and converting between units

Install / Use

/learn @MadsKirkFoged/EngineeringUnits
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

NuGet NuGet Downloads License

EngineeringUnits

EngineeringUnits is a .NET units-of-measure library built for engineering equations: you can write formulas naturally, keep units attached to values, and get upfront errors when you mess up dimensional analysis.

  • ✅ No more having your units in doubles with comments above it explaining what type of unit it is.
  • ✅ No more magic "* 1000" constants floating around in your equations.
  • ✅ No more rechecking "Did I have all my values converted correctly?"
  • ✅ No more side notes checking if the units of an equation match

The only place you care about unit types are at the edge of your code.

//Value enters from outside your code
double Inputfield = 21;

//Transfers into an EngineeringUnits unit
Temperature TIn = Temperature.FromDegreesCelsius(Inputfield); //21 °C

//Math
Temperature TOut = TIn - 10.Kelvin; //11 °C

//Converts to DegreeFahrenheit
Temperature USCustomer = TOut.ToUnit(TemperatureUnit.DegreeFahrenheit); //51.8 °F

//Display it
string Output2 = USCustomer.ToString("S2"); // Output: 52 °F

Why EngineeringUnits?

  • ✅ You can do arithmetic between any unit and keep the result unit-safe.
  • Unit-safe math: multiply/divide/add/subtract quantities and let us handle the resulting unit.
  • Compile time unit validation: Your equations are checked for correct units while you write it.
  • High precision conversions
  • Aliases: multiple names can represent the same dimension (e.g., SpecificEnergy vs Enthalpy).
  • helpers: Min/Max/Average/mean, Clamp, abs and built-in physical constants.

Install as nuget package

dotnet add package EngineeringUnits

Quick start

If you already use UnitsNet, switching is usually just changing the using:

// UnitsNet:
// using UnitsNet;
// using UnitsNet.Units;

using EngineeringUnits;
using EngineeringUnits.Units;

Unit-safe engineering math

SpecificEntropy p1 = 1.JoulePerKilogramKelvin;
MassFlow m1 = 1.KilogramPerSecond;
Temperature t2 = 10.DegreeCelsius;
Temperature t1 = 5.DegreeCelsius;

Power q = m1 * p1 * (t2 - t1);   // 5 W

Conversion (round-trip safe)

Length oneMeter = 1.Meter;

Length inFoot = oneMeter.ToUnit(LengthUnit.Foot);
Length backToMeter = inFoot.ToUnit(LengthUnit.Meter);

bool roundTripOk = oneMeter == backToMeter; // true

Catch unit mistakes early

Mass mass = 10.Kilogram;
Volume volume = 4.CubicMeter;

Density d1 = mass / volume;   // OK: kg/m³

// Compile-time error
Density d2 = volume / mass;   // shows a red line. Wouldn't let you run the code before it is fixed!

Very large collection of units

<details> <summary><b> Expand to see list of Units included</b></summary>
Acceleration:[m/s²], [km/s²], [m/s²], [dm/s²], [cm/s²], [µm/s²], [mm/s²], [nm/s²], [in/s²], [ft/s²], [kn/s], [kn/min], [kn/h], [g], [mg],
AreaDensity:[kg/m²], [kg/m²],
AreaMomentOfInertia:[m4], [m4], [cm4], [dm4], [mm4], [in4], [ft4],
Area:[ac], [ha], [cm²], [dm²], [km²], [m²], [µm²], [m²], [mm²], [nm²], [in²], [ft²], [yd²], [mi²], [nmi²], [ch²],
AreaCost:[$/m²], [$/m²], [M$/m²], [?/m²],
BitRate:[], [B/s], [bit/s], [Kibit/s], [Mibit/s], [Gibit/s], [Tibit/s], [Pibit/s], [Eibit/s], [KiB/s], [MiB/s], [GiB/s], [TiB/s], [PiB/s], [EiB/s], [kB/s], [MB/s], [GB/s], [TB/s], [PB/s], [EB/s], [kbit/s], [Mbit/s], [Gbit/s], [Tbit/s], [Pbit/s], [Ebit/s],
BrakeSpecificFuelConsumption:[kg/J], [kg/J], [g/kWh], [lb/hph],
Capacitance:[F], [F], [kF], [MF], [µF], [mF], [nF], [pF],
CoefficientOfThermalExpansion:[/K], [K?¹], [/°F], [/°C],
Density:[kg/m³], [cg/dl], [cg/l], [cg/ml], [dg/dl], [dg/l], [dg/ml], [dg/µl], [g/cm³], [g/m³], [g/mm³], [g/dl], [g/l], [g/ml], [g/µl], [kg/cm³], [kg/m³], [kg/mm³], [kg/l], [kip/ft³], [kip/in³], [µg/m³], [µg/dl], [µg/l], [µg/ml], [µg/µl], [mg/m³], [mg/dl], [mg/l], [mg/ml], [mg/µl], [ng/dl], [ng/l], [ng/ml], [ng/µl], [pg/dl], [pg/l], [pg/ml], [pg/µl], [lb/ft³], [lb/in³], [ppg (imp.)], [ppg (U.S.)], [slug/ft³], [t/cm³], [t/m³], [t/mm³],
DynamicViscosity:[Pa·s], [Pa·s], [µPa·s], [mPa·s], [lb/ft·s], [P], [cP], [N·s/m²], [lbf·s/ft²], [lbf·s/in²], [reyn],
ElectricChargeDensity:[C/m³], [C/m³],
ElectricCharge:[C], [C], [A-h], [kA-h], [MA-h], [mA-h],
ElectricConductivity:[S/m], [S/m], [S/in], [S/ft],
ElectricCurrentDensity:[A/m²], [A/m²], [A/in²], [A/ft²],
ElectricCurrentGradient:[A/s], [A/s], [A/µs], [A/ms], [A/ns],
ElectricField:[V/m], [V/m],
ElectricInductance:[H], [H], [µH], [mH], [nH],
ElectricPotentialChangeRate:[V/s], [V/s], [V/min], [V/µs], [V/h], [mV/s], [mV/min], [mV/µs], [mV/h], [µV/s], [µV/min], [µV/µs], [µV/h], [MV/s], [MV/min], [MV/µs], [MV/h], [kV/s], [kV/min], [kV/µs], [kV/h],
ElectricPotential:[V], [V], [kV], [MV], [GV], [µV], [mV],
MolarMass:[kg/mol], [kg/mol], [cg/mol], [dag/mol], [dg/mol], [g/mol], [hg/mol], [kip/mol], [Mlb/mol], [µg/mol], [mg/mol], [ng/mol], [lb/mol],
ElectricResistance:[O], [O], [GO], [kO], [MO], [µO], [mO],
ElectricResistivity:[O·m], [O·m], [O·cm], [kO·cm], [MO·cm], [µO·cm], [mO·cm], [nO·cm], [pO·cm], [kO·m], [MO·m], [µO·m], [mO·m], [nO·m], [pO·m],
ElectricSurfaceChargeDensity:[C/m²], [C/m²], [C/cm²], [C/in²],
Energy:[J], [mJ], [J], [kJ], [MJ], [GJ], [TJ], [BTU], [kBTU], [MBTU], [GBTU], [eV], [keV], [MeV], [GeV], [TeV], [cal], [kcal], [Mcal], [Wday], [kWday], [MWday], [GWday], [TWday], [Wh], [kWh], [MWh], [GWh], [TWh], [ft·lb], [Dth (E.C.)], [Dth (imp.)], [Dth (U.S.)], [th (E.C.)], [th (imp.)], [th (U.S.)], [erg], [hp·h],
EnergyCost:[$/J], [$/J], [$/kJ], [$/MJ], [$/GJ], [$/kWh], [$/MWh], [M$/J], [M$/kJ], [M$/MJ], [M$/GJ], [M$/kWh], [M$/MWh],
Entropy:[J/K], [J/K], [cal/K], [J/K], [kcal/K], [kJ/K], [kJ/K], [MJ/K],
ForceChangeRate:[N/s], [N/s], [N/min], [lbf/s], [lbf/min], [klbf/s], [klbf/min], [nN/s], [mN/s], [µN/s], [cN/s], [daN/s], [dN/s], [kN/s], [daN/min], [kN/min],
ForcePerLength:[N/m], [N/m], [N/cm], [N/mm], [kgf/cm], [kgf/m], [kgf/mm], [kN/cm], [kN/m], [kN/mm], [kipf/ft], [kipf/in], [MN/cm], [MN/m], [MN/mm], [µN/cm], [µN/m], [µN/mm], [mN/cm], [mN/m], [mN/mm], [lbf/ft], [lbf/in], [lbf/yd], [tf/cm], [tf/m], [tf/mm], [nN/cm], [nN/m], [nN/mm], [cN/cm], [cN/m], [cN/mm], [daN/cm], [daN/m], [daN/mm], [dN/cm], [dN/m], [dN/mm],
Force:[N], [N], [µN], [mN], [daN], [kN], [MN], [dyn], [tf], [tf (short)], [lbf], [kgf], [ozf], [kp], [kipf], [Mlbf], [pdl],
Frequency:[Hz], [Hz], [kHz], [MHz], [GHz], [THz], [s?¹], [bpm], [RPM], [RPM], [cph], [cpm], [rad/s],
FuelEfficiency:[m/m³], [km/l], [mpg (imp.)], [mpg (U.S.)],
HeatFlux:[W/m²], [W/m²], [W/in²], [W/ft²], [BTU/h·ft²], [BTU/min·ft²], [BTU/s·ft²], [BTU/s·in²], [cal/s·cm²], [kcal/h·m²], [kcal/s·cm²], [kW/m²], [µW/m²], [mW/m²], [nW/m²], [cW/m²], [dW/m²], [lbf/(ft·s)], [lb/s³],
HeatTransferCoefficient:[W/m²K], [W/m²K], [W/m²°C], [Btu/ft²hr°F],
Illuminance:[lx], [lx], [klx], [Mlx], [mlx],
Information:[], [B], [b], [Kib], [Mib], [Gib], [Tib], [Pib], [Eib], [KiB], [MiB], [GiB], [TiB], [PiB], [EiB], [kB], [MB], [GB], [TB], [PB], [EB], [kb], [Mb], [Gb], [Tb], [Pb], [Eb],
Irradiance:[W/m²], [W/m²], [W/cm²], [kW/cm²], [MW/cm²], [µW/cm²], [mW/cm²], [nW/cm²], [pW/cm²], [kW/m²], [MW/m²], [µW/m²], [mW/m²], [nW/m²], [pW/m²],
Irradiation:[J/m²], [J/m²], [J/cm²], [J/mm²], [kJ/m²], [kWh/m²], [mJ/cm²], [Wh/m²],
KinematicViscosity:[m²/s], [m²/s], [St], [cSt], [dSt], [kSt], [µSt], [mSt], [nSt],
LapseRate:[K/m], [?°C/km],
LengthCost:[$/m], [$/m], [?/m],
LinearDensity:[kg/m], [kg/m], [g/cm], [g/m], [g/mm], [kg/cm], [kg/mm], [µg/cm], [µg/m], [µg/mm], [mg/cm], [mg/m], [mg/mm], [lb/ft], [lb/in],
LinearPowerDensity:[W/m], [W/m], [W/mm], [W/in], [W/ft], [W/cm], [mW/mm], [mW/m], [mW/in], [mW/ft], [mW/cm], [MW/mm], [MW/m], [MW/in], [MW/ft], [MW/cm], [kW/mm], [kW/m], [kW/in], [kW/ft], [kW/cm], [GW/mm], [GW/m], [GW/in], [GW/ft], [GW/cm],
LuminousFlux:[Empty], [lm],
MagneticField:[T], [T], [G], [mG], [µT], [mT], [nT],
MagneticFlux:[Wb], [Wb],
Magnetization:[A/m], [A/m],
MassCost:[$/kg], [?/kg], [$/kg], [$/t], [M$/t],
MassFlow:[cg/day], [cg/s], [dag/day], [dag/s], [dg/day], [dg/s], [g/day], [g/h], [g/s], [Mg/day], [µg/s], [µg/day], [mg/s], [mg/day], [ng/s], [ng/day], [hg/day], [hg/s], [kg/s], [kg/s], [kg/min], [kg/h], [kg/day], [lb/s], [lb/min], [lb/h], [lb/day], [Mlb/day], [Mlb/h], [Mlb/min], [Mlb/s], [short tn/h], [t/day], [t/h],
MassFlux:[kg/sm²], [kg/sm²], [g/hcm²], [g/hm²], [g/hmm²], [g/scm²], [g/sm²], [g/smm²], [kg/hcm²], [kg/hm²], [kg/hmm²], [kg/scm²], [kg/smm²],
MassMomentOfInertia:[kgm²], [kgm²], [gcm²], [gdm²], [gm²], [gmm²], [kgcm²], [kgdm²], [kgmm²], [ktcm²], [ktdm²], [ktm²], [ktmm²], [Mtcm²], [Mtdm²], [Mtm²], [Mtmm²], [mgcm²], [mgdm²], [mgm²], [mgmm²], [lbft²], [lbin²], [slugft²], [slugin²], [tcm²], [tdm²], [tm²], [tmm²],
MolarEnergy:[J/mol], [J/mol], [kJ/mol], [MJ/mol],
MolarEntropy:[J/(mol·K)], [J/(mol·K)], [kJ/(mol·K)], [MJ/(mol·K)],
Molarity:[mol/m³], [mol/m³], [mol/l], [nmol/l], [pmol/l], [cmol/l], [dmol/l], [µmol/l], [mmol/l],
Permeability:[H/m], [H/m],
Permittivity:[F/m], [F/m],
PowerDensity:[W/m³], [W/m³], [W/l], [W/in³], [W/ft³], [TW/l], [TW/m³], [TW/in³], [TW/ft³], [pW/l], [pW/m³], [pW/in³], [pW/ft³], [nW/l], [nW/m³], [nW/in³], [nW/ft³], [mW/l], [mW/m³], [mW/in³], [mW/ft³], [µW/l], [µW/m³], [µW/in³], [µW/ft³], [MW/l], [MW/m³], [MW/in³], [MW/ft³], [kW/l], [kW/m³], [kW/in³], [kW/ft³], [GW/l], [GW/m³], [GW/in³], [GW/ft³], [dW/l], [dW/m³], [dW/in³], [dW/ft³], [daW/l], [daW/m³], [daW/in³], [daW/ft³],
Power:[W], [fW], [pW], [nW], [µW], [mW], [dW], [W], [daW], [kW], [MW], [GW], [TW], [PW], [mJ/h], [J/h], [kJ/h], [MJ/h], [GJ/h], [BTU/h], [BTU/min], [BTU/s], [kBTU/h], [hp(S)], [hp(E)], [hp(H)], [hp(I)], [hp(M)], [cal/s], [kcal/h], [kcal/s], [L?],
PowerCost:[$/W], [$/kW], [$/W],
Pr
View on GitHub
GitHub Stars59
CategoryDevelopment
Updated1mo ago
Forks14

Languages

C#

Security Score

100/100

Audited on Feb 11, 2026

No findings