# Path: topoflow/components/channels_base.py
# class channels_component( BMI_base.BMI_component ):
#     def get_input_var_names(self):
#     def get_output_var_names(self):
#     def get_var_name(self, long_var_name):
#     def get_var_units(self, long_var_name):
#     def set_constants(self):
#     def initialize(self, cfg_file=None, mode="nondriver", SILENT=False): 
#     def update(self, dt=-1.0):
#     def finalize(self):
#     def set_computed_input_vars(self):
#     def initialize_d8_vars(self):
#     def initialize_computed_vars(self):
#     def initialize_diversion_vars(self):
#     def initialize_outlet_values(self):
#     def initialize_peak_values(self):
#     def initialize_min_and_max_values(self):
#     def update_R(self):
#     def update_R_integral(self):
#     def update_discharge(self):
#     def update_diversions(self):
#     def update_flow_volume(self):
#     def update_flow_depth(self):
#     def update_free_surface_slope(self):
#     def update_shear_stress(self):
#     def update_shear_speed(self):
#     def update_trapezoid_Rh(self):
#     def update_friction_factor(self):    
#     def update_velocity(self):
#     def update_velocity_on_edges(self):
#     def update_froude_number(self):
#     def update_outlet_values(self):
#     def update_peak_values(self):
#     def update_Q_out_integral(self):
#     def update_mins_and_maxes(self, REPORT=False):
#     def check_flow_depth(self):
#     def check_flow_velocity(self):
#     def open_input_files(self):
#     def read_input_files(self):
#     def close_input_files(self):
#     def update_outfile_names(self):
#     def bundle_output_files(self):    
#     def open_output_files(self):
#     def write_output_files(self, time_seconds=None):
#     def close_output_files(self):
#     def save_grids(self):
#     def save_pixel_values(self):   ##### save_time_series_data(self)  #######
#     def manning_formula(self):
#     def law_of_the_wall(self):
#     def print_status_report(self): 
#     def remove_bad_slopes(self, FLOAT=False):
# def Trapezoid_Rh(d, wb, theta):
# def Manning_Formula(Rh, S, nval):
# def Law_of_the_Wall(d, Rh, S, z0val):
#         DEBUG = False
#         D_OK = self.check_flow_depth()
#         U_OK = self.check_flow_velocity()
#         OK   = (D_OK and U_OK)
#         L2         = self.d * np.tan(self.angle)
#         P  = self.P_rain  # (This is now liquid-only precip. 9/14/14)
#         SM = self.SM
#         GW = self.GW
#         ET = self.ET
#         IN = self.IN
#         MR = self.MR
#         SCALAR_ANGLES = (np.size(angle) == 1)
#         SCALAR_WIDTHS = (np.size(width) == 1)  
#         L2    = d * np.tan( self.angle )          
#         OK = True
#         OK = False
#         OK = True
#         OK = False
#             S = self.S_bed
#         	S = self.S_free
#             S = self.S_bed
#         	S = self.S_free
#     AW = d * (wb + (d * np.tan(theta_rad)) )      
#     PW = wb + (np.float64(2) * d / np.cos(theta_rad) )


import numpy
from topoflow.components import channels_base
#
#      get_component_name()
#      get_attribute()           # (10/26/11)
#      get_input_var_names()     # (defined in channels_base.py)
#      get_output_var_names()    # (defined in channels_base.py)
#      get_var_name()            # (defined in channels_base.py)
#      get_var_units()           # (defined in channels_base.py)
#      ------------------------
#      update_velocity()
#
#-----------------------------------------------------------------------



