num_eqn = {
        'acoustics_1D' : 2,
        'acoustics_variable_1D' : 2,
        'advection_1D' : 1,
        'advection_color_1D' : 1,
        'advection_1D_py' : 1,
        'burgers_1D' : 1,
        'burgers_1D_py' : 1,
        'cubic_1D' : 1,
        'traffic_1D' : 1,
        'traffic_vc_1D' : 1,
        'traffic_vc_fwave_1D' : 1,
        'traffic_vc_tracer_1D' : 2,
        'euler_with_efix_1D' : 3,
        'euler_roe_1D' : 3,
        'euler_hll_1D' : 3,
        'euler_hllc_1D' : 3,
        'euler_hlle_1D' : 3,
        'mhd_roe_1D' : 8,
        'nonlinear_elasticity_fwave_1D' : 2,
        'psystem_fwave_1D' : 2,
        'nonlinear_elasticity_1D' : 2,
        'reactive_euler_with_efix_1D' : 4,
        'shallow_roe_with_efix_1D' : 2,
        'shallow_roe_tracer_1D' : 3,
        'shallow_roe_1D' : 2,
        'shallow_hll_1D' : 2,
        'shallow_hlle_1D' : 2,
        'shallow_bathymetry_fwave_1D' : 2,
        'shallow_1D_py' : 2,
        'sw_aug_1D' : 2,
        'vc_advection_1D' : 1,
        'layered_shallow_water_1D' : 4,
        'acoustics_2D' : 3,
        'acoustics_mapped_2D' : 3,
        'advection_2D' : 1,
        'burgers_2D' : 1,
        'euler_mapgrid_2D' : 4,
        'euler_5wave_2D' : 5,
        'euler_4wave_2D' : 4,
        'euler_hlle_2D' : 4,
        'euler_hlle_with_walls_2D' : 4,
        'kpp_2D' : 1,
        'psystem_2D' : 3,
        'shallow_hlle_2D' : 3,
        'shallow_roe_with_efix_2D' : 3,
        'shallow_bathymetry_fwave_2D' : 3,
        'sw_aug_2D' : 3,
        'shallow_sphere_2D' : 4,
        'vc_advection_2D' : 1,
        'vc_acoustics_2D' : 3,
        'vc_elasticity_2D' : 5,
        'vc_acoustics_3D' : 4,
        'euler_3D' : 5
        }

num_waves = {
        'acoustics_1D' : 2,
        'acoustics_variable_1D' : 2,
        'advection_1D' : 1,
        'advection_color_1D' : 1,
        'advection_1D_py' : 1,
        'burgers_1D' : 1,
        'burgers_1D_py' : 1,
        'cubic_1D' : 1,
        'traffic_1D' : 1,
        'traffic_vc_1D' : 1,
        'traffic_vc_fwave_1D' : 1,
        'traffic_vc_tracer_1D' : 2,
        'euler_with_efix_1D' : 3,
        'euler_roe_1D' : 3,
        'euler_hll_1D' : 2,
        'euler_hllc_1D' : 3,
        'euler_hlle_1D' : 2,
        'mhd_roe_1D' : 7,
        'nonlinear_elasticity_fwave_1D' : 2,
        'nonlinear_elasticity_1D' : 2,
        'psystem_fwave_1D' : 2,
        'reactive_euler_with_efix_1D' : 4,
        'shallow_roe_with_efix_1D' : 2,
        'shallow_roe_tracer_1D' : 3,
        'shallow_roe_1D' : 2,
        'shallow_hll_1D' : 2,
        'shallow_hlle_1D' : 2,
        'shallow_bathymetry_fwave_1D' : 2,
        'shallow_1D_py' : 2,
        'sw_aug_1D' : 2,
        'vc_advection_1D' : 1,
        'layered_shallow_water_1D' : 4,
        'acoustics_2D' : 2,
        'acoustics_mapped_2D' : 2,
        'advection_2D' : 1,
        'burgers_2D' : 1,
        'euler_mapgrid_2D' : 4,
        'euler_5wave_2D' : 5,
        'euler_4wave_2D' : 4,
        'euler_hlle_2D' : 2,
        'euler_hlle_with_walls_2D' : 2,
        'kpp_2D' : 1,
        'psystem_2D' : 2,
        'shallow_hlle_2D' : 2,
        'shallow_roe_with_efix_2D' : 3,
        'shallow_bathymetry_fwave_2D' : 3,
        'sw_aug_2D' : 3,
        'shallow_sphere_2D' : 3,
        'vc_advection_2D' : 1,
        'vc_acoustics_2D' : 2,
        'vc_elasticity_2D' : 4,
        'vc_acoustics_3D' : 2,
        'euler_3D' : 3
        }

fwave = {
        'acoustics_1D' : False,
        'acoustics_variable_1D' : False,
        'advection_1D' : False,
        'advection_color_1D' : False,
        'advection_1D_py' : False,
        'burgers_1D' : False,
        'burgers_1D_py' : False,
        'cubic_1D' : False,
        'traffic_1D' : False,
        'traffic_vc_1D' : False,
        'traffic_vc_fwave_1D' : True,
        'traffic_vc_tracer_1D' : False,
        'euler_with_efix_1D' : False,
        'euler_roe_1D' : False,
        'euler_hll_1D' : False,
        'euler_hllc_1D' : False,
        'euler_hlle_1D' : False,
        'mhd_roe_1D' : False,
        'nonlinear_elasticity_fwave_1D' : True,
        'nonlinear_elasticity_1D' : True,
        'psystem_fwave_1D' : True,
        'reactive_euler_with_efix_1D' : False,
        'shallow_roe_with_efix_1D' : False,
        'shallow_roe_tracer_1D' : False,
        'shallow_roe_1D' : False,
        'shallow_hll_1D' : False,
        'shallow_hlle_1D' : False,
        'shallow_bathymetry_fwave_1D' : True,
        'shallow_1D_py' : None, # Includes both f-wave and non-f-wave solvers
        'vc_advection_1D' : False,
        'layered_shallow_water_1D' : True,
        'acoustics_2D' : False,
        'acoustics_mapped_2D' : False,
        'advection_2D' : False,
        'burgers_2D' : False,
        'euler_mapgrid_2D' : False,
        'euler_5wave_2D' : False,
        'euler_4wave_2D' : False,
        'euler_hlle_2D' : False,
        'euler_hlle_with_walls_2D' : False,
        'kpp_2D' : False,
        'psystem_2D' : True,
        'shallow_hlle_2D' : False,
        'shallow_roe_with_efix_2D' : False,
        'shallow_bathymetry_fwave_2D' : True,
        'sw_aug_2D' : 3,
        'shallow_sphere_2D' : False,
        'vc_advection_2D' : False,
        'vc_acoustics_2D' : False,
        'vc_elasticity_2D' : False,
        'vc_acoustics_3D' : False,
        'euler_3D' : False
        }
