def get_bed_slope(self, eta, domain_length): bed_slope = tools.central_difference(eta, self.dxbar * domain_length) bed_slope[-2] = (eta[-3] - eta[-2]) / (self.dxbar * domain_length) bed_slope[-1] = (eta[-2] - eta[-1]) / (self.dxbar * domain_length) return bed_slope
def advance_one_timestep(self): if self._friction == "Manning": Cf = (1/self._alpha_r**2) * (self._kc / self._H)**(1./3) if self._friction == "Chezy": Cf = self._Cf self._tau = Cf * (self._qw / self._H)**2 / (self._g * self._R * self._D90) self._load = self._phi * self._tau - self._tau_c self._load[self._load <= 0] = 0 self._load[self._load > 0] = self._alpha_t * self._load[self._load > 0]**self._n self._qb = self._load * self._D90 * sqrt(self._R * self._g * self._D90) _qtf = self._Gtf / (self._B * (1+self._R) * self._If * self._sec_to_year) self._dq = tools.central_difference(self._qb, self._dx, alpha = self._alpha_u, left_boundary = _qtf) self._eta = (self._eta + (self._dt * self._sec_to_year / (1-self._porosity)) * self._If * self._dq)
def advance_one_timestep(self): # Slope self.Sl = tools.central_difference(self.eta, self.dx) # Water depth if self.friction == 'Manning': self.H = (self.Qf**2 * self._kc**(1./3) / \ (self.alpha_r**2 * self.channel_width**2 * self.g * self.Sl))**(3./10.) if self.friction == 'Chezy': self.H = (self.Qf**2 * self.Cf / (self.g * self.channel_width**2 * self.Sl))**(1./3) # Shear stress self.tau = self.H * self.Sl / (self._R * self._D) # Bed sediment load self.load = self.phi * self.tau - self.tau_c self.load[self.load <= 0] = 0 self.load[self.load > 0] = self.alpha_t * self.load[self.load > 0]**self.nt self.qb = self.load * self._D * sqrt(self._R * self.g * self._D) # Spatial derivative of sediment load qtf = self.Gtf / (self.channel_width * (1+self._R) * self.If * self.sec_to_year) self.dq = tools.central_difference(self.qb, self.dx, alpha = self.alpha_u, left_boundary = qtf) self.dq[-1] = 0 self.eta = self.eta - self.subs1 +\ (self.dt * self.sec_to_year / (1-self.porosity)) * self.If * self.dq * self.subs2