Source code for pygeopressure.pressure.eaton_seis
# -*- coding: utf-8 -*-
"""
Routines for eaton seismic pressure prediction
Created on Sep 24 2018
"""
from __future__ import (absolute_import, division, print_function,
unicode_literals)
__author__ = "yuhao"
import numpy as np
from pygeopressure.basic.indexes import InlineIndex
from pygeopressure.basic.optimizer import optimize_nct_trace
from pygeopressure.velocity.extrapolate import normal
from pygeopressure.pressure.hydrostatic import hydrostatic_trace
from pygeopressure.pressure.utils import create_seis, create_seis_info
from pygeopressure.pressure.eaton import sigma_eaton
[docs]def eaton_seis(output_name, obp_cube, vel_cube, n,
a=None, b=None, upper=None, lower=None):
# create seismic object
eaton_cube = create_seis(output_name, vel_cube)
# create info file
create_seis_info(eaton_cube, output_name)
depth = np.array(list(vel_cube.depths()))
hydrostatic = hydrostatic_trace(depth)
hydro_inline = np.tile(hydrostatic, (vel_cube.nNorth, 1))
# actual calcualtion
for inl in vel_cube.inlines():
obp_data_inline = obp_cube.data(InlineIndex(inl))
vel_data_inline = vel_cube.data(InlineIndex(inl))
vn_inline = np.zeros((vel_cube.nNorth, vel_cube.nDepth))
for i, crl in enumerate(vel_cube.crlines()):
cdp = (inl, crl)
start_depth = upper.get_cdp(cdp)
end_depth = lower.get_cdp(cdp)
a, b = optimize_nct_trace(
depth, vel_data_inline[i], start_depth, end_depth)
vn_inline[i] = normal(depth, a, b)
eaton_inline = obp_data_inline - \
sigma_eaton(
obp_data_inline-hydro_inline, vel_data_inline/vn_inline, n)
eaton_cube.update(InlineIndex(inl), eaton_inline)
return eaton_cube