Plugin SeismicLab SeismicLabSmelt
Description |
---|
This plugin implements the seismic ground motion simulation method from the smelt project. Plugin version: 1.0 Last modified: 15/06/2024 LabRPS version: All Author: Koffi Daniel |
Author |
Koffi Daniel |
Download |
None |
Features |
Dabaghi and Der Kiureghian (2014, 2017, 2018), Vlachos et al (2018) |
Plugin Version |
1.0 |
Date last modified |
15/06/2024 |
LabRPS Version(s) |
All |
Default shortcut |
None |
See also |
None |
Introduction
This plugin implements the seismic ground motion simulation method from the smelt project. Note that this plugin generate only non-stationary ground motion. Therefore, you have to make sure your simulation is non-stationary. In python this can be done as follows:
# assume your simulation object is 'sim' sim.Stationarity = False
Vlachos et al 2018
This feature belongs to the simulation method group. This feature implements the seismic ground motion simulation method provided by the Smelt project which introduced a stochastic model for generating scenario specific ground motion time histories based on the paper: Vlachos C., Papakonstantinou K.G., & Deodatis G. (2018). Predictive model for site specific simulation of ground motions based on earthquake scenarios.
Properties
- DataMomentMagnitude: Moment magnitude of earthquake.
- DataRuptureDistance: Closest distance from the site to the fault rupture.
- DataShearVelocity30: Soil shear wave velocity averaged over top 30 meters.
- DataOrientation: Orientation of acceleration relative to global coordinates. Represents counter-clockwise angle away from x-axis rotating around z-axis in right-handed coordinate system.
- DataSimulationNumber: Number of simulated ground motion time histories that should be generated (number of different model parameter realizations).
- DataSpectraNumber: Number of evolutionary power spectra that should be generated.
- DataSeedNumber: Value to seed random variables to ensure repeatability.
- DataEventIndex: The index of the event whose time history should be shown.
- DataEventName: Name to assign to event.
Scripting
import LabRPS import SeismicLab import SeismicLabObjects from LabRPS import Vector as vec import time def simulate(): # Plugin installResuslt = SeismicLab.installPlugin("SeismicLabSmeltPlugin") if not installResuslt: LabRPS.Console.PrintError("The installation the SeismicLabSmeltPlugin has failed.\n") return None # Document doc = LabRPS.newDocument() # Simulation sim = SeismicLabObjects.makeSimulation(doc, "Simulation") if not sim: LabRPS.Console.PrintError("The simulation does not exist.\n") return None # Simulation method simMethod = SeismicLabObjects.makeFeature("SimulationMethod", "Simulation", "Dabaghi and Der Kiureghian (2014, 2017, 2018)", "Simulation Method") if not simMethod: LabRPS.Console.PrintError("Error on creating the simulation method.\n") return None # Run simulation and output the first(0) sample # store starting time begin = time.time() velocities = sim.simulate(0) # store end time end = time.time() LabRPS.Console.PrintMessage(f"Total runtime of the simulaltion is {end - begin} seconds\n") if LabRPS.GuiUp: import SeismicLabGui import GeneralToolsGui SeismicLabGui.setActiveSimulation(sim) GeneralToolsGui.GeneralToolsPyTool.showArray(sim.getSimulationData().numberOfTimeIncrements, sim.getSimulationData().numberOfSpatialPosition + 1, velocities, True) doc.recompute() simulate()
Dabaghi and Der Kiureghian
This feature belongs to the simulation method group. This feature implements the seismic ground motion simulation method provided by the Smelt project which introduced a stochastic model for simulating near-fault ground motions based on the following references: 1. Dabaghi and Der Kiureghian (2014 PEER report) Stochastic Modeling and Simulation of Near-Fault Ground Motions for Performance-Based Earthquake Engineering, 2. Dabaghi and Der Kiureghian (2017 EESD) Stochastic model for simulation of NF GMs, 3. Dabaghi and Der Kiureghian (2018 EESD) Simulation of orthogonal horizontal components of near-fault ground motion for specified EQ source and site characteristics.
Properties
- DataFaultingType: Type of faulting.
- DataSimulationType: Pulse-type of simulation.
- DataMomentMagnitude: Moment magnitude of earthquake.
- DataDephToRupture: Depth to the top of the rupture plane.
- DataRuptureDistance: Closest distance from the site to the fault rupture.
- DataShearVelocity30: Soil shear wave velocity averaged over top 30 meters.
- DataDirectivityParameter: Directivity parameter s or d --input the larger of the two.
- DataDirectivityAnge: Directivity ange parameter theta or phi --input corresponding value to s or d.
- DataSimulationNumber: Number of simulated ground motion time histories that should be generated (number of different model parameter realizations).
- DataRealizationNumber: Number of realizations of non-stationary, modulated, filtered white noise per set of model parameters.
- DataTruncate: Boolean indicating whether to truncate and baseline correct synthetic motion.
- DataSeedNumber: Value to seed random variables to ensure repeatability.
- DataEventIndex: The index of the event whose time history should be shown.
- DataEventName: Name to assign to event.
Scripting
import LabRPS import SeismicLab import SeismicLabObjects from LabRPS import Vector as vec import time def simulate(): # Plugin installResuslt = SeismicLab.installPlugin("SeismicLabSmeltPlugin") if not installResuslt: LabRPS.Console.PrintError("The installation the SeismicLabSmeltPlugin has failed.\n") return None # Document doc = LabRPS.newDocument() # Simulation sim = SeismicLabObjects.makeSimulation(doc, "Simulation") if not sim: LabRPS.Console.PrintError("The simulation does not exist.\n") return None # Simulation method simMethod = SeismicLabObjects.makeFeature("SimulationMethod", "Simulation", "Dabaghi and Der Kiureghian (2014, 2017, 2018)", "Simulation Method") if not simMethod: LabRPS.Console.PrintError("Error on creating the simulation method.\n") return None # Run simulation and output the first(0) sample # store starting time begin = time.time() velocities = sim.simulate(0) # store end time end = time.time() LabRPS.Console.PrintMessage(f"Total runtime of the simulaltion is {end - begin} seconds\n") if LabRPS.GuiUp: import SeismicLabGui import GeneralToolsGui SeismicLabGui.setActiveSimulation(sim) GeneralToolsGui.GeneralToolsPyTool.showArray(sim.getSimulationData().numberOfTimeIncrements, sim.getSimulationData().numberOfSpatialPosition + 1, velocities, True) doc.recompute() simulate()