Migrating Functions from v1.8 to v2.0


Mapping of every v1.8 Excel UDF (213 functions across 7 categories) to its v2.0 equivalent (591 functions across 16 modules). v2.0 uses a dotted namespace (PO.<module>.<family>.<operation>) and groups thematically (e.g., Arps Exponential/Harmonic/Hyperbolic collapsed into one PO.DCA.Arps.* family with a b parameter). Migration notes flag only what actually changed: name (always renamed), parameter order, added/removed parameters, and unit changes.

Unit notation used below: [T] = time unit (days, months — consistent across inputs); [L3] = volume unit; [1/T] = nominal decline rate; [1/T^n] = PLE generalized decline rate (dimension varies with exponent n); rates in [bbl/D], [STB/d], [mscf/D] (thousand scf/day), [mmscf/D] (million scf/day); pressure in [psi] (absolute) or [psig] (gauge — flagged explicitly); temperature in [degF], [degR], [K]; viscosity in [cP]; IFT in [dynes/cm]; permeability in [mD]; dimensions [ft], [in]; formation volume factor [bbl/STB], [rcf/scf]; solution GOR [scf/STB].


When to use this doc

Open this document if, after upgrading from v1.8 to v2.0, your Excel sheets show #NAME? errors or formulas referencing the old UDF names. Ctrl-F your old function name, read the migration note, and update your formula.

How v2.0 names work

v2.0 uses a dotted namespace: PO.<module>.<family>.<operation>. Enter the full dotted name directly in a cell — Excel treats the dots as part of the identifier:

=PO.DCA.Arps.Rate(Qi, Di, b, time)

Parameter names in v2.0 use snake_case (pipe_ID, T_degF, SG_gas) where v1.8 used camelCase (pipeID, T, SGgas). This is cosmetic — Excel doesn't care about parameter names, only position.

Breaking changes — read first

Most v1.8 → v2.0 migrations are pure renames. Six cases require a real math or input change and will silently produce wrong numbers if you only rename:

  1. Gas-flow rate unit flip (1000×)ReynoldsNumberGas, InletPipePressureGas, OutletPipePressureGas: Qg was [mscf/d] (thousand scf/day), now [mmscf/D] (million scf/day). Divide old Qg values by 1000.
  2. Arps Exponential and Harmonic collapse into unified ArpsExponentialDecline* and HarmonicDecline* functions no longer exist; use PO.DCA.Arps.* with b=0 (exponential) or b=1 (harmonic).
  3. Duong parameter reorder — v1.8 (a, m, q1, qInf, time) became v2.0 (q1, Qinf, a, m, time). Fit output order also reordered to [q1, qInf, a, m].
  4. PLE Di0 dimension refinementDi_intercept [1/T] → Di0 [1/T^n]. Old values may need recomputation depending on how they were calibrated.
  5. Gauge vs absolute pressure in one PVT correlationRsoDindorukChristman2001 took P in [psig]; v2.0 PO.PVT.Rs.ByDindorukChristman takes [psi] (absolute). Add ~14.7 psi.
  6. Multiphase VFP parameter reorder — Beggs-Brill / Gray / Hagedorn-Brown .Pin / .Pout signatures were standardized; see the PipeFlow section for each rewrite.

Other unit wording changes ([STB/d] → [bbl/D], [psia] → [psi], [dymes/cm] → [dynes/cm]) are cosmetic — same number, relabeled.

Use the "On this page" sidebar to jump to a specific v1.8 category — Decline (54), PipeFlow (17), PTA (18), PVT (44), SCAL (38), Utilities (17), WellFlow (25).


Decline

All Arps (exponential, harmonic, hyperbolic) v1.8 functions collapse into a single PO.DCA.Arps.* family in v2.0 — the user now supplies b (0=exponential, 1=harmonic, 0<b<1=hyperbolic). Cumulative (*Cumulative) → *.Prod, EUR/Time unchanged semantically but econRate parameter renamed Q_econ. The new category also adds .D (instantaneous decline rate), .Diag.* (flow-regime diagnostics), .Convert.* (nominal/effective), and .Data.* (cleaning/outlier) families with no v1.8 equivalents. SSE/R2 statistics moved from Decline into a separate PO.Stats.* namespace.

Ansah-Knowles-Buba

Old (v1.8) New (v2.0) Migration notes
AnsahKnowlesBubaDeclineRate(Qi, alpha, beta, time) PO.DCA.AKB.Rate(Qi, alpha, beta, time) renamed
AnsahKnowlesBubaDeclineCumulative(Qi, alpha, beta, time) PO.DCA.AKB.Prod(Qi, alpha, beta, time) renamed
AnsahKnowlesBubaDeclineEUR(Qi, alpha, beta, econRate) PO.DCA.AKB.EUR(Qi, alpha, beta, Q_econ) renamed — parameter econRateQ_econ
AnsahKnowlesBubaDeclineTime(Qi, alpha, beta, econRate) PO.DCA.AKB.Time(Qi, alpha, beta, Q_econ) renamed — parameter econRateQ_econ
AnsahKnowlesBubaDeclineFitParameters(timeValues, rateValues) PO.DCA.AKB.Fit(times, rates) renamed
AnsahKnowlesBubaDeclineWeightedFitParameters(timeValues, rateValues, weightsValues) PO.DCA.AKB.WFit(times, rates, weights) renamed

Arps Exponential / Harmonic / Hyperbolic (now unified under PO.DCA.Arps)

