diff --git a/Initial_Condition.py b/Initial_Condition.py index 79f9b2a99f08695d84b5cf49a6a7cd43752d7b1d..17c906acbd969fd4740528bc86b87f83093cad85 100644 --- a/Initial_Condition.py +++ b/Initial_Condition.py @@ -22,7 +22,10 @@ class InitialCondition(object): def is_smooth(self): return True - def randomize(self): + def induce_adjustment(self, value): + pass + + def randomize(self, config): pass def calculate(self, x): @@ -43,8 +46,9 @@ class Sine(InitialCondition): # Unpack necessary configurations self._factor = config.pop('factor', 2) - def randomize(self): - config = {'factor': 2} + def randomize(self, config): + factor = config.pop('factor', np.random.uniform(low=-100, high=100)) + config = {'factor': factor} self._reset(config) def _get_point(self, x): @@ -109,9 +113,9 @@ class Linear(InitialCondition): # Unpack necessary configurations self._factor = config.pop('factor', 1) - def randomize(self): - a = np.random.uniform(low=-100, high=100) - config = {'factor': a} + def randomize(self, config): + factor = config.pop('factor', np.random.uniform(low=-100, high=100)) + config = {'factor': factor} self._reset(config) def _get_point(self, x): @@ -128,9 +132,9 @@ class LinearAbsolut(InitialCondition): def is_smooth(self): return False - def randomize(self): - a = np.random.uniform(low=-100, high=100) - config = {'factor': a} + def randomize(self, config): + factor = config.pop('factor', np.random.uniform(low=-100, high=100)) + config = {'factor': factor} self._reset(config) def _get_point(self, x): @@ -158,10 +162,10 @@ class Polynomial(InitialCondition): self._factor = config.pop('factor', 1) self._exponential = config.pop('exponential', 2) - def randomize(self): - a = np.random.uniform(low=-100, high=100) - k = np.random.randint(2, high=6) - config = {'factor': a, 'exponential': k} + def randomize(self, config): + factor = config.pop('factor', np.random.uniform(low=-100, high=100)) + exponential = config.pop('exponential', np.random.randint(2, high=6)) + config = {'factor': factor, 'exponential': exponential} self._reset(config) def _get_point(self, x): @@ -175,9 +179,9 @@ class Continuous(InitialCondition): # Unpack necessary configurations self._factor = config.pop('factor', 1) - def randomize(self): - a = np.random.uniform(low=-100, high=100) - config = {'factor': a} + def randomize(self, config): + factor = config.pop('factor', np.random.uniform(low=-100, high=100)) + config = {'factor': factor} self._reset(config) def _get_point(self, x): @@ -194,9 +198,9 @@ class HeavisideOneSided(InitialCondition): def is_smooth(self): return False - def randomize(self): - a = np.random.choice([-1, 1]) - config = {'factor': a} + def randomize(self, config): + factor = config.pop('factor', np.random.uniform(low=-100, high=100)) + config = {'factor': factor} self._reset(config) def _get_point(self, x): @@ -210,15 +214,22 @@ class HeavisideTwoSided(InitialCondition): # Unpack necessary configurations self._left_factor = config.pop('left_factor', 1) self._right_factor = config.pop('right_factor', 2) + self._adjustment = config.pop('adjustment', 0) def is_smooth(self): return False - def randomize(self): - a = np.random.choice([-1, 1]) - b = np.random.choice([-1, 1]) - config = {'left_factor': a, 'right_factor': b} + def induce_adjustment(self, value): + self._adjustment = value + + def randomize(self, config): + left_factor = config.pop('left_factor', np.random.choice([-1, 1])) + right_factor = config.pop('right_factor', np.random.choice([-1, 1])) + adjustment = config.pop('adjustment', np.random.uniform(low=-1, high=1)) + config = {'left_factor': left_factor, 'right_factor': right_factor, 'adjustment': adjustment} self._reset(config) def _get_point(self, x): - return self._left_factor - self._left_factor * np.heaviside(x, 0) - self._right_factor * np.heaviside(x, 0) + return self._left_factor\ + - self._left_factor * np.heaviside(x - self._adjustment, 0)\ + - self._right_factor * np.heaviside(x + self._adjustment, 0)