<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def f_total_irrad(times, surface_tilt, surface_azimuth, solar_zenith, solar_azimuth, dni, ghi, dhi, dni_extra, am_abs, model='haydavies'):
 """ Calculate total irradiance :param times: timestamps :param surface_tilt: panel tilt from horizontal [deg] :param surface_azimuth: panel azimuth from north [deg] :param solar_zenith: refracted solar zenith angle [deg] :param solar_azimuth: solar azimuth [deg] :param dni: direct normal irradiance [W/m**2] :param ghi: global horizonal irradiance [W/m**2] :param dhi: diffuse horizontal irradiance [W/m**2] :param dni_extra: extraterrestrial irradiance [W/m**2] :param am_abs: absolute airmass [dimensionless] :param model: irradiance model name, default is ``'haydavies'`` :type model: str :return: global, direct and diffuse plane of array irradiance [W/m**2] """

    am_abs = am_abs.squeeze()
    # make a DataFrame for time series arguments
    df = pd.DataFrame(
        {'solar_zenith': solar_zenith, 'solar_azimuth': solar_azimuth,
         'dni': dni, 'ghi': ghi, 'dhi': dhi, 'dni_extra': dni_extra,
         'am_abs': am_abs},
        index=times
    )
    # calculate total irradiance using PVLIB
    total_irrad = pvlib.irradiance.total_irrad(
        surface_tilt, surface_azimuth, df['solar_zenith'], df['solar_azimuth'],
        df['dni'], df['ghi'], df['dhi'], dni_extra=df['dni_extra'],
        airmass=df['am_abs'], model=model
    ).fillna(0.0)
    # convert to ndarrays
    poa_global = total_irrad['poa_global'].values
    poa_direct = total_irrad['poa_direct'].values
    poa_diffuse = total_irrad['poa_diffuse'].values
    return poa_global, poa_direct, poa_diffuse