def __init__(self, constant=-1.0, shift=1.0, *args, **kwargs): super(Constant, self).__init__(*args, **kwargs) HasExactSolutionMixin.__init__(self, *args, **kwargs) self.time_start = 0.0 self.time_end = 1.0 self.initial_value = shift * np.ones(self.dim_for_time_solver) self.constant = constant self._exact_function = lambda t: self.initial_value + self.constant * t self._strings['rhs_wrt_time'] = "C" self._strings['exact'] = 'u_0 + C * t'
def __init__(self, *args, **kwargs): super(LambdaU, self).__init__(*args, **kwargs) HasExactSolutionMixin.__init__(self, *args, **kwargs) HasDirectImplicitMixin.__init__(self, *args, **kwargs) if self.time_start is None: self.time_start = 0.0 if self.time_end is None: self.time_end = 1.0 if self.initial_value is None: self.initial_value = complex(1.0, 0.0) * np.ones(self.dim) # self.initial_value = 1.0 * np.ones(self.dim) self.lmbda = kwargs.get('lmbda', 1.0) if isinstance(self.lmbda, complex): self.numeric_type = np.complex self.exact_function = lambda phi_of_time: self.initial_value * np.exp(self.lmbda * phi_of_time) self._strings['rhs_wrt_time'] = r"\lambda u(t, \phi(t))" self._strings['exact'] = r"e^{\lambda t}"
def __init__(self, *args, **kwargs): super(OneDimensionalHeatEquation, self).__init__(*args, **kwargs) HasExactSolutionMixin.__init__(self, *args, **kwargs) HasDirectImplicitMixin.__init__(self, *args, **kwargs) if self.time_start is None: self.time_start = 0.0 if self.time_end is None: self.time_end = 1.0 if self.initial_value is None: self.initial_value = complex(1.0, 0.0) * np.ones(self.dim) if "alpha" not in kwargs: kwargs["alpha"] = 1.0 self.alpha = kwargs["alpha"] if isinstance(self.alpha, complex): self.numeric_type = np.complex # self.exact_function = lambda phi_of_time: self.initial_value * np.exp(self.lmbda * phi_of_time) self._strings["rhs"] = r"\alpha \laplace u(x,t)" self._strings["exact"] = r"derivable using Fourier transformation"
def __str__(self): _outstr = super(Constant, self).__str__() _outstr += r", C={}".format(self.constant) _outstr += HasExactSolutionMixin.__str__(self) return _outstr
def print_lines_for_log(self): _lines = super(Constant, self).print_lines_for_log() _lines.update(HasExactSolutionMixin.print_lines_for_log(self)) _lines['Coefficients'] = 'C = {:.3f}'.format(self.constant) return _lines
def __str__(self): _outstr = super(LambdaU, self).__str__() _outstr += r", \lambda=%s" % self.lmbda _outstr += HasExactSolutionMixin.__str__(self) return _outstr
def print_lines_for_log(self): _lines = super(LambdaU, self).print_lines_for_log() _lines.update(HasExactSolutionMixin.print_lines_for_log(self)) _lines['Coefficients'] = '\lambda = %s' % self.lmbda return _lines