({{, (RefLink[NondimensionalizationTransform, paclet:ref/NondimensionalizationTransform])[eq,ovars,fvars] 
nondimensionalizes eq, replacing original variables ovars with the variables fvars.}, {, (RefLink[NondimensionalizationTransform, paclet:ref/NondimensionalizationTransform])[eq,ovars,fvars,prop]
returns a property associated with the nondimensionalization of eq.}})

OpenersNotesSection(Spacer1)Details and Options

eq is an equation or differential equation constructed of (RefLink[Quantity, paclet:ref/Quantity]) and (RefLink[QuantityVariable, paclet:ref/QuantityVariable]) objects or a list of such expressions.

ovars is a list of (RefLink[QuantityVariable, paclet:ref/QuantityVariable]) objects present in eq.

fvars is a list of replacement variables for ovar.

In addition to the nondimensionalized equation, (RefLink[NondimensionalizationTransform, paclet:ref/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.

(RefLink[NondimensionalizationTransform, paclet:ref/NondimensionalizationTransform]) supports the following properties:

Alternatively "PropertyAssociation" can be used to return an (RefLink[Association, paclet:ref/Association]) of the properties.

(RefLink[NondimensionalizationTransform, paclet:ref/NondimensionalizationTransform]) returns "ReducedForm" by default.

The following options can be given:

The (RefLink[GeneratedQuantityMagnitudes, paclet:ref/GeneratedQuantityMagnitudes]) setting is used in cases where it is not possible to remove all dimensions from a variable using the (RefLink[QuantityVariable, paclet:ref/QuantityVariable]) and (RefLink[Quantity, paclet:ref/Quantity]) objects within the equation. In those cases, new quantities are added to the solution with the symbol provided by the (RefLink[GeneratedQuantityMagnitudes, paclet:ref/GeneratedQuantityMagnitudes]) option.

The (RefLink[GeneratedParameters, paclet:ref/GeneratedParameters]) setting is used when there are additional (RefLink[QuantityVariable, paclet:ref/QuantityVariable]) objects within the equation not included in ovar. (RefLink[NondimensionalizationTransform, paclet:ref/NondimensionalizationTransform]) removes all (RefLink[QuantityVariable, paclet:ref/QuantityVariable]) objects from an equation. Additional (RefLink[QuantityVariable, paclet:ref/QuantityVariable]) objects are replaced by variables as specified by the (RefLink[GeneratedParameters, paclet:ref/GeneratedParameters]) option.

(RefLink[IncludeQuantities, paclet:ref/IncludeQuantities]) adds additional (RefLink[Quantity, paclet:ref/Quantity]) objects to use in generating dimensionless solutions.

(RefLink[UnitSystem, paclet:ref/UnitSystem]) controls the unit system to use for generating multiplicative factors when removing dimensions from the equation. With (RefLink[Automatic, paclet:ref/Automatic]), (RefLink[NondimensionalizationTransform, paclet:ref/NondimensionalizationTransform]) creates the factors from the units and physical quantities present in the equation or specified by (RefLink[IncludeQuantities, paclet:ref/IncludeQuantities]).

(RefLink[UnitSystem, paclet:ref/UnitSystem]) can also be set to use a natural units system. These options include "DeSitterUnits", "GaussianNaturalUnits", "GaussianQuantumChromodynamicsUnits", "HartreeAtomicUnits", "LorentzHeavisideNaturalUnits", "LorentzHeavisideQuantumChromodynamicsUnits", "PlanckUnits", "RydbergAtomicUnits" and "StonyUnits".

The units and values for "DeSitterUnits" are:

The units and values for "GaussianNaturalUnits" are:

The units and values for "GaussianQuantumChromodynamicsUnits" are:

The units and values for "HartreeAtomicUnits" are:

The units and values for "LorentzHeavisideNaturalUnits" are:

The units and values for "LorentzHeavisideQuantumChromodynamicsUnits" are:

The units and values for "PlanckUnits" are:

The units and values for "RydbergAtomicUnits" are:

The units and values for "StonyUnits" are:

OpenersPrimaryExamplesSection(Spacer1)Examples  (19)

OpenersExampleSection0(Spacer1)Basic Examples  (2)

Remove dimensions from the driven oscillator equation:

NondimensionalizationTransform[(QuantityVariable["ω", "Frequency"]) (QuantityVariable["x", "Length"])[(QuantityVariable["t", "Time"])]+a (QuantityVariable["x", "Length"])'[(QuantityVariable["t", "Time"])]==A (QuantityVariable["f", "Speed"])[(QuantityVariable["t", "Time"])],{(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"]),(QuantityVariable["f", "Speed"])},{y,u,g}]

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

waveequation=Derivative[0,2][(QuantityVariable["u", "Pressure"])][(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])]==((QuantityVariable["cp", "Speed"])^2) Derivative[2,0][(QuantityVariable["u", "Pressure"])][(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])];

NondimensionalizationTransform[waveequation, {(QuantityVariable["u", "Pressure"]),(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])}, {v, y, u},"NondimensionalizationRules"]

