File tree Expand file tree Collapse file tree 2 files changed +30
-2
lines changed Expand file tree Collapse file tree 2 files changed +30
-2
lines changed Original file line number Diff line number Diff line change @@ -155,7 +155,7 @@ function change_independent_variable(
155155
156156    #  Create a utility that performs the chain rule on an expression, followed by insertion of the new independent variable:
157157    #  e.g. (d/dt)(f(t)) -> (d/dt)(f(u(t))) -> df(u(t))/du(t) * du(t)/dt -> df(u)/du * uˍt(u)
158-     function  transform (ex) 
158+     function  transform (ex:: T )  where  {T} 
159159        #  1) Replace the argument of every function; e.g. f(t) -> f(u(t))
160160        for  var in  vars (ex; op =  Nothing) #  loop over all variables in expression (op = Nothing prevents interpreting "D(f(t))" as one big variable)
161161            is_function_of_iv1 =  iscall (var) &&  isequal (only (arguments (var)), iv1) #  of the form f(t)?
@@ -175,7 +175,7 @@ function change_independent_variable(
175175        #  3) Set new independent variable
176176        ex =  substitute (ex, iv2_of_iv1 =>  iv2; fold) #  set e.g. u(t) -> u everywhere
177177        ex =  substitute (ex, iv1 =>  iv1_of_iv2; fold) #  set e.g. t -> t(u) everywhere
178-         return  ex
178+         return  ex:: T 
179179    end 
180180
181181    #  Use the utility function to transform everything in the system!
Original file line number Diff line number Diff line change 231231    #  compare to analytical solution (x(t) = v*t, y(t) = v*t - g*t^2/2)
232232    @test  all (isapprox .(sol[Mx. y], sol[Mx. x -  g *  (Mx. t_units)^ 2  /  2 ]; atol =  1e-10 ))
233233end 
234+ 
235+ @testset  " Change independent variable, no equations" begin 
236+     #  make this "look" like the standard library RealInput
237+     @mtkmodel  Input begin 
238+         @variables  begin 
239+             u (t)
240+         end 
241+     end 
242+     @named  input_sys =  Input ()
243+     input_sys =  complete (input_sys)
244+     #  test no failures
245+     @test  change_independent_variable (input_sys, input_sys. u) isa  ODESystem
246+ 
247+     @mtkmodel  NestedInput begin 
248+         @components  begin 
249+             in  =  Input ()
250+         end 
251+         @variables  begin 
252+             x (t)
253+         end 
254+         @equations  begin 
255+             D (x) ~  in. u
256+         end 
257+     end 
258+     @named  nested_input_sys =  NestedInput ()
259+     nested_input_sys =  complete (nested_input_sys; flatten =  false )
260+     @test  change_independent_variable (nested_input_sys, nested_input_sys. x) isa  ODESystem
261+ end 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments