def dc_model(self, model):
        # guess at model if None
        if model is None:
            self._dc_model, model = self.infer_dc_model()

        # Set model and validate parameters
        if isinstance(model, str):
            model = model.lower()
            if model in DC_MODEL_PARAMS.keys():
                # validate module parameters
                missing_params = DC_MODEL_PARAMS[model] - \
                                 set(self.system.module_parameters.keys())
                if missing_params:  # some parameters are not in module.keys()
                    raise ValueError(model + ' selected for the DC model but '
                                     'one or more required parameters are '
                                     'missing : ' + str(missing_params))
                if model == 'sapm':
                    self._dc_model = self.sapm
                elif model == 'desoto':
                    self._dc_model = self.desoto
                elif model == 'cec':
                    self._dc_model = self.cec
                elif model == 'pvsyst':
                    self._dc_model = self.pvsyst
                elif model == 'pvwatts':
                    self._dc_model = self.pvwatts_dc
            else:
                raise ValueError(model + ' is not a valid DC power model')
        else:
            self._dc_model = partial(model, self)
Exemple #2
0
    def dc_model(self, model):
        # guess at model if None
        if model is None:
            self._dc_model, model = self.infer_dc_model()

        # Set model and validate parameters
        if isinstance(model, str):
            model = model.lower()
            if model in DC_MODEL_PARAMS.keys():
                # validate module parameters
                missing_params = DC_MODEL_PARAMS[model] - \
                                 set(self.system.module_parameters.keys())
                if missing_params:  # some parameters are not in module.keys()
                    raise ValueError(model + ' selected for the DC model but '
                                     'one or more required parameters are '
                                     'missing : ' + str(missing_params))
                if model == 'sapm':
                    self._dc_model = self.sapm
                elif model == 'desoto':
                    self._dc_model = self.desoto
                elif model == 'cec':
                    self._dc_model = self.cec
                elif model == 'pvsyst':
                    self._dc_model = self.pvsyst
                elif model == 'pvwatts':
                    self._dc_model = self.pvwatts_dc
                elif model == 'singlediode':
                    warnings.warn(
                        'DC model keyword singlediode used for '
                        'ModelChain object. singlediode is '
                        'ambiguous, use desoto instead. singlediode '
                        'keyword will be removed in v0.7.0 and '
                        'later', pvlibDeprecationWarning)
                    self._dc_model = self.desoto
            else:
                raise ValueError(model + ' is not a valid DC power model')
        else:
            self._dc_model = partial(model, self)
Exemple #3
0
    def dc_model(self, model):
        # guess at model if None
        if model is None:
            self._dc_model, model = self.infer_dc_model()

        # Set model and validate parameters
        if isinstance(model, str):
            model = model.lower()
            if model in DC_MODEL_PARAMS.keys():
                # validate module parameters
                missing_params = DC_MODEL_PARAMS[model] - \
                                 set(self.system.module_parameters.keys())
                if missing_params:  # some parameters are not in module.keys()
                    raise ValueError(model + ' selected for the DC model but '
                                     'one or more required parameters are '
                                     'missing : ' + str(missing_params))
                if model == 'sapm':
                    self._dc_model = self.sapm
                elif model == 'desoto':
                    self._dc_model = self.desoto
                elif model == 'cec':
                    self._dc_model = self.cec
                elif model == 'pvsyst':
                    self._dc_model = self.pvsyst
                elif model == 'pvwatts':
                    self._dc_model = self.pvwatts_dc
                elif model == 'singlediode':
                    warnings.warn('DC model keyword singlediode used for '
                                  'ModelChain object. singlediode is '
                                  'ambiguous, use desoto instead. singlediode '
                                  'keyword will be removed in v0.7.0 and '
                                  'later', pvlibDeprecationWarning)
                    self._dc_model = self.desoto
            else:
                raise ValueError(model + ' is not a valid DC power model')
        else:
            self._dc_model = partial(model, self)