@@ -106,6 +106,7 @@ class SensitivityAnalysis:
106106 """
107107
108108 sensitivity_simulation : SensitivitySimulation
109+ parameters : list [str ]
109110
110111 def __init__ (self , sensitivity_simulation : SensitivitySimulation ,
111112 parameters : list [str ]) -> None :
@@ -161,6 +162,7 @@ def calculate_sensitivity(self):
161162
162163 raise NotImplemented
163164
165+
164166@dataclass
165167class LocalSensitivityAnalysis (SensitivityAnalysis ):
166168 """Local sensitivity analysis based on local differences."""
@@ -171,6 +173,7 @@ class LocalSensitivityAnalysis(SensitivityAnalysis):
171173 def __init__ (self , sensitivity_simulation : SensitivitySimulation ,
172174 parameters : list [str ], difference : float = 0.1 ):
173175
176+ super ().__init__ (sensitivity_simulation , parameters )
174177 self .sensitivity = np .zeros (shape = (self .num_parameters , self .num_outputs ))
175178 self .difference = difference
176179 self .samples = self .create_samples ()
@@ -184,8 +187,19 @@ def num_samples(self) -> int:
184187
185188 def create_samples (self ) -> np .ndarray :
186189
187- for key , value in p_ref .items ():
190+ # Calculate the parameter values in the reference state
191+ parameter_values = self .sensitivity_simulation .parameter_values (
192+ changes = self .sensitivity_simulation .changes_simulation
193+ )
194+
195+ # (num_samples x num_outputs)
196+ samples = np .empty (shape = (self .num_samples , self .num_parameters ))
197+
198+ for key , value in :
188199 values = np .ones (shape = (2 * num_pars ,)) * value .magnitude
200+
201+
202+
189203 # change parameters in correct position
190204 values [index ] = value .magnitude * (1.0 + difference )
191205 values [index + num_pars ] = value .magnitude * (1.0 - difference )
0 commit comments