From c489b4c8a088ae17897cb8e361141d4dfe00a54d Mon Sep 17 00:00:00 2001 From: AndiGob <andreas.gobbbin@hotmail.de> Date: Tue, 10 Dec 2024 18:28:35 +0100 Subject: [PATCH 1/6] landing_gear_design: -Add owne function for wing tip clearance check --- .../landing_gear_design_conf.xml | 14 ++--- .../call_functions/_04_estimatelimitations.py | 11 +++- .../sub_function/wingtipclearance.py | 61 +++++++++++++++++++ 3 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py diff --git a/landing_gear_design/landing_gear_design_conf.xml b/landing_gear_design/landing_gear_design_conf.xml index 656a5388..3786d73c 100644 --- a/landing_gear_design/landing_gear_design_conf.xml +++ b/landing_gear_design/landing_gear_design_conf.xml @@ -99,17 +99,17 @@ </wing_strike_limit> </ground_strike_limitations> <nacelle_clearance description="Nacelle clearance according to CS25.149."> - <value>7</value> - <unit>degree</unit> - <lower_boundary>5</lower_boundary> - <upper_boundary>10</upper_boundary> - <default>7</default> + <value>0.55</value> + <unit>m</unit> + <lower_boundary>0.45</lower_boundary> + <upper_boundary>0.90</upper_boundary> + <default>0.60</default> </nacelle_clearance> <strut_suspension description="Switch to use landing gear strut suspension systems. ('true': use, 'false': don't use"> <value>true</value> <default>true</default> <strut_suspension_travel> - <value>0.4699</value> + <value>0.65</value> <unit>m</unit> <lower_boundary>0.35</lower_boundary> <upper_boundary>0.95</upper_boundary> @@ -117,7 +117,7 @@ </strut_suspension_travel> </strut_suspension> <landing_gear_bay_keel_beam_width description="Width of the landing gear bay keel beam."> - <value>0.8</value> + <value>0.55</value> <unit>m</unit> <lower_boundary>0.5</lower_boundary> <upper_boundary>1.5</upper_boundary> diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py index 4323022b..f7ecffce 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py @@ -2,6 +2,9 @@ import sys import math +# import own modules. +from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions.sub_function.wingtipclearance import wing_tip_clearance # noPep8 e501 + def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_description, runtime_output): """ Hier beschreibung hin: Estimation of ground strike limitations in accordance to Sforza and CS-25 @@ -365,7 +368,11 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip landing_gear_description['main_gear_description']['main_gear_arrangement'] = main_gear_arrangement landing_gear_description['nose_gear_description']['nose_gear_arrangement'] = nose_gear_arrangement landing_gear_description['tail_tipping_point']['maximum_rotation_angle_landing'] = maximum_rotation_angle_landing - - runtime_output.debug('estimate_limitations successfully executed!') + + # Call function to check the wing tip clearance. + landing_gear_description = wing_tip_clearance(dict_ac_exchange, dict_mod_config, landing_gear_description, runtime_output) + + # debug print + runtime_output.debug('The function "estimate_limitations.py" successfully executed!') return landing_gear_description diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py new file mode 100644 index 00000000..cba618ac --- /dev/null +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py @@ -0,0 +1,61 @@ +# Import standard modules. +import math + + +def wing_tip_clearance(dict_ac_exchange, dict_mod_config, landing_gear_description, runtime_output): + """ Estimation of wing tip clearance in accordance to Torenbeek and CS-25 + [ref. E. Torenbeek; 1982] + [ref. CS-25 Amendment 27; 2022] + + :param dict dict_ac_exchange: Dict containing parameter and according values from aircraft exchange file + :param dict dict_mod_config: Dict containing parameter and according values from module configuration file + :param dict landing_gear_description: Dict containing parameter and values of current landing gear estimation + :param logging.Logger runtime_output: Logging object used for capturing log messages in the module + :return dict landing_gear_description: Dict containing parameter and values of current landing gear estimation + """ + ''' initialize local parameter ''' + wing_tip_clearance_angle = 0 + minimum_required_clearance_angle = 5 # according to CS25.149 -> minimum 5 degree bank angle + + ''' check wing tip clearance ''' + try: + _, wing_reference_point_on_tip_in_y_value = \ + next(reversed(list(dict_ac_exchange['wing_section_position_in_y'].items())), (None, None)) + _, wing_reference_point_on_tip_in_z_value = \ + next(reversed(list(dict_ac_exchange['wing_section_position_in_z'].items())), (None, None)) + + if wing_reference_point_on_tip_in_y_value is not None and wing_reference_point_on_tip_in_z_value is not None: + distance_between_wing_tip_and_outer_strut = \ + round(wing_reference_point_on_tip_in_y_value + - landing_gear_description['landing_gear_positions']['main_gear_outer_strut_y_position'], 4) + wing_tip_ground_clearance = \ + (landing_gear_description['lever_arms']['vertical_distance_between_ground_and_fuselage_center_line'] + - wing_reference_point_on_tip_in_z_value) + wing_tip_clearance_angle = \ + round(math.degrees(math.atan(wing_tip_ground_clearance/distance_between_wing_tip_and_outer_strut)), 4) + + if wing_tip_clearance_angle < dict_mod_config['wing_strike_limit'] \ + and not wing_tip_clearance_angle < minimum_required_clearance_angle: + raise ValueError('The resulting wing tip angle is below the specified clearance angle of: ' + + str(dict_mod_config['wing_strike_limit']) + ' degrees!') + elif wing_tip_clearance_angle < minimum_required_clearance_angle: + raise ValueError('The resulting wing tip angle is below the required clearance angle of the ' + 'CS25.149 of: ' + str(minimum_required_clearance_angle) + ' degrees!') + else: + runtime_output.print('The resulting wing tip angle conforms the specified clearance angle of: ' + + str(dict_mod_config['wing_strike_limit']) + ' degrees!') + + else: + raise ValueError('At least one wing parameter is missing in the aircraft exchange file, ' + 'wing tip clearance could not be checked!') + + # exception handling for wing tip clearance check + except ValueError as e: + runtime_output.error('Error: ' + str(e)) + + landing_gear_description['landing_gear_limitations']['wing_tip_clearance_angles'] = wing_tip_clearance_angle + + # debug print + runtime_output.debug('estimate_clearances successfully executed!') + + return landing_gear_description -- GitLab From ae3e906f4612d79dc45544c2ac1a065d4db6d4c3 Mon Sep 17 00:00:00 2001 From: AndiGob <andreas.gobbbin@hotmail.de> Date: Tue, 10 Dec 2024 18:39:33 +0100 Subject: [PATCH 2/6] landing_gear_design: - Add owne function for nacelle ground clearance check --- .../call_functions/_05_estimateclearances.py | 38 ------------------- .../sub_function/nacellegroundclearance.py | 33 ++++++++++++++++ .../usermethoddatapreparation.py | 2 + 3 files changed, 35 insertions(+), 38 deletions(-) create mode 100644 landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimateclearances.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimateclearances.py index 2397d661..397cc577 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimateclearances.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimateclearances.py @@ -17,7 +17,6 @@ def estimate_clearances(dict_ac_exchange, dict_mod_config, landing_gear_descript specific_flag = False required_flag = False nacelle_clearance_angle = [] - wing_tip_clearance_angle = 0 minimum_required_clearance_angle = 5 # according to CS25.149 -> minimum 5 degree bank angle propulsor_mounting_position = list(dict_ac_exchange['propulsor_mounting_position'].values()) nacelle_y_position = {key: value for key, value in dict_ac_exchange['engine_y_position'].items() if @@ -86,44 +85,7 @@ def estimate_clearances(dict_ac_exchange, dict_mod_config, landing_gear_descript except ValueError as e: runtime_output.error('Error: ' + str(e)) - ''' check wing tip clearance ''' - try: - _, wing_reference_point_on_tip_in_y_value = \ - next(reversed(list(dict_ac_exchange['wing_section_position_in_y'].items())), (None, None)) - _, wing_reference_point_on_tip_in_z_value = \ - next(reversed(list(dict_ac_exchange['wing_section_position_in_z'].items())), (None, None)) - - if wing_reference_point_on_tip_in_y_value is not None and wing_reference_point_on_tip_in_z_value is not None: - distance_between_wing_tip_and_outer_strut = \ - round(wing_reference_point_on_tip_in_y_value - - landing_gear_description['landing_gear_positions']['main_gear_outer_strut_y_position'], 4) - wing_tip_ground_clearance = \ - (landing_gear_description['lever_arms']['vertical_distance_between_ground_and_fuselage_center_line'] - - wing_reference_point_on_tip_in_z_value) - wing_tip_clearance_angle = \ - round(math.degrees(math.atan(wing_tip_ground_clearance/distance_between_wing_tip_and_outer_strut)), 4) - - if wing_tip_clearance_angle < dict_mod_config['wing_strike_limit'] \ - and not wing_tip_clearance_angle < minimum_required_clearance_angle: - raise ValueError('The resulting wing tip angle is below the specified clearance angle of: ' - + str(dict_mod_config['wing_strike_limit']) + ' degrees!') - elif wing_tip_clearance_angle < minimum_required_clearance_angle: - raise ValueError('The resulting wing tip angle is below the required clearance angle of the ' - 'CS25.149 of: ' + str(minimum_required_clearance_angle) + ' degrees!') - else: - runtime_output.print('The resulting wing tip angle conforms the specified clearance angle of: ' - + str(dict_mod_config['wing_strike_limit']) + ' degrees!') - - else: - raise ValueError('At least one wing parameter is missing in the aircraft exchange file, ' - 'wing tip clearance could not be checked!') - - # exception handling for wing tip clearance check - except ValueError as e: - runtime_output.error('Error: ' + str(e)) - landing_gear_description['landing_gear_limitations']['nacelle_ground_clearance_angles'] = nacelle_clearance_angle - landing_gear_description['landing_gear_limitations']['wing_tip_clearance_angles'] = wing_tip_clearance_angle # debug print runtime_output.debug('estimate_clearances successfully executed!') diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py new file mode 100644 index 00000000..4ed78ed8 --- /dev/null +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py @@ -0,0 +1,33 @@ +def nacelle_ground_clearance(dict_ac_exchange, dict_mod_config, landing_gear_description, main_gear_arrangement, runtime_output): + """ Estimation of ancelle ground clearance in accordance to Torenbeek and CS-25. + [ref. E. Torenbeek; 1982] + [ref. CS-25 Amendment 27; 2022] + + :param dict dict_ac_exchange: Dict containing parameter and according values from aircraft exchange file + :param dict dict_mod_config: Dict containing parameter and according values from module configuration file + :param dict landing_gear_description: Dict containing parameter and values of current landing gear estimation + :param dict main_gear_arrangement: Dict containing parameter and values of current main landing gear arrengment + :param logging.Logger runtime_output: Logging object used for capturing log messages in the module + :return list required_main_gear_strut_delta_length: List containing requiered delta lengths for each wing mounted nacelle + bool nacelle_ground_clearance_flag: Status flag if the ground clearance check is failed and a deltea length is required + """ + ''' initialize local parameter ''' + nacelle_ground_clearance_flag = False + required_main_gear_strut_delta_length = [] + + nacelle_y_position = {key: value for key, value in dict_ac_exchange['engine_y_position'].items() if value is not None} + nacelle_y_position = list(nacelle_y_position.values()) + nacelle_z_position = {key: value for key, value in dict_ac_exchange['engine_z_position'].items() if value is not None} + nacelle_z_position = list(nacelle_z_position.values()) + nacelle_section_widths = {key: value for key, value in dict_ac_exchange['nacelle_section_widths'].items() if value is not None} + nacelle_section_widths = list(nacelle_section_height.values()) + nacelle_section_height = {key: value for key, value in dict_ac_exchange['nacelle_section_height'].items() if value is not None} + nacelle_section_height = list(nacelle_section_height.values()) + + # Check if the current propulsor is mounted to the wing + # -> if true: -> prepare wing nacelle paramter for ground clearance check + for key, value in dict_ac_exchange['propulsor_mounting_position'].item(): + print(value) + print(key) + + return required_main_gear_strut_delta_length, nacelle_ground_clearance_flag diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/usermethoddatapreparation.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/usermethoddatapreparation.py index 7ecdb4e2..43a35197 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/usermethoddatapreparation.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/usermethoddatapreparation.py @@ -76,6 +76,8 @@ def user_method_data_input_preparation(routing_dict): ['./analysis/masses_cg_inertia/most_forward_mass/mass_properties/center_of_gravity/y', float], 'most_forward_center_of_gravity_in_z_direction': ['./analysis/masses_cg_inertia/most_forward_mass/mass_properties/center_of_gravity/z', float], + 'nacelle_section_width': + ['./component_design/propulsion/specific/propulsion[@ID="0"]/nacelle[@ID="0"]/sections/section/[@ID="0"]/width', float], # noPep8 e501 'nacelle_section_height': ['./component_design/propulsion/specific/propulsion[@ID="0"]/nacelle[@ID="0"]/sections/section/[@ID="0"]/height', float], # noPep8 e501 'engine_x_position': -- GitLab From 0455de2ad721d527cedb25d88eb57c2fef7efee4 Mon Sep 17 00:00:00 2001 From: AndiGob <andreas.gobbbin@hotmail.de> Date: Tue, 10 Dec 2024 23:33:38 +0100 Subject: [PATCH 3/6] landing_gear_design: - Add nacelle ground clearance check to landing gear strut length estimation --- .../call_functions/_01_estimatedistances.py | 8 +- .../call_functions/_04_estimatelimitations.py | 22 +++++ .../call_functions/_05_estimateclearances.py | 93 ------------------- ...stimatemasses.py => _05_estimatemasses.py} | 0 ...{_07_estimatecog.py => _06_estimatecog.py} | 0 ...geometry.py => _07_setexistinggeometry.py} | 0 .../sub_function/nacellegroundclearance.py | 40 ++++++-- .../sub_function/wingtipclearance.py | 2 +- .../general/useexistinggeometry.py | 6 +- 9 files changed, 62 insertions(+), 109 deletions(-) delete mode 100644 landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimateclearances.py rename landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/{_06_estimatemasses.py => _05_estimatemasses.py} (100%) rename landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/{_07_estimatecog.py => _06_estimatecog.py} (100%) rename landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/{_08_setexistinggeometry.py => _07_setexistinggeometry.py} (100%) diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_01_estimatedistances.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_01_estimatedistances.py index 301bfb86..a4902c22 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_01_estimatedistances.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_01_estimatedistances.py @@ -192,15 +192,15 @@ def estimate_distances(dict_ac_exchange, dict_mod_config, landing_gear_descripti fuselage_reference_point_z_key, fuselage_reference_point_z_value = \ next(iter(dict_ac_exchange['fuselage_reference_point_in_z_direction'].items()), (None, None)) if fuselage_reference_point_z_value is not None \ - and dict_ac_exchange['most_aft_center_of_gravity_in_z_direction'] is not None: - if fuselage_reference_point_z_value <= dict_ac_exchange['most_aft_center_of_gravity_in_z_direction']: + and dict_ac_exchange['center_of_gravity_in_z'] is not None: + if fuselage_reference_point_z_value <= dict_ac_exchange['center_of_gravity_in_z']: delta_height_fuselage_center_line_to_center_of_gravity = \ - abs(dict_ac_exchange['most_aft_center_of_gravity_in_z_direction'] + abs(dict_ac_exchange['center_of_gravity_in_z'] - fuselage_reference_point_z_value) else: delta_height_fuselage_center_line_to_center_of_gravity = \ abs(fuselage_reference_point_z_value - - dict_ac_exchange['most_aft_center_of_gravity_in_z_direction']) + - dict_ac_exchange['center_of_gravity_in_z']) elif dict_ac_exchange['fuselage_type'] == 'single_aisle': delta_height_fuselage_center_line_to_center_of_gravity = 0.5 elif dict_ac_exchange['fuselage_type'] == 'wide_body': diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py index f7ecffce..7689c8d3 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py @@ -4,6 +4,7 @@ import math # import own modules. from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions.sub_function.wingtipclearance import wing_tip_clearance # noPep8 e501 +from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions.sub_function.nacellegroundclearance import nacelle_ground_clearance # noPep8 e501 def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_description, runtime_output): @@ -193,6 +194,25 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip 'vertical_distance_between_ground_and_aft_center_of_gravity'] + main_gear_arrangement['main_landing_gear_wing_mounting_position_in_z_direction']) - (min_tire_diameter/2 * convert_inch_to_meter), 4) + + # Check nacelle ground clearance if at least one engine is exisiting. + if dict_ac_exchange['engine_z_position'] is not None: + # Call function to check nacelle ground clearance. + required_main_gear_strut_delta_length, nacelle_ground_clearance_flag = \ + nacelle_ground_clearance(dict_ac_exchange, dict_mod_config, landing_gear_description, + main_gear_arrangement, runtime_output) + + # Check if nacelle ground clearance check is failed + # -> if true: -> start repositioning and resizing of main landing gear struts. + if nacelle_ground_clearance_flag: + if i == 1: + runtime_output.warning('Attention: At least one nacelle mounted to the wing ' + 'falls below the minimum required nacelle ground clearance.') + runtime_output.print('Repositioning and resizing of landing gear struts started!') + + # Add required delta length to the length of main landing gear struts. + main_gear_arrangement['main_gear_outer_strut_length'] += max(required_main_gear_strut_delta_length) + landing_gear_description['landing_gear_positions']['main_gear_z_position_outer_strut'] = \ round(main_gear_arrangement['main_landing_gear_wing_mounting_position_in_z_direction'], 4) @@ -289,6 +309,8 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip + 0.05) i += 1 + runtime_output.print('Repositioning and resizing of landing gear struts successfully finished!') + try: # check if the turnover iteration failed -> if true: -> raise an error and abort program if not main_gear_positioning_flag: diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimateclearances.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimateclearances.py deleted file mode 100644 index 397cc577..00000000 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimateclearances.py +++ /dev/null @@ -1,93 +0,0 @@ -# Import standard modules. -import math - - -def estimate_clearances(dict_ac_exchange, dict_mod_config, landing_gear_description, runtime_output): - """ Hier beschreibung hin: Estimation of ground clearances in accordance to Torenbeek and CS-25 - [ref. E. Torenbeek; 1982] - [ref. CS-25 Amendment 27; 2022] - - :param dict dict_ac_exchange: Dict containing parameter and according values from aircraft exchange file - :param dict dict_mod_config: Dict containing parameter and according values from module configuration file - :param dict landing_gear_description: Dict containing parameter and values of current landing gear estimation - :param logging.Logger runtime_output: Logging object used for capturing log messages in the module - :return dict landing_gear_description: Dict containing parameter and values of current landing gear estimation - """ - ''' initialize local parameter ''' - specific_flag = False - required_flag = False - nacelle_clearance_angle = [] - minimum_required_clearance_angle = 5 # according to CS25.149 -> minimum 5 degree bank angle - propulsor_mounting_position = list(dict_ac_exchange['propulsor_mounting_position'].values()) - nacelle_y_position = {key: value for key, value in dict_ac_exchange['engine_y_position'].items() if - value is not None} - nacelle_y_position = list(nacelle_y_position.values()) - nacelle_z_position = {key: value for key, value in dict_ac_exchange['engine_z_position'].items() if - value is not None} - nacelle_z_position = list(nacelle_z_position.values()) - nacelle_section_height = {key: value for key, value in dict_ac_exchange['nacelle_section_height'].items() if - value is not None} - nacelle_section_height = list(nacelle_section_height.values()) - main_gear_outer_strut_y_position = landing_gear_description['landing_gear_positions'][ - 'main_gear_outer_strut_y_position'] - - ''' check nacelle clearance ''' - try: - # check if at least one engine exist in the aircraft exchange file - if len(nacelle_y_position) > 0: - index = 0 - # loop across all existing engines - for position in nacelle_y_position: - # check if the current engine is mounted to the wing -> if true: -> estimate clearance angle - if propulsor_mounting_position[index] == 'wing': - # check if the y-position of current engine is not within the outer landing gear leg position - # -> if true: -> estimate clearance angle - if abs(position) > main_gear_outer_strut_y_position: - # estimate clearance angle between outer main landing gear strut and lowest point of nacelle - distances = abs(position) - main_gear_outer_strut_y_position - nacelle_ground_clearance = round(landing_gear_description['lever_arms'][ - 'vertical_distance_between_ground_and_fuselage_center_line'] - - abs(nacelle_z_position[index]) - - abs(nacelle_section_height[index]/2), 4) - nacelle_clearance_angle.append( - round(math.degrees(math.atan(nacelle_ground_clearance/distances)), 4)) - # Else condition: current engine is within the outer landing gear leg position - # -> raise an error and skip nacelle ground clearance estimation - else: - raise ValueError('At least one wing mounted engine is within the outer landing gear leg ' - 'position. No valid configuration!') - index += 1 - - # loop across all existing nacelle clearance angles to check angle requirements - for angle in nacelle_clearance_angle: - if angle < dict_mod_config['nacelle_clearance'] and not angle < minimum_required_clearance_angle: - specific_flag = True - elif angle < minimum_required_clearance_angle: - required_flag = True - - if specific_flag and not required_flag: - raise ValueError('At least one wing mounted engine falls below the specified clearance angle of: ' - + str(dict_mod_config['nacelle_clearance']) + ' degrees!') - elif required_flag: - raise ValueError('At least one wing mounted engine falls below the required clearance angle of the ' - 'CS25.149 of: ' - + str(minimum_required_clearance_angle) + ' degrees!') - else: - runtime_output.print('All engines mounted to the wing conforms the specified clearance angle of: ' - + str(dict_mod_config['nacelle_clearance']) + ' degrees!') - - # Else condition: no engine exists in the aircraft exchange file -> print a warning - else: - runtime_output.warning('Attention: No engines available in the aircraft exchange file, ' - 'nacelle ground clearance could not be checked!') - - # exception handling for nacelle ground clearance check - except ValueError as e: - runtime_output.error('Error: ' + str(e)) - - landing_gear_description['landing_gear_limitations']['nacelle_ground_clearance_angles'] = nacelle_clearance_angle - - # debug print - runtime_output.debug('estimate_clearances successfully executed!') - - return landing_gear_description diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatemasses.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimatemasses.py similarity index 100% rename from landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatemasses.py rename to landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimatemasses.py diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_07_estimatecog.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py similarity index 100% rename from landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_07_estimatecog.py rename to landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_08_setexistinggeometry.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_07_setexistinggeometry.py similarity index 100% rename from landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_08_setexistinggeometry.py rename to landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_07_setexistinggeometry.py diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py index 4ed78ed8..4140caaa 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py @@ -12,22 +12,46 @@ def nacelle_ground_clearance(dict_ac_exchange, dict_mod_config, landing_gear_des bool nacelle_ground_clearance_flag: Status flag if the ground clearance check is failed and a deltea length is required """ ''' initialize local parameter ''' + engine_counter = 0 nacelle_ground_clearance_flag = False required_main_gear_strut_delta_length = [] - + wing_nacelle_bottom_position = [] + wing_nacelle_inboard_position = [] nacelle_y_position = {key: value for key, value in dict_ac_exchange['engine_y_position'].items() if value is not None} nacelle_y_position = list(nacelle_y_position.values()) nacelle_z_position = {key: value for key, value in dict_ac_exchange['engine_z_position'].items() if value is not None} nacelle_z_position = list(nacelle_z_position.values()) - nacelle_section_widths = {key: value for key, value in dict_ac_exchange['nacelle_section_widths'].items() if value is not None} - nacelle_section_widths = list(nacelle_section_height.values()) - nacelle_section_height = {key: value for key, value in dict_ac_exchange['nacelle_section_height'].items() if value is not None} - nacelle_section_height = list(nacelle_section_height.values()) + nacelle_section_widths = {key: value for key, value in dict_ac_exchange['nacelle_section_width'].items() if value is not None} + nacelle_section_widths = list(nacelle_section_widths.values()) + nacelle_section_heights = {key: value for key, value in dict_ac_exchange['nacelle_section_height'].items() if value is not None} + nacelle_section_heights = list(nacelle_section_heights.values()) # Check if the current propulsor is mounted to the wing # -> if true: -> prepare wing nacelle paramter for ground clearance check - for key, value in dict_ac_exchange['propulsor_mounting_position'].item(): - print(value) - print(key) + for _, value in dict_ac_exchange['propulsor_mounting_position'].items(): + if value == 'wing': + idx_start = int(engine_counter * (len(nacelle_section_widths)/len(nacelle_y_position))) + idx_end = int(engine_counter * (len(nacelle_section_widths)/len(nacelle_y_position)) + + (len(nacelle_section_widths)/len(nacelle_y_position))) + wing_nacelle_bottom_position.append(nacelle_z_position[engine_counter] + - max(nacelle_section_heights[idx_start:idx_end])/2) + wing_nacelle_inboard_position.append(abs(nacelle_y_position[engine_counter]) + - max(nacelle_section_widths[idx_start:idx_end])/2) + engine_counter += 1 + + # Multiply every second nacelle inboard postion by -1 + wing_nacelle_inboard_position = [value if index % 2 == 0 else -value + for index, value in enumerate(wing_nacelle_inboard_position)] + # Check if the posiotn of current nacelle under investigation is below the minimum required nacelle ground clearance. + for i in range(0, len(wing_nacelle_bottom_position)): + clearance_required = abs(wing_nacelle_bottom_position[i]) + dict_mod_config['nacelle_clearance'] + clearance_available = landing_gear_description['lever_arms']['vertical_distance_between_ground_and_fuselage_center_line'] + if (clearance_required > clearance_available): + nacelle_ground_clearance_flag = True + required_main_gear_strut_delta_length.append(clearance_required - clearance_available) + + # debug print + runtime_output.debug('The function "nacelle_ground_clearance.py" successfully executed!') + return required_main_gear_strut_delta_length, nacelle_ground_clearance_flag diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py index cba618ac..4bb528a3 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py @@ -56,6 +56,6 @@ def wing_tip_clearance(dict_ac_exchange, dict_mod_config, landing_gear_descripti landing_gear_description['landing_gear_limitations']['wing_tip_clearance_angles'] = wing_tip_clearance_angle # debug print - runtime_output.debug('estimate_clearances successfully executed!') + runtime_output.debug('The function "wing_tip_clearance.py" successfully executed!') return landing_gear_description diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/useexistinggeometry.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/useexistinggeometry.py index b8a5014c..de7b7432 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/useexistinggeometry.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/useexistinggeometry.py @@ -4,10 +4,10 @@ import xml.etree.ElementTree as ET # Import own modules. from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.landinggeardesign import landing_gear_design # noPep8 e501 -from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions._07_estimatecog import estimate_cog +from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions._06_estimatecog import estimate_cog from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.plot_functions.generateacnplots import generate_acn_plots # noPep8 e501 -from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions._06_estimatemasses import estimate_masses # noPep8 e501 -from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions._08_setexistinggeometry import set_existing_geometry # noPep8 e501 +from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions._05_estimatemasses import estimate_masses # noPep8 e501 +from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions._07_setexistinggeometry import set_existing_geometry # noPep8 e501 from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.plot_functions.generatelandinggearplots import generate_landing_gear_plots # noPep8 e501 from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.aicraft_classification_number.estimateaircraftclassificationnumber import estimate_aircraft_classification_number # noPep8 e501 -- GitLab From 3e8fa6f52a61ef8d586784c04de59a6b06a948a0 Mon Sep 17 00:00:00 2001 From: AndiGob <andreas.gobbbin@hotmail.de> Date: Wed, 11 Dec 2024 13:03:47 +0100 Subject: [PATCH 4/6] landing_gear_design: -Upadet src code to run nacelle clearance check inside of the strut length dimensioning --- .../landing_gear_design_conf.xml | 10 ++-- .../call_functions/_04_estimatelimitations.py | 25 ++++++--- .../general/call_functions/_06_estimatecog.py | 6 +- .../{ => sub_function}/convergencecheck.py | 0 .../sub_function/nacellegroundclearance.py | 1 - .../{ => sub_function}/prepareexternaldata.py | 8 ++- .../general/landinggeardesign.py | 12 +--- .../general/methodplot.py | 56 +++++++++---------- .../generatelandinggearplots.py | 38 +++++++------ 9 files changed, 83 insertions(+), 73 deletions(-) rename landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/{ => sub_function}/convergencecheck.py (100%) rename landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/{ => sub_function}/prepareexternaldata.py (96%) diff --git a/landing_gear_design/landing_gear_design_conf.xml b/landing_gear_design/landing_gear_design_conf.xml index 3786d73c..8add8c37 100644 --- a/landing_gear_design/landing_gear_design_conf.xml +++ b/landing_gear_design/landing_gear_design_conf.xml @@ -99,25 +99,25 @@ </wing_strike_limit> </ground_strike_limitations> <nacelle_clearance description="Nacelle clearance according to CS25.149."> - <value>0.55</value> + <value>0.45</value> <unit>m</unit> <lower_boundary>0.45</lower_boundary> <upper_boundary>0.90</upper_boundary> - <default>0.60</default> + <default>0.45</default> </nacelle_clearance> <strut_suspension description="Switch to use landing gear strut suspension systems. ('true': use, 'false': don't use"> <value>true</value> <default>true</default> <strut_suspension_travel> - <value>0.65</value> + <value>0.60</value> <unit>m</unit> <lower_boundary>0.35</lower_boundary> <upper_boundary>0.95</upper_boundary> - <default>0.6</default> + <default>0.60</default> </strut_suspension_travel> </strut_suspension> <landing_gear_bay_keel_beam_width description="Width of the landing gear bay keel beam."> - <value>0.55</value> + <value>0.50</value> <unit>m</unit> <lower_boundary>0.5</lower_boundary> <upper_boundary>1.5</upper_boundary> diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py index 7689c8d3..f74806d4 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py @@ -23,10 +23,10 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip convert_inch_to_meter = 0.0254 current_turn_over_angle = None main_gear_positioning_flag = True + nacelle_ground_clearance_flag = False max_outside_diameter_in_inch = float() minimum_required_wheel_base = 0.0 main_gear_tires = landing_gear_description['main_gear_description']['main_gear_tires'] - nose_gear_tires = landing_gear_description['nose_gear_description']['nose_gear_tires'] main_gear_arrangement = landing_gear_description['main_gear_description']['main_gear_arrangement'] nose_gear_arrangement = landing_gear_description['nose_gear_description']['nose_gear_arrangement'] tail_tipping_point = landing_gear_description['tail_tipping_point'] @@ -50,7 +50,9 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip ''' Tail strike take-off and landing limitation ''' i = 0 # while loop to iterate the landing gear strut length to avoid turn over - while i < 1000 and not limitation_flag: + while i < 1000 and not limitation_flag or not nacelle_ground_clearance_flag: + # Reset nacelle ground clearance flag for next iteration + nacelle_ground_clearance_flag = False # Estimate minimum forward main landing gear position for tail strike take-off and landing limitation # check if strut suspension system should be used for limit estimation # -> if true: -> add maximum strut suspension travel to vertical distance between center of gravity and ground @@ -189,11 +191,12 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip if dict_ac_exchange['fuselage_type'] == 'wide_body': main_gear_arrangement['main_landing_gear_wing_mounting_position_in_z_direction'] = -1.3 - main_gear_arrangement['main_gear_outer_strut_length'] = \ - round((landing_gear_description['lever_arms'][ - 'vertical_distance_between_ground_and_aft_center_of_gravity'] - + main_gear_arrangement['main_landing_gear_wing_mounting_position_in_z_direction']) - - (min_tire_diameter/2 * convert_inch_to_meter), 4) + if 'main_gear_outer_strut_length' not in main_gear_arrangement: + main_gear_arrangement['main_gear_outer_strut_length'] = \ + round((landing_gear_description['lever_arms'][ + 'vertical_distance_between_ground_and_aft_center_of_gravity'] + + main_gear_arrangement['main_landing_gear_wing_mounting_position_in_z_direction']) + - (min_tire_diameter/2 * convert_inch_to_meter), 4) # Check nacelle ground clearance if at least one engine is exisiting. if dict_ac_exchange['engine_z_position'] is not None: @@ -212,6 +215,12 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip # Add required delta length to the length of main landing gear struts. main_gear_arrangement['main_gear_outer_strut_length'] += max(required_main_gear_strut_delta_length) + # Recalculate distance between ground and fusealge center line. + landing_gear_description['lever_arms']['vertical_distance_between_ground_and_fuselage_center_line'] = \ + (main_gear_arrangement['main_gear_outer_strut_length'] + + abs(landing_gear_description['main_gear_description']['main_gear_arrangement'][ + 'main_landing_gear_wing_mounting_position_in_z_direction']) + + (max_outside_diameter_in_inch/2 * convert_inch_to_meter)) landing_gear_description['landing_gear_positions']['main_gear_z_position_outer_strut'] = \ round(main_gear_arrangement['main_landing_gear_wing_mounting_position_in_z_direction'], 4) @@ -231,7 +240,7 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip round(main_gear_arrangement['main_gear_outer_strut_length'] + abs(main_gear_arrangement['main_landing_gear_wing_mounting_position_in_z_direction']) - landing_gear_description['fuselage_parameter']['fuselage_height'] / 2 - + 0.6, 4) + + (landing_gear_description['fuselage_parameter']['fuselage_height'] / 2 / 5), 4) ''' estimate y-position of nose and main gear struts ''' # Check if the fuselage_width is not given in the aircraft exchange file diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py index 955ca198..e26bb48c 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py @@ -34,18 +34,18 @@ def estimate_cog(dict_ac_exchange, dict_mod_config, landing_gear_description, ru nose_gear_cog['nose_gear_cog_global']['y'] = 0.0 # global cog in z-direction - fuselage_reference_point_in_z_direction_key, fuselage_reference_point_in_z_direction_value = \ + _, fuselage_reference_point_in_z_direction_value = \ next(iter(dict_ac_exchange['fuselage_reference_point_in_z_direction'].items()), (None, None)) if fuselage_reference_point_in_z_direction_value is not None: nose_gear_cog['nose_gear_cog_global']['z'] = \ round(fuselage_reference_point_in_z_direction_value - landing_gear_description['fuselage_parameter']['fuselage_height'] / 2 - + 0.6, 4) + + (landing_gear_description['fuselage_parameter']['fuselage_height'] / 2 / 5), 4) else: nose_gear_cog['nose_gear_cog_global']['z'] = \ round(0.0 - landing_gear_description['fuselage_parameter']['fuselage_height'] / 2 - + 0.6, 4) + + (landing_gear_description['fuselage_parameter']['fuselage_height'] / 2 / 5), 4) ''' estimate main gear center of gravity ''' # estimate global cog for main gear assembly diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/convergencecheck.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/convergencecheck.py similarity index 100% rename from landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/convergencecheck.py rename to landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/convergencecheck.py diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py index 4140caaa..eb0e89ba 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py @@ -42,7 +42,6 @@ def nacelle_ground_clearance(dict_ac_exchange, dict_mod_config, landing_gear_des # Multiply every second nacelle inboard postion by -1 wing_nacelle_inboard_position = [value if index % 2 == 0 else -value for index, value in enumerate(wing_nacelle_inboard_position)] - # Check if the posiotn of current nacelle under investigation is below the minimum required nacelle ground clearance. for i in range(0, len(wing_nacelle_bottom_position)): clearance_required = abs(wing_nacelle_bottom_position[i]) + dict_mod_config['nacelle_clearance'] diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/prepareexternaldata.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/prepareexternaldata.py similarity index 96% rename from landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/prepareexternaldata.py rename to landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/prepareexternaldata.py index 1815313e..65035865 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/prepareexternaldata.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/prepareexternaldata.py @@ -17,7 +17,7 @@ def prepare_external_data(paths_and_names, routing_dict, dict_ac_exchange, dict_ """ ''' set most forward and most aftward center of gravity position for maximum take-off mass condition ''' - # TODO: this have to remove if the correct cog positions for mtom are writen!!! + # TODO: this have to remove if the correct cog positions for mtom are writen!!! (line 20 to 45) dict_ac_exchange['dihedral_angle_wing'] = 4.5 # angle in degree if dict_ac_exchange['center_of_gravity_in_x'] is not None \ and dict_ac_exchange['wing_reference_point_global_in_x'] is not None: @@ -37,6 +37,12 @@ def prepare_external_data(paths_and_names, routing_dict, dict_ac_exchange, dict_ elif dict_ac_exchange['center_of_gravity_in_x'] is not None: dict_ac_exchange['most_aft_center_of_gravity_in_x_direction'] = (dict_ac_exchange['center_of_gravity_in_x'] + 0.5) dict_ac_exchange['most_forward_center_of_gravity_in_x_direction'] = (dict_ac_exchange['center_of_gravity_in_x'] - 0.5) + + if dict_ac_exchange['most_aft_center_of_gravity_in_z_direction'] is not None: + dict_ac_exchange['most_aft_center_of_gravity_in_z_direction'] = dict_ac_exchange['center_of_gravity_in_z'] - 0.1 + + if dict_ac_exchange['most_forward_center_of_gravity_in_z_direction'] is not None: + dict_ac_exchange['most_forward_center_of_gravity_in_z_direction'] = dict_ac_exchange['center_of_gravity_in_z'] - 0.05 ''' transform local position of input parameter into global positions ''' # transform wing reference points diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/landinggeardesign.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/landinggeardesign.py index a742d7bb..ee879380 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/landinggeardesign.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/landinggeardesign.py @@ -5,10 +5,10 @@ import math import importlib # Import own modules. -from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions.convergencecheck import convergence_check # noPep8 e501 from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.plot_functions.generateacnplots import generate_acn_plots # noPep8 e501 -from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions.prepareexternaldata import prepare_external_data # noPep8 e501 from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.plot_functions.generatelandinggearplots import generate_landing_gear_plots # noPep8 e501 +from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions.sub_function.convergencecheck import convergence_check # noPep8 e501 +from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.call_functions.sub_function.prepareexternaldata import prepare_external_data # noPep8 e501 from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.aicraft_classification_number.estimateaircraftclassificationnumber import estimate_aircraft_classification_number # noPep8 e501 @@ -31,7 +31,6 @@ def landing_gear_design(paths_and_names, routing_dict, dict_ac_exchange, dict_mo ''' Initialize local parameter ''' word_to_insert_after = 'estimate' - files_to_remove = ['prepareexternaldata.py', 'convergencecheck.py'] landing_gear_description = {'working_directory': paths_and_names['working_directory']} ''' Run landing gear design ''' @@ -55,11 +54,6 @@ def landing_gear_design(paths_and_names, routing_dict, dict_ac_exchange, dict_mo routing_dict['module_import_name'].replace('.', '/') + '/general/call_functions' + '/' + entry)] - # Remove unnecessary files from call function list. - for file in files_to_remove: - if file in call_function_list: - call_function_list.remove(file) - call_function_list = sorted(call_function_list, key=lambda x: (int(x.split('_')[1]), x)) # initialize convergence criteria @@ -137,6 +131,6 @@ def landing_gear_design(paths_and_names, routing_dict, dict_ac_exchange, dict_mo landing_gear_description['current_tool_level'] = int(routing_dict['tool_level']) # Debug print for function landing_gear_design. - runtime_output.debug('landing_gear_design successfully executed!') + runtime_output.debug('The functioin "landing_gear_design.py" successfully executed!') return landing_gear_description diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodplot.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodplot.py index 3bcd611a..6be72ab0 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodplot.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodplot.py @@ -175,34 +175,6 @@ def create_landing_gear_plots(paths_and_names, data_dict, plot_directory, runtim for point in data_dict['dict_landing_gear_output']['strut_positions']: ax.scatter(point[0], point[1], color='gray') - # Plot engines if available. - if 'nacelle_plot_list' in data_dict['dict_landing_gear_output']: - theta = np.linspace(0, 2*np.pi, 100) - i = 0 - while i < len(data_dict['dict_landing_gear_output']['nacelle_plot_list']): - y1 = (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][0] - + data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][2] * np.cos(theta)) - z1 = (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][1] - + data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][2] * np.sin(theta)) - y2 = (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][0] - + (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][2] - * (1 - data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][3]/100)) * np.cos(theta)) - z2 = (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][1] - + (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][2] - * (1 - data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][3]/100)) * np.sin(theta)) - ax.plot(y1, z1, color='black') - ax.plot(y2, z2, color='black') - vertices = np.vstack((np.column_stack((y1, z1)), - np.column_stack((y2[::-1], z2[::-1])))) - polygon = Polygon(vertices, closed=True, color='gray', alpha=0.15) - vertices_inner = np.column_stack((y2[::-1], z2[::-1])) - fig.gca().add_patch(polygon) - polygon_inner = Polygon(vertices_inner, closed=True, color='gray', alpha=0.05) - fig.gca().add_patch(polygon_inner) - ax.scatter(data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][0], - data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][1], color='gray') - i += 1 - # Plot wing if available. if 'wing_plot_list' in data_dict['dict_landing_gear_output']: i = 0 @@ -250,6 +222,34 @@ def create_landing_gear_plots(paths_and_names, data_dict, plot_directory, runtim else: runtime_output.warning('Attention! The Use existing geometry mode is selected. ' 'Clearance and limitation angle are not plotted.') + + # Plot nacelle if available. + if 'nacelle_plot_list' in data_dict['dict_landing_gear_output']: + theta = np.linspace(0, 2*np.pi, 100) + i = 0 + while i < len(data_dict['dict_landing_gear_output']['nacelle_plot_list']): + y1 = (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][0] + + data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][2] * np.cos(theta)) + z1 = (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][1] + + data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][2] * np.sin(theta)) + y2 = (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][0] + + (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][2] + * (1 - data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][3]/100)) * np.cos(theta)) + z2 = (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][1] + + (data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][2] + * (1 - data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][3]/100)) * np.sin(theta)) + ax.plot(y1, z1, color='black') + ax.plot(y2, z2, color='black') + vertices = np.vstack((np.column_stack((y1, z1)), + np.column_stack((y2[::-1], z2[::-1])))) + polygon = Polygon(vertices, closed=True, color='gray', alpha=0.8) + vertices_inner = np.column_stack((y2[::-1], z2[::-1])) + fig.gca().add_patch(polygon) + polygon_inner = Polygon(vertices_inner, closed=True, color='gray', alpha=0.15) + fig.gca().add_patch(polygon_inner) + ax.scatter(data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][0], + data_dict['dict_landing_gear_output']['nacelle_plot_list'][i][1], color='gray') + i += 1 # Remove frame fig.gca().spines['top'].set_visible(False) diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generatelandinggearplots.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generatelandinggearplots.py index 160009db..c7694e4e 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generatelandinggearplots.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generatelandinggearplots.py @@ -183,24 +183,6 @@ def generate_landing_gear_plots(dict_ac_exchange, landing_gear_description, runt round(abs(2 * landing_gear_description['landing_gear_positions']['main_gear_outer_strut_y_position']), 2) ] - # Check if engine data are available -> if true: -> prepare plotting. - _, nacelle_y_position_value = \ - next(iter(dict_ac_exchange['engine_y_position'].items()), (None, None)) - - if nacelle_y_position_value is not None: - nacelle_plot_list = [] - cleaned_nacelle_dict = {key: value for key, value in dict_ac_exchange['nacelle_section_height'].items() - if value is not None} - i = 0 - y_pos_list = list(dict_ac_exchange['engine_y_position'].values()) - z_pos_list = list(dict_ac_exchange['engine_z_position'].values()) - radius_list = max(list(cleaned_nacelle_dict.values())) - for i in range(0, len(y_pos_list)): - # List contains the following entries: [y_pos, z_pos, radius, wall_thickness_in_percent] - nacelle_plot_list.append([y_pos_list[i], z_pos_list[i], radius_list/2, 18]) - - dict_landing_gear_output['nacelle_plot_list'] = nacelle_plot_list - # Check if wing data are available -> if true: -> prepare plotting. _, wing_section_y_position_value = \ next(iter(dict_ac_exchange['wing_chord_length_on_section'].items()), (None, None)) @@ -244,6 +226,26 @@ def generate_landing_gear_plots(dict_ac_exchange, landing_gear_description, runt dict_landing_gear_output['wing_clearance_list'] = wing_clearance_list else: dict_landing_gear_output['wing_clearance_list'] = None + + # Check if engine data are available -> if true: -> prepare plotting. + _, nacelle_y_position_value = \ + next(iter(dict_ac_exchange['engine_y_position'].items()), (None, None)) + + if nacelle_y_position_value is not None: + nacelle_plot_list = [] + cleaned_nacelle_dict = {key: value for key, value in dict_ac_exchange['nacelle_section_height'].items() + if value is not None} + i = 0 + y_pos_list = list(dict_ac_exchange['engine_y_position'].values()) + z_pos_list = list(dict_ac_exchange['engine_z_position'].values()) + nacelle_diameter_list = max(list(cleaned_nacelle_dict.values())) + engine_diameter = nacelle_diameter_list - nacelle_diameter_list / 100 * 9 # 9 percent wall thickness of total nacelle diameter assumed + nacelle_width = round(nacelle_diameter_list - engine_diameter, 2) * 100 # nacelle wall width in cm for plotting + for i in range(0, len(y_pos_list)): + # List contains the following entries: [y_pos, z_pos, radius, wall_thickness_in_percent] + nacelle_plot_list.append([y_pos_list[i], z_pos_list[i], nacelle_diameter_list/2, nacelle_width]) + + dict_landing_gear_output['nacelle_plot_list'] = nacelle_plot_list ''' generate output data for side view of landing gear design ''' -- GitLab From 0346d6d5ab72adfd9d3dec4f7da750b0ab8db31d Mon Sep 17 00:00:00 2001 From: AndiGob <andreas.gobbbin@hotmail.de> Date: Wed, 11 Dec 2024 15:48:25 +0100 Subject: [PATCH 5/6] landing_gear_deisgn: - bugFix: -> correction of nacelle clearance iteration flag from False to True --- .../general/call_functions/_04_estimatelimitations.py | 4 ++-- .../call_functions/sub_function/nacellegroundclearance.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py index f74806d4..a5ba7371 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py @@ -23,7 +23,7 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip convert_inch_to_meter = 0.0254 current_turn_over_angle = None main_gear_positioning_flag = True - nacelle_ground_clearance_flag = False + nacelle_ground_clearance_flag = True max_outside_diameter_in_inch = float() minimum_required_wheel_base = 0.0 main_gear_tires = landing_gear_description['main_gear_description']['main_gear_tires'] @@ -50,7 +50,7 @@ def estimate_limitations(dict_ac_exchange, dict_mod_config, landing_gear_descrip ''' Tail strike take-off and landing limitation ''' i = 0 # while loop to iterate the landing gear strut length to avoid turn over - while i < 1000 and not limitation_flag or not nacelle_ground_clearance_flag: + while i < 1000 and not limitation_flag or nacelle_ground_clearance_flag: # Reset nacelle ground clearance flag for next iteration nacelle_ground_clearance_flag = False # Estimate minimum forward main landing gear position for tail strike take-off and landing limitation diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py index eb0e89ba..d8ef3a97 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py @@ -46,10 +46,11 @@ def nacelle_ground_clearance(dict_ac_exchange, dict_mod_config, landing_gear_des for i in range(0, len(wing_nacelle_bottom_position)): clearance_required = abs(wing_nacelle_bottom_position[i]) + dict_mod_config['nacelle_clearance'] clearance_available = landing_gear_description['lever_arms']['vertical_distance_between_ground_and_fuselage_center_line'] + # Check if the required nachell clearance is greater than the current available clearance. if (clearance_required > clearance_available): nacelle_ground_clearance_flag = True required_main_gear_strut_delta_length.append(clearance_required - clearance_available) - + # debug print runtime_output.debug('The function "nacelle_ground_clearance.py" successfully executed!') -- GitLab From ec5a292bb3bba2ae802d7d7f1614c19a9c57876a Mon Sep 17 00:00:00 2001 From: AndiGob <andreas.gobbbin@hotmail.de> Date: Wed, 11 Dec 2024 15:54:08 +0100 Subject: [PATCH 6/6] landing_gear_design: - Add header to all python src files --- landing_gear_design/main.py | 20 +++++++++++++++++++ landing_gear_design/src/datapostprocessing.py | 20 +++++++++++++++++++ landing_gear_design/src/datapreprocessing.py | 20 +++++++++++++++++++ landing_gear_design/src/readlayertext.py | 20 +++++++++++++++++++ .../estimateaircraftclassificationnumber.py | 20 +++++++++++++++++++ .../flexible_pavement/acnflexcomp.py | 20 +++++++++++++++++++ .../alpha_factor_from_curve.py | 20 +++++++++++++++++++ .../flexible_pavement/cvrg.py | 20 +++++++++++++++++++ .../initializeacnflexparameter.py | 20 +++++++++++++++++++ .../setacnflexinputparameter.py | 20 +++++++++++++++++++ .../flexible_pavement/storeflexcurvefits.py | 20 +++++++++++++++++++ .../call_functions/_00_estimatepositions.py | 20 +++++++++++++++++++ .../call_functions/_01_estimatedistances.py | 20 +++++++++++++++++++ .../call_functions/_02_estimateloads.py | 20 +++++++++++++++++++ .../call_functions/_03_estimatetires.py | 20 +++++++++++++++++++ .../call_functions/_04_estimatelimitations.py | 20 +++++++++++++++++++ .../call_functions/_05_estimatemasses.py | 20 +++++++++++++++++++ .../general/call_functions/_06_estimatecog.py | 20 +++++++++++++++++++ .../call_functions/_07_setexistinggeometry.py | 20 +++++++++++++++++++ .../sub_function/convergencecheck.py | 20 +++++++++++++++++++ .../sub_function/nacellegroundclearance.py | 20 +++++++++++++++++++ .../sub_function/prepareexternaldata.py | 20 +++++++++++++++++++ .../sub_function/wingtipclearance.py | 20 +++++++++++++++++++ .../general/landinggeardesign.py | 20 +++++++++++++++++++ .../general/methodhtmlreport.py | 20 +++++++++++++++++++ .../general/methodplot.py | 20 +++++++++++++++++++ .../general/methodtexoutput.py | 20 +++++++++++++++++++ .../general/methodxmlexport.py | 20 +++++++++++++++++++ .../plot_functions/generateacnplots.py | 20 +++++++++++++++++++ .../generatelandinggearplots.py | 20 +++++++++++++++++++ .../general/useexistinggeometry.py | 20 +++++++++++++++++++ .../kerosene/methodkerosene.py | 20 +++++++++++++++++++ .../liquid_hydrogen/methodliquidhydrogen.py | 20 +++++++++++++++++++ .../usermethoddatapreparation.py | 20 +++++++++++++++++++ 34 files changed, 680 insertions(+) diff --git a/landing_gear_design/main.py b/landing_gear_design/main.py index e3eacb65..2deba33d 100644 --- a/landing_gear_design/main.py +++ b/landing_gear_design/main.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Calculation module main file.""" # Import standard modules. import logging diff --git a/landing_gear_design/src/datapostprocessing.py b/landing_gear_design/src/datapostprocessing.py index 618a030c..45613b7e 100644 --- a/landing_gear_design/src/datapostprocessing.py +++ b/landing_gear_design/src/datapostprocessing.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Module providing functions for data postprocessing.""" # Import standard modules. diff --git a/landing_gear_design/src/datapreprocessing.py b/landing_gear_design/src/datapreprocessing.py index c2f9833a..de8078f0 100644 --- a/landing_gear_design/src/datapreprocessing.py +++ b/landing_gear_design/src/datapreprocessing.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Module providing functions for data preprocessing.""" # Import standard modules. import importlib diff --git a/landing_gear_design/src/readlayertext.py b/landing_gear_design/src/readlayertext.py index 86d7c856..a334aa21 100644 --- a/landing_gear_design/src/readlayertext.py +++ b/landing_gear_design/src/readlayertext.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """File providing functions to read layer text from aircraft XML file.""" # Import standard libraries. import sys diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/estimateaircraftclassificationnumber.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/estimateaircraftclassificationnumber.py index 62c3229b..27ba034d 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/estimateaircraftclassificationnumber.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/estimateaircraftclassificationnumber.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import os import sys diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/acnflexcomp.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/acnflexcomp.py index 8f8d79d2..5af142ba 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/acnflexcomp.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/acnflexcomp.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import math diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/alpha_factor_from_curve.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/alpha_factor_from_curve.py index 67d1c92e..852d9d03 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/alpha_factor_from_curve.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/alpha_factor_from_curve.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # imports for python import math diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/cvrg.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/cvrg.py index 8b9176a5..f2efa92a 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/cvrg.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/cvrg.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + import math diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/initializeacnflexparameter.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/initializeacnflexparameter.py index 8162d6aa..f6a89f42 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/initializeacnflexparameter.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/initializeacnflexparameter.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import own modules. from src.wing_mounted.empirical.landing_gear_design_tu_berlin.general.aicraft_classification_number.flexible_pavement.storeflexcurvefits import store_flex_curve_fits # noPep8 e501 diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/setacnflexinputparameter.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/setacnflexinputparameter.py index 20afc060..e27d4890 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/setacnflexinputparameter.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/setacnflexinputparameter.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + def set_acn_flex_input_parameter(paths_and_names, landing_gear_description, dict_ac_exchange, dict_mod_config, runtime_output, dict_acn_flex_parameter, dict_constants): """ This function prepares all input parameter to estimate the aircraft classification number in accordance to diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/storeflexcurvefits.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/storeflexcurvefits.py index 9fb0a7d0..1b6d3e62 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/storeflexcurvefits.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/aicraft_classification_number/flexible_pavement/storeflexcurvefits.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + def store_flex_curve_fits(): """ This function initialized the acn parameter in accordance to ICAO COMFAA tool. diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_00_estimatepositions.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_00_estimatepositions.py index 18fc1f9c..f39d7af5 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_00_estimatepositions.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_00_estimatepositions.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + def estimate_positions(dict_ac_exchange, dict_mod_config, landing_gear_description, runtime_output): """ This function estimates start values of the x-positions for nose and main landing gear in meter. diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_01_estimatedistances.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_01_estimatedistances.py index a4902c22..33f5f5d1 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_01_estimatedistances.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_01_estimatedistances.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import math import sys diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_02_estimateloads.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_02_estimateloads.py index 62ad5496..7752d6de 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_02_estimateloads.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_02_estimateloads.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import sys diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_03_estimatetires.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_03_estimatetires.py index aa59d620..2826fa3c 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_03_estimatetires.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_03_estimatetires.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import os import sys diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py index a5ba7371..9fb94f4e 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_04_estimatelimitations.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import sys import math diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimatemasses.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimatemasses.py index 0ff412ff..a76079b3 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimatemasses.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_05_estimatemasses.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + def estimate_masses(dict_ac_exchange, dict_mod_config, landing_gear_description, runtime_output): """ Hier beschreibung hin: Estimation of undercarriage masses in accordance to Torenbeek. [ref. E. Torenbeek; 1982] diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py index e26bb48c..3753f21e 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_06_estimatecog.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + def estimate_cog(dict_ac_exchange, dict_mod_config, landing_gear_description, runtime_output): """ Hier beschreibung hin: Estimation of undercarriage center of gravity. diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_07_setexistinggeometry.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_07_setexistinggeometry.py index a892e3e5..120dad4e 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_07_setexistinggeometry.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/_07_setexistinggeometry.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import os import sys diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/convergencecheck.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/convergencecheck.py index 81e28215..81410f46 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/convergencecheck.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/convergencecheck.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + def convergence_check(landing_gear_description, convergence_parameter, runtime_output, convergence_flag, i): """ Module checks the convergence of landing gear design an prepared the log-file and console prints. diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py index d8ef3a97..54617ff0 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/nacellegroundclearance.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + def nacelle_ground_clearance(dict_ac_exchange, dict_mod_config, landing_gear_description, main_gear_arrangement, runtime_output): """ Estimation of ancelle ground clearance in accordance to Torenbeek and CS-25. [ref. E. Torenbeek; 1982] diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/prepareexternaldata.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/prepareexternaldata.py index 65035865..1ed7ed68 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/prepareexternaldata.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/prepareexternaldata.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import own modules. import math import pyaixml as aixml diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py index 4bb528a3..62628583 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/call_functions/sub_function/wingtipclearance.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import math diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/landinggeardesign.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/landinggeardesign.py index ee879380..5edb3eb9 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/landinggeardesign.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/landinggeardesign.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import os import sys diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodhtmlreport.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodhtmlreport.py index e8689c07..06752f72 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodhtmlreport.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodhtmlreport.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Module providing report functionalities for current calculation method.""" diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodplot.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodplot.py index 6be72ab0..9cf6f9d3 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodplot.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodplot.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Module providing plotting functionalities for current calculation method.""" # Import standard libraries. import os diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodtexoutput.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodtexoutput.py index 40c7f635..05e9a708 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodtexoutput.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodtexoutput.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Module providing report functionalities for current calculation method.""" diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodxmlexport.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodxmlexport.py index aa317cb3..adf8c4ae 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodxmlexport.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/methodxmlexport.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Module providing export functionalities for current calculation method.""" # Import standard libraries. import xml.etree.ElementTree as ET diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generateacnplots.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generateacnplots.py index ed6e4ddd..d5c0fb75 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generateacnplots.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generateacnplots.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import math diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generatelandinggearplots.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generatelandinggearplots.py index c7694e4e..6bd72cfe 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generatelandinggearplots.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/plot_functions/generatelandinggearplots.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import numpy as np from matplotlib import pyplot as plt diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/useexistinggeometry.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/useexistinggeometry.py index de7b7432..603881c6 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/useexistinggeometry.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/general/useexistinggeometry.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + # Import standard modules. import sys import xml.etree.ElementTree as ET diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/kerosene/methodkerosene.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/kerosene/methodkerosene.py index 3ac4ac5d..98cdf452 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/kerosene/methodkerosene.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/kerosene/methodkerosene.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Module providing calculation functions provided by the user.""" # Import standard modules. import os diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/liquid_hydrogen/methodliquidhydrogen.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/liquid_hydrogen/methodliquidhydrogen.py index 013d5da7..a6168255 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/liquid_hydrogen/methodliquidhydrogen.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/liquid_hydrogen/methodliquidhydrogen.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Module providing calculation functions provided by the user.""" # Import standard modules. import os diff --git a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/usermethoddatapreparation.py b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/usermethoddatapreparation.py index 43a35197..774f9358 100644 --- a/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/usermethoddatapreparation.py +++ b/landing_gear_design/src/wing_mounted/empirical/landing_gear_design_tu_berlin/usermethoddatapreparation.py @@ -1,3 +1,23 @@ +# UNICADO - UNIversity Conceptual Aircraft Design and Optimization +# +# Copyright (C) 2024 UNICADO consortium +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# +# Description: +# This file is part of UNICADO. + """Module providing functions for the preparation of user data.""" import pycoordinatesystemconversion as py11csc -- GitLab