OpenersExampleSection1(Spacer1)Scope  (4)

Solve for the nondimensionalized form of the quantum harmonic oscillator:

odeHO=(1/2) (QuantityVariable["m", "Mass"]) ((QuantityVariable["x", "Length"])^2) ((QuantityVariable["ω", "Frequency"])^2) (QuantityVariable["ψ", (1/(Sqrt["Length"]))])[(QuantityVariable["x", "Length"])]+((((Quantity[-(1/2), (("ℏ")^2), reduced Planck constants squared, (("ReducedPlanckConstant")^2)])) (QuantityVariable["ψ", (1/(Sqrt["Length"]))])''[(QuantityVariable["x", "Length"])])/(QuantityVariable["m", "Mass"]))==(QuantityVariable["E", "Energy"]) (QuantityVariable["ψ", (1/(Sqrt["Length"]))])[(QuantityVariable["x", "Length"])];

NondimensionalizationTransform[odeHO,{(QuantityVariable["ψ", (1/(Sqrt["Length"]))]),(QuantityVariable["x", "Length"])} ,{Ψ,ξ}]

Examine the replacement rules for this transformation:

NondimensionalizationTransform[odeHO,{(QuantityVariable["ψ", (1/(Sqrt["Length"]))]),(QuantityVariable["x", "Length"])},{Ψ,ξ},"NondimensionalizationMultipliers"]

Specify a replacement variable for energy to replace (RefLink[C, paclet:ref/C])[1] in the solution:

NondimensionalizationTransform[odeHO,{(QuantityVariable["ψ", (1/(Sqrt["Length"]))]),(QuantityVariable["x", "Length"]),(QuantityVariable["E", "Energy"])},{Ψ,ξ,e}]

Nondimensionalize algebraic equations:

accelerationSpeedDistance=(QuantityVariable["s", "Length"])==(QuantityVariable["s0", "Length"])+(1/2) (QuantityVariable["a", "Acceleration"]) ((QuantityVariable["t", "Time"])^2)+(QuantityVariable["t", "Time"]) (QuantityVariable["v", "Speed"]);

NondimensionalizationTransform[accelerationSpeedDistance, {(QuantityVariable["a", "Acceleration"]),(QuantityVariable["v", "Speed"]),(QuantityVariable["t", "Time"]),(QuantityVariable["s0", "Length"])}, {b, w, u, d0}]

Examine the solutions for driven RC and LRC circuits:

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

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

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

NondimensionalizationTransform[odeRC,{q,v,τ},{x,f,u}]

Compute all properties of this transformation:

NondimensionalizationTransform[odeRC,{q,v,τ},{x,f,u},"PropertyAssociation"]

Examine the LRC circuit nondimensionalization:

NondimensionalizationTransform[odeLRC,{q,v,τ},{x,f,u},"PropertyAssociation"]

Remove dimensions from lists of equations at once:

ψ=QuantityVariable["ψ","Length"^(-1/2)];
ψaux=QuantityVariable[(Subscript["ψ", "aux"]),"Length"^(-1/2)/"Length"];
𝓍=QuantityVariable["x","Length"];
𝓂=QuantityVariable["m","Mass"];
ω=QuantityVariable["ω","Frequency"];
ℰ=QuantityVariable["E","Energy"];

odeHO={-Quantity[1,"ReducedPlanckConstant"]^2/(2 𝓂) ψaux'[𝓍]+1/2 𝓂 ω^2 𝓍^2 ψ[𝓍]==ℰ ψ[𝓍],ψaux[𝓍]==ψ'[𝓍]};

NondimensionalizationTransform[odeHO,{ψ,ψaux,𝓍},{Ψ,Ψaux,ξ}]

OpenersExampleSection2(Spacer1)Options  (4)

OpenersExampleSubsection0(Spacer1)GeneratedParameters  (1)

Control how introduced parameters are named:

eq=(1/2) (QuantityVariable["m", "Mass"]) ((QuantityVariable["x", "Length"])^2) ((QuantityVariable["ω", "Frequency"])^2) (QuantityVariable["ψ", (1/(Sqrt["Length"]))])[(QuantityVariable["x", "Length"])]+((((Quantity[-(1/2), (("ℏ")^2), reduced Planck constants squared, (("ReducedPlanckConstant")^2)])) (QuantityVariable["ψ", (1/(Sqrt["Length"]))])''[(QuantityVariable["x", "Length"])])/(QuantityVariable["m", "Mass"]))==(QuantityVariable["E", "Energy"]) (QuantityVariable["ψ", (1/(Sqrt["Length"]))])[(QuantityVariable["x", "Length"])];

