def __init__(self,grid,data,start,end,output,t_ref,**kw): self.grid=grid self.data=data self.start=start self.end=end self.output=output self.t_ref=t_ref # optional arguments utils.set_keywords(self,kw) # Do the deed # DWAQ segment files are written as binary, with each time step as: # <4-byte little-endian time in seconds since reference time> # <4-byte little-endian floating> * N_segments # data is in segment order, all surface segments, then all segments on the # next layer down, and so on. with open(output,'wb') as fp: for t in self.time_steps(): log.info("Processing %s"%( utils.to_datetime(t).strftime('%Y-%m-%d %H:%M'))) t_sec=(t-self.t_ref)/np.timedelta64(1,'s') t_sec=np.array([t_sec],'<i4') data2d=self.field_2d(t) assert np.all(np.isfinite(data2d)),"Error -- getting some non-finite values" data3d=self.extrude_to_3d(data2d) fp.write( t_sec.tobytes() ) fp.write(data3d.astype('<f4')) self.post_frame(t,data2d,data3d)
def __init__(self, **kw): utils.set_keywords(self, kw) super(SwampyBump1D, self).__init__(**kw) # record timeseries self.history = np.zeros(0, dtype=[('t', np.float64), ('eta_var', np.float64), ('Q_max_error', np.float64), ('phi_range', np.float64)])
def __init__(self, **kw): utils.set_keywords(self, kw) if self.base_path is None: self.base_path = self.calc_base_path() if self.start_offset != np.timedelta64(75, 'D'): # yuck. dates. yyyymmdd = utils.to_datetime( utils.to_dt64(self.hydro.t_dn[0]) + self.start_offset).strftime('%Y%m%d') self.base_path += "_%s" % (yyyymmdd) log.info("base_path defaults to %s" % self.base_path)
def __init__(self,**kw): utils.set_keywords(self,kw) self.A=( (self.d0+self.eta0)**2 - self.d0**2 )/( (self.d0+self.eta0)**2 + self.d0**2) self.L=np.sqrt( (8*9.8*self.d0) / ( self.omega**2-self.f**2) ) self.period=2*np.pi/self.omega super().__init__(**kw) # set a scale for eta, used to make eta errors relative # this is approximately the high water elevation self.eta_scale=self.eta0 self.max_rel_error=0.0 self.get_fu=self.get_fu_orig
def __init__(self, fnA, fnB, label="n/a", **kw): self.fnA = fnA self.fnB = fnB self.label = label utils.set_keywords(self, kw) self.parse_data() self.trim_to_common() self.get_pings() self.tune_shifts() self.select_good_transits() self.figure_matches() self.calc_travel_and_skew() self.figure_transit_and_skew()
def __init__(self, **kw): utils.set_keywords(self, kw) self.omega = np.sqrt(2 * 9.8 * self.h0) / self.r0 self.period = 2 * np.pi / self.omega self.U = self.eta * self.r0 * self.omega dx = self.L / float(self.nx) if 'dt' not in kw: dt = 0.5 * dx / self.U kw['dt'] = dt super(SubgridThacker1D, self).__init__(**kw) # set a scale for eta, used to make eta errors relative # this is approximately the high water elevation self.eta_scale = self.eta * self.h0 * (2 - self.eta) self.max_rel_error = 0.0 print("Testing with no advection") self.get_fu = self.get_fu_no_adv
def __init__(self, **kw): utils.set_keywords(self, kw) super(TwoCell, self).__init__(**kw)
def __init__(self,**kw): utils.set_keywords(self,kw) self.all_detects=[]
def __init__(self, **kw): utils.set_keywords(self, kw)
def __init__(self, **kw): utils.set_keywords(self, kw) self.bcs = [] # Default advection self.get_fu = self.get_fu_orig