Commit ·
a4b3f04
1
Parent(s): b5573f1
v33: petrolib formulas (perm/Rw) + revert PHIT to simple average
Browse files- PERM: 307 + 26552*PHIE^2 - 34540*(PHIE*SW)^2 (petrolib/Volve default)
- Rw default: 0.03 (petrolib default, was 0.05)
- PHIT: revert to (phi_D+phi_N)/2 per challenge spec (was 0.6/0.4)
- PHIE/pay cutoffs/HP detection: carry from v32
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- pipeline.py +6 -10
pipeline.py
CHANGED
|
@@ -148,8 +148,7 @@ def compute_phit(rhob, nphi=None):
|
|
| 148 |
|
| 149 |
if nphi is not None:
|
| 150 |
both = np.isfinite(phit_d) & np.isfinite(nphi)
|
| 151 |
-
|
| 152 |
-
phit = np.where(both, 0.6 * phit_d + 0.4 * nphi, phit_d)
|
| 153 |
phit = np.clip(phit, 0, 0.5)
|
| 154 |
else:
|
| 155 |
phit = phit_d.copy()
|
|
@@ -247,8 +246,8 @@ def estimate_rw(las, gr=None):
|
|
| 247 |
# Rw ≈ Rmf_formation / 2 (conservative — avoids underestimating SW)
|
| 248 |
return max(rmf_form / 2.0, 0.02)
|
| 249 |
|
| 250 |
-
# No params:
|
| 251 |
-
return 0.
|
| 252 |
|
| 253 |
|
| 254 |
def get_rw(las, gr=None):
|
|
@@ -277,12 +276,9 @@ def compute_sw(phie, rt, rw):
|
|
| 277 |
|
| 278 |
|
| 279 |
def compute_perm(phie, sw):
|
| 280 |
-
#
|
| 281 |
-
|
| 282 |
-
|
| 283 |
-
safe_phi = np.maximum(phie, 1e-4)
|
| 284 |
-
perm = (93.0 * safe_phi ** 2.2 / swirr) ** 2
|
| 285 |
-
perm = np.clip(perm, 0.001, 10000.0)
|
| 286 |
perm[~np.isfinite(phie)] = np.nan
|
| 287 |
return perm
|
| 288 |
|
|
|
|
| 148 |
|
| 149 |
if nphi is not None:
|
| 150 |
both = np.isfinite(phit_d) & np.isfinite(nphi)
|
| 151 |
+
phit = np.where(both, (phit_d + nphi) / 2, phit_d)
|
|
|
|
| 152 |
phit = np.clip(phit, 0, 0.5)
|
| 153 |
else:
|
| 154 |
phit = phit_d.copy()
|
|
|
|
| 246 |
# Rw ≈ Rmf_formation / 2 (conservative — avoids underestimating SW)
|
| 247 |
return max(rmf_form / 2.0, 0.02)
|
| 248 |
|
| 249 |
+
# No params: petrolib default
|
| 250 |
+
return 0.03
|
| 251 |
|
| 252 |
|
| 253 |
def get_rw(las, gr=None):
|
|
|
|
| 276 |
|
| 277 |
|
| 278 |
def compute_perm(phie, sw):
|
| 279 |
+
# petrolib formula (Wyllie-Rose variant, Volve reference implementation)
|
| 280 |
+
perm = 307.0 + 26552.0 * phie**2 - 34540.0 * (phie * sw)**2
|
| 281 |
+
perm = np.maximum(perm, 0.001)
|
|
|
|
|
|
|
|
|
|
| 282 |
perm[~np.isfinite(phie)] = np.nan
|
| 283 |
return perm
|
| 284 |
|