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"
        )
Example #2
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 #3
0
        wl,
        src_tags[0],
        source_vector=src_dir,
        eps=vareps,
        gamma=gamma,
        delta=delta,
        rho=rho,
        absorption_zone=300 * U.m,
        absorption_cut=1e-2,
        lumping=True,
    )

    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",
Example #4
0
        V_P = V_P     * (1-m)  + v_P[l]  * m
        V_S = V_S     * (1-m)  + v_S[l]  * m
        Delta = Delta * (1-m)  + delta[l]* m
        Eps = Eps     * (1-m)  + eps[l]  * m
        Tilt = Tilt   * (1-m)  + tilt[l] * m
        Rho = Rho     * (1-m)  + rho[l]  * m
        z_top-=layers[l]

    sw=TTIWave(domain, V_P, V_S, 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.
    mkDir('output')
    n=0
    k_out=0
    print("calculation starts @ %s"%(time.asctime(),))
    while t < t_end:
            t,u = sw.update(t+sampling_interval)
            tracer_x.addRecord(srclog(u[0]))
    #
    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 #6
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.
Example #7
0
    #  print some info:
    #
    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.
    OUT_DIR="out%sm%smus"%(int(width_x/ne_x),int(sw.getTimeStepSize()*1000000))
    mkDir(OUT_DIR)
    n=0
    k=0
    timer1=time.time()
    while t < t_end:
        t,u = sw.update(t+sampling_interval)
Example #8
0
    #
    order = 5
    if DIM == 2:
       domain=Rectangle(order, ceil(ne_z*width_x/depth),ne_z,l0=width_x,l1=depth, 
            diracPoints=src_locations, diracTags=src_tags)
    else:
       domain=Brick(order, ceil(ne_z*width_x/depth),ceil(ne_z*width_y/depth),ne_z,l0=width_x,l1=width_y,l2=depth, 
            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")

    t=0.
    mkDir('tmp')
    n=0
    while t < t_end:
        t,p = sw.update(t+sampling_interval)
        tracerEW.addRecord(locEW(p))