Beispiel #1
0
    def __init__(self, settings, models, solver_name):
        # perform some initial checks
        if not settings.Has("coupling_sequence"):
            err_msg = 'No "coupling_sequence" was specified for coupled solver\n'
            err_msg += '"{}" of type "{}"'.format(solver_name,
                                                  self._ClassName())
            raise Exception(err_msg)

        if settings["coupling_sequence"].size() == 0:
            err_msg = '"coupling_sequence" is empty for coupled solver\n'
            err_msg += '"{}" of type "{}"'.format(solver_name,
                                                  self._ClassName())
            raise Exception(err_msg)

        if not settings.Has("solvers"):
            err_msg = 'No "solvers" are specified for coupled solver\n'
            err_msg += '"{}" of type "{}"'.format(solver_name,
                                                  self._ClassName())
            raise Exception(err_msg)

        if len(settings["solvers"].keys()) == 0:
            err_msg = '"solvers" is empty for coupled solver\n'
            err_msg += '"{}" of type "{}"'.format(solver_name,
                                                  self._ClassName())
            raise Exception(err_msg)

        if not isinstance(models, dict) and not models is None:
            err_msg = 'A coupled solver can either be passed a dict of Models\n'
            err_msg += 'or None, got object of type "{}"'.format(type(models))
            raise Exception(err_msg)

        super().__init__(settings, None, solver_name)

        self.process_info = KM.ProcessInfo()

        self.solver_wrappers = self.__CreateSolverWrappers(models)

        # overwritting the Model created in the BaseClass
        # CoupledSolvers only forward calls to its solvers
        # this is done with the ModelAccessor
        self.model = ModelAccessor(self.solver_wrappers)

        self.coupling_sequence = self.__GetSolverCoSimulationDetails()

        for solver in self.solver_wrappers.values():
            solver.CreateIO(self.echo_level)
            # using the Echo_level of the coupled solver, since IO is needed by the coupling

        ### Creating the predictors
        self.predictors_list = factories_helper.CreatePredictors(
            self.settings["predictors"], self.solver_wrappers, self.echo_level)

        ### Creating the coupling operations
        self.coupling_operations_dict = factories_helper.CreateCouplingOperations(
            self.settings["coupling_operations"], self.solver_wrappers,
            self.process_info, self.echo_level)

        ### Creating the data transfer operators
        self.data_transfer_operators_dict = factories_helper.CreateDataTransferOperators(
            self.settings["data_transfer_operators"], self.echo_level)
    def __init__(self, settings, solver_name):
        # perform some initial checks
        if not settings.Has("coupling_sequence"):
            err_msg = 'No "coupling_sequence" was specified for coupled solver\n'
            err_msg += '"{}" of type "{}"'.format(solver_name,
                                                  self._ClassName())
            raise Exception(err_msg)

        if settings["coupling_sequence"].size() == 0:
            err_msg = '"coupling_sequence" is empty for coupled solver\n'
            err_msg += '"{}" of type "{}"'.format(solver_name,
                                                  self._ClassName())
            raise Exception(err_msg)

        if not settings.Has("solvers"):
            err_msg = 'No "solvers" are specified for coupled solver\n'
            err_msg += '"{}" of type "{}"'.format(solver_name,
                                                  self._ClassName())
            raise Exception(err_msg)

        if len(settings["solvers"].keys()) == 0:
            err_msg = '"solvers" is empty for coupled solver\n'
            err_msg += '"{}" of type "{}"'.format(solver_name,
                                                  self._ClassName())
            raise Exception(err_msg)

        super(CoSimulationCoupledSolver, self).__init__(settings, solver_name)

        self.process_info = KM.ProcessInfo()

        self.solver_wrappers = self.__CreateSolverWrappers()

        self.coupling_sequence = self.__GetSolverCoSimulationDetails()

        for solver in self.solver_wrappers.values():
            solver.CreateIO(self.echo_level)
            # using the Echo_level of the coupled solver, since IO is needed by the coupling

        ### Creating the predictors
        self.predictors_list = factories_helper.CreatePredictors(
            self.settings["predictors"], self.solver_wrappers, self.echo_level)

        ### Creating the coupling operations
        self.coupling_operations_dict = factories_helper.CreateCouplingOperations(
            self.settings["coupling_operations"], self.solver_wrappers,
            self.echo_level)

        ### Creating the data transfer operators
        self.data_transfer_operators_dict = factories_helper.CreateDataTransferOperators(
            self.settings["data_transfer_operators"], self.echo_level)
Beispiel #3
0
    def Initialize(self):
        for solver in self.solver_wrappers.values():
            solver.Initialize()

        super().Initialize()

        ### Creating the predictors
        self.predictors_list = factories_helper.CreatePredictors(
            self.settings["predictors"], self.solver_wrappers, self.echo_level)

        ### Creating the coupling operations
        self.coupling_operations_dict = factories_helper.CreateCouplingOperations(
            self.settings["coupling_operations"], self.solver_wrappers,
            self.process_info, self.echo_level)

        ### Creating the data transfer operators
        self.data_transfer_operators_dict = factories_helper.CreateDataTransferOperators(
            self.settings["data_transfer_operators"], self.echo_level)

        for predictor in self.predictors_list:
            predictor.Initialize()

        for coupling_operation in self.coupling_operations_dict.values():
            coupling_operation.Initialize()