Old (v1.8) New (v2.0) Migration notes
ExponentialDeclineRate(Qi, Di, time) PO.DCA.Arps.Rate(Qi, Di, b, time) renamed — added parameter b (pass b=0)
ExponentialDeclineCumulative(Qi, Di, time) PO.DCA.Arps.Prod(Qi, Di, b, time) renamed — added parameter b (pass b=0)
ExponentialDeclineEUR(Qi, Di, econRate) PO.DCA.Arps.EUR(Qi, Di, b, Q_econ) renamed — added parameter b (pass b=0); parameter econRateQ_econ
ExponentialDeclineTime(Qi, Di, econRate) PO.DCA.Arps.Time(Qi, Di, b, Q_econ) renamed — added parameter b (pass b=0); parameter econRateQ_econ
ExponentialDeclineFitParameters(timeValues, rateValues) PO.DCA.Arps.Fit(times, rates) renamed — returns [Qi, Di, b] instead of [Qi, Di]
ExponentialDeclineWeightedFitParameters(timeValues, rateValues, weightsValues) PO.DCA.Arps.WFit(times, rates, weights) renamed — returns [Qi, Di, b] instead of [Qi, Di]
HarmonicDeclineRate(Qi, Di, time) PO.DCA.Arps.Rate(Qi, Di, b, time) renamed — added parameter b (pass b=1)
HarmonicDeclineCumulative(Qi, Di, time) PO.DCA.Arps.Prod(Qi, Di, b, time) renamed — added parameter b (pass b=1)
HarmonicDeclineEUR(Qi, Di, econRate) PO.DCA.Arps.EUR(Qi, Di, b, Q_econ) renamed — added parameter b (pass b=1); parameter econRateQ_econ
HarmonicDeclineTime(Qi, Di, econRate) PO.DCA.Arps.Time(Qi, Di, b, Q_econ) renamed — added parameter b (pass b=1); parameter econRateQ_econ
HarmonicDeclineFitParameters(timeValues, rateValues) PO.DCA.Arps.Fit(times, rates) renamed — returns [Qi, Di, b] instead of [Qi, Di]
HarmonicDeclineWeightedFitParameters(timeValues, rateValues, weightsValues) PO.DCA.Arps.WFit(times, rates, weights) renamed — returns [Qi, Di, b] instead of [Qi, Di]
HyperbolicDeclineRate(Qi, Di, b, time) PO.DCA.Arps.Rate(Qi, Di, b, time) renamed
HyperbolicDeclineCumulative(Qi, Di, b, time) PO.DCA.Arps.Prod(Qi, Di, b, time) renamed
HyperbolicDeclineEUR(Qi, Di, b, econRate) PO.DCA.Arps.EUR(Qi, Di, b, Q_econ) renamed — parameter econRateQ_econ
HyperbolicDeclineTime(Qi, Di, b, econRate) PO.DCA.Arps.Time(Qi, Di, b, Q_econ) renamed — parameter econRateQ_econ
HyperbolicDeclineFitParameters(timeValues, rateValues) PO.DCA.Arps.Fit(times, rates) renamed
HyperbolicDeclineWeightedFitParameters(timeValues, rateValues, weightsValues) PO.DCA.Arps.WFit(times, rates, weights) renamed

Modified Hyperbolic

Old (v1.8) New (v2.0) Migration notes
ModifiedHyperbolicDeclineRate(Qi, Di, Dlim, b, time) PO.DCA.ModHyp.Rate(Qi, Di, Dlim, b, time) renamed
ModifiedHyperbolicDeclineCumulative(Qi, Di, Dlim, b, time) PO.DCA.ModHyp.Prod(Qi, Di, Dlim, b, time) renamed
ModifiedHyperbolicDeclineEUR(Qi, Di, Dlim, b, econRate) PO.DCA.ModHyp.EUR(Qi, Di, Dlim, b, Q_econ) renamed — parameter econRateQ_econ
ModifiedHyperbolicDeclineTime(Qi, Di, Dlim, b, econRate) PO.DCA.ModHyp.Time(Qi, Di, Dlim, b, Q_econ) renamed — parameter econRateQ_econ
ModifiedHyperbolicDeclineFitParameters(timeValues, rateValues) PO.DCA.ModHyp.Fit(times, rates) renamed
ModifiedHyperbolicDeclineWeightedFitParameters(timeValues, rateValues, weightsValues) PO.DCA.ModHyp.WFit(times, rates, weights) renamed

Duong

Old (v1.8) New (v2.0) Migration notes
DuongDeclineRate(a, m, q1, qInf, time) PO.DCA.Duong.Rate(q1, Qinf, a, m, time) renamed — parameter order changed: was (a, m, q1, qInf, time), now (q1, Qinf, a, m, time)
DuongDeclineCumulative(a, m, q1, qInf, time) PO.DCA.Duong.Prod(q1, Qinf, a, m, time) renamed — parameter order changed: was (a, m, q1, qInf, time), now (q1, Qinf, a, m, time)
DuongDeclineEUR(a, m, q1, qInf, econRate) PO.DCA.Duong.EUR(q1, Qinf, a, m, Q_econ) renamed — parameter order changed (as above); parameter econRateQ_econ
DuongDeclineTime(a, m, q1, qInf, econRate) PO.DCA.Duong.Time(q1, Qinf, a, m, Q_econ) renamed — parameter order changed (as above); parameter econRateQ_econ
DuongDeclineFitParameters(timeValues, rateValues) PO.DCA.Duong.Fit(times, rates) renamed — fit now returns [q1, qInf, a, m] instead of [a, m, q1, qInf]
DuongDeclineWeightedFitParameters(timeValues, rateValues, weightsValues) PO.DCA.Duong.WFit(times, rates, weights) renamed — fit now returns [q1, qInf, a, m] instead of [a, m, q1, qInf]

Power Law Exponential (PLE)

Old (v1.8) New (v2.0) Migration notes
PowerLawExponentialDeclineRate(Qi_intercept, Di_intercept, D_inf, n, time) PO.DCA.PLE.Rate(Qi0, Di0, Dinf, n, time) renamed — parameters shortened; dimension of Di0 refined from [1/T] to [1/T^n] (v1.8 label was inaccurate; numeric value unchanged if Di was calibrated consistently)
PowerLawExponentialDeclineCumulative(Qi_intercept, Di_intercept, D_inf, n, time) PO.DCA.PLE.Prod(Qi0, Di0, Dinf, n, time) renamed — parameters shortened; dimension of Di0 refined from [1/T] to [1/T^n] (v1.8 label was inaccurate; numeric value unchanged if Di was calibrated consistently)
PowerLawExponentialDeclineEUR(Qi_intercept, Di_intercept, D_inf, n, econRate) PO.DCA.PLE.EUR(Qi0, Di0, Dinf, n, Q_econ) renamed — parameters shortened; dimension of Di0 refined from [1/T] to [1/T^n] (v1.8 label was inaccurate; numeric value unchanged if Di was calibrated consistently); parameter econRateQ_econ
PowerLawExponentialDeclineTime(Qi_intercept, Di_intercept, D_inf, n, econRate) PO.DCA.PLE.Time(Qi0, Di0, Dinf, n, Q_econ) renamed — parameters shortened; dimension of Di0 refined from [1/T] to [1/T^n] (v1.8 label was inaccurate; numeric value unchanged if Di was calibrated consistently); parameter econRateQ_econ
PowerLawExponentialDeclineFitParameters(timeValues, rateValues) PO.DCA.PLE.Fit(times, rates) renamed
PowerLawExponentialDeclineWeightedFitParameters(timeValues, rateValues, weightsValues) PO.DCA.PLE.WFit(times, rates, weights) renamed

Stretched Exponential (SEDM)

