---
title: "NondimensionalizationTransform"
language: "en"
type: "Symbol"
summary: "NondimensionalizationTransform[eq, ovars, fvars] nondimensionalizes eq, replacing original variables ovars with the variables fvars. NondimensionalizationTransform[eq, ovars, fvars, prop] returns a property associated with the nondimensionalization of eq."
keywords: 
- nondimensionalization
- dedimensionalization
- nondimensionalize
- dedimensionalize
canonical_url: "https://reference.wolfram.com/language/ref/NondimensionalizationTransform.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Units & Quantities"
    link: "https://reference.wolfram.com/language/guide/Units.en.md"
related_functions: 
  - 
    title: "QuantityVariable"
    link: "https://reference.wolfram.com/language/ref/QuantityVariable.en.md"
  - 
    title: "QuantityVariableDimensions"
    link: "https://reference.wolfram.com/language/ref/QuantityVariableDimensions.en.md"
  - 
    title: "DimensionalCombinations"
    link: "https://reference.wolfram.com/language/ref/DimensionalCombinations.en.md"
---
# NondimensionalizationTransform

NondimensionalizationTransform[eq, ovars, fvars] nondimensionalizes eq, replacing original variables ovars with the variables fvars.

NondimensionalizationTransform[eq, ovars, fvars, prop] returns a property associated with the nondimensionalization of eq.

## Details and Options

* ``eq`` is an equation or differential equation constructed of ``Quantity`` and ``QuantityVariable`` objects or a list of such expressions.

* ``ovars`` is a list of ``QuantityVariable`` objects present in ``eq``.

* ``fvars`` is a list of replacement variables for ``ovar``.

* In addition to the nondimensionalized equation, ``NondimensionalizationTransform`` can supply the rules for the "forward" transformation from the dimensional form to the nondimensional form and the "reverse" transformation from the new nondimensional form back to the original equation.

* ``NondimensionalizationTransform`` supports the following properties:

|                                    |                                                           |
| ---------------------------------- | --------------------------------------------------------- |
| "DimensionalizationMultipliers"    | Association of multipliers for the reverse transformation |
| "DimensionalizationRules"          | list of rules for reversing the transformation            |
| "NondimensionalizationMultipliers" | Association of multipliers for the transformed variables  |
| "NondimensionalizationRules"       | list of rules for nondimensionalizing the equation        |
| "ReducedForm"                      | the nondimensionalized equation                           |

* Alternatively ``"PropertyAssociation"`` can be used to return an ``Association`` of the properties.

* ``NondimensionalizationTransform`` returns ``"ReducedForm"`` by default.

* The following options can be given:

|                              |           |                                             |
| ---------------------------- | --------- | ------------------------------------------- |
| GeneratedParameters          | C         | how to name generated replacement variables |
| GeneratedQuantityMagnitudes  | K         | how to name generated quantity factors      |
| IncludeQuantities            | {}        | additional quantities to include            |
| UnitSystem                   | Automatic | unit system used to generate factors        |

* The ``GeneratedQuantityMagnitudes`` setting is used in cases where it is not possible to remove all dimensions from a variable using the ``QuantityVariable`` and ``Quantity`` objects within the equation. In those cases, new quantities are added to the solution with the symbol provided by the ``GeneratedQuantityMagnitudes`` option.

* The ``GeneratedParameters`` setting is used when there are additional ``QuantityVariable`` objects within the equation not included in ``ovar``. ``NondimensionalizationTransform`` removes all ``QuantityVariable`` objects from an equation. Additional ``QuantityVariable`` objects are replaced by variables as specified by the ``GeneratedParameters`` option.

* ``IncludeQuantities`` adds additional ``Quantity`` objects to use in generating dimensionless solutions.

* ``UnitSystem`` controls the unit system to use for generating multiplicative factors when removing dimensions from the equation. With ``Automatic``, ``NondimensionalizationTransform`` creates the factors from the units and physical quantities present in the equation or specified by ``IncludeQuantities``.

