@@ -49,7 +49,6 @@ def __init__(self, base_variables, base_variables_casadi, solution, warn=True):
49
49
self .symbolic_inputs = solution .has_symbolic_inputs
50
50
51
51
self .u_sol = solution .y
52
- self .y_sym = solution ._y_sym
53
52
54
53
# Sensitivity starts off uninitialized, only set when called
55
54
self ._sensitivity = None
@@ -512,8 +511,6 @@ def sensitivity(self):
512
511
if self ._sensitivity is None :
513
512
if self .solution_sensitivity != {}:
514
513
self .initialise_sensitivity_explicit_forward ()
515
- elif self .y_sym is not None :
516
- self .initialise_sensitivity_casadi ()
517
514
else :
518
515
raise ValueError (
519
516
"Cannot compute sensitivities. The 'sensitivity' argument of the "
@@ -576,76 +573,6 @@ def initialise_sensitivity_explicit_forward(self):
576
573
# Save attribute
577
574
self ._sensitivity = sensitivity
578
575
579
- def initialise_sensitivity_casadi (self ):
580
- def initialise_0D_symbolic ():
581
- "Create a 0D symbolic variable"
582
- # Evaluate the base_variable index-by-index
583
- for idx in range (len (self .t_sol )):
584
- t = self .t_sol [idx ]
585
- u = self .y_sym [:, idx ]
586
- next_entries = self .base_variable_casadi (t , u , self .symbolic_inputs )
587
- if idx == 0 :
588
- entries = next_entries
589
- else :
590
- entries = casadi .horzcat (entries , next_entries )
591
-
592
- return entries
593
-
594
- def initialise_1D_symbolic ():
595
- "Create a 1D symbolic variable"
596
- # Evaluate the base_variable index-by-index
597
- for idx in range (len (self .t_sol )):
598
- t = self .t_sol [idx ]
599
- u = self .y_sym [:, idx ]
600
- next_entries = self .base_variable_casadi (t , u , self .symbolic_inputs )
601
- if idx == 0 :
602
- entries = next_entries
603
- else :
604
- entries = casadi .vertcat (entries , next_entries )
605
-
606
- return entries
607
-
608
- inputs_stacked = casadi .vertcat (* self .inputs .values ())
609
- self .base_eval = self .base_variable_casadi (
610
- self .t_sol [0 ], self .u_sol [:, 0 ], inputs_stacked
611
- )
612
- if (
613
- isinstance (self .base_eval , numbers .Number )
614
- or len (self .base_eval .shape ) == 0
615
- or self .base_eval .shape [0 ] == 1
616
- ):
617
- entries_MX = initialise_0D_symbolic ()
618
- else :
619
- n = self .mesh .npts
620
- base_shape = self .base_eval .shape [0 ]
621
- # Try shape that could make the variable a 1D variable
622
- if base_shape == n :
623
- entries_MX = initialise_1D_symbolic ()
624
- else :
625
- # Raise error for 2D variable
626
- raise NotImplementedError (
627
- "Shape not recognized for {} " .format (self .base_variable )
628
- + "(note processing of 2D and 3D variables is not yet "
629
- + "implemented)"
630
- )
631
-
632
- # Compute jacobian
633
- sens_MX = casadi .jacobian (entries_MX , self .symbolic_inputs )
634
- casadi_sens_fn = casadi .Function ("variable" , [self .symbolic_inputs ], [sens_MX ])
635
-
636
- sens_eval = casadi_sens_fn (inputs_stacked )
637
- sensitivity = {"all" : sens_eval }
638
-
639
- # Add the individual sensitivity
640
- start = 0
641
- for name , inp in self .inputs .items ():
642
- end = start + inp .shape [0 ]
643
- sensitivity [name ] = sens_eval [:, start :end ]
644
- start = end
645
-
646
- self ._sensitivity = sensitivity
647
-
648
-
649
576
class Interpolant1D :
650
577
def __init__ (self , pts_for_interp , entries_for_interp ):
651
578
self .interpolant = interp .interp1d (
0 commit comments