Esempio n. 1
0
def init(store_dir, variant):
    assert variant is None

    modelling_code_id = 'ahfullgreen'

    ahfull = AhfullgreenConfig()
    ahfull.time_region = (gf.Timing('begin-2'), gf.Timing('end+2'))

    ahfull.cut = (gf.Timing('begin-2'), gf.Timing('end+2'))

    store_id = os.path.basename(os.path.realpath(store_dir))

    config = gf.meta.ConfigTypeA(id=store_id,
                                 ncomponents=10,
                                 sample_rate=20.,
                                 receiver_depth=0 * km,
                                 source_depth_min=1 * km,
                                 source_depth_max=10 * km,
                                 source_depth_delta=1 * km,
                                 distance_min=1 * km,
                                 distance_max=20 * km,
                                 distance_delta=1 * km,
                                 earthmodel_1d=example_model(),
                                 modelling_code_id=modelling_code_id,
                                 tabulated_phases=[
                                     gf.meta.TPDef(id='begin', definition='p'),
                                     gf.meta.TPDef(id='end', definition='s'),
                                     gf.meta.TPDef(id='p', definition='p'),
                                     gf.meta.TPDef(id='s', definition='s')
                                 ])

    config.validate()
    return gf.store.Store.create_editables(store_dir,
                                           config=config,
                                           extra={'ahfullgreen': ahfull})
Esempio n. 2
0
def init(store_dir, variant):
    if variant is None:
        variant = '2010beta'

    if ('qssp.' + variant) not in program_bins:
        raise gf.store.StoreError('unsupported qssp variant: %s' % variant)

    qssp = QSSPConfig(qssp_version=variant)
    qssp.time_region = (
        gf.Timing('begin-50'),
        gf.Timing('end+100'))

    qssp.cut = (
        gf.Timing('begin-50'),
        gf.Timing('end+100'))

    store_id = os.path.basename(os.path.realpath(store_dir))

    config = gf.meta.ConfigTypeA(
        id=store_id,
        ncomponents=10,
        sample_rate=0.2,
        receiver_depth=0*km,
        source_depth_min=10*km,
        source_depth_max=20*km,
        source_depth_delta=10*km,
        distance_min=100*km,
        distance_max=1000*km,
        distance_delta=10*km,
        earthmodel_1d=cake.load_model(),
        modelling_code_id='qssp',
        tabulated_phases=[
            gf.meta.TPDef(
                id='begin',
                definition='p,P,p\\,P\\,Pv_(cmb)p'),
            gf.meta.TPDef(
                id='end',
                definition='2.5'),
            gf.meta.TPDef(
                id='P',
                definition='!P'),
            gf.meta.TPDef(
                id='S',
                definition='!S'),
            gf.meta.TPDef(
                id='p',
                definition='!p'),
            gf.meta.TPDef(
                id='s',
                definition='!s')])

    config.validate()
    return gf.store.Store.create_editables(
        store_dir,
        config=config,
        extra={'qssp': qssp})
Esempio n. 3
0
class AhfullgreenConfig(Object):

    time_region = Tuple.T(2,
                          gf.Timing.T(),
                          default=(gf.Timing('-10'), gf.Timing('+890')))

    cut = Tuple.T(2, gf.Timing.T(), optional=True)
    fade = Tuple.T(4, gf.Timing.T(), optional=True)

    def items(self):
        return dict(self.T.inamevals(self))
Esempio n. 4
0
class QSSPConfig(Object):
    qssp_version = String.T(default='2010beta')
    time_region = Tuple.T(2, gf.Timing.T(), default=(
        gf.Timing('-10'), gf.Timing('+890')))

    frequency_max = Float.T(optional=True)
    slowness_max = Float.T(default=0.4)
    antialiasing_factor = Float.T(default=0.1)

    # only available in 2017:
    switch_turning_point_filter = Int.T(default=0)
    max_pene_d1 = Float.T(default=2891.5)
    max_pene_d2 = Float.T(default=6371.0)
    earth_radius = Float.T(default=6371.0)
    switch_free_surf_reflection = Int.T(default=1)

    lowpass_order = Int.T(default=0, optional=True)
    lowpass_corner = Float.T(default=1.0, optional=True)

    bandpass_order = Int.T(default=0, optional=True)
    bandpass_corner_low = Float.T(default=1.0, optional=True)
    bandpass_corner_high = Float.T(default=1.0, optional=True)

    output_slowness_min = Float.T(default=0.0, optional=True)
    output_slowness_max = Float.T(optional=True)

    spheroidal_modes = Bool.T(default=True)
    toroidal_modes = Bool.T(default=True)

    # only available in 2010beta:
    cutoff_harmonic_degree_sd = Int.T(optional=True, default=0)

    cutoff_harmonic_degree_min = Int.T(default=0)
    cutoff_harmonic_degree_max = Int.T(default=25000)

    crit_frequency_sge = Float.T(default=0.0)
    crit_harmonic_degree_sge = Int.T(default=0)

    include_physical_dispersion = Bool.T(default=False)

    source_patch_radius = Float.T(default=0.0)

    cut = Tuple.T(2, gf.Timing.T(), optional=True)

    fade = Tuple.T(4, gf.Timing.T(), optional=True)
    relevel_with_fade_in = Bool.T(default=False)
    nonzero_fade_in = Bool.T(default=False)
    nonzero_fade_out = Bool.T(default=False)

    def items(self):
        return dict(self.T.inamevals(self))
