@classmethod
def reV_run(cls, points_control, site_df, cf_file, cf_year, output_request=
    ('lcoe_fcr',)):
    """Execute SAM LCOE simulations based on a reV points control instance.

        Parameters
        ----------
        points_control : config.PointsControl
            PointsControl instance containing project points site and SAM
            config info.
        site_df : pd.DataFrame
            Dataframe of site-specific input variables. Row index corresponds
            to site number/gid (via df.loc not df.iloc), column labels are the
            variable keys that will be passed forward as SAM parameters.
        cf_file : str
            reV generation capacity factor output file with path.
        cf_year : int | str | None
            reV generation year to calculate econ for. Looks for cf_mean_{year}
            or cf_profile_{year}. None will default to a non-year-specific cf
            dataset (cf_mean, cf_profile).
        output_request : list | tuple | str
            Output(s) to retrieve from SAM.

        Returns
        -------
        out : dict
            Nested dictionaries where the top level key is the site index,
            the second level key is the variable name, second level value is
            the output variable value.
        """
    out = {}
    site_gids, calc_aey, cf_arr = cls._parse_lcoe_inputs(site_df, cf_file,
        cf_year)
    for site in points_control.sites:
        _, inputs = points_control.project_points[site]
        site_df = cls._get_annual_energy(site, site_df, site_gids, cf_arr,
            inputs, calc_aey)
        out[site] = super().reV_run(site, site_df, inputs, output_request)
    return out