* ``UnitSystem`` can also be set to use a natural units system. These options include ``"DeSitterUnits"``, ``"GaussianNaturalUnits"``, ``"GaussianQuantumChromodynamicsUnits"``, ``"HartreeAtomicUnits"``, ``"LorentzHeavisideNaturalUnits"``, ``"LorentzHeavisideQuantumChromodynamicsUnits"``, ``"PlanckUnits"``, ``"RydbergAtomicUnits"`` and ``"StonyUnits"``.

---

## Examples (20)

### Basic Examples (2)

Remove dimensions from the driven oscillator equation:

```wl
In[1]:= NondimensionalizationTransform[ω x[t] + a Derivative[1][x][t] == A f[t], {x, t, f}, {y, u, g}]

Out[1]= (y[u]/a) + Derivative[1][y][u] == (A g[u]/a)
```

---

Compute the replacement rules for the wave equation that yields a dimensionless form:

```wl
In[1]:= waveequation = u^(0, 2)[x, t] == cp^2 u^(2, 0)[x, t];

In[2]:= NondimensionalizationTransform[waveequation, {u, x, t}, {v, y, u}, "NondimensionalizationRules"]

Out[2]= {u^(0, 2)[x, t] -> (Quantity[K[1]/K[2]^2, "Pascals"/"Meters"^2]) cp^2 v^(0, 2)[y, u], u^(2, 0)[x, t] -> (Quantity[K[1]/K[2]^2, "Pascals"/"Meters"^2]) v^(2, 0)[y, u], u -> v (Quantity[K[1], "Pascals"]), x -> y (Quantity[K[2], "Meters"]), t -> (u (Quantity[K[2], "Meters"])/cp)}
```

### Scope (4)

Solve for the nondimensionalized form of the quantum harmonic oscillator:

```wl
In[1]:= odeHO = (1/2) m x^2 ω^2 ψ[x] + ((Quantity[-(1/2), "ReducedPlanckConstant"^2]) Derivative[2][ψ][x]/m) == E ψ[x];

In[2]:= NondimensionalizationTransform[odeHO, {ψ, x} , {Ψ, ξ}]

Out[2]= -ξ^2 Ψ[ξ] + Derivative[2][Ψ][ξ] == -2 C[1] Ψ[ξ]
```

Examine the replacement rules for this transformation:

```wl
In[3]:= NondimensionalizationTransform[odeHO, {ψ, x}, {Ψ, ξ}, "NondimensionalizationMultipliers"]

Out[3]= <|ψ -> (Quantity[1, 1/Sqrt["ReducedPlanckConstant"]]) m^1 / 4 ((Quantity[1, "ReducedPlanckConstant"])^1 / 4 ω^1 / 4), x -> (Quantity[1, "ReducedPlanckConstant"]/Sqrt[m] (Sqrt[Quantity[1, "ReducedPlanckConstant"]] Sqrt[ω])), E -> (Quantity[1, "ReducedPlanckConstant"]) ω|>
```

Specify a replacement variable for energy to replace ``C[1]`` in the solution:

```wl
In[4]:= NondimensionalizationTransform[odeHO, {ψ, x, E}, {Ψ, ξ, e}]

Out[4]= -ξ^2 Ψ[ξ] + Derivative[2][Ψ][ξ] == -2 e Ψ[ξ]
```

---

Nondimensionalize algebraic equations:

```wl
In[1]:= accelerationSpeedDistance = s == s0 + (1/2) a t^2 + t v;

In[2]:= NondimensionalizationTransform[accelerationSpeedDistance, {a, v, t, s0}, {b, w, u, d0}]

Out[2]= (1/d0) == 1 + (b u^2/2 d0) + (u w/d0)
```

---

Examine the solutions for driven RC and LRC circuits:

```wl
In[1]:=
τ = QuantityVariable["t", "Time"];
q = QuantityVariable["Q", "ElectricCharge"];
v = QuantityVariable["V", "ElectricPotential"];
r = QuantityVariable["R", "ElectricResistance"];
c = QuantityVariable["C", "ElectricCapacitance"];
l = QuantityVariable["L", "MagneticInductance"];

In[2]:= odeRC = r q'[τ] + q[τ] / c == v[τ]

Out[2]= (Q[t]/C) + R Derivative[1][Q][t] == V[t]

In[3]:= odeLRC = l q''[τ] + r q'[τ] + q[τ] / c == v[τ]

Out[3]= (Q[t]/C) + R Derivative[1][Q][t] + L Derivative[2][Q][t] == V[t]

In[4]:= NondimensionalizationTransform[odeRC, {q, v, τ}, {x, f, u}]

Out[4]= x[u] + Derivative[1][x][u] == f[u]
```