Old (v1.8) New (v2.0) Migration notes
StretchedExponentialDeclineRate(Qi, tau, n, time) PO.DCA.SEDM.Rate(Qi, tau, n, time) renamed
StretchedExponentialDeclineCumulative(Qi, tau, n, time) PO.DCA.SEDM.Prod(Qi, tau, n, time) renamed
StretchedExponentialDeclineEUR(Qi, tau, n, econRate) PO.DCA.SEDM.EUR(Qi, tau, n, Q_econ) renamed — parameter econRateQ_econ
StretchedExponentialDeclineTime(Qi, tau, n, econRate) PO.DCA.SEDM.Time(Qi, tau, n, Q_econ) renamed — parameter econRateQ_econ
StretchedExponentialDeclineFitParameters(timeValues, rateValues) PO.DCA.SEDM.Fit(times, rates) renamed
StretchedExponentialDeclineWeightedFitParameters(timeValues, rateValues, weightsValues) PO.DCA.SEDM.WFit(times, rates, weights) renamed

SSE / Error statistics (moved to PO.Stats)

Old (v1.8) New (v2.0) Migration notes
ComputeSse(observedValues, predictedValues) PO.Stats.SSE(observed, predicted) renamed
ComputeLogSse(observedValues, predictedValues) PO.Stats.LogSSE(observed, predicted) renamed
ComputeWeightedSse(observedValues, predictedValues, weightsValues) PO.Stats.WSSE(observed, predicted, weights) renamed
ComputeWeightedLogSse(observedValues, predictedValues, weightsValues) PO.Stats.WLogSSE(observed, predicted, weights) renamed

Field Profile (now in PO.FPP module)

Old (v1.8) New (v2.0) Migration notes
BasicFieldProfile(time_buildup, time_plateau, Q_plateau, Di, time) PO.FPP.Field.Rate(t_buildup, t_plateau, Q_plateau, Di, b, t) renamed — added parameter b (Arps b-factor; pass b=0 for exponential tail)
CombinedFieldProfile(timeSeries, profile, schedule, time) PO.FPP.Sched.Rate(timeSeries, profile, schedule, t) renamed

PipeFlow

v1.8 PipeFlow is split into two v2.0 modules: PO.VFP (vertical/wellbore flow with inclination) for multiphase and single-phase-with-angle cases, and PO.SF.PL (surface pipeline) for horizontal-only liquid/gas pipelines. The v2.0 multiphase .Pin/.Pout correlations take a normalized parameter order: (Ql, Qg, P_boundary, T_degF, Rho_l, Ul, SG_gas, IFT_gl, pipe_ID, pipe_length, pipe_roughness[, pipe_angle]) — this differs from v1.8 which interleaved pressure/temperature near the end. Multiphase .dPdL (pressure gradient) adds PVT-property inputs Bl, Rho_g, Ug, Bg, Rs that were previously computed internally.

Single-phase liquid (horizontal) — moved to PO.VFP.Liq / PO.SF.PL.Liq

Old (v1.8) New (v2.0) Migration notes
FrictionPressureDropLiquid(Ql, Ul, Rho_l, pipeID, pipeRoughness, pipeLength) PO.VFP.Liq.dPfrc(Ql, Rho_l, Ul, pipe_ID, pipe_length, pipe_roughness) renamed — parameter order changed: Ul, Rho_lRho_l, Ul; pipeLength, pipeRoughness reordered
PotentialEnergyPressureDropLiquid(Rho_l, pipeLength, pipeAngle) PO.VFP.Liq.dPgrv(Rho_l, pipe_length, pipe_angle) renamed
ReynoldsNumberLiquid(Ql, Rho_l, pipeID, Ul) PO.VFP.Liq.Re(Ql, Rho_l, pipe_ID, Ul) renamed
InletPipePressureLiquid(P_out, Ql, Ul, Rho_l, pipeID, pipeRoughness, pipeLength, pipeAngle) PO.VFP.Liq.Pin(Ql, P_out, Rho_l, Ul, pipe_ID, pipe_length, pipe_roughness, pipe_angle) renamed — parameter order changed: Ql moved first; Ul, Rho_l swapped; pipeRoughness, pipeLength reordered
OutletPipePressureLiquid(P_in, Ql, Ul, Rho_l, pipeID, pipeRoughness, pipeLength, pipeAngle) PO.VFP.Liq.Pout(Ql, P_in, Rho_l, Ul, pipe_ID, pipe_length, pipe_roughness, pipe_angle) renamed — parameter order changed (same as InletPipePressureLiquid)

Single-phase gas (with angle) — moved to PO.VFP.Gas

Old (v1.8) New (v2.0) Migration notes
ReynoldsNumberGas(Qg, SGgas, pipeID, Ug) PO.VFP.Gas.Re(Qg, SG_gas, pipe_ID, Ug) renamed — unit Qg [mscf/d] → [mmscf/D] (1000× flip — divide old values by 1000)
InletPipePressureGas(Qg, P_out, pipeLength, pipeID, pipeAngle, pipeRoughness, zFactor, T, SGgas, Ug) PO.VFP.Gas.Pin(Qg, P_out, T_degF, SG_gas, Ug, Z, pipe_ID, pipe_length, pipe_roughness, pipe_angle) renamed — parameter order changed; unit Qg [mscf/d] → [mmscf/D] (1000× flip — divide old values by 1000)
OutletPipePressureGas(Qg, P_in, pipeLength, pipeID, pipeAngle, pipeRoughness, zFactor, T, SGgas, Ug) PO.VFP.Gas.Pout(Qg, P_in, T_degF, SG_gas, Ug, Z, pipe_ID, pipe_length, pipe_roughness, pipe_angle) renamed — parameter order changed (same as .Pin); unit Qg [mscf/d] → [mmscf/D] (1000× flip — divide old values by 1000)

Multiphase Beggs-Brill

Old (v1.8) New (v2.0) Migration notes
InletPressureBeggsBrill(Ql, Rho_l, Ul, Qg, SGgas, IFTgl, pipeID, pipeLength, pipeRoughness, pipeAngle, P_out, T) PO.VFP.BeggsBrill.Pin(Ql, Qg, P_out, T_degF, Rho_l, Ul, SG_gas, IFT_gl, pipe_ID, pipe_length, pipe_roughness, pipe_angle) renamed — parameter order changed (normalized to Ql, Qg, P, T, Rho_l, Ul, SG, IFT, geometry)
OutletPressureBeggsBrill(Ql, Rho_l, Ul, Qg, SGgas, IFTgl, pipeID, pipeLength, pipeRoughness, pipeAngle, P_in, T) PO.VFP.BeggsBrill.Pout(Ql, Qg, P_in, T_degF, Rho_l, Ul, SG_gas, IFT_gl, pipe_ID, pipe_length, pipe_roughness, pipe_angle) renamed — parameter order changed (as above)
PressureGradientBeggsBrill(Ql, Rho_l, Ul, Qg, Ug, SGgas, zFactor, IFTgl, pipeID, pipeRoughness, pipeAngle, P, T) PO.VFP.BeggsBrill.dPdL(Ql, Qg, P, Rho_l, Ul, Bl, Rho_g, Ug, Bg, IFT_gl, Rs, pipe_ID, pipe_roughness, pipe_angle) renamed — parameter order changed; added parameters Bl, Rho_g, Bg, Rs; removed SGgas, zFactor, T (gas properties now passed explicitly)

