Arps hyperbolic-to-exponential declines

Share:

Description

Compute rates, cumulative production values, instantaneous nominal declines, and transition times for Arps hyperbolic-to-exponential decline curves.

Usage

1
2
3
4
hyp2exp.q(qi, Di, b, Df, t)
hyp2exp.Np(qi, Di, b, Df, t)
hyp2exp.D(Di, b, Df, t)
hyp2exp.transition(Di, b, Df)

Arguments

qi

initial rate [volume / time], i.e. q(t = 0).

Di

initial nominal Arps decline exponent [1 / time].

b

Arps hyperbolic exponent.

Df

final nominal Arps decline exponent [1 / time].

t

time at which to evaluate rate or cumulative [time].

Details

Assumes consistent units of time between qi, Di, Df, and t. To convert, see the decline-rate conversion functions referenced below.

When appropriate, internally uses harmonic.q and harmonic.Np to avoid singularities in calculations for b near 1.

Value

hyp2exp.q returns the rate for each element of t, in the same units as qi.

hyp2exp.Np returns the cumulative production for each element of t, in the same units as qi * t.

hyp2exp.D returns the nominal instantaneous decline for each element of t. This can be converted to effective decline and rescaled in time by use of as.effective and rescale.by.time.

hyp2exp.transition returns the transition time (from hyperbolic to exponential decline), in the same units as 1 / Di.

See Also

as.effective, as.nominal, rescale.by.time.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
## qi = 1000 Mscf/d, Di = 95% effective / year, b = 1.2,
## Df = 15% effective / year, t from 0 to 25 years
## result in Mscf/d
hyp2exp.q(1000, as.nominal(0.95), 1.2, as.nominal(0.15), seq(0, 25))

## qi = 500 bopd, Di = 3.91 nominal / year, b = 0.5,
## Df = 0.3 nominal / year, t = 20 years
hyp2exp.Np(rescale.by.time(500, from.period="day", to.period="year"),
    3.91, 0.5, 0.3, 20)

## Di = 85% effective / year, b = 1.5, Df = 15% effective / year,
## t = 6 and 48 months
hyp2exp.D(as.nominal(0.85), 1.5, as.nominal(0.15), c(0.5, 4))

## Di = 85% effective / year, b = 1.5, Df = 5% effective / year
hyp2exp.transition(as.nominal(0.85), 1.5, as.nominal(0.05))