NondimensionalizationTransform[eq,{(QuantityVariable["ψ", (1/(Sqrt["Length"]))]),(QuantityVariable["x", "Length"])},{Ψ,ξ},GeneratedParameters->Z]

Avoid (RefLink[GeneratedParameters, paclet:ref/GeneratedParameters]) entirely by specifying replacements for more (RefLink[QuantityVariable, paclet:ref/QuantityVariable]) objects:

NondimensionalizationTransform[eq,{(QuantityVariable["ψ", (1/(Sqrt["Length"]))]),(QuantityVariable["x", "Length"]),(QuantityVariable["E", "Energy"])} ,{Ψ,ξ,e},GeneratedParameters->Z]

OpenersExampleSubsection1(Spacer1)GeneratedQuantityMagnitudes  (1)

Adjust the names of introduced constants:

waveEquation = Derivative[0,2][(QuantityVariable["u", "Pressure"])][(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])]==((QuantityVariable["cp", "Speed"])^2) Derivative[2,0][(QuantityVariable["u", "Pressure"])][(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])];
NondimensionalizationTransform[waveEquation, {(QuantityVariable["u", "Pressure"]),(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])}, {v, y, u},"NondimensionalizationMultipliers",GeneratedQuantityMagnitudes->"foo"]

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

NondimensionalizationTransform[waveEquation, {(QuantityVariable["u", "Pressure"]),(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])}, {v, y, u},"NondimensionalizationMultipliers",IncludeQuantities->{Quantity[1,"Atmospheres"],(Quantity[, (Subscript["l", "P"]), Planck lengths, "PlanckLength"])}]

OpenersExampleSubsection2(Spacer1)IncludeQuantities  (1)

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

waveEquation = Derivative[0,2][(QuantityVariable["u", "Pressure"])][(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])]==((QuantityVariable["cp", "Speed"])^2) Derivative[2,0][(QuantityVariable["u", "Pressure"])][(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])];
NondimensionalizationTransform[waveEquation, {(QuantityVariable["u", "Pressure"]),(QuantityVariable["x", "Length"]),(QuantityVariable["t", "Time"])}, {v, y, u},IncludeQuantities->{"Seconds"}]

OpenersExampleSubsection3(Spacer1)UnitSystem  (1)

Simplify Newton's law of gravitation using Planck units:

F= QuantityVariable["F", "Force"];
m1= QuantityVariable[Subscript["m",1], "Mass"];
m2= QuantityVariable[Subscript["m",2], "Mass"]; 
r= QuantityVariable["r", "Length"]; 
G=(Quantity[, "G", Newtonian gravitational constants, "GravitationalConstant"]);

grav= F==G m1 m2/r^2

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

Compare against the standard method solution:

NondimensionalizationTransform[grav,{F,m1,m2,r},{f,mp1,mp2,ρ},"NondimensionalizationMultipliers"]

OpenersExampleSection3(Spacer1)Applications  (4)

Nondimensionalize Poisson's equation for gravity:

x=QuantityVariable["x", "Length"];
y=QuantityVariable["y", "Length"];
z=QuantityVariable["z", "Length"];
g=QuantityVariable["ϕ", "GravitationalPotential"];
ρ=QuantityVariable["ρ", "MassDensity"];

peq=Laplacian[g[x,y,z],{x,y,z}]==4 Pi (Quantity[, "G", Newtonian gravitational constants, "GravitationalConstant"])ρ

NondimensionalizationTransform[peq,{g,ρ},{γ,r}]

Examine the dimensionless Klein–Gordon equation:

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

eq=1/(Quantity[, "c", speed of light, "SpeedOfLight"])^2D[ψ[x,y,z,t],t,t]-Laplacian[ψ[x,y,z,t],{x,y,z}]+m^2 (Quantity[, (("c")^2), speed of light squared, (("SpeedOfLight")^2)])/(Quantity[, (("ℏ")^2), reduced Planck constants squared, (("ReducedPlanckConstant")^2)])ψ[x,y,z,t]

NondimensionalizationTransform[eq,{ψ,t},{Ψ,τ}]

Simplify the result further by specifying replacement variables for most of the (RefLink[QuantityVariable, paclet:ref/QuantityVariable]) objects:

NondimensionalizationTransform[eq,{ψ,t,x,y,z},{Ψ,τ,ξ,η,ζ}]

Compute the dimensionless form of physical systems:

eq=Expand/@(Entity["van der Waals gas", Entity["PhysicalSystem","VanDerWaalsGas"], "Entity[\"PhysicalSystem\", \"VanDerWaalsGas\"]", "physical system"])[(EntityProperty["equation of state", EntityProperty["PhysicalSystem","EquationOfState"], "EntityProperty[\"PhysicalSystem\", \"EquationOfState\"]"])]