#-----------------------------------------------------------------------
class channels_component(channels_base.channels_component):

    #-------------------------------------------------------------------
    _att_map = {
        'model_name':         'Channels_Kinematic_Wave',
        'version':            '3.1',
        'author_name':        'Scott D. Peckham',
        'grid_type':          'uniform',
        'time_step_type':     'fixed',
        'step_method':        'explicit',
        #------------------------------------------------------
        'comp_name':          'ChannelsKinWave',
        'model_family':       'TopoFlow',
        'cfg_template_file':  'Channels_Kinematic_Wave.cfg.in',
        'cfg_extension':      '_channels_kinematic_wave.cfg',

# Path: topoflow/components/channels_base.py
# class channels_component( BMI_base.BMI_component ):
#     def get_input_var_names(self):
#     def get_output_var_names(self):
#     def get_var_name(self, long_var_name):
#     def get_var_units(self, long_var_name):
#     def set_constants(self):
#     def initialize(self, cfg_file=None, mode="nondriver", SILENT=False): 
#     def update(self, dt=-1.0):
#     def finalize(self):
#     def set_computed_input_vars(self):
#     def initialize_d8_vars(self):
#     def initialize_computed_vars(self):
#     def initialize_diversion_vars(self):
#     def initialize_outlet_values(self):
#     def initialize_peak_values(self):
#     def initialize_min_and_max_values(self):
#     def update_R(self):
#     def update_R_integral(self):
#     def update_discharge(self):
#     def update_diversions(self):
#     def update_flow_volume(self):
#     def update_flow_depth(self):
#     def update_free_surface_slope(self):
#     def update_shear_stress(self):
#     def update_shear_speed(self):
#     def update_trapezoid_Rh(self):
#     def update_friction_factor(self):    
#     def update_velocity(self):
#     def update_velocity_on_edges(self):
#     def update_froude_number(self):
#     def update_outlet_values(self):
#     def update_peak_values(self):
#     def update_Q_out_integral(self):
#     def update_mins_and_maxes(self, REPORT=False):
#     def check_flow_depth(self):
#     def check_flow_velocity(self):
#     def open_input_files(self):
#     def read_input_files(self):
#     def close_input_files(self):
#     def update_outfile_names(self):
#     def bundle_output_files(self):    
#     def open_output_files(self):
#     def write_output_files(self, time_seconds=None):
#     def close_output_files(self):
#     def save_grids(self):
#     def save_pixel_values(self):   ##### save_time_series_data(self)  #######
#     def manning_formula(self):
#     def law_of_the_wall(self):
#     def print_status_report(self): 
#     def remove_bad_slopes(self, FLOAT=False):
# def Trapezoid_Rh(d, wb, theta):
# def Manning_Formula(Rh, S, nval):
# def Law_of_the_Wall(d, Rh, S, z0val):
#         DEBUG = False
#         D_OK = self.check_flow_depth()
#         U_OK = self.check_flow_velocity()
#         OK   = (D_OK and U_OK)
#         L2         = self.d * np.tan(self.angle)
#         P  = self.P_rain  # (This is now liquid-only precip. 9/14/14)
#         SM = self.SM
#         GW = self.GW
#         ET = self.ET
#         IN = self.IN
#         MR = self.MR
#         SCALAR_ANGLES = (np.size(angle) == 1)
#         SCALAR_WIDTHS = (np.size(width) == 1)  
#         L2    = d * np.tan( self.angle )          
#         OK = True
#         OK = False
#         OK = True
#         OK = False
#             S = self.S_bed
#         	S = self.S_free
#             S = self.S_bed
#         	S = self.S_free
#     AW = d * (wb + (d * np.tan(theta_rad)) )      
#     PW = wb + (np.float64(2) * d / np.cos(theta_rad) )


# Path: topoflow/components/channels_kinematic_wave.py
import numpy
from topoflow.components import channels_base

#
#      get_component_name()
#      get_attribute()           # (10/26/11)
#      get_input_var_names()     # (defined in channels_base.py)
#      get_output_var_names()    # (defined in channels_base.py)
#      get_var_name()            # (defined in channels_base.py)
#      get_var_units()           # (defined in channels_base.py)
#      ------------------------
#      update_velocity()
#
#-----------------------------------------------------------------------



#-----------------------------------------------------------------------
class channels_component(channels_base.channels_component):

    #-------------------------------------------------------------------
    _att_map = {
        'model_name':         'Channels_Kinematic_Wave',
        'version':            '3.1',
        'author_name':        'Scott D. Peckham',
        'grid_type':          'uniform',
        'time_step_type':     'fixed',
        'step_method':        'explicit',
        #------------------------------------------------------
        'comp_name':          'ChannelsKinWave',
        'model_family':       'TopoFlow',
        'cfg_template_file':  'Channels_Kinematic_Wave.cfg.in',
        'cfg_extension':      '_channels_kinematic_wave.cfg',

        'cmt_var_prefix':     '/ChannelsKinWave/Input/Var/',