bluebonnet.forecast.forecast_pressure ===================================== .. py:module:: bluebonnet.forecast.forecast_pressure .. autoapi-nested-parse:: Forecast when bottomhole/fracface pressure is known and varying. Functions --------- .. autoapisummary:: bluebonnet.forecast.forecast_pressure.fit_production_pressure bluebonnet.forecast.forecast_pressure.plot_production_comparison Module Contents --------------- .. py:function:: fit_production_pressure(prod_data: pandas.DataFrame, pvt_table: pandas.DataFrame, pressure_initial: float, filter_window_size: int | None = None, pressure_imax: float = 15000, inplace_max: float = 100000, filter_zero_prod_days: bool = True, n_iter: int = 100, params: lmfit.Parameters | None = None) -> lmfit.Parameters Fit cumulative production given fracface pressure. :param prod_data: contains columns 'Days', 'Gas', and 'Pressure' :type prod_data: pd.DataFrame :param pvt_table: information on equation of state, for example from build_pvt_gas :type pvt_table: pd.DataFrame :param pressure_initial: guess for initial reservoir pressure :type pressure_initial: float :param filter_window_size: If not None, boxcar filter size to average pressure data :type filter_window_size: int or None :param pressure_imax: maximum allowed initial reservoir pressure. pvt had better include this pressure :type pressure_imax: float, Optional :param inplace_max: Maximum allowed resource in place :type inplace_max: float :param filter_zero_prod_days: Filter out days without gas production or pressure value. Also shortens days on production to only include productive days. :type filter_zero_prod_days: bool :param n_iter: number of times to iterate until stabilizes :type n_iter: integer, default to 100 :param params: Initial guesses for tau, M, and p_initial. You can pass in results from previous fit. :type params: Parameters :returns: **params** -- Best fits for tau, M, and p_initial :rtype: Parameters .. py:function:: plot_production_comparison(prod_data: pandas.DataFrame, pvt_table: pandas.DataFrame, params: lmfit.Parameters, filter_window_size: int | None = None, filter_zero_prod_days: bool = True, well_name: str = 'Well Name') -> Any Compare production to match. :param prod_data: contains columns 'Days', 'Gas', and 'Pressure' :type prod_data: pd.DataFrame :param pvt_table: information on equation of state, for example from build_pvt_gas :type pvt_table: pd.DataFrame :param params: fit result parameters :type params: Parameters :param filter_window_size: If not None, boxcar filter size to average pressure data :type filter_window_size: int or None :param filter_zero_prod_days: Filter out days without gas production or pressure value. Also shortens days on production to only include productive days. :type filter_zero_prod_days: bool :param params: Best fits for tau, M, and p_initial :type params: Parameters :param well_name: name to label production with :type well_name: str :returns: **fig, (ax1, ax2)** -- matplotlib figure and tuple of axes with cumulative production and pressure over time (scaled by tau) :rtype: Any