Drift Demands (Hayward)

This example uses the quakeio package to parse a collection of ground motion records and calculate drift demands.

import quakeio
import quakeio.processing as spec
# file_name = "../dat/58658_007_20210426_10.09.54.P.zip"
file_name = "../dat/nc73654060_ce58658p.zip"
collection = quakeio.read(file_name, "csmip.zip")
# collection.motions.keys()
top = collection.at(key="bent_4_north_column_top")
bot = collection.at(key="bent_4_north_column_grnd_level")
spec.plot_grid(series=[top.tran.displ, bot.tran.displ], 
               label =["Structure",          "Ground"])

inches_to_cm = 2.54
height = 47.0*12.0 * inches_to_cm
relative_resp = (top - bot).slice(28.,60.)
# relative_resp is a QuakeMotion with long,tran,vert series
ax = relative_resp.long.displ.plot()
ax = relative_resp.tran.displ.plot(ax=ax)
ax = relative_resp.resultant().displ.plot(ax=ax)
resultant_drift  = relative_resp.resultant().displ["peak_value"]/height
transverse_drift = relative_resp.tran.displ["peak_value"]/height
5.7846756828653446e-05
-5.362784106773887e-05

for component in collection.components:
    spec.Spectrum(component, damping=[0.001, 0.01]).plot()

spec.TransferFunction((top.long,bot.long), damping=[0.001,0.01,0.05]).plot();

spec.Spectrum(bot.long, damping=[0.0, 0.01]).plot()
<AxesSubplot:title={'center':'Response spectrum (Chn. 12)'}, xlabel='Period, (sec.)'>

Back to top