def save(self, directory, filename): # Get full directory name full_directory = Folders.Folder(os.path.join(str(directory), filename)) full_directory.create() # Save problem corresponding to self._lhs assert self._lhs is not None LHSIO.save_file( get_reduced_problem_from_riesz_solve_inner_product( self._lhs).truth_problem.name(), full_directory, "lhs_problem_name") # Save problem corresponding to self._solution assert self._solution is not None SolutionIO.save_file( get_reduced_problem_from_riesz_solve_storage( self._solution).truth_problem.name(), full_directory, "solution_problem_name") # Save problem and operator corresponding to self._rhs assert self._rhs is not None assert isinstance(self._rhs, (AbstractParametrizedTensorFactory, DelayedProduct)) if isinstance(self._rhs, AbstractParametrizedTensorFactory): RHSIO.save_file("ParametrizedTensorFactory", full_directory, "rhs_type") rhs_arg_0 = self._rhs rhs_problem_name_0 = get_problem_from_parametrized_operator( rhs_arg_0).name() (rhs_term_0, rhs_index_0 ) = get_term_and_index_from_parametrized_operator(rhs_arg_0) RHSIO.save_file((rhs_problem_name_0, rhs_term_0, rhs_index_0), full_directory, "rhs_arg_0") elif isinstance(self._rhs, DelayedProduct): RHSIO.save_file("DelayedProduct", full_directory, "rhs_type") assert len(self._rhs._args) is 3 rhs_arg_0 = self._rhs._args[0] assert rhs_arg_0 == -1.0 RHSIO.save_file(rhs_arg_0, full_directory, "rhs_arg_0") assert isinstance(self._rhs._args[1], AbstractParametrizedTensorFactory) rhs_arg_1 = self._rhs._args[1] rhs_problem_name_1 = get_problem_from_parametrized_operator( rhs_arg_1).name() (rhs_term_1, rhs_index_1 ) = get_term_and_index_from_parametrized_operator(rhs_arg_1) RHSIO.save_file((rhs_problem_name_1, rhs_term_1, rhs_index_1), full_directory, "rhs_arg_1") rhs_arg_2 = self._rhs._args[2] rhs_problem_name_2 = rhs_problem_name_1 (rhs_component_2, rhs_index_2 ) = get_component_and_index_from_basis_function(rhs_arg_2) RHSIO.save_file((rhs_problem_name_2, rhs_component_2, rhs_index_2), full_directory, "rhs_arg_2") else: raise TypeError("Invalid rhs") # Save problem corresponding to self._bcs BCsIO.save_file( get_reduced_problem_from_riesz_solve_homogeneous_dirichlet_bc( self._bcs).truth_problem.name(), full_directory, "bcs_problem_name") # Save parameters ParametersIO.save_file(self._parameters, full_directory, "parameters")
def get_problem_name(self): return get_reduced_problem_from_riesz_solve_storage( self._solution).truth_problem.name()