Multiphase Gray

Old (v1.8) New (v2.0) Migration notes
InletPressureGray(Ql, Rho_l, Ul, Qg, SGgas, IFTgl, pipeID, pipeLength, pipeRoughness, pipeAngle, P_out, T) PO.VFP.Gray.Pin(Ql, Qg, P_out, T_degF, Rho_l, Ul, SG_gas, IFT_gl, pipe_ID, pipe_length, pipe_roughness, pipe_angle) renamed — parameter order changed
OutletPressureGray(Ql, Rho_l, Ul, Qg, SGgas, IFTgl, pipeID, pipeLength, pipeRoughness, pipeAngle, P_in, T) PO.VFP.Gray.Pout(Ql, Qg, P_in, T_degF, Rho_l, Ul, SG_gas, IFT_gl, pipe_ID, pipe_length, pipe_roughness, pipe_angle) renamed — parameter order changed
PressureGradientGray(Ql, Rho_l, Ul, Qg, Ug, SGgas, zFactor, IFTgl, pipeID, pipeRoughness, pipeAngle, P, T) PO.VFP.Gray.dPdL(Ql, Qg, P, Rho_l, Ul, Bl, Rho_g, Ug, Bg, IFT_gl, Rs, pipe_ID, pipe_roughness, pipe_angle) renamed — parameter order changed; added Bl, Rho_g, Bg, Rs; removed SGgas, zFactor, T

Multiphase Hagedorn-Brown

Old (v1.8) New (v2.0) Migration notes
InletPressureHarBrown(Ql, Rho_l, Ul, Qg, SGgas, IFTgl, pipeID, pipeLength, pipeRoughness, P_out, T) PO.VFP.HagedornBrown.Pin(Ql, Qg, P_out, T_degF, Rho_l, Ul, SG_gas, IFT_gl, pipe_ID, pipe_length, pipe_roughness) renamed — parameter order changed
OutletPressureHarBrown(Ql, Rho_l, Ul, Qg, SGgas, IFTgl, pipeID, pipeLength, pipeRoughness, P_in, T) PO.VFP.HagedornBrown.Pout(Ql, Qg, P_in, T_degF, Rho_l, Ul, SG_gas, IFT_gl, pipe_ID, pipe_length, pipe_roughness) renamed — parameter order changed
PressureGradientHarBrown(Ql, Rho_l, Ul, Qg, Ug, SGgas, zFactor, IFTgl, pipeID, pipeRoughness, P, T) PO.VFP.HagedornBrown.dPdL(Ql, Qg, P, Rho_l, Ul, Bl, Rho_g, Ug, Bg, IFT_gl, Rs, pipe_ID, pipe_roughness) renamed — parameter order changed; added Bl, Rho_g, Bg, Rs; removed SGgas, zFactor, T

PTA

v1.8 PTA prefix Pdw* / Pw* / pta* reorganized into PO.PTA.PD.VW.* (dimensionless wellbore pressure for vertical wells), PO.PTA.Pw.VW.* (dimensional wellbore pressure), and PO.PTA.ToDim.* (converters from dimensional to dimensionless). Boundary suffixes renamed: LCPBLinConP, LSFBLinSealF, PCPBPerpConP, PMBPerpMix, PSFBPerpSealF. The Pw* family also changes the prodData parameter unit from [STB/D] to [bbl/D] (numerically identical for oil at standard conditions — relabel only) and renames the permeability parameter from lowercase k to uppercase K.

Old (v1.8) New (v2.0) Migration notes
PdLSSIHR(td, rd) PO.PTA.PD.LSS(tD, rD) renamed
PdwVWIHR(td, cd, skinFactor) PO.PTA.PD.VW(tD, CD, S) renamed
PdwVWIHRLCPB(td, cd, skinFactor, Ld) PO.PTA.PD.VW.LinConP(tD, CD, S, LD) renamed
PdwVWIHRLSFB(td, cd, skinFactor, Ld) PO.PTA.PD.VW.LinSealF(tD, CD, S, LD) renamed
PdwVWIHRPCPB(td, cd, skinFactor, Ld1, Ld2) PO.PTA.PD.VW.PerpConP(tD, CD, S, LD1, LD2) renamed
PdwVWIHRPMB(td, cd, skinFactor, Ld1, Ld2) PO.PTA.PD.VW.PerpMix(tD, CD, S, LD1, LD2) renamed
PdwVWIHRPSFB(td, cd, skinFactor, Ld1, Ld2) PO.PTA.PD.VW.PerpSealF(tD, CD, S, LD1, LD2) renamed
PwVWIHR(time, prodData, B, Ul, C, Rw, S, Ct, porosity, h, k) PO.PTA.Pw.VW(time, prod_data, B, Ul, C, Rw, S, Ct, porosity, h, K) renamed — parameter kK; unit prodData [STB/D] → [bbl/D]
PwVWIHRLCPB(time, prodData, B, Ul, C, Rw, S, Ct, porosity, h, k, L) PO.PTA.Pw.VW.LinConP(time, prod_data, B, Ul, C, Rw, S, Ct, porosity, h, K, L) renamed — parameter kK; unit prodData [STB/D] → [bbl/D]
PwVWIHRLSFB(time, prodData, B, Ul, C, Rw, S, Ct, porosity, h, k, L) PO.PTA.Pw.VW.LinSealF(time, prod_data, B, Ul, C, Rw, S, Ct, porosity, h, K, L) renamed — parameter kK; unit prodData [STB/D] → [bbl/D]
PwVWIHRPCPB(time, prodData, B, Ul, C, Rw, S, Ct, porosity, h, k, L1, L2) PO.PTA.Pw.VW.PerpConP(time, prod_data, B, Ul, C, Rw, S, Ct, porosity, h, K, L1, L2) renamed — parameter kK; unit prodData [STB/D] → [bbl/D]
PwVWIHRPMB(time, prodData, B, Ul, C, Rw, S, Ct, porosity, h, k, L1, L2) PO.PTA.Pw.VW.PerpMix(time, prod_data, B, Ul, C, Rw, S, Ct, porosity, h, K, L1, L2) renamed — parameter kK; unit prodData [STB/D] → [bbl/D]
PwVWIHRPSFB(time, prodData, B, Ul, C, Rw, S, Ct, porosity, h, k, L1, L2) PO.PTA.Pw.VW.PerpSealF(time, prod_data, B, Ul, C, Rw, S, Ct, porosity, h, K, L1, L2) renamed — parameter kK; unit prodData [STB/D] → [bbl/D]
ptaCd(C, poro, ct, h, rw) PO.PTA.ToDim.CD(C, porosity, Ct, h, Rw) renamed
ptaLd(l, rw) PO.PTA.ToDim.LD(L, Rw) renamed
ptaPd(P, Pi, q, k, h, B, mu) PO.PTA.ToDim.PD(P, Pi, q, K, h, B, Ul) renamed — parameter muUl; parameter kK; unit q [STB/D] → [bbl/D]
ptaRwd(r, rw) PO.PTA.ToDim.rD(r, Rw) renamed
ptaTd(t, k, poro, mu, ct, rw) PO.PTA.ToDim.tD(t, K, porosity, Ul, Ct, Rw) renamed — parameter muUl; parameter kK

