diracPoints=src_locations,
                       diracTags=src_tags)
    wl = Ricker(frq)
    m = whereNegative(Function(domain).getX()[DIM - 1] - reflector_at)
    v_p = v_p_bottom * m + v_p_top * (1 - m)

    sw = SonicWave(domain,
                   v_p,
                   source_tag=src_tags[0],
                   wavelet=wl,
                   absorption_zone=absorption_zone,
                   lumping=True)

    locEW = Locator(domain, rcvEW_locations)
    tracerEW = SimpleSEGYWriter(receiver_group=rgEW,
                                source=src_loc_2D,
                                sampling_interval=sampling_interval)
    if DIM == 3:
        locNS = Locator(domain, rcvNS_locations)
        tracerNS = SimpleSEGYWriter(receiver_group=rgNS,
                                    source=src_loc_2D,
                                    sampling_interval=sampling_interval)

    if not tracerEW.obspy_available():
        print(
            "\nWARNING: obspy not available, SEGY files will not be written\n")
    elif getMPISizeWorld() > 1:
        print(
            "\nWARNING: SEGY files cannot be written with multiple processes\n"
        )
    #
    print("ne_x = ", ne_x)
    print("ne_z = ", ne_z)
    print("h_x = ", width_x / ne_x)
    print("h_z = ", depth / ne_z)
    print("dt = ", sw.getTimeStepSize() * 1000, "msec")
    print("width_x = ", width_x)
    print("depth = ", depth)
    print("number receivers = ", numRcvPerLine)
    print("receiver spacing = ", receiver_line[1] - receiver_line[0])
    print("sampling time = ", sampling_interval * 1000, "msec")
    print("source @ ", src_locations[0])
    #
    loc = Locator(domain, rcv_locations)
    tracerP = SimpleSEGYWriter(receiver_group=rg,
                               source=src_loc_2D,
                               sampling_interval=sampling_interval,
                               text='P')
    tracerQ = SimpleSEGYWriter(receiver_group=rg,
                               source=src_loc_2D,
                               sampling_interval=sampling_interval,
                               text='Q')

    if not tracerP.obspy_available():
        print(
            "\nWARNING: obspy not available, SEGY files will not be written\n")
    elif getMPISizeWorld() > 1:
        print(
            "\nWARNING: SEGY files cannot be written with multiple processes\n"
        )

    t = 0.
Example #3
0
                       ne_z,
                       l0=width_x,
                       l1=width_y,
                       l2=(-depth, 0),
                       diracPoints=src_locations,
                       diracTags=src_tags)
        q = wherePositive(
            #suppress the x-component on the x boundary
            whereZero(domain.getX()[0]) * [1, 0, 0] +  #logical or
            #suppress the y-component on the y boundary at the source
            whereZero(domain.getX()[1]) * [0, 1, 0])

    # set up reciever locations
    locEW = Locator(domain, rcvEW_locations)
    tracerEW_x = SimpleSEGYWriter(receiver_group=rgEW,
                                  source=src_loc_2D,
                                  sampling_interval=sampling_interval,
                                  text='x-displacement - east-west line')
    tracerEW_z = SimpleSEGYWriter(receiver_group=rgEW,
                                  source=src_loc_2D,
                                  sampling_interval=sampling_interval,
                                  text='z-displacement - east-west line')
    if DIM == 3:
        locNS = Locator(domain, rcvNS_locations)
        tracerEW_y = SimpleSEGYWriter(receiver_group=rgEW,
                                      source=src_loc_2D,
                                      sampling_interval=sampling_interval,
                                      text='x-displacement - east-west line')
        tracerNS_x = SimpleSEGYWriter(receiver_group=rgNS,
                                      source=src_loc_2D,
                                      sampling_interval=sampling_interval,
                                      text='x-displacement - north-south line')
Example #4
0
                 wl,
                 src_tags[0],
                 source_vector=src_dir,
                 eps=Eps,
                 delta=Delta,
                 rho=Rho,
                 theta=Tilt,
                 absorption_zone=absorption_zone,
                 absorption_cut=1e-2,
                 lumping=lumping)

    srclog = Locator(domain, [(r, depth) for r in receiver_line])
    grploc = [(x[0], 0.) for x in srclog.getX()]

    tracer_x = SimpleSEGYWriter(receiver_group=grploc,
                                source=srcloc,
                                sampling_interval=sampling_interval,
                                text='x-displacement')
    tracer_z = SimpleSEGYWriter(receiver_group=grploc,
                                source=srcloc,
                                sampling_interval=sampling_interval,
                                text='z-displacement')

    if not tracer_x.obspy_available():
        print(
            "\nWARNING: obspy not available, SEGY files will not be written\n")
    elif getMPISizeWorld() > 1:
        print(
            "\nWARNING: SEGY files cannot be written with multiple processes\n"
        )

    t = 0.