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)
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
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
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