PVT

PVT reorganizes by quantity → correlation: e.g., every bubble-point correlation becomes PO.PVT.Pb.By<Author>. Oil viscosity splits cleanly into .Dead, .Sat, .UnSat families. Temperature parameters now explicitly suffix _degF or _degR to prevent unit confusion. SGoilAPIAPI, SGgasSG_gas, Rso/RsobRs/Rsb, zFactorZ. New correlations (Beal, Glaso dead oil, ChewConnally, Kouzel) are new in v2.0. v2.0 relabels [psia] → [psi] across most PVT rows (numerically identical — both mean absolute pressure); [degR], [degF], [cP], [rcf/scf], [bbl/STB], [scf/STB] are unchanged. Individual rows do NOT flag the psia → psi relabel — it applies universally. Only the one real gauge-vs-absolute change (RsoDindorukChristman2001: [psig] → [psi]) is flagged.

Gas properties

Old (v1.8) New (v2.0) Migration notes
Bg(P, T, zFactor) PO.PVT.Bg.ByDefinition(P, T_degR, Z) renamed
Cg(P, T, SGgas) PO.PVT.Cg.ByDefinition(P, T_degR, SG_gas) renamed
GasDensity(P, T, SGgas, zFactor) PO.PVT.Rho.Gas.ByDefinition(P, T_degR, SG_gas, Z) renamed
UgLGE(zFactor, SGgas, P, T) PO.PVT.Ug.ByLGE(Z, SG_gas, P, T_degR) renamed
PpcStanding(SGgas) PO.PVT.Ppc.ByStanding(SG_gas) renamed
PpcSutton(SGgas) PO.PVT.Ppc.BySutton(SG_gas) renamed
TpcStanding(SGgas) PO.PVT.Tpc.ByStanding(SG_gas) renamed
TpcSutton(SGgas) PO.PVT.Tpc.BySutton(SG_gas) renamed
ZfactorBrillBeggs(Ppr, Tpr) PO.PVT.Z.ByBrillBeggs(Ppr, Tpr) renamed
ZfactorDAK(Ppr, Tpr) PO.PVT.Z.ByDAK(Ppr, Tpr) renamed

Oil — bubble-point pressure

Old (v1.8) New (v2.0) Migration notes
PboAlMarhoun(SGgas, SGoilAPI, Rso, T) PO.PVT.Pb.ByAlMarhoun(SG_gas, API, Rs, T_degF) renamed
PboDindorukChristman(SGgas, SGoilAPI, Rso, T) PO.PVT.Pb.ByDindorukChristman(SG_gas, API, Rs, T_degF) renamed
PboDoklaOsman(SGgas, SGoilAPI, Rso, T) PO.PVT.Pb.ByDoklaOsman(SG_gas, API, Rs, T_degF) renamed
PboGlaso(SGgas, SGoilAPI, Rso, T) PO.PVT.Pb.ByGlaso(SG_gas, API, Rs, T_degF) renamed
PboPetroskyFarshad(SGgas, SGoilAPI, Rso, T) PO.PVT.Pb.ByPetroskyFarshad(SG_gas, API, Rs, T_degF) renamed
PboStanding(SGgas, SGoilAPI, Rso, T) PO.PVT.Pb.ByStanding(SG_gas, API, Rs, T_degF) renamed
PboVasquezBeggs(SGgas, SGoilAPI, Rso, T) PO.PVT.Pb.ByVasquezBeggs(SG_gas, API, Rs, T_degF) renamed

Oil — formation volume factor (Bo)

Old (v1.8) New (v2.0) Migration notes
BoSatAlMarhoun1988(SGgas, SGoilAPI, Rso, T) PO.PVT.Bo.Sat.ByAlMarhoun(SG_gas, API, Rs, T_degF) renamed
BoSatDindorukChristman2001(SGgas, SGoilAPI, Rso, T) PO.PVT.Bo.Sat.ByDindorukChristman(SG_gas, API, Rs, T_degF) renamed
BoSatGlaso1980(SGgas, SGoilAPI, Rso, T) PO.PVT.Bo.Sat.ByGlaso(SG_gas, API, Rs, T_degF) renamed
BoSatPetrosky1990(SGgas, SGoilAPI, Rso, T) PO.PVT.Bo.Sat.ByPetrosky(SG_gas, API, Rs, T_degF) renamed
BoSatStanding1947(SGgas, SGoilAPI, Rso, T) PO.PVT.Bo.Sat.ByStanding(SG_gas, API, Rs, T_degF) renamed
BoSatVasquezBeggs1980(SGgas, SGoilAPI, Rso, T) PO.PVT.Bo.Sat.ByVasquezBeggs(SG_gas, API, Rs, T_degF) renamed
BoUSat(Bob, Co, Pb, P) PO.PVT.Bo.UnSat.ByDefinition(Bob, Co, Pb, P) renamed

Oil — solution gas-oil ratio (Rs)

Old (v1.8) New (v2.0) Migration notes
RsoAlMarhoun1988(SGgas, SGoilAPI, P, T) PO.PVT.Rs.ByAlMarhoun(SG_gas, API, P, T_degF) renamed
RsoDindorukChristman2001(SGgas, SGoilAPI, P, T) PO.PVT.Rs.ByDindorukChristman(SG_gas, API, P, T_degF) renamed — unit P [psig] → [psi] (real change: v1.8 took gauge pressure, v2.0 takes absolute — add ~14.7 psi)
RsoGlaso1980(SGgas, SGoilAPI, P, T) PO.PVT.Rs.ByGlaso(SG_gas, API, P, T_degF) renamed
RsoPetroskyFarshad1993(SGgas, SGoilAPI, P, T) PO.PVT.Rs.ByPetroskyFarshad(SG_gas, API, P, T_degF) renamed
RsoStanding1981(SGgas, SGoilAPI, P, T) PO.PVT.Rs.ByStanding(SG_gas, API, P, T_degF) renamed
RsoVasquezBeggs1980(SGgas, SGoilAPI, P, T) PO.PVT.Rs.ByVasquezBeggs(SG_gas, API, P, T_degF) renamed

