示例#1
0
 def __init__(self, V, **kwargs):
     ParametrizedProblem.__init__(self, "")
     self.V = V
示例#2
0
    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)