Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions landbosse/excelio/XlsxFileOperations.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ def get_input_output_paths_from_argv_or_env(self):

input_path_from_env = os.environ.get('LANDBOSSE_INPUT_DIR', 'input')
output_path_from_env = os.environ.get('LANDBOSSE_OUTPUT_DIR', 'output')
# input_path_from_env = os.environ['LANDBOSSE_INPUT_DIR'] if 'LANDBOSSE_INPUT_DIR' in os.environ else 'input'
# output_path_from_env = os.environ['LANDBOSSE_OUTPUT_DIR'] if 'LANDBOSSE_OUTPUT_DIR' in os.environ else 'output'

# input and output paths from command line are initially set to None
# to indicate they have not been found yet.
Expand Down
47 changes: 31 additions & 16 deletions landbosse/excelio/XlsxReader.py
Original file line number Diff line number Diff line change
Expand Up @@ -370,15 +370,33 @@ def create_master_input_dictionary(self, project_data_dataframes, project_parame
labor_cost_multiplier = project_parameters['Labor cost multiplier']
self.apply_labor_multiplier_to_project_data_dict(project_data_dataframes, labor_cost_multiplier)

erection_input_worksheets = [
'crane_specs',
'equip',
'crew',
'equip_price',
'crew_price',
'material_price',
'components'
]
# use turbine spacings for auto mode, and turbine locations for manual mode
if project_parameters['Collection mode'] == 'manual':
incomplete_input_dict['collection_layout'] = project_data_dataframes['collection_layout']
erection_input_worksheets = [
'crane_specs',
'equip',
'crew',
'equip_price',
'crew_price',
'material_price',
'components',
'collection_layout'
]
else:
incomplete_input_dict['row_spacing_rotor_diameters'] = project_parameters['Row spacing (times rotor diameter)']
incomplete_input_dict['turbine_spacing_rotor_diameters'] = project_parameters['Turbine spacing (times rotor diameter)']
erection_input_worksheets = [
'crane_specs',
'equip',
'crew',
'equip_price',
'crew_price',
'material_price',
'components'
]
if project_parameters['Collection mode'] == 'manual' and (len(project_data_dataframes['collection_layout']['Adjacency matrix']) != (project_parameters['Number of turbines']+1)):
exit('ERROR: mismatch between # turbines and # turbine locations')

erection_project_data_dict = dict()
for worksheet in erection_input_worksheets:
Expand Down Expand Up @@ -435,7 +453,6 @@ def create_master_input_dictionary(self, project_data_dataframes, project_parame
project_parameters['Breakpoint between base and topping (percent)']
incomplete_input_dict['fuel_usd_per_gal'] = project_parameters['Fuel cost USD per gal']
incomplete_input_dict['rate_of_deliveries'] = project_parameters['Rate of deliveries (turbines per week)']
incomplete_input_dict['turbine_spacing_rotor_diameters'] = project_parameters['Turbine spacing (times rotor diameter)']
incomplete_input_dict['depth'] = project_parameters['Foundation depth m']
incomplete_input_dict['rated_thrust_N'] = project_parameters['Rated Thrust (N)']
incomplete_input_dict['bearing_pressure_n_m2'] = project_parameters['Bearing Pressure (n/m2)']
Expand All @@ -447,9 +464,8 @@ def create_master_input_dictionary(self, project_data_dataframes, project_parame
incomplete_input_dict['road_quality'] = project_parameters['Road Quality (0-1)']
incomplete_input_dict['line_frequency_hz'] = project_parameters['Line Frequency (Hz)']
incomplete_input_dict['plant_capacity_MW'] = project_parameters['Turbine rating MW'] * project_parameters['Number of turbines']
incomplete_input_dict['row_spacing_rotor_diameters'] = project_parameters['Row spacing (times rotor diameter)']
incomplete_input_dict['user_defined_distance_to_grid_connection'] = project_parameters['Flag for user-defined home run trench length (0 = no; 1 = yes)']
incomplete_input_dict['distance_to_grid_connection_km'] = project_parameters['Combined Homerun Trench Length to Substation (km)']
incomplete_input_dict['distance_to_grid_connection_mi'] = project_parameters['Distance to interconnect [mi]']
incomplete_input_dict['crew'] = incomplete_input_dict['project_data']['crew']
incomplete_input_dict['crew_cost'] = incomplete_input_dict['project_data']['crew_price']

Expand All @@ -462,14 +478,13 @@ def create_master_input_dictionary(self, project_data_dataframes, project_parame

incomplete_input_dict['line_frequency_hz'] = project_parameters['Line Frequency (Hz)']
incomplete_input_dict['plant_capacity_MW'] = project_parameters['Turbine rating MW'] * project_parameters['Number of turbines']
incomplete_input_dict['row_spacing_rotor_diameters'] = project_parameters['Row spacing (times rotor diameter)']
incomplete_input_dict['user_defined_home_run_trench'] = project_parameters[
'Flag for user-defined home run trench length (0 = no; 1 = yes)']
incomplete_input_dict['trench_len_to_substation_km'] = project_parameters[
'Combined Homerun Trench Length to Substation (km)']

# Add inputs for transmission & Substation modules:
incomplete_input_dict['distance_to_interconnect_mi'] = project_parameters['Distance to interconnect (miles)']
incomplete_input_dict['distance_to_interconnect_mi'] = project_parameters['Distance to interconnect [mi]']
incomplete_input_dict['interconnect_voltage_kV'] = project_parameters['Interconnect Voltage (kV)']
new_switchyard = True
if project_parameters['New Switchyard (y/n)'] == 'y':
Expand Down Expand Up @@ -499,6 +514,7 @@ def create_master_input_dictionary(self, project_data_dataframes, project_parame
incomplete_input_dict['markup_sales_and_use_tax'] = project_parameters['Markup sales and use tax']
incomplete_input_dict['markup_overhead'] = project_parameters['Markup overhead']
incomplete_input_dict['markup_profit_margin'] = project_parameters['Markup profit margin']
incomplete_input_dict['collection_mode'] = project_parameters['Collection mode']

# Now fill any missing values with sensible defaults.
defaults = DefaultMasterInputDict()
Expand Down Expand Up @@ -574,7 +590,7 @@ def apply_cost_and_scaling_modifications_to_project_parameters(self, project_par
flag_use_user_homerun = project_parameters['Flag for user-defined home run trench length (0 = no; 1 = yes)']
nameplate = project_parameters['Turbine rating MW']

distance_to_interconnect_mi = 0.0 if project_size_MW <= 20 else (0.009375 * project_size_MW + 0.625)
# distance_to_interconnect_mi = 0.0 if project_size_MW <= 20 else (0.009375 * project_size_MW + 0.625) #TODO decide between user defined dist to interconnect and formula
interconnect_voltage_kV = 0.4398 * project_size_MW + 60.204
new_switchyard_y_n = 'n' if project_size_MW <= 40 else 'y'
road_length_adder_m = 1e3 if project_size_MW <= 20 else (13.542 * project_size_MW + 1458.3)
Expand All @@ -596,7 +612,6 @@ def apply_cost_and_scaling_modifications_to_project_parameters(self, project_par
project_parameters['Rate of deliveries(turbines per week)'] = rate_deliveries
project_parameters['Development labor cost USD'] = development_labor_cost_usd
project_parameters['Project size MW'] = project_size_MW
project_parameters['Distance to interconnect (miles)'] = distance_to_interconnect_mi
project_parameters['Interconnect Voltage (kV)'] = interconnect_voltage_kV
project_parameters['New Switchyard (y/n)'] = new_switchyard_y_n
project_parameters['Road length adder (m)'] = road_length_adder_m
Expand Down
Loading