Example #1
0
        /// <summary>
        ///     Dimensionless bottom hole pressure affected by outer boundary. Boundary type -  Linear Sealing Fault. Dimensionless line source solution pressure of infinite homogeneous reservoir, which is a function in the principle of superposition.
        /// </summary>
        /// <param name="td">dimensionless time</param>
        /// <param name="Ld">dimensionless distance to fault</param>
        /// <returns>System.Double.</returns>
        public static double PwDbLinearSealingFault(double td, double Ld)
        {
            Condition.Requires(td, nameof(td)).IsGreaterOrEqual(0.0);
            Condition.Requires(Ld, nameof(Ld)).IsGreaterThan(0.0);

            return(-0.5 * ExponentialIntegral.Evaluate(-Ld * Ld / td));
        }
Example #2
0
        /// <summary>
        ///     The expression of dimensionless line source solution pressure of infinite homogeneous reservoir.
        /// </summary>
        /// <param name="td">dimensionless time</param>
        /// <param name="rd">dimensionless radius</param>
        /// <returns>System.Double.</returns>
        public static double Pd(double td, double rd)
        {
            Condition.Requires(td, nameof(td)).IsGreaterOrEqual(0.0);
            Condition.Requires(rd, nameof(rd)).IsGreaterOrEqual(0.0);

            return(-0.5 * ExponentialIntegral.Evaluate(-rd * rd / (4 * td)));
        }
Example #3
0
        /// <summary>
        ///     Dimensionless bottom hole pressure affected by outer boundary. Boundary type -  Perpendicular Constant Pressures. Dimensionless line source solution pressure of infinite homogeneous reservoir, which is a function in the principle of superposition.
        /// </summary>
        /// <param name="td">dimensionless time</param>
        /// <param name="Ld1">dimensionless distance to fault 1</param>
        /// <param name="Ld2">dimensionless distance to fault 2</param>
        /// <returns>System.Double.</returns>
        public static double PwDbPerpendicularConstantPressures(double td, double Ld1, double Ld2)
        {
            Condition.Requires(td, nameof(td)).IsGreaterOrEqual(0.0);
            Condition.Requires(Ld1, nameof(Ld1)).IsGreaterThan(0.0);
            Condition.Requires(Ld2, nameof(Ld2)).IsGreaterThan(0.0);

            return(0.5 * (
                       +ExponentialIntegral.Evaluate(-Ld1 * Ld1 / td)
                       + ExponentialIntegral.Evaluate(-Ld2 * Ld2 / td)
                       + ExponentialIntegral.Evaluate(-(Ld1 * Ld1 + Ld2 * Ld2) / td)
                       ));
        }