Biot¶
sweep.equations.Biot ¶
Bases: sweep.equations.base.FirstOrderEquation
First-order 2-D Biot poroelastic wave equation on a staggered grid.
Velocity-stress-pressure form with the Darcy flux as the fluid unknown (Biot 1962), the
staggered scheme of Virieux (1986) as in Elastic, and an exact exponential update of the
stiff viscous coupling, so the time step is set by the inviscid fast P wave whatever the
permeability. Build the eight coefficient arrays from rock properties with
:func:biot_from_rock. Sources are typically an explosion in the total stress
(['sxx', 'szz']) or a fluid-pressure source (['p']); receivers read vx, vz,
p or the flux.
Models (constructor input order)
H(Pa): Undrained P-wave modulus lambda_u + 2 mu.mu(Pa): Shear modulus of the frame.C(Pa): Coupling modulus alpha M (Biot coefficient times Biot modulus).M(Pa): Biot modulus.rho(kg/m^3): Bulk density (1 - phi) rho_s + phi rho_f.rho_f(kg/m^3): Pore-fluid density.m(kg/m^3): Effective fluid inertia T rho_f / phi (tortuosity T).b(Pa s/m^2): Viscous coupling eta / kappa (fluid viscosity / permeability).
Wavefields
vx(aliases:velocity_x): Solid particle velocity, x; default receiver.vz(aliases:velocity_z): Solid particle velocity, z; default receiver.qx(aliases:darcy_flux_x): Darcy flux (fluid velocity relative to the solid), x.qz(aliases:darcy_flux_z): Darcy flux (fluid velocity relative to the solid), z.sxx(aliases:stress_xx): Total normal stress, x; default source.szz(aliases:stress_zz): Total normal stress, z; default source.sxz(aliases:stress_xz,shear_xz): Total shear stress.p(aliases:pressure,pore_pressure): Pore-fluid pressure.m_sxx_x: CPML memory for dsxx/dx (internal).m_sxz_z: CPML memory for dsxz/dz (internal).m_sxz_x: CPML memory for dsxz/dx (internal).m_szz_z: CPML memory for dszz/dz (internal).m_p_x: CPML memory for dp/dx (internal).m_p_z: CPML memory for dp/dz (internal).m_vx_x: CPML memory for dvx/dx (internal).m_vz_z: CPML memory for dvz/dz (internal).m_vx_z: CPML memory for dvx/dz (internal).m_vz_x: CPML memory for dvz/dx (internal).m_qx_x: CPML memory for dqx/dx (internal).m_qz_z: CPML memory for dqz/dz (internal).
Defaults
source_type:['sxx', 'szz']receiver_type:['vx', 'vz']pml_type:'cpmls'
Build the Biot operator.
Parameters:
-
spatial_order–FD accuracy order of the staggered first derivative (even).
-
device–device of the static derivative kernels.
-
backend–'torch'(the only backend for this equation).
supports_batched_models
class-attribute
¶
bool(x) -> bool
Returns True when the argument x is true, False otherwise. The builtins True and False are the only two instances of the class bool. The class bool is a subclass of the class int, and cannot be subclassed.
supports_boundary_saving_c
class-attribute
¶
bool(x) -> bool
Returns True when the argument x is true, False otherwise. The builtins True and False are the only two instances of the class bool. The class bool is a subclass of the class int, and cannot be subclassed.
supports_boundary_saving_eager
class-attribute
¶
bool(x) -> bool
Returns True when the argument x is true, False otherwise. The builtins True and False are the only two instances of the class bool. The class bool is a subclass of the class int, and cannot be subclassed.
sweep.equations.biot.biot_from_rock ¶
Biot's coefficients [H, mu, C, M, rho, rho_f, m, b] from rock and fluid properties.
k_s, rho_s: grain bulk modulus (Pa) and density; k_f, rho_f, eta: fluid
bulk modulus, density and viscosity (Pa s); k_d, mu: drained (dry-frame) bulk and
shear moduli; phi porosity; kappa permeability (m^2); tortuosity >= 1.
Arguments may be tensors (gradients flow through) or floats. Uses Gassmann's
alpha = 1 - k_d / k_s and 1/M = (alpha - phi)/k_s + phi/k_f.
sweep.equations.biot.biot_from_biot_constants ¶
Coefficients [H, mu, C, M, rho, rho_f, m, b] from Biot's P, Q, R, N, rho_ij and
damping b in the absolute-fluid-velocity form (e.g. Dai et al. 1995, Table 1).
R = phi^2 M, Q = phi (alpha - phi) M, P = K_d + 4N/3 + (alpha - phi)^2 M,
rho12 + rho22 = phi rho_f, rho22 = phi T rho_f; that damping multiplies
v_f - v = q / phi, so it is b / phi^2 here. In homogeneous media the two forms give
the same solid velocity and total stress; phi only rescales q and p.
sweep.equations.biot.biot_wave_velocities ¶
High-frequency (inviscid) fast-P, slow-P and S velocities of [H, mu, C, M, rho, rho_f, m, b].
Roots of (rho m - rho_f^2) V^4 - (H m + M rho - 2 C rho_f) V^2 + (H M - C^2) = 0 and
V_S^2 = mu / (rho - rho_f^2 / m).
sweep.equations.biot.biot_fast_p_velocity ¶
Largest fast-P velocity of the models; sets the explicit time step like vp does.