gea-program 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gea/BENCH_TEST_PROTOCOL.md +97 -0
- gea/IMPORT_RECORD.md +61 -0
- gea/__init__.py +160 -0
- gea/__main__.py +661 -0
- gea/acceptance_tests.py +1315 -0
- gea/accuracy_statement.py +181 -0
- gea/alarm_engine.py +307 -0
- gea/bench.py +144 -0
- gea/blind_harness.py +108 -0
- gea/case_study.py +229 -0
- gea/catalog/acex_lomonosov_age_depth_model.provenance.json +23 -0
- gea/catalog/acex_lomonosov_age_depth_model.txt +28 -0
- gea/catalog/agassiz77_canada_temperature.csv +68 -0
- gea/catalog/agassiz77_canada_temperature.provenance.json +17 -0
- gea/catalog/barbados_110_consolidation.provenance.json +24 -0
- gea/catalog/barbados_110_consolidation.txt +91 -0
- gea/catalog/bengal_u1452_grain_size.provenance.json +20 -0
- gea/catalog/bengal_u1452_grain_size.txt +252 -0
- gea/catalog/blake_164_methane_isotopes.provenance.json +22 -0
- gea/catalog/blake_164_methane_isotopes.txt +68 -0
- gea/catalog/chicxulub_m0077a_pwave_velocity.provenance.json +23 -0
- gea/catalog/chicxulub_m0077a_pwave_velocity.txt +735 -0
- gea/catalog/collingwood_1_28_ks_complete.las +128 -0
- gea/catalog/collingwood_1_28_ks_complete.provenance.json +17 -0
- gea/catalog/costa_rica_odp_friction_envelope.provenance.json +24 -0
- gea/catalog/costa_rica_odp_friction_envelope.txt +57 -0
- gea/catalog/dead_sea_5017_debrite_xrf_ms.provenance.json +21 -0
- gea/catalog/dead_sea_5017_debrite_xrf_ms.txt +94 -0
- gea/catalog/dsdp_504b_physical_properties.provenance.json +24 -0
- gea/catalog/dsdp_504b_physical_properties.txt +82 -0
- gea/catalog/dsdp_504b_sound_velocity.provenance.json +21 -0
- gea/catalog/dsdp_504b_sound_velocity.txt +81 -0
- gea/catalog/elgygytgyn_5011_turbidites.provenance.json +20 -0
- gea/catalog/elgygytgyn_5011_turbidites.txt +193 -0
- gea/catalog/epica_domec_co2_800kyr.provenance.json +21 -0
- gea/catalog/epica_domec_co2_800kyr.txt +265 -0
- gea/catalog/fram_909_organic_petrography.provenance.json +22 -0
- gea/catalog/fram_909_organic_petrography.txt +40 -0
- gea/catalog/gbr_325_coral_uth_ages.provenance.json +23 -0
- gea/catalog/gbr_325_coral_uth_ages.txt +71 -0
- gea/catalog/gisp2_greenland_temperature.csv +599 -0
- gea/catalog/gisp2_greenland_temperature.provenance.json +17 -0
- gea/catalog/gom_308_t2p_insitu.provenance.json +21 -0
- gea/catalog/gom_308_t2p_insitu.txt +40 -0
- gea/catalog/guaymas_385_dom_d13c.provenance.json +21 -0
- gea/catalog/guaymas_385_dom_d13c.txt +103 -0
- gea/catalog/hikurangi_u1520_friction_insitu.provenance.json +26 -0
- gea/catalog/hikurangi_u1520_friction_insitu.txt +74 -0
- gea/catalog/hydrate_ridge_204_ncr_hydrate.provenance.json +22 -0
- gea/catalog/hydrate_ridge_204_ncr_hydrate.txt +60 -0
- gea/catalog/iodp_u1324_pore_pressure.provenance.json +22 -0
- gea/catalog/iodp_u1324_pore_pressure.txt +42 -0
- gea/catalog/jfast_c0019_slow_slip_events.provenance.json +28 -0
- gea/catalog/jfast_c0019_slow_slip_events.txt +35 -0
- gea/catalog/kennetcook_2_p129_excerpt.las +139 -0
- gea/catalog/kennetcook_2_p129_excerpt.provenance.json +17 -0
- gea/catalog/ktb_hb_bhgm_density.dat +227 -0
- gea/catalog/ktb_hb_bhgm_density.provenance.json +22 -0
- gea/catalog/ktb_hb_complog_6020_excerpt.provenance.json +20 -0
- gea/catalog/ktb_hb_complog_6020_excerpt.txt +72 -0
- gea/catalog/ktb_hb_hlog246_temperature.dat +1636 -0
- gea/catalog/ktb_hb_hlog246_temperature.provenance.json +22 -0
- gea/catalog/ktb_hb_rockmech_compress.dat +33 -0
- gea/catalog/ktb_hb_rockmech_compress.provenance.json +22 -0
- gea/catalog/ktb_hb_tvd_0_9080_excerpt.dat +2817 -0
- gea/catalog/ktb_hb_tvd_0_9080_excerpt.provenance.json +20 -0
- gea/catalog/ktb_vb_rockmech_compress.dat +125 -0
- gea/catalog/ktb_vb_rockmech_compress.provenance.json +22 -0
- gea/catalog/ktb_vb_vlog251_temperature.dat +1127 -0
- gea/catalog/ktb_vb_vlog251_temperature.provenance.json +24 -0
- gea/catalog/l06_06_nl_survey.csv +201 -0
- gea/catalog/l06_06_nl_survey.provenance.json +17 -0
- gea/catalog/l07_01_nl_excerpt.las +90 -0
- gea/catalog/l07_01_nl_excerpt.provenance.json +17 -0
- gea/catalog/mariana_1200_serpentinite_geochem.provenance.json +21 -0
- gea/catalog/mariana_1200_serpentinite_geochem.txt +63 -0
- gea/catalog/med_160_sapropels.provenance.json +22 -0
- gea/catalog/med_160_sapropels.txt +43 -0
- gea/catalog/nankai_megasplay_shear_strength.provenance.json +26 -0
- gea/catalog/nankai_megasplay_shear_strength.txt +42 -0
- gea/catalog/odp_1027b_thermal_conductivity.provenance.json +21 -0
- gea/catalog/odp_1027b_thermal_conductivity.txt +52 -0
- gea/catalog/odp_1027c_cork_temperature.provenance.json +20 -0
- gea/catalog/odp_1027c_cork_temperature.txt +26 -0
- gea/catalog/odp_1165b_thermal_conductivity.provenance.json +22 -0
- gea/catalog/odp_1165b_thermal_conductivity.txt +102 -0
- gea/catalog/odp_1274a_mantle_peridotite_mad.provenance.json +27 -0
- gea/catalog/odp_1274a_mantle_peridotite_mad.txt +44 -0
- gea/catalog/odp_504b_dike_elastic_moduli.provenance.json +27 -0
- gea/catalog/odp_504b_dike_elastic_moduli.txt +85 -0
- gea/catalog/odp_504b_leg137_borehole_fluids.provenance.json +19 -0
- gea/catalog/odp_504b_leg137_borehole_fluids.txt +68 -0
- gea/catalog/odp_735b_gabbro_elastic_moduli.provenance.json +28 -0
- gea/catalog/odp_735b_gabbro_elastic_moduli.txt +127 -0
- gea/catalog/peru_201_sulfate_reduction.provenance.json +22 -0
- gea/catalog/peru_201_sulfate_reduction.txt +322 -0
- gea/catalog/scorpio_e1_sa_excerpt.las +113 -0
- gea/catalog/scorpio_e1_sa_excerpt.provenance.json +17 -0
- gea/catalog/sumatra_362_cohesion.provenance.json +21 -0
- gea/catalog/sumatra_362_cohesion.txt +38 -0
- gea/catalog/university_6_17_no1_tx_excerpt.las +119 -0
- gea/catalog/university_6_17_no1_tx_excerpt.provenance.json +17 -0
- gea/catalog/ursa_308_xrd_mineralogy.provenance.json +21 -0
- gea/catalog/ursa_308_xrd_mineralogy.txt +46 -0
- gea/catalog/volve_15_9_19_sr_excerpt.las +183 -0
- gea/catalog/volve_15_9_19_sr_excerpt.provenance.json +16 -0
- gea/catalog/volve_15_9_19a_core_excerpt.csv +88 -0
- gea/catalog/volve_15_9_19a_core_excerpt.provenance.json +18 -0
- gea/catalog/volve_f12_f14_production_excerpt.csv +167 -0
- gea/catalog/volve_f12_f14_production_excerpt.provenance.json +21 -0
- gea/catalog/walvis_208_petm_carbonate.provenance.json +21 -0
- gea/catalog/walvis_208_petm_carbonate.txt +268 -0
- gea/catalog/woodlark_1109_rock_eval.provenance.json +23 -0
- gea/catalog/woodlark_1109_rock_eval.txt +30 -0
- gea/cli.py +125 -0
- gea/client_reports.py +943 -0
- gea/config_versioning.py +133 -0
- gea/correlation.py +155 -0
- gea/dashboard.py +390 -0
- gea/deviation.py +70 -0
- gea/downhole_engine.py +395 -0
- gea/drift_monitor.py +310 -0
- gea/earth_model.py +230 -0
- gea/example_register_map.json +14 -0
- gea/fat_sat.py +68 -0
- gea/follower.py +98 -0
- gea/forward_model.py +139 -0
- gea/gamma.py +176 -0
- gea/gauge_specs.py +112 -0
- gea/gravity_reference.py +116 -0
- gea/inverse_engine.py +215 -0
- gea/matplotlib_demo.py +85 -0
- gea/modbus.py +229 -0
- gea/model_card.py +248 -0
- gea/operator_app.py +442 -0
- gea/ports.py +340 -0
- gea/profile_catalog.py +773 -0
- gea/project.py +213 -0
- gea/qt6_downhole_app.py +144 -0
- gea/quartz_hpht_extension.py +152 -0
- gea/reconciler.py +206 -0
- gea/rock_inventory.py +404 -0
- gea/sample_record.py +430 -0
- gea/sample_well_profile.csv +15 -0
- gea/sbom.py +116 -0
- gea/segy.py +181 -0
- gea/service_life.py +173 -0
- gea/shell.py +107 -0
- gea/sla_report.py +199 -0
- gea/store_forward.py +234 -0
- gea/strata_join.py +186 -0
- gea/survey_cmd.py +264 -0
- gea/survey_view.py +138 -0
- gea/telemetry.py +306 -0
- gea/tool_library.py +260 -0
- gea/well_assembler.py +457 -0
- gea/well_test_validation.py +369 -0
- gea_program-0.1.0.dist-info/METADATA +138 -0
- gea_program-0.1.0.dist-info/RECORD +163 -0
- gea_program-0.1.0.dist-info/WHEEL +5 -0
- gea_program-0.1.0.dist-info/entry_points.txt +2 -0
- gea_program-0.1.0.dist-info/licenses/LICENSE +373 -0
- gea_program-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Bench-Test Protocol — Measuring the 1.0324 Suppression Ratio
|
|
2
|
+
|
|
3
|
+
**Field-tier step 8 (independent evaluation, adopted 2026-08-27).**
|
|
4
|
+
Status of the quantity under test: `canonical_suppression()` = **1.0324 at
|
|
5
|
+
unity trims** is today a **DERIVED_HYBRID** composition — industry baseline
|
|
6
|
+
drift (0.215 %FS/yr class) with HPHT stress dressing, divided by a
|
|
7
|
+
locked-primitive GEA composition. It is **not** a measured constant, and the
|
|
8
|
+
product labels it so everywhere it appears. This protocol is the experiment
|
|
9
|
+
that would change — or refuse to change — that label.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Falsifiable prediction
|
|
14
|
+
|
|
15
|
+
Two matched GEOQ-177-class quartz P/T gauges (same spec, same batch
|
|
16
|
+
preferred), one operated with the GEA-informed configuration and one as the
|
|
17
|
+
conventional reference, co-located at a fixed HPHT setpoint, will exhibit a
|
|
18
|
+
long-term drift-rate ratio
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
R = drift_conventional / drift_program = 1.0324 (at unity trims)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
equivalently a predicted separation rate of ~2.3 psi/yr at a 30,000-psi
|
|
25
|
+
full scale (the service-life module's number for these conditions). The
|
|
26
|
+
prediction is falsifiable in both directions: a measured R statistically
|
|
27
|
+
inconsistent with 1.0324 **refutes the composition at bench conditions**.
|
|
28
|
+
|
|
29
|
+
## 2. Apparatus
|
|
30
|
+
|
|
31
|
+
- 2× (minimum; 3+ pairs preferred for scatter) quartz P/T gauges,
|
|
32
|
+
177 °C / 30 kpsi class, from the same vendor lot.
|
|
33
|
+
- Temperature-controlled bath or HPHT vessel holding a setpoint in the
|
|
34
|
+
150 °C / 10,000 psi class (inside every rating — the rating_check rule
|
|
35
|
+
applies on the bench too).
|
|
36
|
+
- Reference pressure standard, 0.01 %-class (deadweight tester or
|
|
37
|
+
transfer standard), for baseline and periodic checks.
|
|
38
|
+
- Logging at ≥ 1 reading/day per gauge into the package's historian CSV
|
|
39
|
+
format (`time_s` + one raw pressure column per gauge).
|
|
40
|
+
|
|
41
|
+
## 3. Duration — the package's own rule applies
|
|
42
|
+
|
|
43
|
+
The reconciler refuses trend verdicts below its minimum span
|
|
44
|
+
(`ReconcilerConfig.min_trend_span_years`, the ≥18-day slope rule). The bench
|
|
45
|
+
protocol requires **≥ 90 days** at setpoint for slope confidence; 180+ days
|
|
46
|
+
preferred. The analysis tool enforces the 18-day floor mechanically and
|
|
47
|
+
reports `INSUFFICIENT_SPAN` below it — the bench cannot be rushed past the
|
|
48
|
+
product's own honesty rule.
|
|
49
|
+
|
|
50
|
+
## 4. Procedure
|
|
51
|
+
|
|
52
|
+
1. Baseline both gauges against the reference standard; record offsets.
|
|
53
|
+
2. Install co-located at the setpoint; log continuously.
|
|
54
|
+
3. Weekly: verify setpoint stability against the reference (do not adjust
|
|
55
|
+
the gauges under test).
|
|
56
|
+
4. Export each leg as a historian CSV; run
|
|
57
|
+
`python -m gea bench --program-csv A.csv --conv-csv B.csv`.
|
|
58
|
+
5. Repeat with roles swapped on a second pair (control for unit-to-unit
|
|
59
|
+
scatter — the piezo lesson: individual units scatter around class curves).
|
|
60
|
+
|
|
61
|
+
## 5. Analysis and verdict vocabulary
|
|
62
|
+
|
|
63
|
+
`bench.bench_analysis()` fits each leg's drift slope (OLS, psi/yr →
|
|
64
|
+
%FS/yr), propagates slope uncertainties into the ratio, and returns one of:
|
|
65
|
+
|
|
66
|
+
- `MEASURED_CONFIRMS` — R within its own propagated uncertainty of 1.0324.
|
|
67
|
+
- `MEASURED_REFUTES` — R inconsistent with 1.0324 (the uncertainty is small
|
|
68
|
+
enough to exclude it). **This is a valid and useful outcome** — the
|
|
69
|
+
composition is falsified at bench conditions and the label stays
|
|
70
|
+
DERIVED_HYBRID with the refutation on record.
|
|
71
|
+
- `INSUFFICIENT_SPAN` — under the 18-day floor: no verdict.
|
|
72
|
+
- `INSUFFICIENT_SNR` — the uncertainty band contains both 1.0324 and 1.0
|
|
73
|
+
(cannot distinguish suppression from no-suppression): no verdict, more
|
|
74
|
+
data required.
|
|
75
|
+
|
|
76
|
+
## 6. Outcome handling (labeling rules)
|
|
77
|
+
|
|
78
|
+
- **Confirmed:** `canonical_suppression()`'s label may move from
|
|
79
|
+
DERIVED_HYBRID to MEASURED_ON_BENCH **with the test ID, dates, apparatus
|
|
80
|
+
and per-pair results attached**. The composition's primitives are then a
|
|
81
|
+
measured-consistent model, not just a labeled one.
|
|
82
|
+
- **Refuted:** the label stays DERIVED_HYBRID; the refutation (conditions,
|
|
83
|
+
measured R, uncertainty) is recorded beside it. No silent retuning of
|
|
84
|
+
trims to fit the bench — a post-hoc trim fit would be a new calibration
|
|
85
|
+
claim, labeled as such, never a derivation.
|
|
86
|
+
- **Either way:** `U_i` remains loaded-but-unused in the drift formula until
|
|
87
|
+
a GEA derivation path for its role is supplied (Rule 10 — the framework
|
|
88
|
+
author provides the physics; the product does not invent it).
|
|
89
|
+
|
|
90
|
+
## 7. Analysis-tool verification (available today, and labeled)
|
|
91
|
+
|
|
92
|
+
The analysis tool is verified NOW against the simulator's own twin legs:
|
|
93
|
+
`bench --selftest` generates synthetic paired-leg data from the engine's
|
|
94
|
+
models and must return `MEASURED_CONFIRMS` at R ≈ 1.0324. **This is a
|
|
95
|
+
SIMULATION_SELF_TEST — it verifies the analysis arithmetic, not the
|
|
96
|
+
physics.** It proves the bench pipeline is ready; it proves nothing about
|
|
97
|
+
gauges. The acceptance suite runs it on every gate.
|
gea/IMPORT_RECORD.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Import record
|
|
2
|
+
|
|
3
|
+
Source: Star-Magic-Program @ c16090852e28f35f0fcb31cba6384da566016a61 (uqff_downhole_simulator 1.91.0)
|
|
4
|
+
Package version: 0.1.0
|
|
5
|
+
Imported: 2026-09-29T19:34:53Z
|
|
6
|
+
|
|
7
|
+
| source | destination | sha256 (first 16) |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| uqff_downhole_simulator/(native tools/native/cli.py) | gea/cli.py | 241ce978934b032d |
|
|
10
|
+
| uqff_downhole_simulator/(native tools/native/shell.py) | gea/shell.py | 93a3f0221b773ce3 |
|
|
11
|
+
| uqff_downhole_simulator/__init__.py | gea/__init__.py | 3d1fc4e3158ecb4a |
|
|
12
|
+
| uqff_downhole_simulator/__main__.py | gea/__main__.py | fb4ae045d738d9fc |
|
|
13
|
+
| uqff_downhole_simulator/acceptance_tests.py | gea/acceptance_tests.py | c0e6fed3acd5d73b |
|
|
14
|
+
| uqff_downhole_simulator/accuracy_statement.py | gea/accuracy_statement.py | 0f0c8f30c802ad4b |
|
|
15
|
+
| uqff_downhole_simulator/alarm_engine.py | gea/alarm_engine.py | 2ca983787ba42f36 |
|
|
16
|
+
| uqff_downhole_simulator/client_reports.py | gea/client_reports.py | 2ea70a4a6a48b8cb |
|
|
17
|
+
| uqff_downhole_simulator/config_versioning.py | gea/config_versioning.py | cda47534351d0dc5 |
|
|
18
|
+
| uqff_downhole_simulator/dashboard.py | gea/dashboard.py | b5f5ecf17b082ff0 |
|
|
19
|
+
| uqff_downhole_simulator/drift_monitor.py | gea/drift_monitor.py | e532a0832f682c5c |
|
|
20
|
+
| uqff_downhole_simulator/fat_sat.py | gea/fat_sat.py | 49bb8c484670ae22 |
|
|
21
|
+
| uqff_downhole_simulator/matplotlib_demo.py | gea/matplotlib_demo.py | b50f8912788c3983 |
|
|
22
|
+
| uqff_downhole_simulator/model_card.py | gea/model_card.py | 11a9e15f0a4e1620 |
|
|
23
|
+
| uqff_downhole_simulator/qt6_downhole_app.py | gea/qt6_downhole_app.py | 1cf384f7ce1290bd |
|
|
24
|
+
| uqff_downhole_simulator/sample_record.py | gea/sample_record.py | 70fd0b4e9174b181 |
|
|
25
|
+
| uqff_downhole_simulator/sbom.py | gea/sbom.py | ba68811dbadfb999 |
|
|
26
|
+
| uqff_downhole_simulator/sla_report.py | gea/sla_report.py | e8fab50b054230e8 |
|
|
27
|
+
| uqff_downhole_simulator/store_forward.py | gea/store_forward.py | 3b0e038eb73ab22a |
|
|
28
|
+
| uqff_downhole_simulator/uqff_bench.py | gea/bench.py | 41e3cb75983a8013 |
|
|
29
|
+
| uqff_downhole_simulator/uqff_blind_harness.py | gea/blind_harness.py | 571f78e21ca5fbce |
|
|
30
|
+
| uqff_downhole_simulator/uqff_case_study.py | gea/case_study.py | f480097a40dedd20 |
|
|
31
|
+
| uqff_downhole_simulator/uqff_correlation.py | gea/correlation.py | 0d889d9767f44d96 |
|
|
32
|
+
| uqff_downhole_simulator/uqff_deviation.py | gea/deviation.py | b32a25990e1632f9 |
|
|
33
|
+
| uqff_downhole_simulator/uqff_differentiator.py | gea/(dropped) | - |
|
|
34
|
+
| uqff_downhole_simulator/uqff_downhole_engine.py | gea/downhole_engine.py | c3b9a6804ef0aadf |
|
|
35
|
+
| uqff_downhole_simulator/uqff_earth_model.py | gea/earth_model.py | b5605e54474bc32a |
|
|
36
|
+
| uqff_downhole_simulator/uqff_follower.py | gea/follower.py | 69224480b838757d |
|
|
37
|
+
| uqff_downhole_simulator/uqff_forward_model.py | gea/forward_model.py | 0c4c9889c053a131 |
|
|
38
|
+
| uqff_downhole_simulator/uqff_gamma.py | gea/gamma.py | 15b379e3d713094e |
|
|
39
|
+
| uqff_downhole_simulator/uqff_gauge_specs.py | gea/gauge_specs.py | 44828b3a9d90cba4 |
|
|
40
|
+
| uqff_downhole_simulator/uqff_gravity_reference.py | gea/gravity_reference.py | 1d006c95b118d6bf |
|
|
41
|
+
| uqff_downhole_simulator/uqff_inverse_engine.py | gea/inverse_engine.py | ce29836c3417e533 |
|
|
42
|
+
| uqff_downhole_simulator/uqff_modbus.py | gea/modbus.py | 5ecb5da8cc2bd520 |
|
|
43
|
+
| uqff_downhole_simulator/uqff_operator_app.py | gea/operator_app.py | df307c7496c09fee |
|
|
44
|
+
| uqff_downhole_simulator/uqff_ports.py | gea/ports.py | 65ee6ac33199167c |
|
|
45
|
+
| uqff_downhole_simulator/uqff_profile_catalog.py | gea/profile_catalog.py | bd680cd96e9f62ae |
|
|
46
|
+
| uqff_downhole_simulator/uqff_project.py | gea/project.py | fe6e2ea2a94f39a9 |
|
|
47
|
+
| uqff_downhole_simulator/uqff_quartz_hpht_extension.py | gea/quartz_hpht_extension.py | 0b76f77babdddb1a |
|
|
48
|
+
| uqff_downhole_simulator/uqff_reconciler.py | gea/reconciler.py | db611a20061765f6 |
|
|
49
|
+
| uqff_downhole_simulator/uqff_rock_inventory.py | gea/rock_inventory.py | 98b6f74e290d0812 |
|
|
50
|
+
| uqff_downhole_simulator/uqff_segy.py | gea/segy.py | 98e1917515371b36 |
|
|
51
|
+
| uqff_downhole_simulator/uqff_service_life.py | gea/service_life.py | cbabcde1c6afe9e7 |
|
|
52
|
+
| uqff_downhole_simulator/uqff_strata_join.py | gea/strata_join.py | a5d9ecec62b255e0 |
|
|
53
|
+
| uqff_downhole_simulator/uqff_structural_ladder.py | gea/(dropped) | - |
|
|
54
|
+
| uqff_downhole_simulator/uqff_survey_cmd.py | gea/survey_cmd.py | d0937bea85ae703c |
|
|
55
|
+
| uqff_downhole_simulator/uqff_survey_view.py | gea/survey_view.py | 790fdec7cbb2205b |
|
|
56
|
+
| uqff_downhole_simulator/uqff_telemetry.py | gea/telemetry.py | 839bcd9e6d576fd8 |
|
|
57
|
+
| uqff_downhole_simulator/uqff_tool_library.py | gea/tool_library.py | 40bc90e7ad18dfe4 |
|
|
58
|
+
| uqff_downhole_simulator/uqff_well_assembler.py | gea/well_assembler.py | cc1e92fb6da52d5c |
|
|
59
|
+
| uqff_downhole_simulator/well_test_validation.py | gea/well_test_validation.py | 08ca4fa66a0333eb |
|
|
60
|
+
|
|
61
|
+
Transformations: corpus import removed from quartz_hpht_extension (constants labelled as settings); forward_model on CODATA 2018 G, standard gravity and the IUGG mean radius; rock_inventory on the published anchors and range midpoints only; structural_ladder and differentiator dropped; survey report without the structural-frame section; identifiers renamed (see tools/import_from_star_magic.py).
|
gea/__init__.py
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
+
"""gea — the GEA Downhole HPHT Quartz-Gauge Simulator.
|
|
5
|
+
|
|
6
|
+
The gea-program's first packaged industry-application module: a
|
|
7
|
+
deep-well (TD ~20,300 ft) six-gauge quartz P/T string with GEA-stabilized
|
|
8
|
+
drift, transient events, live animation (matplotlib / optional PyQt6), and
|
|
9
|
+
CSV export.
|
|
10
|
+
|
|
11
|
+
Provenance: ported 2026-08-22 (Daniel GO) from the 22Aug2026 Grok thread
|
|
12
|
+
template (grok_cce7a73b); canonical primitives locked, template tuning knobs
|
|
13
|
+
renamed to engineering trims per the knob ruling. See README.md and
|
|
14
|
+
PAPER_2256.
|
|
15
|
+
|
|
16
|
+
Quick use (headless):
|
|
17
|
+
from gea import DownholeEngine, SimulatorConfig
|
|
18
|
+
e = DownholeEngine()
|
|
19
|
+
for _ in range(100): e.step()
|
|
20
|
+
print(e.summary()); e.export_csv("run.csv")
|
|
21
|
+
|
|
22
|
+
Demos (need a display):
|
|
23
|
+
python -m gea.matplotlib_demo
|
|
24
|
+
python -m gea.qt6_downhole_app (pip install PyQt6)
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
from .quartz_hpht_extension import (
|
|
28
|
+
calculate_quartz_transducer_hpht_program,
|
|
29
|
+
canonical_suppression,
|
|
30
|
+
conventional_drift,
|
|
31
|
+
drift_comparison,
|
|
32
|
+
PROGRAM_MODEL_AVAILABLE,
|
|
33
|
+
)
|
|
34
|
+
from .downhole_engine import (
|
|
35
|
+
Sensor,
|
|
36
|
+
SimulatorConfig,
|
|
37
|
+
DownholeEngine,
|
|
38
|
+
WellProfile,
|
|
39
|
+
load_well_profile_csv,
|
|
40
|
+
make_sensor_string,
|
|
41
|
+
DEFAULT_TD_FT,
|
|
42
|
+
DEFAULT_SENSOR_DEPTHS_FT,
|
|
43
|
+
)
|
|
44
|
+
from .service_life import (
|
|
45
|
+
ServiceLifeConfig,
|
|
46
|
+
ServiceLifeSimulator,
|
|
47
|
+
)
|
|
48
|
+
from .telemetry import (
|
|
49
|
+
TelemetryConfig,
|
|
50
|
+
TelemetryRecorder,
|
|
51
|
+
)
|
|
52
|
+
from .case_study import (
|
|
53
|
+
CaseStudyConfig,
|
|
54
|
+
case_study,
|
|
55
|
+
depth_sweep,
|
|
56
|
+
write_markdown,
|
|
57
|
+
)
|
|
58
|
+
from .gauge_specs import (
|
|
59
|
+
GaugeSpec,
|
|
60
|
+
GAUGE_SPECS,
|
|
61
|
+
load_gauge_spec_json,
|
|
62
|
+
)
|
|
63
|
+
from .deviation import (
|
|
64
|
+
DeviationSurvey,
|
|
65
|
+
load_deviation_csv,
|
|
66
|
+
)
|
|
67
|
+
from .downhole_engine import run_batch
|
|
68
|
+
from .tool_library import (
|
|
69
|
+
ToolSpec,
|
|
70
|
+
TOOL_LIBRARY,
|
|
71
|
+
ToolString,
|
|
72
|
+
drift_model_for,
|
|
73
|
+
piezoresistive_drift,
|
|
74
|
+
rating_check,
|
|
75
|
+
)
|
|
76
|
+
from .ports import (
|
|
77
|
+
LiveStream,
|
|
78
|
+
StreamChannel,
|
|
79
|
+
PortSpec,
|
|
80
|
+
PORT_REGISTRY,
|
|
81
|
+
ingest,
|
|
82
|
+
read_historian_csv,
|
|
83
|
+
read_las,
|
|
84
|
+
register_port,
|
|
85
|
+
)
|
|
86
|
+
from .reconciler import (
|
|
87
|
+
Reconciler,
|
|
88
|
+
ReconcilerConfig,
|
|
89
|
+
auto_station_map,
|
|
90
|
+
)
|
|
91
|
+
from .follower import (
|
|
92
|
+
FollowerPoll,
|
|
93
|
+
HistorianFollower,
|
|
94
|
+
)
|
|
95
|
+
from .modbus import (
|
|
96
|
+
PYMODBUS_AVAILABLE,
|
|
97
|
+
RegisterMap,
|
|
98
|
+
load_register_map,
|
|
99
|
+
)
|
|
100
|
+
from .well_assembler import (
|
|
101
|
+
WellAssembly, WellComponent, assemble, assemble_ktb_hb, assemble_odp_504b,
|
|
102
|
+
assemble_site_1027, assemble_u1324, BUILTIN_ASSEMBLIES,
|
|
103
|
+
demo_config, production_live_stream,
|
|
104
|
+
)
|
|
105
|
+
from .gamma import (
|
|
106
|
+
find_gr_channels, shale_volume, formation_flags, gamma_report, gamma_entries,
|
|
107
|
+
)
|
|
108
|
+
from .bench import (
|
|
109
|
+
bench_analysis, bench_selftest,
|
|
110
|
+
)
|
|
111
|
+
from .operator_app import (
|
|
112
|
+
OperatorSession, launch_operator_app,
|
|
113
|
+
)
|
|
114
|
+
from .profile_catalog import (
|
|
115
|
+
CATALOG,
|
|
116
|
+
CatalogEntry,
|
|
117
|
+
PROFILE_SOURCES,
|
|
118
|
+
las_to_profile,
|
|
119
|
+
read_temperature_csv,
|
|
120
|
+
read_survey_csv,
|
|
121
|
+
read_core_csv,
|
|
122
|
+
read_production_csv,
|
|
123
|
+
read_ktb_dat,
|
|
124
|
+
read_ktb_table,
|
|
125
|
+
read_pangaea_txt,
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
__version__ = "0.1.0"
|
|
129
|
+
__all__ = [
|
|
130
|
+
"calculate_quartz_transducer_hpht_program", "canonical_suppression",
|
|
131
|
+
"conventional_drift", "drift_comparison",
|
|
132
|
+
"PROGRAM_MODEL_AVAILABLE", "Sensor", "SimulatorConfig", "DownholeEngine",
|
|
133
|
+
"WellProfile", "load_well_profile_csv", "make_sensor_string",
|
|
134
|
+
"ServiceLifeConfig", "ServiceLifeSimulator",
|
|
135
|
+
"TelemetryConfig", "TelemetryRecorder",
|
|
136
|
+
"CaseStudyConfig", "case_study", "depth_sweep", "write_markdown",
|
|
137
|
+
"GaugeSpec", "GAUGE_SPECS", "load_gauge_spec_json",
|
|
138
|
+
"DeviationSurvey", "load_deviation_csv", "run_batch",
|
|
139
|
+
"ToolSpec", "TOOL_LIBRARY", "ToolString", "drift_model_for",
|
|
140
|
+
"piezoresistive_drift", "rating_check",
|
|
141
|
+
"LiveStream", "StreamChannel", "PortSpec", "PORT_REGISTRY",
|
|
142
|
+
"ingest", "read_historian_csv", "read_las", "register_port",
|
|
143
|
+
"Reconciler", "ReconcilerConfig", "auto_station_map",
|
|
144
|
+
"FollowerPoll", "HistorianFollower",
|
|
145
|
+
"PYMODBUS_AVAILABLE", "RegisterMap", "load_register_map",
|
|
146
|
+
"CATALOG", "CatalogEntry", "PROFILE_SOURCES", "las_to_profile", "read_temperature_csv", "read_survey_csv", "read_core_csv", "read_production_csv", "read_ktb_dat", "read_ktb_table", "read_pangaea_txt",
|
|
147
|
+
"DEFAULT_TD_FT", "DEFAULT_SENSOR_DEPTHS_FT",
|
|
148
|
+
"strata_join",
|
|
149
|
+
"well_assembler", "gamma", "bench",
|
|
150
|
+
"operator_app", "acceptance_tests",
|
|
151
|
+
"reconcile_survey_tvd",
|
|
152
|
+
"earth_model",
|
|
153
|
+
"forward_model",
|
|
154
|
+
"inverse_engine",
|
|
155
|
+
"survey_view",
|
|
156
|
+
"correlation",
|
|
157
|
+
"blind_harness",
|
|
158
|
+
"segy",
|
|
159
|
+
"project",
|
|
160
|
+
]
|