Esempio n. 5
0
    def test_timing_defs(self):

        for s, d in [
            ('100.0', dict(offset=100)),
            ('cake: P ', dict(offset=0.0, phases=['cake:P'])),
            ('iaspei: Pdiff', dict(phases=['iaspei:Pdiff'])),
            ('{iaspei: Pdiff}-50', dict(phases=['iaspei:Pdiff'], offset=-50.)),
            ('{cake: P | iaspei: Pdiff}-10',
             dict(offset=-10., phases=['cake:P', 'iaspei:Pdiff'])),
            ('first{cake: p | cake: P}',
             dict(phases=['cake:p', 'cake:P'], select='first')),
            ('first(p|P)-10',
             dict(phases=['stored:p', 'stored:P'], select='first',
                  offset=-10.)),
            ('{stored:begin}-50', dict(phases=['stored:begin'], offset=-50.))
        ]:
            t = gf.Timing(s)

            if 'phases' in d:
                for a, b in zip(d['phases'], t.phase_defs):
                    self.assertEqual(a, b)

            if 'offset' in d:
                self.assertTrue(numeq(d['offset'], t.offset, 0.001))

            if 'select' in d:
                self.assertEqual(d['select'], t.select)
Esempio n. 6
0
    return num.array(data, dtype=num.float)


if __name__ == '__main__':
    engine = gf.get_engine()
    store_id = 'crust2_m5_hardtop_8Hz_fine'
    magnitude_min, magnitude_max = 3., 7.
    moment_tensor = None  # random DC
    # moment_tensor = pmt.MomentTensor.from_values([strike, dip, rake])
    stress_drop_min, stress_drop_max = 1.0e6, 10.0e6
    rupture_velocity_min, rupture_velocity_max = 2500.*0.9, 3600.*0.9
    depth_min, depth_max = 1.*km, 30.*km
    distance_min, distance_max = 100*km, 100*km

    measure_ML = wmeasure.AmplitudeMeasure(
        timing_tmin=gf.Timing('vel:8'),
        timing_tmax=gf.Timing('vel:2'),
        fmin=None,
        fmax=None,
        response=wmeasure.response_wa,
        components=['N', 'E'],
        quantity='velocity',
        maximum_method='peak_component')

    data = model(
        engine, store_id,
        magnitude_min, magnitude_max,
        moment_tensor,
        stress_drop_min, stress_drop_max,
        rupture_velocity_min, rupture_velocity_max,
        depth_min, depth_max,
Esempio n. 7
0
def init(store_dir, variant, config_params=None):
    if variant is None:
        variant = '2010beta'

    if ('qssp.' + variant) not in program_bins:
        raise gf.store.StoreError('unsupported qssp variant: %s' % variant)

    qssp = QSSPConfig(qssp_version=variant)
    if variant != 'ppeg2017':
        qssp.time_region = (
            gf.Timing('begin-50'),
            gf.Timing('end+100'))

        qssp.cut = (
            gf.Timing('begin-50'),
            gf.Timing('end+100'))

    else:  # variant == 'ppeg2017':
        qssp.frequency_max = 0.5
        qssp.time_region = [
            gf.Timing('-100'), gf.Timing('{stored:begin}+100')]
        qssp.cut = [
            gf.Timing('-100'), gf.Timing('{stored:begin}+100')]
        qssp.antialiasing_factor = 1.0e-10
        qssp.toroidal_modes = False
        qssp.cutoff_harmonic_degree_min = 2500
        qssp.cutoff_harmonic_degree_max = 2500
        qssp.crit_frequency_sge = 5.0
        qssp.crit_harmonic_degree_sge = 50000
        qssp.source_patch_radius = 10.0
        qssp.bandpass_order = 6
        qssp.bandpass_corner_low = 0.0
        qssp.bandpass_corner_high = 0.125

    store_id = os.path.basename(os.path.realpath(store_dir))
    if variant == 'ppeg2017':
        quantity = 'acceleration'
    else:
        quantity = None

    if variant == 'ppeg2017':
        sample_rate = 4.0
    else:
        sample_rate = 0.2

    d = dict(
        id=store_id,
        ncomponents=10,
        component_scheme='elastic10',
        stored_quantity=quantity,
        sample_rate=sample_rate,
        receiver_depth=0*km,
        source_depth_min=10*km,
        source_depth_max=20*km,
        source_depth_delta=10*km,
        distance_min=100*km,
        distance_max=1000*km,
        distance_delta=10*km,
        earthmodel_1d=cake.load_model(),
        modelling_code_id='qssp',
        tabulated_phases=[
            gf.meta.TPDef(
                id='begin',
                definition='p,P,p\\,P\\,Pv_(cmb)p'),
            gf.meta.TPDef(
                id='end',
                definition='2.5'),
            gf.meta.TPDef(
                id='P',
                definition='!P'),
            gf.meta.TPDef(
                id='S',
                definition='!S'),
            gf.meta.TPDef(
                id='p',
                definition='!p'),
            gf.meta.TPDef(
                id='s',
                definition='!s')])

    if config_params is not None:
        d.update(config_params)

    config = gf.meta.ConfigTypeA(**d)

    config.validate()
    return gf.store.Store.create_editables(
        store_dir,
        config=config,
        extra={'qssp': qssp})