I have code that implements the nondimensional form of a simplified three-body problem. The length units are scaled by the distance between the two celestial bodies, `a`

, and the time units are scaled by the orbital period of the two bodies, `T`

, about their common center of mass.

I have the nondimensional form as an `ODESystem`

. A simplified system is shown below in `f`

. Now I’m trying to implement the *dimensioned* system, which scales all of the variables appropriately, as in `g`

. So `g.x ~ f.x / a`

. That works fine.

But `f`

and `g`

have different independent variables… specifically, the independent variable in `f`

is equivalent to the independent variable in `g`

**divided by T**.

Is this possible to do? Can I relate one system’s `iv`

to another’s? The goal here is for the user to never have to interact with nondimensioned units. They can specify initial conditions in the dimensioned units, and under the hood `structural_simplify`

scales the conditions and dynamics.

I can accomplish all of this by pasting the equations of `f`

inline within `g`

, as opposed to composing the two systems, but I was wondering if there’s a way to do this through model composition.

```
using ModelingToolkit
function f()
@parameters t p
@variables x(t)
d = Differential(t)
return ODESystem([d(x) ~ -p * x], t, [x], [p]; name=:f)
end
function g()
@parameters τ p₁ p₂ a
@variables x(τ)
T = 2π * sqrt(a^3 / (p₁+p₂))
s = f()
return compose(ODESystem([s.p ~ p₂ / (p₁+p₂), x ~ a * s.x, s.t ~ τ / T], τ, [x], [p₁, p₂, a]; name=:g), s)
end
```

```
g()
ERROR: ArgumentError: System f: variable t does not exist
Stacktrace:
[1] getvar(sys::ODESystem, name::Symbol; namespace::Bool)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/FbXPg/src/systems/abstractsystem.jl:358
[2] getvar
@ ~/.julia/packages/ModelingToolkit/FbXPg/src/systems/abstractsystem.jl:311 [inlined]
[3] getproperty(sys::ODESystem, name::Symbol; namespace::Bool)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/FbXPg/src/systems/abstractsystem.jl:309
[4] getproperty
@ ~/.julia/packages/ModelingToolkit/FbXPg/src/systems/abstractsystem.jl:308 [inlined]
[5] g()
@ Main ./REPL[8]:7
[6] top-level scope
@ REPL[10]:1
```