Install
$ agentstack add skill-equinor-neqsim-community-skills-teg-dehydration-modeling ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
TEG Dehydration Modeling
Use this skill to build a complete, converging triethylene-glycol (TEG) gas dehydration plant in NeqSim. It captures a validated flowsheet topology and the non-obvious settings (CPA fluid setup, regeneration-column tolerances, recycle priorities, condenser/preheat energy coupling, makeup calculator) needed for the process to solve as a closed loop. It returns a ProcessSystem plus the key streams an agent needs for water dew point, lean-TEG purity, and still-vent emission classification.
This is a real NeqSim build, not a public correlation placeholder. For a quick "is dehydration required?" triage without building a plant, use neqsim-water-dewpoint-dehydration-screening instead.
When to Use
- When a user asks to model a TEG dehydration unit and read water dew point, lean
TEG purity, or regeneration still-vent emissions.
- When an agent needs a runnable TEG flowsheet to study stripping gas, reboiler
temperature, TEG circulation rate, or once-through vs recirculated stripping gas.
- When emissions (NMVOC, methane, benzene, CO2, water) from the regeneration
still vent must be quantified and classified for an environmental screening.
Inputs
The build_teg_plant(...) function is fully parameterized. Key inputs:
feed_fractions: list of mole fractions (or percentages) aligned with
GAS_COMPONENTS (nitrogen, CO2, methane, ... , benzene).
feed_flow_MSm3_day: wet/dry feed gas flow rate in MSm3/day.feed_temp_C,feed_pressure_bara: feed gas conditions.absorber_pressure_bara,absorber_temp_C: contactor conditions.teg_flow_kg_hr,teg_feed_temp_C,lean_teg_purity: lean TEG circulation.flash_drum_pressure_bara,reboiler_temp_C,stripping_gas_Sm3_hr:
regeneration conditions.
n_absorber_stages,stage_efficiency: absorber model resolution.water_mode:'saturated'(water-saturate the feed) or'specified'
(set an inlet water content in mol-ppm via water_content_ppm_mol).
saturation_temp_C,saturation_pressure_bara: optional saturation TP setter.recirculate_stripping_gas:Truebuilds a true closed-loop stripping-gas
recycle (split dried overhead, blower, heater) to cut still-vent emissions.
Outputs
build_teg_plant(...) returns (process, streams):
process: a NeqSimProcessSystemready to run.streams: a dict of handles —dehydratedGas,flashGas,stillVent,
leanTEGtoAbs, waterDewAnalyser, strippingGas, recircBlower.
Helper functions produce the engineering results:
comp_mass_flows_kg_hr(stream): per-component mass flow (kg/hr).teg_mass_fraction(stream): TEG weight percent of a stream.classify_emissions(stream): dict withNMVOC,methane,CO2,water,
TEG, benzene, and total mass flows (kg/hr).
Engineering Method
The flowsheet follows the standard TEG dehydration topology:
- Fluid —
SystemSrkCPAstatoil(CPA EOS) withsetMixingRule(10)and
setMultiPhaseCheck(False). TEG is added last so the lean-TEG composition maps to leanComp[-1] = lean_teg_purity and leanComp[-2] = 1 - lean_teg_purity.
- Feed conditioning — optional saturation TP setter +
StreamSaturatorUtil
(saturated mode) or an inlet water component (specified mode), then a heater to absorber TP.
- Absorber —
SimpleTEGAbsorberwith gas-in and lean-TEG solvent-in streams. - Rich TEG let-down and pre-heat — HP flash valve, rich preheater,
lean/rich exchangers (HeatExchanger with UA values), degassing separator, fine filter, LP flash valve.
- Regeneration —
DistillationColumn(reboiler + condenser) with **loosened
tolerances** (temperature 5e-2, mass 2e-1, enthalpy 2e-1) so the glycol/water split converges; stripping gas fed to the reboiler tray; WaterStripperColumn for deep lean-TEG purity.
- Recycles — lean-TEG recycle (priority 200,
setDownstreamProperty('flow rate'))
closes the solvent loop; the internal stripping-gas recycle returns stripper overhead to the reboiler. With recirculate_stripping_gas=True, a second makeup recycle (priority 150) recirculates dried overhead as stripping gas.
- Makeup and energy coupling — a
Calculatorsizes TEG makeup from TEG lost
in the dry gas, flash gas, still vent, and water draws; the rich preheater is driven by the condenser energy stream: richPreheat.setEnergyStream(column.getCondenser().getEnergyStream()).
- Run —
process.runAsThread()thenthr.join(...)(worker thread avoids
blocking and tolerates the recycle iterations).
Python Usage Pattern
from teg_dehydration_modeling import (
DEFAULT_FEED,
build_teg_plant,
classify_emissions,
teg_mass_fraction,
)
process, streams = build_teg_plant(
feed_fractions=DEFAULT_FEED,
feed_flow_MSm3_day=4.65,
feed_temp_C=25.0,
feed_pressure_bara=70.0,
absorber_pressure_bara=85.0,
absorber_temp_C=35.0,
teg_flow_kg_hr=5500.0,
teg_feed_temp_C=48.5,
lean_teg_purity=0.97,
flash_drum_pressure_bara=4.8,
reboiler_temp_C=197.5,
stripping_gas_Sm3_hr=180.0,
n_absorber_stages=4,
stage_efficiency=0.7,
)
thr = process.runAsThread()
thr.join(300000) # ~15 s once-through, ~40 s with stripping-gas recirculation
water_dew_C = float(streams["waterDewAnalyser"].getMeasuredValue("C"))
lean_teg_wt = teg_mass_fraction(streams["leanTEGtoAbs"])
still_vent = classify_emissions(streams["stillVent"])
print(water_dew_C, lean_teg_wt, still_vent["NMVOC"])
Validation Checklist
- [ ] Water dew point of the dry gas is well below 0 C at the reference pressure.
- [ ] Lean TEG purity is above 90 wt% (typically 97-99 wt% with stripping gas).
- [ ] Still-vent NMVOC and methane mass flows are finite and non-negative.
- [ ] With
recirculate_stripping_gas=True, still-vent NMVOC and methane do not
increase versus the once-through case.
- [ ] The process is run on a worker thread and the join timeout is large enough
for the recycles to converge.
- [ ] Example inputs are public and synthetic.
Common Mistakes
| Symptom | Cause | Fix | | --- | --- | --- | | Regeneration column will not converge | Default tolerances too tight for glycol/water split | Loosen setTemperatureTolerance(5e-2), setMassBalanceTolerance(2e-1), setEnthalpyBalanceTolerance(2e-1) | | Lean TEG purity wrong / NaN | TEG not added last, or composition indices off | Add water then TEG last; set leanComp[-1]=purity, leanComp[-2]=1-purity | | Lean-TEG loop never closes | Recycle priority/property not set | Lean TEG recycle priority 200 with setDownstreamProperty('flow rate') | | Class not found | Wrong CPA class name | Use SystemSrkCPAstatoil (lowercase statoil) | | Run blocks or stalls | Running inline instead of on a thread | Use process.runAsThread() + thr.join(timeout_ms) | | TEG inventory drifts | No makeup | Add the Calculator makeup sized from TEG in dry gas, flash gas, still vent, water draws | | Water balance looks ~1-2% open | Only counting still vent + regen water draw | Water removed from the gas leaves via still vent + regen water/HC draw + degassing flash gas; include the flash-gas water term and closure tightens to <0.1% |
Limitations
- Inputs and examples are public and synthetic; no proprietary plant data,
vendor glycol packages, or company emission factors are included.
- Emission classification is a component-bucketing of stream mass flows
(NMVOC/methane/benzene/CO2/water); it is not a regulatory emission inventory.
- The absorber uses
SimpleTEGAbsorberwith stage efficiency, not a rate-based
contactor model; deep dew-point design needs validated review.
- Convergence depends on reasonable inputs; extreme TEG rates, stripping gas, or
reboiler temperatures may require tolerance or guess-temperature tuning.
Related NeqSim Functionality
neqsim.thermo.system.SystemSrkCPAstatoil— CPA equation of state for
glycol/water/hydrocarbon systems (reached via from neqsim import jneqsim).
neqsim.process.equipment.absorber.SimpleTEGAbsorber,
neqsim.process.equipment.absorber.WaterStripperColumn — TEG contactor and stripper.
neqsim.process.equipment.distillation.DistillationColumn— TEG regeneration column.neqsim.process.equipment.util.Recycle,Calculator— solvent/stripping-gas
recycles and TEG makeup sizing.
neqsim.process.measurementdevice.WaterDewPointAnalyser— dry-gas water dew point.- For a screening-only water-content triage before building a plant, use the
neqsim-water-dewpoint-dehydration-screening community skill.
References
- NeqSim repository: https://github.com/equinor/neqsim
- NeqSim TEG dehydration emissions notebook:
https://github.com/equinor/neqsim/blob/master/examples/notebooks/tegdehydrationemissions.ipynb
- NeqSim Skills Guide:
https://github.com/equinor/neqsim/blob/master/docs/integration/skills_guide.md
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: equinor
- Source: equinor/neqsim-community-skills
- License: Apache-2.0
- Homepage: https://equinor.github.io/neqsimhome/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.