From 76522d3e797c794e48f05f7501f0bc210750a1c7 Mon Sep 17 00:00:00 2001 From: lakue103 <laura.kuehle@uni-duesseldorf.de> Date: Sun, 11 Oct 2020 21:24:29 +0200 Subject: [PATCH] Improved use of 'self.__init__()' --- Initial_Condition.py | 27 ++++++++++++++------------- Limiter.py | 14 ++++++-------- Quadrature.py | 7 +++++-- Troubled_Cell_Detector.py | 28 ++++++++++------------------ Update_Scheme.py | 3 --- 5 files changed, 35 insertions(+), 44 deletions(-) diff --git a/Initial_Condition.py b/Initial_Condition.py index a559f4c..6af61e5 100644 --- a/Initial_Condition.py +++ b/Initial_Condition.py @@ -10,6 +10,10 @@ class InitialCondition(object): def __init__(self, left_bound, right_bound, config): self._left_bound = left_bound self._right_bound = right_bound + + self._reset(config) + + def _reset(self, config): self._interval_len = self._right_bound-self._left_bound def get_name(self): @@ -27,8 +31,8 @@ class InitialCondition(object): class Sine(InitialCondition): - def __init__(self, left_bound, right_bound, config): - super().__init__(left_bound, right_bound, config) + def _reset(self, config): + super()._reset(config) # Unpack necessary configurations self._factor = config.pop('factor', 2) @@ -38,9 +42,6 @@ class Sine(InitialCondition): class Box(InitialCondition): - def __init__(self, left_bound, right_bound, config): - super().__init__(left_bound, right_bound, config) - def _get_point(self, x): if x < -1: x = x + 2 @@ -53,8 +54,8 @@ class Box(InitialCondition): class FourPeakWave(InitialCondition): - def __init__(self, left_bound, right_bound, config): - super().__init__(left_bound, right_bound, config) + def _reset(self, config): + super()._reset(config) # Set additional necessary parameter self._alpha = 10 @@ -82,8 +83,8 @@ class FourPeakWave(InitialCondition): class Linear(InitialCondition): - def __init__(self, left_bound, right_bound, config): - super().__init__(left_bound, right_bound, config) + def _reset(self, config): + super()._reset(config) # Unpack necessary configurations self._factor = config.pop('factor', 1) @@ -93,8 +94,8 @@ class Linear(InitialCondition): class LinearAbsolut(InitialCondition): - def __init__(self, left_bound, right_bound, config): - super().__init__(left_bound, right_bound, config) + def _reset(self, config): + super()._reset(config) # Unpack necessary configurations self._factor = config.pop('factor', 1) @@ -104,8 +105,8 @@ class LinearAbsolut(InitialCondition): class DiscontinuousConstant(InitialCondition): - def __init__(self, left_bound, right_bound, config): - super().__init__(left_bound, right_bound, config) + def _reset(self, config): + super()._reset(config) # Unpack necessary configurations self._x0 = config.pop('x0', 0) diff --git a/Limiter.py b/Limiter.py index f2e69da..892a4fe 100644 --- a/Limiter.py +++ b/Limiter.py @@ -7,6 +7,9 @@ class Limiter(object): def __init__(self, config): + self._reset(config) + + def _reset(self, config): pass def get_name(self): @@ -17,17 +20,12 @@ class Limiter(object): class NoLimiter(Limiter): - def __init__(self, config): - super().__init__(config) - def apply(self, projection, cell): return projection[:, cell] class MinMod(Limiter): - def __init__(self, config): - super().__init__(config) - + def _reset(self, config): # Unpack necessary configurations self._erase_degree = config.pop('erase_degree', 0) @@ -65,8 +63,8 @@ class MinMod(Limiter): class ModifiedMinMod(MinMod): - def __init__(self, config): - super().__init__(config) + def _reset(self, config): + super()._reset(config) # Unpack necessary configurations self._cell_len = config.pop('cell_len') diff --git a/Quadrature.py b/Quadrature.py index bc68aa8..fc3babf 100644 --- a/Quadrature.py +++ b/Quadrature.py @@ -8,6 +8,9 @@ import numpy.polynomial.legendre as leg class Quadrature(object): def __init__(self, config): + self._reset(config) + + def _reset(self, config): self._eval_points = None self._weights = None self._num_eval_points = None @@ -26,8 +29,8 @@ class Quadrature(object): class Gauss(Quadrature): - def __init__(self, config): - super().__init__(config) + def _reset(self, config): + super()._reset(config) # Unpack necessary configurations self._num_eval_points = config.pop('num_eval_points', 6) diff --git a/Troubled_Cell_Detector.py b/Troubled_Cell_Detector.py index 328428c..8adf214 100644 --- a/Troubled_Cell_Detector.py +++ b/Troubled_Cell_Detector.py @@ -32,6 +32,11 @@ class TroubledCellDetector(object): self._init_cond = init_cond self._quadrature = quadrature + self._reset(config) + + def _reset(self, config): + pass + def get_name(self): return self.__class__.__name__ @@ -133,21 +138,12 @@ class TroubledCellDetector(object): class NoDetection(TroubledCellDetector): - def __init__(self, config, mesh, wave_speed, polynom_degree, num_grid_cells, final_time, left_bound, right_bound, - basis, init_cond, quadrature): - super().__init__(config, mesh, wave_speed, polynom_degree, num_grid_cells, final_time, left_bound, right_bound, - basis, init_cond, quadrature) - def get_cells(self, projection): return [] class WaveletDetector(TroubledCellDetector): - def __init__(self, config, mesh, wave_speed, polynom_degree, num_grid_cells, final_time, left_bound, right_bound, - basis, init_cond, quadrature): - super().__init__(config, mesh, wave_speed, polynom_degree, num_grid_cells, final_time, left_bound, right_bound, - basis, init_cond, quadrature) - + def _reset(self, config): # Set fixed basis and wavelet vectors self._basis = OrthonormalLegendre(self._polynom_degree).get_vector(x) self._wavelet = AlpertsWavelet(self._polynom_degree).get_vector(x) @@ -306,10 +302,8 @@ class WaveletDetector(TroubledCellDetector): class Boxplot(WaveletDetector): - def __init__(self, config, mesh, wave_speed, polynom_degree, num_grid_cells, final_time, left_bound, right_bound, - basis, init_cond, quadrature): - super().__init__(config, mesh, wave_speed, polynom_degree, num_grid_cells, final_time, left_bound, right_bound, - basis, init_cond, quadrature) + def _reset(self, config): + super()._reset(config) # Unpack necessary configurations self._fold_len = config.pop('fold_len', 16) @@ -356,10 +350,8 @@ class Boxplot(WaveletDetector): class Theoretical(WaveletDetector): - def __init__(self, config, mesh, wave_speed, polynom_degree, num_grid_cells, final_time, left_bound, right_bound, - basis, init_cond, quadrature): - super().__init__(config, mesh, wave_speed, polynom_degree, num_grid_cells, final_time, left_bound, right_bound, - basis, init_cond, quadrature) + def _reset(self, config): + super()._reset(config) # Unpack necessary configurations self._cutoff_factor = config.pop('cutoff_factor', np.sqrt(2) * self._cell_len) diff --git a/Update_Scheme.py b/Update_Scheme.py index d1ed685..2f10cd2 100644 --- a/Update_Scheme.py +++ b/Update_Scheme.py @@ -76,9 +76,6 @@ class UpdateScheme(object): class SSPRK3(UpdateScheme): - def __init__(self, polynom_degree, num_grid_cells, detector, limiter): - super().__init__(polynom_degree, num_grid_cells, detector, limiter) - # Override method of superclass def _apply_stability_method(self, projection, cfl_number): original_projection = projection -- GitLab