Compute rates, cumulative production values, and instantaneous nominal declines for Arps harmonic decline curves (i.e. hyperbolic with b = 1).

1 2 3 | ```
harmonic.q(qi, Di, t)
harmonic.Np(qi, Di, t)
harmonic.D(Di, t)
``` |

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

`Di` |
initial nominal Arps decline exponent [1 / time]. |

`t` |
time at which to evaluate rate or cumulative [time]. |

Assumes consistent units of time between `qi`

, `D`

, and `t`

. To convert, see the decline-rate conversion functions referenced below.

`harmonic.q`

returns the rate for each element of `t`

,
in the same units as `qi`

.

`harmonic.Np`

returns the cumulative production for each element of
`t`

, in the same units as `qi * t`

.

`harmonic.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`

.

`as.effective`

, `as.nominal`

, `rescale.by.time`

.

1 2 3 4 5 6 7 8 | ```
## qi = 1000 Mscf/d, Di = 95% effective / year, t from 0 to 25 days
harmonic.q(1000, as.nominal(0.95, from.period="year", to.period="day"), seq(0, 25))
## qi = 500 bopd, Di = 3.91 nominal / year, t = 5 years
harmonic.Np(rescale.by.time(500, from.period="day", to.period="year"), 3.91, 5)
## Di = 85% effective / year, t = 6 months
harmonic.D(as.nominal(0.85), 0.5)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.