    def __zero_precipitation_forecast(self):
        """
        Generate a zero-precipitation forecast (filled with the minimum precip value)
        when no precipitation above the threshold is detected. The forecast is
        optionally returned or passed to a callback.
        """
        print(
            "No precipitation above the threshold found in both the radar and NWP fields"
        )
        print("The resulting forecast will contain only zeros")
        # Create the output list
        precip_forecast = [[] for j in range(self.__config.n_ens_members)]

        # Save per time step to ensure the array does not become too large if
        # no return_output is requested and callback is not None.
        for t, subtimestep_idx in enumerate(self.__timesteps):
            # If the timestep is not the first one, we need to provide the zero forecast
            if t > 0:
                # Create an empty np array with shape [n_ens_members, rows, cols]
                # and fill it with the minimum value from precip (corresponding to
                # zero precipitation)
                N, M = self.__precip.shape[1:]
                precip_forecast_workers = np.full(
                    (self.__config.n_ens_members, N, M), self.__params.precip_zerovalue
                )
                if subtimestep_idx:
                    if self.__config.callback is not None:
                        if precip_forecast_workers.shape[1] > 0:
                            self.__config.callback(precip_forecast_workers.squeeze())
                    if self.__config.return_output:
                        for j in range(self.__config.n_ens_members):
                            precip_forecast[j].append(precip_forecast_workers[j])
                precip_forecast_workers = None

        if self.__config.measure_time:
            zero_precip_time = time.time() - self.__start_time_init

        if self.__config.return_output:
            precip_forecast_all_members_all_times = np.stack(
                [
                    np.stack(precip_forecast[j])
                    for j in range(self.__config.n_ens_members)
                ]
            )

            if self.__config.measure_time:
                return (
                    precip_forecast_all_members_all_times,
                    zero_precip_time,
                    zero_precip_time,
                )
            else:
                return precip_forecast_all_members_all_times
        else:
            return None
Generate a zero-precipitation forecast (filled with the minimum precip value)
when no precipitation above the threshold is detected. The forecast is
optionally returned or passed to a callback.
pysteps/blending/steps.py