Find the properties available:

```wl
In[5]:= NondimensionalizationTransform["Properties"]

Out[5]= {"DimensionalizationMultipliers", "DimensionalizationRules", "NondimensionalizationMultipliers", "NondimensionalizationRules", "PropertyAssociation", "ReducedForm"}
```

Compute all properties of this transformation:

```wl
In[6]:= NondimensionalizationTransform[odeRC, {q, v, τ}, {x, f, u}, "PropertyAssociation"]

Out[6]= <|"ReducedForm" -> x[u] + Derivative[1][x][u] == f[u], "NondimensionalizationRules" -> {Derivative[1][Q][t] -> ((Quantity[K[1], "Coulombs"]) Derivative[1][x][u]/C R), Q[t] -> (Quantity[K[1], "Coulombs"]) x[u], V[t] -> (f[u] (Quantity[K[1], "Coulomb ... mensionalizationMultipliers" -> <|Q -> Quantity[K[1], "Coulombs"], V -> (Quantity[K[1], "Coulombs"]/C), t -> C R|>, "DimensionalizationMultipliers" -> <|x -> Quantity[1/K[1], 1/"Coulombs"], f -> (Quantity[1/K[1], 1/"Coulombs"]) C, u -> (1/C R)|>|>
```

Examine the LRC circuit nondimensionalization:

```wl
In[7]:= NondimensionalizationTransform[odeLRC, {q, v, τ}, {x, f, u}, "PropertyAssociation"]

Out[7]= <|"ReducedForm" -> (x[u]/C[1]) + Derivative[1][x][u] + Derivative[2][x][u] == f[u], "NondimensionalizationRules" -> {Derivative[1][Q][t] -> ((Quantity[K[1], "Coulombs"]) R Derivative[1][x][u]/L), Derivative[2][Q][t] -> ((Quantity[K[1], "Coulombs"]) ... Coulombs"]) R^2/L), t -> Sqrt[L] (Sqrt[L] R^-(2/2)), C -> (L/R^2)|>, "DimensionalizationMultipliers" -> <|x -> Quantity[1/K[1], 1/"Coulombs"], f -> ((Quantity[1/K[1], 1/"Coulombs"]) L/R^2), u -> (R^-(2 (-1)/2)/Sqrt[L] Sqrt[L]), C[1] -> (R^2/L)|>|>
```

---

Remove dimensions from lists of equations at once:

```wl
In[1]:=
ψ = QuantityVariable["ψ", "Length" ^ (-1 / 2)];
ψaux = QuantityVariable[Subscript["ψ", "aux"], "Length" ^ (-1 / 2) / "Length"];
\[ScriptX] = QuantityVariable["x", "Length"];
\[ScriptM] = QuantityVariable["m", "Mass"];
ω = QuantityVariable["ω", "Frequency"];
ℰ = QuantityVariable["E", "Energy"];

In[2]:= odeHO = {-Quantity[1, "ReducedPlanckConstant"] ^ 2 / (2 \[ScriptM]) ψaux'[\[ScriptX]] + 1 / 2 \[ScriptM] ω ^ 2 \[ScriptX] ^ 2 ψ[\[ScriptX]] == ℰ ψ[\[ScriptX]], ψaux[\[ScriptX]] == ψ'[\[ScriptX]]};

In[3]:= NondimensionalizationTransform[odeHO, {ψ, ψaux, \[ScriptX]}, {Ψ, Ψaux, ξ}]

Out[3]= {-ξ^2 Ψ[ξ] + Derivative[1][Ψaux][ξ] == -2 C[1] Ψ[ξ], Ψaux[ξ] == Derivative[1][Ψ][ξ]}
```

### Options (5)

#### GeneratedParameters (1)

Control how introduced parameters are named:

```wl
In[1]:= eq = (1/2) m x^2 ω^2 ψ[x] + ((Quantity[-(1/2), "ReducedPlanckConstant"^2]) Derivative[2][ψ][x]/m) == E ψ[x];

In[2]:= NondimensionalizationTransform[eq, {ψ, x}, {Ψ, ξ}, GeneratedParameters -> Z]

Out[2]= -ξ^2 Ψ[ξ] + Derivative[2][Ψ][ξ] == -2 Z[1] Ψ[ξ]
```

Avoid ``GeneratedParameters`` entirely by specifying replacements for more ``QuantityVariable`` objects:

```wl
In[3]:= NondimensionalizationTransform[eq, {ψ, x, E} , {Ψ, ξ, e}, GeneratedParameters -> Z]

Out[3]= -ξ^2 Ψ[ξ] + Derivative[2][Ψ][ξ] == -2 e Ψ[ξ]
```

#### GeneratedQuantityMagnitudes (1)

Adjust the names of introduced constants:

```wl
In[1]:=
waveEquation = u^(0, 2)[x, t] == cp^2 u^(2, 0)[x, t];
NondimensionalizationTransform[waveEquation, {u, x, t}, {v, y, u}, "NondimensionalizationMultipliers", GeneratedQuantityMagnitudes -> "foo"]

Out[1]= <|u -> Quantity["foo"[1], "Pascals"], x -> Quantity["foo"[2], "Meters"], t -> (Quantity["foo"[2], "Meters"]/cp)|>
```

Alternatively, specify additional quantities to include when solving for a dimensionless form:

```wl
In[2]:= NondimensionalizationTransform[waveEquation, {u, x, t}, {v, y, u}, "NondimensionalizationMultipliers", IncludeQuantities -> {Quantity[1, "Atmospheres"], Quantity[1, "PlanckLength"]}]

Out[2]= <|u -> Quantity[1, "Atmospheres"], x -> Quantity[1, "PlanckLength"], t -> (Quantity[1, "PlanckLength"]/cp)|>
```

#### IncludeQuantities (1)

Add additional quantities that can be used to solve for a dimensionless form:

```wl
In[1]:=
waveEquation = u^(0, 2)[x, t] == cp^2 u^(2, 0)[x, t];
NondimensionalizationTransform[waveEquation, {u, x, t}, {v, y, u}, IncludeQuantities -> {"Seconds"}]

Out[1]= v^(0, 2)[y, u] == v^(2, 0)[y, u]
```

#### UnitSystem (2)

Simplify Newton's law of gravitation using Planck units:

```wl
In[1]:=
F = QuantityVariable["F", "Force"];
m1 = QuantityVariable[Subscript["m", 1], "Mass"];
m2 = QuantityVariable[Subscript["m", 2], "Mass"]; 
r = QuantityVariable["r", "Length"]; 
G = Quantity[1, "GravitationalConstant"];

In[2]:= grav = F == G m1 m2 / r ^ 2

Out[2]= F == ((Quantity[1, "GravitationalConstant"]) Subscript[m, 1] Subscript[m, 2]/r^2)

In[3]:= NondimensionalizationTransform[grav, {F, m1, m2, r}, {f, mp1, mp2, ρ}, "NondimensionalizationMultipliers", UnitSystem -> "PlanckUnits"]

Out[3]= <|F -> Quantity[1, "SpeedOfLight"^4/"GravitationalConstant"], Subscript[m, 1] -> Quantity[1, (Sqrt["ReducedPlanckConstant"]*Sqrt["SpeedOfLight"])/Sqrt["GravitationalConstant"]], Subscript[m, 2] -> Quantity[1, (Sqrt["ReducedPlanckConstant"]*Sqrt["SpeedOfLight"])/Sqrt["GravitationalConstant"]], r -> Quantity[1, (Sqrt["GravitationalConstant"]*Sqrt["ReducedPlanckConstant"])/"SpeedOfLight"^(3/2)]|>
```

Compare against the standard method solution:

```wl
In[4]:= NondimensionalizationTransform[grav, {F, m1, m2, r}, {f, mp1, mp2, ρ}, "NondimensionalizationMultipliers"]

Out[4]= <|F -> Quantity[K[1], "Newtons"], Subscript[m, 1] -> Quantity[K[2], "Kilograms"], Subscript[m, 2] -> Quantity[K[2], "Kilograms"], r -> Quantity[K[2]/Sqrt[K[1]], (Sqrt["GravitationalConstant"]*"Kilograms")/Sqrt["Newtons"]]|>
```

