ps.micp
ps.micp.Biology
Section titled “ps.micp.Biology”ps.micp.Biology(*, rows) -> None
MICP’s biological and chemical parameters, one row of thirteen per saturation region.
ps.micp.Biology(rows=[(35.0, 3.18e-07, 1.27e-05, 7.99e-04, 0.5, 0.5, 8.51e-07, 4.0e-06, 0.58, 21.3, 2.0e-05, 2710.0, 1.67)]) states one region’s thirteen parameters, in the column order
below.
Each row writes one record of BIOFPARA (PROPS), in region order, which ps.load reads
back. ps.micp.Package(biology=...) holds it, at physics/micp/biology. Flow reads the
columns, in the model’s units, as: the biofilm density (a density), the microbial death rate
and the maximum growth rate (each per time), the half-velocity constant for oxygen (a
concentration), the growth yield and the oxygen consumption factor (each a ratio without
unit), the attachment and detachment rates (per time), the detachment exponent (a number),
the maximum urea utilization rate (per time) in urea_saturation, the half-velocity
constant for urea (a concentration) in oxygen_half_saturation, the calcite density (a
density) and the urea-to-calcite yield (a ratio without unit, which may exceed 1).
Rows: (biofilm_density, death_rate, growth_rate, half_velocity, yield_growth, yield_oxygen, attachment_rate, detachment_rate, detachment_exponent, urea_saturation, oxygen_half_saturation, calcite_density, yield_urea_to_calcite). State each row as a sequence in this order, or as a mapping by column name.
ps.micp.Diffusion
Section titled “ps.micp.Diffusion”ps.micp.Diffusion(*, microbes: ScalarPropertyInput, oxygen: ScalarPropertyInput, urea: ScalarPropertyInput) -> None
MICP’s diffusion: the coefficient each species diffuses through the water by.
ps.micp.Diffusion(microbes=1.0e-9, oxygen=2.0e-9, urea=1.4e-9) gives each species its
diffusion coefficient in water.
Each is a diffusion coefficient (an area per time) in the model’s units. It writes one
record of DIFFMICP (PROPS), which ps.load reads back. ps.micp.Package(diffusion=...)
holds it, at physics/micp/diffusion.
ps.micp.InitialState
Section titled “ps.micp.InitialState”ps.micp.InitialState(*, microbes=None, oxygen=None, urea=None, biofilm=None, calcite=None) -> None
MICP’s initial state: the microbe, oxygen and urea concentrations, biofilm and calcite.
ps.micp.InitialState(microbes=0.0, oxygen=0.0, urea=0.0) starts every cell with none of the
three in its water.
Each field is one number, a value per layer or a value per cell, in the model’s units:
the three concentrations, and the biofilm and calcite as volume fractions. Each stated field
writes its SOLUTION card (SMICR, SOXYG, SUREA, SBIOF, SCALC), which ps.load reads back;
one at least is stated. ps.micp.Package(initial_state=...) holds it, at
physics/micp/initial_state.
ps.micp.Package
Section titled “ps.micp.Package”ps.micp.Package(*, permeability: PermeabilityFactor, biology: Biology, diffusion: Diffusion | None = None, initial_state: InitialState | None = None) -> None
Microbially induced calcite precipitation: the plugging, the biology, diffusion and state.
ps.micp.Package(permeability=factor, biology=biology) turns the MICP model on;
ps.Model(physics=[...]) holds it, at physics/micp.
It switches MICP on (MICP in RUNSPEC) and writes PERMFACT, BIOFPARA and DIFFMICP (PROPS) and
the initial state in SOLUTION; ps.load reads each back. A well injects microbes, oxygen
and urea with ps.wells.InjectedStream(well=..., microbe_concentration=..., oxygen_concentration=..., urea_concentration=...), the stream’s MICP card. The model refuses
the package without a water phase (micp.phase.water_required).
ps.micp.PermeabilityFactor
Section titled “ps.micp.PermeabilityFactor”ps.micp.PermeabilityFactor(*, rows) -> None
MICP plugging: the permeability left against the porosity calcite and biofilm leave.
ps.micp.PermeabilityFactor(rows=[(0.5, 0.1), (1.0, 1.0)]) leaves a tenth of the permeability
where calcite and biofilm have taken half the porosity.
Each row is a porosity factor (the porosity left over the initial porosity) and the
permeability factor there (the permeability over the initial permeability), both fractions,
the porosity factors strictly rising. It writes PERMFACT (PROPS), one table every saturation
region reads, which ps.load reads back. ps.micp.Package(permeability=...) holds it,
at physics/micp/permeability.
Rows: (porosity_factor, permeability_factor). 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