def get_gmrotd50(fle): """ Retrieve GMRotD50 from file (or calculate if not present) :param fle: Instance of :class: h5py.File """ periods = fle["IMS/X/Spectra/Response/Periods"].value periods = periods[periods > 0.] if not "H" in fle["IMS"].keys(): # Horizontal spectra not in record x_acc = ["Time Series/X/Original Record/Acceleration"] y_acc = ["Time Series/Y/Original Record/Acceleration"] sa_gmrotd50 = ims.gmrotdpp(x_acc.value, x_acc.attrs["Time-step"], y_acc.value, y_acc.attrs["Time-step"], periods, 50.0)[0] else: if "GMRotD50" in fle["IMS/H/Spectra/Response/Acceleration"].keys(): sa_gmrotd50 =fle[ "IMS/H/Spectra/Response/Acceleration/GMRotD50/damping_05" ].value else: # Horizontal spectra not in record - calculate from time series x_acc = ["Time Series/X/Original Record/Acceleration"] y_acc = ["Time Series/Y/Original Record/Acceleration"] sa_gmrotd50 = ims.gmrotdpp(x_acc.value, x_acc.attrs["Time-step"], y_acc.value, y_acc.attrs["Time-step"], periods, 50.0)[0] return sa_gmrotd50
def add_data(self, percentile=50.0): """ :param float percentile: Percentile (pp) """ if len(self.periods) == 0: self.periods = self.fle["IMS/X/Spectra/Response/Periods"].value[1:] x_acc = self.fle["Time Series/X/Original Record/Acceleration"] y_acc = self.fle["Time Series/Y/Original Record/Acceleration"] gmrotdpp = ims.gmrotdpp(x_acc.value, x_acc.attrs["Time-step"], y_acc.value, y_acc.attrs["Time-step"], self.periods, percentile, self.damping) dstring = "damping_" + str(int(100.0 * self.damping)).zfill(2) nvals = len(gmrotdpp) # Acceleration if not "Acceleration" in self.fle["IMS/H/Spectra/Response"]: acc_grp = self.fle["IMS/H/Spectra/Response"].create_group( "Acceleration") else: acc_grp = self.fle["IMS/H/Spectra/Response/Acceleration"] acc_cmp_grp = acc_grp.create_group("GMRotD" + str(int(percentile)).zfill(2)) acc_dset = acc_cmp_grp.create_dataset(dstring, (nvals, ), dtype=float) acc_dset.attrs["Units"] = "cm/s/s" acc_dset[:] = gmrotdpp["GMRotDpp"] self._add_periods()
def add_data(self, percentile=50.0): """ """ if len(self.periods) == 0: periods = self.fle["IMS/X/Spectra/Response/Periods"].value[1:] x_acc = self.fle["Time Series/X/Original Record/Acceleration"] y_acc = self.fle["Time Series/Y/Original Record/Acceleration"] gmrotdpp = ims.gmrotdpp(x_acc.value, x_acc.attrs["Time-step"], y_acc.value, y_acc.attrs["Time-step"], periods, percentile, self.damping)[0] dstring = "damping_" + str(int(100.0 * self.damping)).zfill(2) nvals = len(gmrotdpp) # Acceleration if not "Acceleration" in self.fle["IMS/H/Spectra/Response"]: acc_grp = self.fle["IMS/H/Spectra/Response"].create_group( "Acceleration") else: acc_grp = self.fle["IMS/H/Spectra/Response/Acceleration"] acc_cmp_grp = acc_grp.create_group("GMRotD" + str(int(percentile)).zfill(2)) acc_dset = acc_cmp_grp.create_dataset(dstring, (nvals,), dtype=float) acc_dset.attrs["Units"] = "cm/s/s" acc_dset[:] = gmrotdpp self._add_periods(periods)
def test_gmrotd50(self): # Tests the function to get GMRotD50 gmrotd50 = ims.gmrotdpp( self.fle["INPUTS/RECORD1/XRECORD"][:], self.fle["INPUTS/RECORD1/XRECORD"].attrs["timestep"], self.fle["INPUTS/RECORD1/YRECORD"][:], self.fle["INPUTS/RECORD1/YRECORD"].attrs["timestep"], self.periods, percentile=50.0, damping=0.05, units="cm/s/s", method="Nigam-Jennings") self._compare_sa_sets(gmrotd50, "TEST1/GMRotD50/spectra")