NondimensionalizationTransform[eq,{(QuantityVariable["p", "Pressure"]),(QuantityVariable["V", "Volume"]),(QuantityVariable["T", "Temperature"]),(QuantityVariable["n", "Amount"])},{𝓅,𝓋,𝓉,ν}]

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

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"];

eq=I (Quantity[, "ℏ", reduced Planck constants, "ReducedPlanckConstant"])D[ψ[r,t],t]==-(Quantity[, "ℏ", reduced Planck constants, "ReducedPlanckConstant"]) ^2/(2 me)D[ψ[r,t],{r,2}]+e^2/(e0 r) ψ[r,t]

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

Examine the result to check that it is dimensionless:

%/. q_Quantity:> UnitConvert[q,"SIBase"]

Compare to the solution in Hartree atomic units:

NondimensionalizationTransform[eq,{ψ,r,t},{Ψ,ρ,τ},UnitSystem->"HartreeAtomicUnits"]

OpenersExampleSection4(Spacer1)Properties & Relations  (1)

(RefLink[DimensionalCombinations, paclet:ref/DimensionalCombinations]) derives dimensionless combinations of (RefLink[QuantityVariable, paclet:ref/QuantityVariable]) objects:

s=QuantityVariable["s","Length"];
s0=QuantityVariable["s0","Length"];
a=QuantityVariable["a","Acceleration"];
t=QuantityVariable["t","Time"];
v=QuantityVariable["v","Speed"];

DimensionalCombinations[{s,s0,a,t,v},GeneratedParameters->None]

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

accelerationSpeedDistance=(QuantityVariable["s", "Length"])==(QuantityVariable["s0", "Length"])+(1/2) (QuantityVariable["a", "Acceleration"]) ((QuantityVariable["t", "Time"])^2)+(QuantityVariable["t", "Time"]) (QuantityVariable["v", "Speed"]);

NondimensionalizationTransform[accelerationSpeedDistance, {(QuantityVariable["a", "Acceleration"]),(QuantityVariable["t", "Time"]),(QuantityVariable["s0", "Length"])}, {b, u, d0},"DimensionalizationRules"]

OpenersExampleSection5(Spacer1)Possible Issues  (3)

Equations must be dimensionally balanced:

Q1=QuantityVariable["Q","ElectricCharge"];
t1=QuantityVariable["t","Time"];

NondimensionalizationTransform[Q1-t1==0,{Q1,t1},{Q2,t2}]

Replacement variables must be dimensionless:

NondimensionalizationTransform[((QuantityVariable["d", "Length"])/(QuantityVariable["t", "Time"]))==(QuantityVariable["v", "Speed"]),{(QuantityVariable["d", "Length"]),(QuantityVariable["t", "Time"])},{Quantity[1,"Meters"],t2}]

Supplied variables should be present within the equation:

NondimensionalizationTransform[((QuantityVariable["d", "Length"])/(QuantityVariable["t", "Time"]))==(QuantityVariable["v", "Speed"]),{(QuantityVariable["d", "Length"]),QuantityVariable["Q","ElectricCharge"]},{d2,Q2}]

OpenersExampleSection6(Spacer1)Neat Examples  (1)

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

naturalunits={"PlanckUnits","HartreeAtomicUnits","RydbergAtomicUnits","LorentzHeavisideNaturalUnits","GaussianNaturalUnits"};

cleq=First@FormulaData["CoulombsLaw"]

nlogeq=FormulaData["NewtonsLawOfUniversalGravitation"]

coulomb=NondimensionalizationTransform[cleq,{(QuantityVariable["F", "Force"]),(QuantityVariable[(Subscript["Q", 1]), "ElectricCharge"]), (QuantityVariable[(Subscript["Q", 2]), "ElectricCharge"]),(QuantityVariable["r", "Distance"])},{f,q1,q2,ρ},UnitSystem->#]&/@naturalunits;
gravity=NondimensionalizationTransform[nlogeq,{(QuantityVariable["F", "Force"]), (QuantityVariable[(Subscript["m", 1]), "Mass"]), (QuantityVariable[(Subscript["m", 2]), "Mass"]),(QuantityVariable["r", "Distance"])},{f,m1,m2,ρ},UnitSystem->#]&/@naturalunits;

Compare how the formulas look under different natural unit systems:

Grid[Prepend[Transpose[{naturalunits,gravity,coulomb}],{"unit system","gravitational force","electrostatic force"}],Dividers->Center]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[QuantityVariable, paclet:ref/QuantityVariable])  ▪  (RefLink[QuantityVariableDimensions, paclet:ref/QuantityVariableDimensions])  ▪  (RefLink[DimensionalCombinations, paclet:ref/DimensionalCombinations])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Units & Quantities, paclet:guide/Units])}})}})