Skip to content

ps.surfactant

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(*, 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