si

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2025 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

Package si defines International System of Units (SI) base and derived units. These form the canonical system for scientific and engineering work.

Canonical units provided here include:

  • Length: Meter (m)
  • Mass: Kilogram (kg)
  • Time: Second (s) [from std]
  • Current: Ampere (A)
  • Temperature: Kelvin (K), with Celsius (°C) for absolute and delta forms
  • Amount: Mole (mol)
  • Luminous intensity: Candela (cd)

Derived units such as Newton, Pascal, Joule, Watt, and derived prefixes (milli-, kilo-, mega-, etc.) are also defined here.

Example usage:

dist := si.Meter.Of(250)
mass := si.Kilogram.Of(80)
force := si.Newton.Of(500)

The si package is the primary target for most scientific and engineering calculations, and interoperates cleanly with std and usc units.

Index

Constants

This section is empty.

Variables

View Source
var (
	Meter        = uom.DefineUnit[dim.Length]("m", 1.0)
	Kilogram     = uom.DefineUnit[dim.Mass]("kg", 1.0)
	Ampere       = uom.DefineUnit[dim.Current]("A", 1.0)
	Kelvin       = uom.DefineUnit[dim.Temperature]("K", 1.0)
	Mole         = uom.DefineUnit[dim.Substance]("mol", 1.0)
	Candela      = uom.DefineUnit[dim.Luminosity]("cd", 1.0)
	MeterSquared = uom.DefineUnit[dim.Area]("m^2", 1.0)
)

SI base units (coherent)

View Source
var (
	Newton            = uom.DefineUnit[dim.Force]("N", 1)
	NewtonMeter       = uom.DefineUnit[dim.Torque]("N·m", 1)
	Momentum          = uom.DefineUnit[dim.Momentum]("kg·m/s", 1)
	NewtonSecond      = uom.DefineUnit[dim.Impulse]("N·s", 1)
	NewtonMeterSecond = uom.DefineUnit[dim.AngularMomentum]("N·m·s", 1)
)
View Source
var (
	Kilometer  = uom.DeriveUnit[dim.Length]("km", uom.U(Kilo), uom.U(Meter))
	Centimeter = uom.DeriveUnit[dim.Length]("cm", uom.U(Centi), uom.U(Meter))
	Millimeter = uom.DeriveUnit[dim.Length]("mm", uom.U(Milli), uom.U(Meter))
	Micrometer = uom.DeriveUnit[dim.Length]("µm", uom.U(Micro), uom.U(Meter))
	Nanometer  = uom.DeriveUnit[dim.Length]("nm", uom.U(Nano), uom.U(Meter))
)
View Source
var (
	// 1 g = 1e-3 kg
	Gram      = uom.DeriveUnit[dim.Mass]("g", uom.U(Milli), uom.U(Kilogram))
	Milligram = uom.DeriveUnit[dim.Mass]("mg", uom.U(Milli), uom.U(Gram))
	Microgram = uom.DeriveUnit[dim.Mass]("µg", uom.U(Micro), uom.U(Gram))

	// 1 tonne (t) = 1e3 kg — SI accepted unit
	Tonne = uom.DeriveUnit[dim.Mass]("t", uom.U(Kilo), uom.U(Kilogram))
)

Mass units commonly used alongside kilogram base

View Source
var (
	KilogramPerCubicMeter = uom.DefineUnit[dim.Density]("kg/m^3", 1)

	GramPerCubicCentimeter = uom.DeriveUnit[dim.Density]("g/cm^3",
		uom.U(Gram),
		uom.U(CubicCentimeter).Per(),
	)

	GramPerMilliliter = uom.DeriveUnit[dim.Density]("g/mL",
		uom.U(Gram),
		uom.U(Milliliter).Per(),
	)
)

Mass density (ρ): mass per unit volume

View Source
var (
	KilogramPerMeter = uom.DefineUnit[dim.LinearMass]("kg/m", 1)

	GramPerMeter = uom.DeriveUnit[dim.LinearMass]("g/m",
		uom.U(Gram),
		uom.U(Meter).Per(),
	)

	GramPerMillimeter = uom.DeriveUnit[dim.LinearMass]("g/mm",
		uom.U(Gram),
		uom.U(Millimeter).Per(),
	)
)

Linear mass density (μ): mass per unit length

View Source
var (
	KilogramPerSquareMeter = uom.DefineUnit[dim.ArealMass]("kg/m^2", 1)

	GramPerSquareMeter = uom.DeriveUnit[dim.ArealMass]("g/m^2",
		uom.U(Gram),
		uom.U(Meter).Pow(-2),
	)
)

Areal mass density (σ): mass per unit area

