ps.surfactant
ps.surfactant.Package
Section titled “ps.surfactant.Package”ps.surfactant.Package(*, viscosity: Viscosity) -> None
A surfactant flood’s physics: its viscosity table.
ps.surfactant.Package(viscosity=ps.surfactant.Viscosity(rows=[(0.0, 0.5), (1.0, 0.7)]))
builds, and no model holds it: ps.Model(physics=[...]) takes its type and refuses it with
a ps.ModelError (surfactant.flow.activation_unsupported), because OPM Flow lists the
surfactant activation cards (SURFACT, SURFACTW) as unsupported and stops the run on them.
Nothing writes its cards, and ps.load refuses them.
ps.surfactant.Viscosity
Section titled “ps.surfactant.Viscosity”ps.surfactant.Viscosity(*, rows) -> None
Surfactant viscosity: the water viscosity against the surfactant concentration.
ps.surfactant.Viscosity(rows=[(0.0, 0.5), (1.0, 0.7)]) raises the water viscosity from
0.5 to 0.7 as the surfactant concentration rises from 0 to 1.
rows hold a surfactant concentration and the water viscosity there, each in the model’s
units, the concentrations strictly increasing. It stands for the SURFVISC card, which nothing
writes and ps.load refuses. ps.surfactant.Package(viscosity=...) holds it, and no
model holds that package: ps.Model refuses one (surfactant.flow.activation_unsupported)
because OPM Flow lists SURFACT and SURFACTW as unsupported and stops the run on them.
Rows: (concentration, viscosity). State each row as a sequence in this order, or as a mapping by column name.
PetroScript is licensed under the Apache License 2.0. © 2026 Blauweiss EDV LLC. PetroScript by Blauweiss AI.For AI agents: llms.txt