Oil — compressibility, viscosity, interfacial tension

Old (v1.8) New (v2.0) Migration notes
CoSatVillenaLanzi1985(P, Pb, T, Rsob, SGoilAPI) PO.PVT.Co.Sat.ByVillenaLanzi(P, Pb, T_degF, Rsb, API) renamed
CoUSatVasquezBeggs1980(Rsob, SGgas, SGoilAPI, T, P) PO.PVT.Co.UnSat.ByVasquezBeggs(Rsb, SG_gas, API, T_degF, P) renamed
UodEgbogah1983(SGoilAPI, T) PO.PVT.Uo.Dead.ByEgbogah(API, T_degF) renamed
UoSatBeggsRobinson1975(Rso, Uod) PO.PVT.Uo.Sat.ByBeggsRobinson(Rs, Uo_dead) renamed
UoUSatVasquezBeggs1980(P, Pb, Uob) PO.PVT.Uo.UnSat.ByVasquezBeggs(P, Pb, Uob) renamed
IFTgoAbdulMajeed(SGoilAPI, T, Rso) PO.PVT.IFT.GasOil.ByAbdulMajeed(API, T_degF, Rs) renamed — result unit [dymes/cm] typo fixed to [dynes/cm]
IFTgoBakerSwerdloff(SGoilAPI, T, P) PO.PVT.IFT.GasOil.ByBakerSwerdloff(API, T_degF, P) renamed — result unit [dymes/cm] typo fixed to [dynes/cm]

Water

Old (v1.8) New (v2.0) Migration notes
BwMcCain(P, T) PO.PVT.Bw.ByMcCain(P, T_degF) renamed
CwSatMcCain(P, T, Cs) PO.PVT.Cw.Sat.ByMcCain(P, T_degF, salinity_gl) renamed — parameter Cssalinity_gl (units g NaCl/l unchanged)
CwUSatOsif(P, T, Cs) PO.PVT.Cw.UnSat.ByOsif(P, T_degF, salinity_gl) renamed — parameter Cssalinity_gl (units g NaCl/l unchanged)
RswpMcCain(P, T) PO.PVT.Rsw.Pure.ByMcCain(P, T_degF) renamed
RswMcCain(Rswp, salinity, T) PO.PVT.Rsw.ByMcCain(Rsw_pure, salinity_pct, T_degF) renamed — salinity units % by weight unchanged
Uw1McCain(T, salinity) PO.PVT.Uw.1Atm.ByMcCain(T_degF, salinity_pct) renamed — salinity units % by weight unchanged
UwMcCain(P, Uw1) PO.PVT.Uw.ByMcCain(P, Uw_1atm) renamed

SCAL

SCAL modules split by system (gas-oil, gas-water, gas-condensate, two-phase oil-water) and by wettability (SWW / WW / IW / OW). The v1.8 Krow*/Krw* prefix is replaced with a hierarchical PO.SCAL.<Model>.<Rock>.<Wettability>.Krow / .Krw. Parameter lists and units are unchanged in every case — the only parameter rename is lowercase k → uppercase K for permeability. New v2.0 additions (not migrated from v1.8): Stone I/II three-phase, Brooks-Corey, Van Genuchten, Leverett J-function, and Honarpour.*.GasOil.* which add krgAtSorg. v1.8's pore-volume compressibility CfNewman[L|S] becomes PO.SCAL.Cf.[Lime|Sand].ByNewman.

Rock compressibility

Old (v1.8) New (v2.0) Migration notes
CfNewmanL(porosity) PO.SCAL.Cf.Lime.ByNewman(porosity) renamed
CfNewmanS(porosity) PO.SCAL.Cf.Sand.ByNewman(porosity) renamed

Corey / LET two-phase

Old (v1.8) New (v2.0) Migration notes
KrowCorey(Sw, Swi, Sorw, KrowSwi, No) PO.SCAL.Corey.Krow(Sw, Swi, Sorw, Krow_Swi, No) renamed
KrwCorey(Sw, Swi, Sorw, KrwSorw, Nw) PO.SCAL.Corey.Krw(Sw, Swi, Sorw, Krw_Sorw, Nw) renamed
KrowLET(Sw, Swi, Sorw, KrowSwi, Lo, Eo, To) PO.SCAL.LET.Krow(Sw, Swi, Sorw, Krow_Swi, Lo, Eo, To) renamed
KrwLET(Sw, Swi, Sorw, KrwSorw, Lw, Ew, Tw) PO.SCAL.LET.Krw(Sw, Swi, Sorw, Krw_Sorw, Lw, Ew, Tw) renamed

Honarpour oil-water (sandstone / carbonate × WW / IW)

Old (v1.8) New (v2.0) Migration notes
KrowHonarpourSandWaterWet(Sw, Swi, Sorw, porosity) PO.SCAL.Honarpour.Sand.WW.Krow(Sw, Swi, Sorw, porosity) renamed
KrwHonarpourSandWaterWet(Sw, Swi, Sorw, porosity) PO.SCAL.Honarpour.Sand.WW.Krw(Sw, Swi, Sorw, porosity) renamed
KrowHonarpourSandInterWet(Sw, Swi, Sorw, porosity) PO.SCAL.Honarpour.Sand.IW.Krow(Sw, Swi, Sorw, porosity) renamed
KrwHonarpourSandInterWet(Sw, Swi, Sorw, porosity) PO.SCAL.Honarpour.Sand.IW.Krw(Sw, Swi, Sorw, porosity) renamed
KrowHonarpourCarbWaterWet(Sw, Swi, Sorw, porosity, k) PO.SCAL.Honarpour.Carb.WW.Krow(Sw, Swi, Sorw, porosity, K) renamed — parameter kK
KrwHonarpourCarbWaterWet(Sw, Swi, Sorw, porosity, k) PO.SCAL.Honarpour.Carb.WW.Krw(Sw, Swi, Sorw, porosity, K) renamed — parameter kK
KrowHonarpourCarbInterWet(Sw, Swi, Sorw) PO.SCAL.Honarpour.Carb.IW.Krow(Sw, Swi, Sorw) renamed
KrwHonarpourCarbInterWet(Sw, Swi, Sorw) PO.SCAL.Honarpour.Carb.IW.Krw(Sw, Swi, Sorw) renamed

