def __init__(self, V, **kwargs): ParametrizedProblem.__init__(self, "") self.V = V
def __init__(self, truth_problem, term, multiply_by_theta, spectrum, eigensolver_parameters, folder_prefix): # Call the parent initialization ParametrizedProblem.__init__( self, folder_prefix) # this class does not export anything self.truth_problem = truth_problem # Matrices/vectors resulting from the truth discretization self.term = term assert isinstance(self.term, (tuple, str)) if isinstance(self.term, tuple): assert len(self.term) == 2 isinstance(self.term[0], str) isinstance(self.term[1], int) self.multiply_by_theta = multiply_by_theta assert isinstance(self.multiply_by_theta, bool) self.operator = None # AffineExpansionStorage self.inner_product = None # AffineExpansionStorage, even though it will contain only one matrix self.spectrum = spectrum self.eigensolver_parameters = eigensolver_parameters # Avoid useless computations self._eigenvalue = 0. self._eigenvector = Function(truth_problem.V) # I/O self.folder["cache"] = os.path.join(folder_prefix, "cache") def _eigenvalue_cache_key_generator(*args, **kwargs): return args def _eigenvalue_cache_import(filename): self.import_eigenvalue(self.folder["cache"], filename) return self._eigenvalue def _eigenvalue_cache_export(filename): self.export_eigenvalue(self.folder["cache"], filename) def _eigenvalue_cache_filename_generator(*args, **kwargs): return self._cache_file(args) self._eigenvalue_cache = Cache( "problems", key_generator=_eigenvalue_cache_key_generator, import_=_eigenvalue_cache_import, export=_eigenvalue_cache_export, filename_generator=_eigenvalue_cache_filename_generator) def _eigenvector_cache_key_generator(*args, **kwargs): return args def _eigenvector_cache_import(filename): self.import_eigenvector(self.folder["cache"], filename) return self._eigenvector def _eigenvector_cache_export(filename): self.export_eigenvector(self.folder["cache"], filename) def _eigenvector_cache_filename_generator(*args, **kwargs): return self._cache_file(args) self._eigenvector_cache = Cache( "problems", key_generator=_eigenvector_cache_key_generator, import_=_eigenvector_cache_import, export=_eigenvector_cache_export, filename_generator=_eigenvector_cache_filename_generator)