Source code for nrel.hive.reporting.instruction_generator_event_ops

from __future__ import annotations

from typing import TYPE_CHECKING

import h3

from nrel.hive.reporting.report_type import ReportType
from nrel.hive.reporting.reporter import Report
from nrel.hive.util import wkt

if TYPE_CHECKING:
    from nrel.hive.model.vehicle.vehicle import Vehicle
    from nrel.hive.runner import Environment
    from nrel.hive.state.simulation_state.simulation_state import SimulationState


[docs]def refuel_search_event(vehicle: Vehicle, sim: SimulationState, env: Environment) -> Report: """ report that a vehicle is searching for a station to refuel :param vehicle: the vehicle seeking refueling :param sim: the simulation state before the search event :param env: the simulation environment :return: a report of this event """ lat, lon = h3.h3_to_geo(vehicle.geoid) point_wkt = wkt.point_2d((lat, lon), env.config.global_config.wkt_x_y_ordering) next_sim_time = sim.sim_time + sim.sim_timestep_duration_seconds report = Report( report_type=ReportType.REFUEL_SEARCH_EVENT, report={ "vehicle_id": vehicle.id, "vehicle_state": vehicle.vehicle_state.__class__.__name__, "vehicle_memberships": vehicle.membership.to_json(), "sim_time_start": str(sim.sim_time), "sim_time_end": str(next_sim_time), "lat": lat, "lon": lon, "geoid": vehicle.geoid, "wkt": point_wkt, }, ) return report