Ibrahim-Koederitz oil-water (sandstone / carbonate × SWW / WW / IW / OW)

Old (v1.8) New (v2.0) Migration notes
KrowIKSandStrongWaterWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Sand.SWW.Krow(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK
KrwIKSandStrongWaterWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Sand.SWW.Krw(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK
KrowIKSandWaterWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Sand.WW.Krow(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK
KrwIKSandWaterWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Sand.WW.Krw(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK
KrowIKSandInterWet(Sw, Swi, Sorw) PO.SCAL.IK.Sand.IW.Krow(Sw, Swi, Sorw) renamed
KrwIKSandInterWet(Sw, Swi, Sorw) PO.SCAL.IK.Sand.IW.Krw(Sw, Swi, Sorw) renamed
KrowIKSandOilWet(Sw, Swi, Sorw) PO.SCAL.IK.Sand.OW.Krow(Sw, Swi, Sorw) renamed
KrwIKSandOilWet(Sw, Swi, Sorw) PO.SCAL.IK.Sand.OW.Krw(Sw, Swi, Sorw) renamed
KrowIKCarbStrongWaterWet(Sw, Swi, Sorw, Swc) PO.SCAL.IK.Carb.SWW.Krow(Sw, Swi, Sorw, Swc) renamed
KrwIKCarbStrongWaterWet(Sw, Swi, Sorw, Swc) PO.SCAL.IK.Carb.SWW.Krw(Sw, Swi, Sorw, Swc) renamed
KrowIKCarbWaterWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Carb.WW.Krow(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK
KrwIKCarbWaterWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Carb.WW.Krw(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK
KrowIKCarbInterWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Carb.IW.Krow(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK
KrwIKCarbInterWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Carb.IW.Krw(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK
KrowIKCarbOilWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Carb.OW.Krow(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK
KrwIKCarbOilWet(Sw, Swi, Sorw, Swc, porosity, k) PO.SCAL.IK.Carb.OW.Krw(Sw, Swi, Sorw, Swc, porosity, K) renamed — parameter kK

Ibrahim-Koederitz gas-oil / gas-water / gas-condensate

Old (v1.8) New (v2.0) Migration notes
KrgIKGasOilSand(Sg, Sgc, Sorg, Swc, Slc, porosity) PO.SCAL.IK.Sand.GasOil.Krg(Sg, Sgc, Sorg, Swc, Slc, porosity) renamed
KrogIKGasOilSand(Sg, Sgc, Sorg, Swc, Slc, porosity) PO.SCAL.IK.Sand.GasOil.Krog(Sg, Sgc, Sorg, Swc, Slc, porosity) renamed
KrgIKGasOilCarb(Sg, Sgc, Swc, Slc, porosity, k) PO.SCAL.IK.Carb.GasOil.Krg(Sg, Sgc, Swc, Slc, porosity, K) renamed — parameter kK
KrogIKGasOilCarb(Sg, Sgc, Swc, Slc, porosity, k) PO.SCAL.IK.Carb.GasOil.Krog(Sg, Sgc, Swc, Slc, porosity, K) renamed — parameter kK
KrgwIKGasWater(Sg, Sgc, Swc, Slc, porosity, k) PO.SCAL.IK.GasWat.Krgw(Sg, Sgc, Swc, Slc, porosity, K) renamed — parameter kK
KrwIKGasWater(Sg, Sgc, Swc, Slc, porosity, k) PO.SCAL.IK.GasWat.Krw(Sg, Sgc, Swc, Slc, porosity, K) renamed — parameter kK
KrgIKGasCond(Sg, Sgc, Slc) PO.SCAL.IK.GasCond.Krg(Sg, Sgc, Slc) renamed
KrcgIKGasCond(Sg, Sgc, Slc) PO.SCAL.IK.GasCond.Krcg(Sg, Sgc, Slc) renamed

Utilities

Spline and interpolation functions moved into PO.Spline.* and PO.Math.*. Parameter names follow snake_case convention (xValuesx_values) but units and semantics are unchanged. API2SG / SG2API moved into the PVT module. UnitConverter keeps its top-level flat identifier as PO.UnitConverter.

Old (v1.8) New (v2.0) Migration notes
API2SG(SGoilAPI) PO.PVT.SG.Oil.FromAPI(API) renamed — moved to PVT module
SG2API(SGoil) PO.PVT.API.FromSGoil(SG_oil) renamed — moved to PVT module
UnitConverter(Value, UnitFrom, UnitTo) PO.UnitConverter(value, unit_from, unit_to) renamed
ExpIntegralEi(x) PO.Math.Ei(x) renamed
DataDifferentiate(xValues, yValues, t, l) PO.Math.DataDiff(x_values, y_values, t, l) renamed
CubicSplineInterpolate(xValues, yValues, t) PO.Spline.Cubic.Interp(x_values, y_values, t) renamed
CubicSplineDifferentiate(xValues, yValues, t) PO.Spline.Cubic.Diff(x_values, y_values, t) renamed
CubicSplineIntegrate(xValues, yValues, t) PO.Spline.Cubic.Integ(x_values, y_values, t) renamed
CubicSplineIntegrateT1T2(xValues, yValues, t1, t2) PO.Spline.Cubic.IntegT1T2(x_values, y_values, t1, t2) renamed
CubicSplinesIntersection(xValues1, yValues1, xValues2, yValues2) PO.Spline.Cubic.Intersect(x_values_1, y_values_1, x_values_2, y_values_2) renamed
LinearSplineInterpolate(xValues, yValues, t) PO.Spline.Linear.Interp(x_values, y_values, t) renamed
LinearSplineDifferentiate(xValues, yValues, t) PO.Spline.Linear.Diff(x_values, y_values, t) renamed
LinearSplineIntegrate(xValues, yValues, t) PO.Spline.Linear.Integ(x_values, y_values, t) renamed
LinearSplineIntegrateT1T2(xValues, yValues, t1, t2) PO.Spline.Linear.IntegT1T2(x_values, y_values, t1, t2) renamed
LinearSplinesIntersection(xValues1, yValues1, xValues2, yValues2) PO.Spline.Linear.Intersect(x_values_1, y_values_1, x_values_2, y_values_2) renamed
ProximalInterpolate(xValues, yValues, t) PO.Spline.Proximal.Interp(x_values, y_values, t) renamed
StepInterpolate(xValues, yValues, t) PO.Spline.Step.Interp(x_values, y_values, t) renamed

WellFlow

v1.8 WellFlow maps to v2.0 PO.IPR (Inflow Performance Relationships). Vertical vs horizontal well split into PO.IPR.VW.* and PO.IPR.HW.*; PSS / SS / TF flow regimes exposed as explicit sub-namespaces. Gas well functions grouped under PO.IPR.GW.*. ProdIndex*PO.IPR.*.PI, FlowRate*PO.IPR.*.Rate. Many vertical-well rows shift result unit wording from [STB/d] / [STB/(d.psi)] to [bbl/D] / [bbl/(D.psi)] — numerically identical for oil at standard conditions. Horizontal-well PI rows (ByBorisov, ByBabuOdeh, ByGRJ, ByJoshi, ByRenardDupuy) keep [STB/(d.psi)] unchanged.

Utility functions

Old (v1.8) New (v2.0) Migration notes
DrainageRadius(A) PO.IPR.Re(A) renamed
EffectiveWellboreRadius(Rw, S) PO.IPR.Rwa(Rw, S) renamed
EquivalentSkinFactor(Xf, W, K_fracture, K, Rw) PO.FRAC.Well.SkinEq(Xf, W, Kf, K, Rw) renamed — parameter K_fractureKf; moved to new FRAC module

Vertical well — productivity index and flow rate

Old (v1.8) New (v2.0) Migration notes
ProdIndexPSS(K, h, Bl, Ul, Re, Rw, S) PO.IPR.VW.PSS.PI(K, h, Bl, Ul, Re, Rw, S) renamed — result unit [STB/(d.psi)] → [bbl/(D.psi)] (relabel only, numerically equivalent for oil at standard conditions)
ProdIndexSS(K, h, Bl, Ul, Re, Rw, S) PO.IPR.VW.SS.PI(K, h, Bl, Ul, Re, Rw, S) renamed — result unit [STB/(d.psi)] → [bbl/(D.psi)] (relabel only)
ProdIndexTF(time, K, h, Bl, Ul, porosity, Ct, Rw, S) PO.IPR.VW.TF.PI(time, K, h, Bl, Ul, porosity, Ct, Rw, S) renamed — result unit [STB/(d.psi)] → [bbl/(D.psi)] (relabel only)
FlowRatePSS(J, P_average, Pwf) PO.IPR.VW.PSS.Rate(J, P_average, Pwf) renamed — result unit [STB/d] → [bbl/D] (relabel only)
FlowRateSS(J, Pe, Pwf) PO.IPR.VW.SS.Rate(J, Pe, Pwf) renamed — result unit [STB/d] → [bbl/D] (relabel only)
FlowRateTF(J, Pi, Pwf) PO.IPR.VW.TF.Rate(J, Pi, Pwf) renamed — result unit [STB/d] → [bbl/D] (relabel only)
FlowRatePSSVogel(J, P_average, Pwf, Pb) PO.IPR.VW.PSS.Rate.ByVogel(J, P_average, Pwf, Pb) renamed — result unit [STB/d] → [bbl/D] (relabel only)
FlowRateSSVogel(J, Pe, Pwf, Pb) PO.IPR.VW.SS.Rate.ByVogel(J, Pe, Pwf, Pb) renamed — result unit [STB/d] → [bbl/D] (relabel only)
FlowRateTFVogel(J, Pi, Pwf, Pb) PO.IPR.VW.TF.Rate.ByVogel(J, Pi, Pwf, Pb) renamed — result unit [STB/d] → [bbl/D] (relabel only)
TimeToPSS(Re, K, Ul, porosity, Ct) PO.IPR.VW.PSS.Time(Re, K, Ul, porosity, Ct) renamed

Gas well

Old (v1.8) New (v2.0) Migration notes
GasFlowRatePSS(K, h, P_average, Pwf, zFactor, Ug, Re, Rw, S, T) PO.IPR.GW.PSS.Rate(K, h, P_average, Pwf, Z, Ug, Re, Rw, S, T_degR) renamed
GasFlowRatePSSNonDarcy(K, h, P_average, Pwf, zFactor, Ug, Re, Rw, S, T, D) PO.IPR.GW.PSS.Rate.NonDarcy(K, h, P_average, Pwf, Z, Ug, Re, Rw, S, T_degR, D) renamed
NonDarcyCoefficient(Rw, h, h_perf, SGgas, Ug, K) PO.IPR.GW.D(Rw, h, h_perf, SG_gas, Ug, K) renamed
TimeToPSSGas(Re, Rw, porosity, K, Ct, Ug) PO.IPR.GW.PSS.Time(Re, Rw, K, porosity, Ct, Ug) renamed — parameter order changed: porosity, KK, porosity

Horizontal well — productivity index and drainage

Old (v1.8) New (v2.0) Migration notes
DrainageAreaHorWell1(L, b) PO.IPR.HW.DrainArea.Rect(L, b) renamed
DrainageAreaHorWell2(L, b) PO.IPR.HW.DrainArea.Ellipse(L, b) renamed
ProdIndexHorWellBO(sizeX, sizeY, sizeZ, Kx, Ky, Kz, L, Rw, Bl, Ul, S, x1, y0, z0) PO.IPR.HW.PSS.PI.ByBabuOdeh(size_x, size_y, size_z, Kx, Ky, Kz, L, Rw, Bl, Ul, S, x1, y0, z0) renamed
ProdIndexHorWellBO2(sizeX, sizeY, sizeZ, Kx, Ky, Kz, L, Rw, Bl, Ul, S) PO.IPR.HW.PSS.PI.ByBabuOdeh.Centered(size_x, size_y, size_z, Kx, Ky, Kz, L, Rw, Bl, Ul, S) renamed
ProdIndexHorWellBorisov(L, Rw, Re, h, K, Bl, Ul) PO.IPR.HW.SS.PI.ByBorisov(L, Rw, Re, h, K, Bl, Ul) renamed — regime re-declared as SS
ProdIndexHorWellGRJ(L, Rw, Re, h, Kz, Kxy, Bl, Ul) PO.IPR.HW.SS.PI.ByGRJ(L, Rw, Re, h, Kz, Kxy, Bl, Ul) renamed
ProdIndexHorWellJoshi(L, Rw, Re, h, Kz, Kxy, Bl, Ul) PO.IPR.HW.SS.PI.ByJoshi(L, Rw, Re, h, Kz, Kxy, Bl, Ul) renamed
ProdIndexHorWellRD(L, Rw, Re, h, Kz, Kxy, Bl, Ul) PO.IPR.HW.SS.PI.ByRenardDupuy(L, Rw, Re, h, Kz, Kxy, Bl, Ul) renamed

Unmapped / deprecated

All 213 v1.8 functions map to a v2.0 equivalent. None deprecated or removed. EquivalentSkinFactor moved across modules (WellFlow → PO.FRAC.Well.SkinEq) but semantics are identical.