Beispiel #1
0
def make_rc_elastic(model_vp,model_vs,model_rho,ang):
    '''
    Computes angle-dependent reflectivities of an elastic model created with make_wedge + assign_el.
    Uses Aki-Richards approximation.

    INPUT
    model_vp: 2D numpy array containing Vp values
    model_vs: 2D numpy array containing Vs values
    model_rho: 2D numpy array containing density values
    ang: list with near, mid, far angle, e.g. ang=[5,20,40]

    OUTPUT
    rc_near: 2D numpy array containing near-stack reflectivities
    rc_mid: 2D numpy array containing mid-stack reflectivities
    rc_far: 2D numpy array containing far-stack reflectivities
    '''
    from agilegeo.avo import akirichards
    [n_samples, n_traces] = model_vp.shape
    rc_near=np.zeros((n_samples,n_traces))
    rc_mid=np.zeros((n_samples,n_traces))
    rc_far=np.zeros((n_samples,n_traces))
    uvp  = model_vp[:-1][:][:]
    lvp  = model_vp[1:][:][:]
    uvs  = model_vs[:-1][:][:]
    lvs  = model_vs[1:][:][:]
    urho = model_rho[:-1][:][:]
    lrho = model_rho[1:][:][:]
    rc_near=akirichards(uvp,uvs,urho,lvp,lvs,lrho,ang[0])
    rc_mid=akirichards(uvp,uvs,urho,lvp,lvs,lrho,ang[1])
    rc_far=akirichards(uvp,uvs,urho,lvp,lvs,lrho,ang[2])
    rc_near=np.concatenate((rc_near,np.zeros((1,n_traces))))  # add 1 row of zeros at the end
    rc_mid=np.concatenate((rc_mid,np.zeros((1,n_traces))))
    rc_far=np.concatenate((rc_far,np.zeros((1,n_traces))))
    return rc_near, rc_mid, rc_far
Beispiel #2
0
def make_rc_elastic(model_vp, model_vs, model_rho, ang):
    '''
    Computes angle-dependent reflectivities of an elastic model created with make_wedge + assign_el.
    Uses Aki-Richards approximation.

    INPUT
    model_vp: 2D numpy array containing Vp values
    model_vs: 2D numpy array containing Vs values
    model_rho: 2D numpy array containing density values
    ang: list with near, mid, far angle, e.g. ang=[5,20,40]

    OUTPUT
    rc_near: 2D numpy array containing near-stack reflectivities
    rc_mid: 2D numpy array containing mid-stack reflectivities
    rc_far: 2D numpy array containing far-stack reflectivities
    '''
    from agilegeo.avo import akirichards
    [n_samples, n_traces] = model_vp.shape
    rc_near = np.zeros((n_samples, n_traces))
    rc_mid = np.zeros((n_samples, n_traces))
    rc_far = np.zeros((n_samples, n_traces))
    uvp = model_vp[:-1][:][:]
    lvp = model_vp[1:][:][:]
    uvs = model_vs[:-1][:][:]
    lvs = model_vs[1:][:][:]
    urho = model_rho[:-1][:][:]
    lrho = model_rho[1:][:][:]
    rc_near = akirichards(uvp, uvs, urho, lvp, lvs, lrho, ang[0])
    rc_mid = akirichards(uvp, uvs, urho, lvp, lvs, lrho, ang[1])
    rc_far = akirichards(uvp, uvs, urho, lvp, lvs, lrho, ang[2])
    rc_near = np.concatenate((rc_near, np.zeros(
        (1, n_traces))))  # add 1 row of zeros at the end
    rc_mid = np.concatenate((rc_mid, np.zeros((1, n_traces))))
    rc_far = np.concatenate((rc_far, np.zeros((1, n_traces))))
    return rc_near, rc_mid, rc_far
Beispiel #3
0
    def test_akirichards(self):

        vp1 = 12250.
        vp2 = 11600.

        vs1 = 6200.
        vs2 = 6650.

        rho1 = 2.66
        rho2 = 2.34

        theta = 40.

        reflect = avo.akirichards(vp1, vs1, rho1, vp2, vs2, rho2, theta)

        self.assertAlmostEquals(reflect, -0.112236, places=3)
Beispiel #4
0
    def test_akirichards(self):
        
        vp1 = 12250.
        vp2 = 11600.

        vs1 = 6200.
        vs2 = 6650.

        rho1 = 2.66
        rho2 = 2.34

        theta = 40.


        reflect = avo.akirichards( vp1,vs1,rho1,vp2,vs2,rho2,theta )

        self.assertAlmostEquals( reflect, -0.112236, places=3 )
Beispiel #5
0
    def test_akirichards(self):

        vp1 = 12250.
        vp2 = 11600.

        vs1 = 6200.
        vs2 = 6650.

        rho1 = 2.66
        rho2 = 2.34

        theta = np.arange(45)

        reflect = avo.akirichards(vp1, vs1, rho1, vp2, vs2, rho2, theta)
        reflect_zoep = avo.zoeppritz(vp1, vs1, rho1, vp2, vs2, rho2, theta)

        # See if it is within .1 of zoep for < 45 deg
        test = np.allclose(reflect, reflect_zoep, rtol=self.tolerance)
        self.assertTrue(test)
Beispiel #6
0
def akirichards(Rp0, Rp1, theta1):
    reflection.akirichards(Rp0.vp, Rp0.vs, Rp0.rho, Rp1.vp, Rp1.vs, Rp1.rho, theta1)