def databases(): # pump database pump_sunpump = pp.Pump( os.path.join(test_dir, "../data/pump_files/SCB_10_150_120_BL.txt")) pump_shurflo = pp.Pump(os.path.join(test_dir, "../data/pump_files/Shurflo_9325.txt"), price=700) pump_database = [pump_shurflo, pump_sunpump] # pv database pv_database = [ 'Canadian_Solar_Inc__CS1U_430MS', 'Canadian_Solar_Inc__CS5C_80M' ] # MPPT mppt1 = mppt.MPPT(efficiency=0.96, price=1000) return {'pumps': pump_database, 'pv_modules': pv_database, 'mppt': mppt1} return None
# motor-pump and PV module to reduce the life cycle cost of a system. # It first computes the number of PV modules required for the combination # to pump enough water in order to respect the maximum water shortage # probability (named llp) accepted. Then it selects the combination with # the lowest net present value. # --------- ELEMENTS TO SIZE---------------------------------------------- # ------------- Pumps ----------- # Three pumps are available here. The user wants to find the one which fits # best for the application. First the 3 pumps must be imported. # Note that the motor-pumps coming from 'sunpump' follow a naming convention: # The 3 numbers are respectively the flow rate in GPM, the Head in feet, and # the voltage in V at the rated operating point. Note that the rated voltage # is also the maximum input voltage for the pump. pump_1 = pp.Pump( path="../../pvpumpingsystem/data/pump_files/SCB_10_150_120_BL.txt") pump_2 = pp.Pump( path="../../pvpumpingsystem/data/pump_files/SCB_10_150_180_BL.txt") # For the pump remember that the details given in the text file can be # overwritten in its definition: for example the price is overwritten here. pump_3 = pp.Pump( path="../../pvpumpingsystem/data/pump_files/SCS_12_127_60_BL.txt", price=1300) # The database must be provided under the form of a list for the sizing: pump_database = [pump_1, pump_2, pump_3] # ------------- PV Modules ----------- # Two different modules are investigated here
mppt1 = mppt.MPPT(efficiency=0.96, price=410, idname='PCA-120-BLS-M2' ) # ------------ PUMPS ----------------- # For entering new pump data: # 1) open the template at: "../data/pump_files/0_template_for_pump_specs.txt" # 2) write your specs (watch the units!), # 3) save it under a new name (like "name_of_pump.txt"), # 4) and close the file. # # To use it here then, download it with the path as follows: pump_sunpump = pp.Pump(path="../../pvpumpingsystem/data/" "pump_files/SCB_10_150_120_BL.txt") # ------------ PIPES ------------------------ pipes1 = pn.PipeNetwork(h_stat=20, # static head [m] l_tot=100, # length of pipes [m] diam=0.05, # diameter [m] material='plastic') # ------------ PVPS DEFINITION ----------- # Here you gather all components of your PV pumping system previously defined: pvps1 = pvps.PVPumpSystem(pvgen1, pump_sunpump, coupling='direct', # to adapt: 'mppt' or 'direct', pipes=pipes1)
def pvps_set_up(): pvgen1 = pvgen.PVGeneration( # Weather data weather_data_and_metadata=( os.path.join(test_dir, '../data/weather_files/CAN_PQ_Montreal' '.Intl.AP.716270_CWEC_truncated.epw')), # PV array parameters pv_module_name='kyocera solar KU270 6MCA', price_per_watt=1, # in US dollars surface_tilt=45, # 0 = horizontal, 90 = vertical surface_azimuth=180, # 180 = South, 90 = East albedo=0, # between 0 and 1 modules_per_string=2, strings_in_parallel=2, # PV module glazing parameters (not always given in specs) glass_params={'K': 4, # extinction coefficient [1/m] 'L': 0.002, # thickness [m] 'n': 1.526}, # refractive index racking_model='open_rack', # or'close_mount' or 'insulated_back' # Models used (check pvlib.modelchain for all available models) orientation_strategy=None, # or 'flat' or 'south_at_latitude_tilt' clearsky_model='ineichen', transposition_model='haydavies', solar_position_method='nrel_numpy', airmass_model='kastenyoung1989', dc_model='desoto', # 'desoto' or 'cec' only ac_model='pvwatts', aoi_model='physical', spectral_model='no_loss', temperature_model='sapm', losses_model='pvwatts' ) pvgen1.run_model() mppt1 = mppt.MPPT(efficiency=1, price=200) pump_testfile = os.path.join(test_dir, '../data/pump_files/SCB_10_150_120_BL.txt') pump1 = pp.Pump(path=pump_testfile, modeling_method='arab') pipes1 = pn.PipeNetwork(h_stat=10, l_tot=100, diam=0.08, material='plastic', optimism=True) reserv1 = rv.Reservoir() consum1 = cs.Consumption(constant_flow=1) pvps1 = pvps.PVPumpSystem(pvgen1, pump1, coupling='mppt', mppt=mppt1, pipes=pipes1, consumption=consum1, reservoir=reserv1) return pvps1
# ------------ MPPT/DC-DC CONVERTER ------- mppt1 = mppt.MPPT(efficiency=0.96, price=410, idname='PCA-120-BLS-M2') # ------------ PUMPS ----------------- # For entering new pump data: # 1) go in: "../data/pump_files/0_template_for_pump_specs.txt" # 2) write your specs (watch the units!), # 3) save it under a new name (like "name_of_pump.txt"), # 4) and close the file. # # To use it here then, download it with the path as follows: pump_sunpump = pp.Pump(path="../../pvpumpingsystem/data/" "pump_files/SCB_10_150_120_BL.txt", modeling_method='kou') pump_shurflo = pp.Pump( path="../../pvpumpingsystem/data/" "../data/pump_files/Shurflo_9325.txt", price=640, # USD motor_electrical_architecture='permanent_magnet', modeling_method='arab') # ------------ PIPES ------------------------ pipes1 = pn.PipeNetwork( h_stat=20, # static head [m] l_tot=100, # length of pipes [m] diam=0.05, # diameter [m]