View Source
var (
	Yocto = uom.DefineUnit[dim.Dimensionless]("y", 1e-24)
	Zepto = uom.DefineUnit[dim.Dimensionless]("z", 1e-21)
	Atto  = uom.DefineUnit[dim.Dimensionless]("a", 1e-18)
	Femto = uom.DefineUnit[dim.Dimensionless]("f", 1e-15)
	Pico  = uom.DefineUnit[dim.Dimensionless]("p", 1e-12)
	Nano  = uom.DefineUnit[dim.Dimensionless]("n", 1e-9)
	Micro = uom.DefineUnit[dim.Dimensionless]("μ", 1e-6)
	Milli = uom.DefineUnit[dim.Dimensionless]("m", 1e-3)
	Centi = uom.DefineUnit[dim.Dimensionless]("c", 1e-2)
	Deci  = uom.DefineUnit[dim.Dimensionless]("d", 1e-1)
	Deca  = uom.DefineUnit[dim.Dimensionless]("da", 1e1)
	Hecto = uom.DefineUnit[dim.Dimensionless]("h", 1e2)
	Kilo  = uom.DefineUnit[dim.Dimensionless]("k", 1e3)
	Mega  = uom.DefineUnit[dim.Dimensionless]("M", 1e6)
	Giga  = uom.DefineUnit[dim.Dimensionless]("G", 1e9)
	Tera  = uom.DefineUnit[dim.Dimensionless]("T", 1e12)
	Peta  = uom.DefineUnit[dim.Dimensionless]("P", 1e15)
	Exa   = uom.DefineUnit[dim.Dimensionless]("E", 1e18)
	Zetta = uom.DefineUnit[dim.Dimensionless]("Z", 1e21)
	Yotta = uom.DefineUnit[dim.Dimensionless]("Y", 1e24)
)

SI prefixes as dimensionless units

View Source
var (
	// Standard SI unit of energy; used for heat, work, and internal energy in thermodynamic systems
	Joule = uom.DefineUnit[dim.Energy]("J", 1)

	// SI unit of power; measures rate of energy transfer (e.g., heating or cooling power)
	Watt = uom.DefineUnit[dim.Power]("W", 1)

	// Pressure is central to state equations and phase-change analysis in thermodynamics
	Pascal = uom.DefineUnit[dim.Pressure]("Pa", 1)

	// Thermal conductivity; quantifies ability of a material to conduct heat
	WattPerMeterK = uom.DefineUnit[dim.ThermalConductivity]("W/(m·K)", 1)

	// Heat capacity; total energy required to change an object's temperature by 1 K
	JoulePerKelvin = uom.DefineUnit[dim.HeatCapacity]("J/K", 1)

	// Specific heat capacity; heat capacity per unit mass, key in calorimetry and energy balance
	JoulePerKilogramK = uom.DefineUnit[dim.SpecificHeatCapacity]("J/(kg·K)", 1)

	// Heat transfer coefficient; overall heat transfer rate across a surface per unit area and temperature difference
	WPerM2K = uom.DefineUnit[dim.HeatTransferCoefficient]("W/(m²·K)", 1)
)
View Source
var (
	// Canonical SI volume; baseline for storage tanks, flow integrals, and conversions
	CubicMeter = uom.DefineUnit[dim.Volume]("m^3", 1)

	// SI-accepted unit favored in fluids/lab specs; ubiquitous in data sheets and dosing
	Liter = uom.DefineUnit[dim.Volume]("L", 1e-3)

	// Bench-scale measurements; reagents, small containers, pipetting
	Milliliter = uom.DefineUnit[dim.Volume]("mL", 1e-6)

	// Microlab and analytical work; microfluidics, chromatography, assays
	Microliter = uom.DefineUnit[dim.Volume]("µL", 1e-9)

	// Engineering drawings and engine displacement; also packaging volumes
	CubicCentimeter = uom.DefineUnit[dim.Volume]("cm^3", 1e-6)

	// Small parts and precision manufacturing; solder paste, adhesives, beads
	CubicMillimeter = uom.DefineUnit[dim.Volume]("mm^3", 1e-9)

	// Hydrology and geophysics; reservoir and basin volumes
	CubicKilometer = uom.DefineUnit[dim.Volume]("km^3", 1e9)

	// Often seen in chemistry texts and metrology; numerically equal to 1 L
	CubicDecimeter = uom.DefineUnit[dim.Volume]("dm^3", 1e-3)
)

Volumes commonly used across fluids, lab work, and large-scale geophysics

View Source
var (
	MeterPerSecond = uom.DefineUnit[dim.Velocity]("m/s", 1)
)

Velocity

View Source
var (
	MeterPerSecondSquared = uom.DefineUnit[dim.Acceleration]("m/s^2", 1)
)

Acceleration

View Source
var (
	NewtonWeight = uom.DefineUnit[dim.Weight]("N", 1)
)
View Source
var (
	StandardGravity = uom.DeriveUnit[dim.Acceleration]("g", uom.U(MeterPerSecondSquared), uom.Const(9.80665))
)

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL