Beispiel #1
0
    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
Beispiel #2
0
    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)
Beispiel #3
0
    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