示例#1
0
 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")
示例#2
0
 def get_problem_name(self):
     return get_reduced_problem_from_riesz_solve_storage(
         self._solution).truth_problem.name()