def _CreateSolver(self):
     """Create the solver
     """
     problem_name = self.cosim_settings["problem_data"][
         "problem_name"].GetString()
     return solver_wrapper_factory.CreateSolverWrapper(
         self.cosim_settings["solver_settings"], problem_name)
    def __CreateSolverWrappers(self):
        # first create all solvers
        solvers = {}
        for solver_name, solver_settings in self.settings["solvers"].items():
            solvers[solver_name] = solver_wrapper_factory.CreateSolverWrapper(
                solver_settings, solver_name)

        # then order them according to the coupling-loop
        solvers_map = OrderedDict()
        for i_solver_settings in range(
                self.settings["coupling_sequence"].size()):
            solver_settings = self.settings["coupling_sequence"][
                i_solver_settings]
            solver_name = solver_settings["name"].GetString()
            solvers_map[solver_name] = solvers[solver_name]

        for solver_name in self.settings["solvers"].keys():
            if solver_name not in solvers_map:
                err_msg = 'Solver "{}" of type "{}"\n'.format(
                    solver_name, solvers[solver_name]._ClassName())
                err_msg += 'is specified in the "solvers" of coupled solver\n'
                err_msg += '"{}" of type "{}"\n'.format(
                    self.name, self._ClassName())
                err_msg += 'but not used in the "coupling_sequence"!'
                raise Exception(err_msg)

        return solvers_map
def Create(settings, models, solver_name):
    input_file_name = settings["input_file"].GetString()
    settings.RemoveValue("input_file")
    if not input_file_name.endswith(".json"):
        input_file_name += ".json"

    with open(input_file_name, 'r') as parameter_file:
        existing_parameters = KM.Parameters(parameter_file.read())
    for key, val in existing_parameters["solver_settings"].items():
        settings.AddValue(key, val)

    return solver_wrapper_factory.CreateSolverWrapper(settings, models,
                                                      solver_name)
Exemple #4
0
    def __CreateSolverWrappers(self):
        # first create all solvers
        solvers = {}
        for solver_name, solver_settings in self.settings["solvers"].items():
            solvers[solver_name] = solver_wrapper_factory.CreateSolverWrapper(
                solver_settings, solver_name)

        # then order them according to the coupling-loop
        # NOTE solvers that are not used in the coupling-sequence will not participate
        solvers_map = OrderedDict()
        for i_solver_settings in range(
                self.settings["coupling_sequence"].size()):
            solver_settings = self.settings["coupling_sequence"][
                i_solver_settings]
            solver_name = solver_settings["name"].GetString()
            solvers_map[solver_name] = solvers[solver_name]

        return solvers_map
    def __CreateSolverWrappers(self):
        ### ATTENTION, big flaw, also the participants can be coupled solvers !!!
        import KratosMultiphysics.CoSimulationApplication.factories.solver_wrapper_factory as solvers_wrapper_factory
        from collections import OrderedDict
        # first create all solvers
        solvers = {}
        for solver_name, solver_settings in self.settings["solvers"].items():
            solvers[solver_name] = solvers_wrapper_factory.CreateSolverWrapper(solver_settings, solver_name)

        # then order them according to the coupling-loop
        # NOTE solvers that are not used in the coupling-sequence will not participate
        solvers_map = OrderedDict()
        for i_solver_settings in range(self.settings["coupling_sequence"].size()):
            solver_settings = self.settings["coupling_sequence"][i_solver_settings]
            solver_name = solver_settings["name"].GetString()
            solvers_map[solver_name] = solvers[solver_name]

        return solvers_map
Exemple #6
0
    def __CreateSolverWrappers(self, models):
        # first create all solvers
        solvers = {}
        for solver_name, solver_settings in self.settings["solvers"].items():
            if models == None:
                solver_model = None
            else:
                solver_model = models.get(
                    solver_name
                )  # returns None if "solver_name" is not in models
            solvers[solver_name] = solver_wrapper_factory.CreateSolverWrapper(
                solver_settings, solver_model, solver_name)

        # then order them according to the coupling-loop
        solvers_map = OrderedDict()
        for i_solver_settings in range(
                self.settings["coupling_sequence"].size()):
            solver_settings = self.settings["coupling_sequence"][
                i_solver_settings]
            solver_name = solver_settings["name"].GetString()
            solvers_map[solver_name] = solvers[solver_name]

        for solver_name in self.settings["solvers"].keys():
            if solver_name not in solvers_map:
                err_msg = 'Solver "{}" of type "{}"\n'.format(
                    solver_name, solvers[solver_name]._ClassName())
                err_msg += 'is specified in the "solvers" of coupled solver\n'
                err_msg += '"{}" of type "{}"\n'.format(
                    self.name, self._ClassName())
                err_msg += 'but not used in the "coupling_sequence"!'
                raise Exception(err_msg)

        if models != None:
            for solver_name in models.keys():
                if solver_name not in solvers_map:
                    raise Exception(
                        'A Model was given for solver "{}" but this solver does not exist!'
                        .format(solver_name))

        return solvers_map
Exemple #7
0
    def __init__(self, settings, solver_name):
        super(MappedSolverWrapper, self).__init__(settings, solver_name)

        self.wrapped_solver = solvers_wrapper_factory.CreateSolverWrapper(self.settings["settings"]["wrapped_solver_settings"], solver_name)
        self.input_mapper = None
        self.output_mapper = None