---

Explore the available natural unit systems and the values of their units:

```wl
In[1]:= SlideView[{...}]

Out[1]= DynamicModule[«3»]
```

### Applications (4)

Nondimensionalize Poisson's equation for gravity:

```wl
In[1]:=
x = QuantityVariable["x", "Length"];
y = QuantityVariable["y", "Length"];
z = QuantityVariable["z", "Length"];
g = QuantityVariable["ϕ", "GravitationalPotential"];
ρ = QuantityVariable["ρ", "MassDensity"];

In[2]:= peq = Laplacian[g[x, y, z], {x, y, z}] == 4 Pi Quantity[1, "GravitationalConstant"]ρ

Out[2]= ϕ^(0, 0, 2)[x, y, z] + ϕ^(0, 2, 0)[x, y, z] + ϕ^(2, 0, 0)[x, y, z] == (Quantity[4*Pi, "GravitationalConstant"]) ρ

In[3]:= NondimensionalizationTransform[peq, {g, ρ}, {γ, r}]

Out[3]= γ^(0, 0, 2)[C[1], C[2], C[3]] + (γ^(0, 2, 0)[C[1], C[2], C[3]]/C[3]^2) + (γ^(2, 0, 0)[C[1], C[2], C[3]]/C[2]^2 C[3]^2) == 4 π r
```

---

Examine the dimensionless Klein–Gordon equation:

```wl
In[1]:=
x = QuantityVariable["x", "Length"];
y = QuantityVariable["y", "Length"];
z = QuantityVariable["z", "Length"];
t = QuantityVariable["t", "Time"];
m = QuantityVariable["m", "Mass"];
ψ = QuantityVariable["ψ", "Length" ^ (-1 / 2)];

In[2]:= eq = 1 / Quantity[1, "SpeedOfLight"] ^ 2D[ψ[x, y, z, t], t, t] - Laplacian[ψ[x, y, z, t], {x, y, z}] + m ^ 2 Quantity[1, "SpeedOfLight"^2] / Quantity[1, "ReducedPlanckConstant"^2]ψ[x, y, z, t]

Out[2]= (Quantity[1, "SpeedOfLight"^2/"ReducedPlanckConstant"^2]) m^2 ψ[x, y, z, t] + (Quantity[1, 1/"SpeedOfLight"^2]) ψ^(0, 0, 0, 2)[x, y, z, t] - ψ^(0, 0, 2, 0)[x, y, z, t] - ψ^(0, 2, 0, 0)[x, y, z, t] - ψ^(2, 0, 0, 0)[x, y, z, t]

In[3]:= NondimensionalizationTransform[eq, {ψ, t}, {Ψ, τ}]

Out[3]= (C[1]^2 Ψ[C[2], C[3], C[4], τ]/C[2]^2 C[3]^2 C[4]^2) + Ψ^(0, 0, 0, 2)[C[2], C[3], C[4], τ] - Ψ^(0, 0, 2, 0)[C[2], C[3], C[4], τ] - (Ψ^(0, 2, 0, 0)[C[2], C[3], C[4], τ]/C[4]^2) - (Ψ^(2, 0, 0, 0)[C[2], C[3], C[4], τ]/C[3]^2 C[4]^2) == 0
```

Simplify the result further by specifying replacement variables for most of the ``QuantityVariable`` objects:

```wl
In[4]:= NondimensionalizationTransform[eq, {ψ, t, x, y, z}, {Ψ, τ, ξ, η, ζ}]

Out[4]= Ψ[ξ, η, ζ, τ] + Ψ^(0, 0, 0, 2)[ξ, η, ζ, τ] - Ψ^(0, 0, 2, 0)[ξ, η, ζ, τ] - Ψ^(0, 2, 0, 0)[ξ, η, ζ, τ] - Ψ^(2, 0, 0, 0)[ξ, η, ζ, τ] == 0
```

---

Compute the dimensionless form of physical systems:

```wl
In[1]:= eq = Expand /@ Entity["PhysicalSystem", "VanDerWaalsGas"][EntityProperty["PhysicalSystem", "EquationOfState"]]

Out[1]= -b n p - (a b n^3/V^2) + (a n^2/V) + p V == n R T

In[2]:= NondimensionalizationTransform[eq, {p, V, T, n}, {\[ScriptP], \[ScriptV], \[ScriptT], ν}]

Out[2]= 1 - (\[ScriptV]/ν) - (ν/\[ScriptP] \[ScriptV]) + (ν^2/\[ScriptP] \[ScriptV]^2) == -(\[ScriptT]/\[ScriptP])
```

---

Nondimensionalize a one-dimensional Schrödinger's equation using Planck units and Hartree units:

```wl
In[1]:=
r = QuantityVariable["r", "Length"];
t = QuantityVariable["t", "Time"];
me = Quantity[1, "ElectronMass"];
ψ = QuantityVariable["ψ", "Length" ^ (-1 / 2)];
e0 = Quantity[4 Pi, "ElectricConstant"];
e = Quantity[1, "ElementaryCharge"];

In[2]:= eq = I Quantity[1, "ReducedPlanckConstant"]D[ψ[r, t], t] == -Quantity[1, "ReducedPlanckConstant"]  ^ 2 / (2 me)D[ψ[r, t], {r, 2}] + e ^ 2 / (e0 r) ψ[r, t]

Out[2]= (Quantity[I, "ReducedPlanckConstant"]) ψ^(0, 1)[r, t] == ((Quantity[1/(4*Pi), "ElementaryCharge"^2/"ElectricConstant"]) ψ[r, t]/r) + (Quantity[-(1/2), "ReducedPlanckConstant"^2/"ElectronMass"]) ψ^(2, 0)[r, t]

In[3]:= NondimensionalizationTransform[eq, {ψ, r, t}, {Ψ, ρ, τ}, UnitSystem -> "PlanckUnits"]

Out[3]=
(Quantity[-2*I, ("ElectronMass"*Sqrt["GravitationalConstant"])/
  (Sqrt["ReducedPlanckConstant"]*Sqrt["SpeedOfLight"])]) Ψ^(0, 1)[ρ, τ] == ((Quantity[-(1/(2*Pi)), ("ElectronMass"*"ElementaryCharge"^2*Sqrt["GravitationalConstant"])/
  ("ElectricConstant"*"ReducedPlanckConstant"^(3/2)*"SpeedOfLight"^(3/2))]) Ψ[ρ, τ]/ρ) + Ψ^(2, 0)[ρ, τ]
```

Examine the result to check that it is dimensionless:

```wl
In[4]:= % /. q_Quantity :> UnitConvert[q, "SIBase"]

Out[4]= -8.370786403483431`4.33268877506498*^-23 I Ψ^(0, 1)[ρ, τ] == -(6.1084579650684`4.332230091339868*^-25 Ψ[ρ, τ]/ρ) + Ψ^(2, 0)[ρ, τ]
```

Compare to the solution in Hartree atomic units:

```wl
In[5]:= NondimensionalizationTransform[eq, {ψ, r, t}, {Ψ, ρ, τ}, UnitSystem -> "HartreeAtomicUnits"]

Out[5]= -2 I Ψ^(0, 1)[ρ, τ] == -(2 Ψ[ρ, τ]/ρ) + Ψ^(2, 0)[ρ, τ]
```

### Properties & Relations (1)

``DimensionalCombinations`` derives dimensionless combinations of ``QuantityVariable`` objects:

```wl
In[1]:=
s = QuantityVariable["s", "Length"];
s0 = QuantityVariable["s0", "Length"];
a = QuantityVariable["a", "Acceleration"];
t = QuantityVariable["t", "Time"];
v = QuantityVariable["v", "Speed"];

In[2]:= DimensionalCombinations[{s, s0, a, t, v}, GeneratedParameters -> None]

Out[2]= {(s0/s), (Sqrt[a] t/Sqrt[s]), (a s/v^2), (s/t v), (Sqrt[a] t/Sqrt[s0]), (a s0/v^2), (s0/t v), (v/a t)}
```

Compare to the dimensionalization rules for an equation for linear motion:

```wl
In[3]:= accelerationSpeedDistance = s == s0 + (1/2) a t^2 + t v;

In[4]:= NondimensionalizationTransform[accelerationSpeedDistance, {a, t, s0}, {b, u, d0}, "DimensionalizationRules"]

Out[4]= {b -> (a s/v^2), u -> (t v/s), d0 -> (s0/s)}
```

### Possible Issues (3)

Equations must be dimensionally balanced:

```wl
In[1]:=
Q1 = QuantityVariable["Q", "ElectricCharge"];
t1 = QuantityVariable["t", "Time"];

In[2]:= NondimensionalizationTransform[Q1 - t1 == 0, {Q1, t1}, {Q2, t2}]
```

NondimensionalizationTransform::unbal: Equation is dimensionally unbalanced.

```wl
Out[2]= NondimensionalizationTransform[Q - t == 0, {Q, t}, {Q2, t2}]
```

---

Replacement variables must be dimensionless:

```wl
In[1]:= NondimensionalizationTransform[(d/t) == v, {d, t}, {Quantity[1, "Meters"], t2}]
```

NondimensionalizationTransform::qv: Replacement variables include elements with physical dimensions.

```wl
Out[1]= NondimensionalizationTransform[(d/t) == v, {d, t}, {Quantity[1, "Meters"], t2}]
```

---

Supplied variables should be present within the equation:

```wl
In[1]:= NondimensionalizationTransform[(d/t) == v, {d, QuantityVariable["Q", "ElectricCharge"]}, {d2, Q2}]
```

NondimensionalizationTransform::invequ: Equation is missing one or more variables {d,Q}.

```wl
Out[1]= NondimensionalizationTransform[(d/t) == v, {d, Q}, {d2, Q2}]
```

### Neat Examples (1)

Transform Coulomb's law and Newton's law of gravitation using different sets of natural units:

```wl
In[1]:= naturalunits = {"PlanckUnits", "HartreeAtomicUnits", "RydbergAtomicUnits", "LorentzHeavisideNaturalUnits", "GaussianNaturalUnits"};

In[2]:= cleq = First@FormulaData["CoulombsLaw"]

Out[2]= F == ((Quantity[1/(4*Pi), 1/"ElectricConstant"]) Subscript[Q, 1] Subscript[Q, 2]/r^2)

In[3]:= nlogeq = FormulaData["NewtonsLawOfUniversalGravitation"]

Out[3]= F == ((Quantity[1, "GravitationalConstant"]) Subscript[m, 1] Subscript[m, 2]/r^2)

In[4]:=
coulomb = NondimensionalizationTransform[cleq, {F, Subscript[Q, 1], Subscript[Q, 2], r}, {f, q1, q2, ρ}, UnitSystem -> #]& /@ naturalunits;
gravity = NondimensionalizationTransform[nlogeq, {F, Subscript[m, 1], Subscript[m, 2], r}, {f, m1, m2, ρ}, UnitSystem -> #]& /@ naturalunits;
```

Compare how the formulas look under different natural unit systems:

```wl
In[5]:= Grid[Prepend[Transpose[{naturalunits, gravity, coulomb}], {"unit system", "gravitational force", "electrostatic force"}], Dividers -> Center]

Out[5]=
|                                |                                                                 |                           |
| ------------------------------ | --------------------------------------------------------------- | ------------------ ... isideNaturalUnits" | 1.4906218399548641`4.031770136065315*^56 f == (m1 m2/ρ^2)        | 12.566371 f == (q1 q2/ρ^2) |
| "GaussianNaturalUnits"         | 1.4906218399548641`4.031770136065315*^56 f == (m1 m2/ρ^2)        | 1.000000 f == (q1 q2/ρ^2)  |
```

## See Also

* [`QuantityVariable`](https://reference.wolfram.com/language/ref/QuantityVariable.en.md)
* [`QuantityVariableDimensions`](https://reference.wolfram.com/language/ref/QuantityVariableDimensions.en.md)
* [`DimensionalCombinations`](https://reference.wolfram.com/language/ref/DimensionalCombinations.en.md)

## Related Guides

* [Units & Quantities](https://reference.wolfram.com/language/guide/Units.en.md)

## History

* [Introduced in 2018 (11.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn113.en.md)