Material Selection¶
The purpose of this analysis is to provide a baseline comparison of readily available materials for selection by engineers working on the project.
This comparison of materials is not exhaustive. Please submit a PR if you would like to add a material or contribute to the accuracy of the existing database.
Use¶
Use the charts below to compare material strength (chart 1) and stiffness (chart 2) against cost per mass of materials.
Recommendations¶
In general, Aluminum is recommended as the default material choice for the project for:
- Weight to strength ratio
- Cost effectiveness
- Corrosion resistance in the untreated condition
- Electrical insulation in the untreated condition
- Thermal conductivity
For cases where Aluminum is not appropriate (high strain where stiffness is required), stainless is recommended.
FDM Plastics¶
These are allowed on the project, but recommended for use only on non-flight parts.
TODO:¶
- Crash course on why FDM is avoided on the project
In [2]:
Copied!
import pandas as pd
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.pyplot as plt
In [3]:
Copied!
# Load the Excel file
data_path = 'matData.csv' # Update with your file path
df = pd.read_csv(data_path)
# Load the Excel file
data_path = 'matData.csv' # Update with your file path
df = pd.read_csv(data_path)
In [4]:
Copied!
# Extracting relevant columns for the chart
material_names = df['material']
yield_strengths = df['yield']
costs = df['cost']
young = df['youngModulus']
density = df['density']
# Calculate Specific Strengths
specificStrengths = yield_strengths / density
# Extracting relevant columns for the chart
material_names = df['material']
yield_strengths = df['yield']
costs = df['cost']
young = df['youngModulus']
density = df['density']
# Calculate Specific Strengths
specificStrengths = yield_strengths / density
In [5]:
Copied!
# Create the scatter plot using Matplotlib
plt.figure(figsize=(12, 8))
# Plot each point with a unique label
for material, x, y in zip(material_names, costs, young):
plt.scatter(x, y)
plt.text(x, y, material, fontsize=9, ha='left')
plt.xlabel('Cost')
plt.ylabel('Yield Strength (ksi)')
plt.title('Yield Strength vs. Cost of Materials')
plt.grid(True)
plt.tight_layout()
# Display the chart
plt.show()
# Create the scatter plot using Matplotlib
plt.figure(figsize=(12, 8))
# Plot each point with a unique label
for material, x, y in zip(material_names, costs, young):
plt.scatter(x, y)
plt.text(x, y, material, fontsize=9, ha='left')
plt.xlabel('Cost')
plt.ylabel('Yield Strength (ksi)')
plt.title('Yield Strength vs. Cost of Materials')
plt.grid(True)
plt.tight_layout()
# Display the chart
plt.show()
In [6]:
Copied!
# Create the scatter plot using Matplotlib
plt.figure(figsize=(12, 8))
# Plot each point with a unique label
for material, x, y in zip(material_names, costs, young):
plt.scatter(x, y)
plt.text(x, y, material, fontsize=9, ha='left')
plt.xlabel('Cost ($/lb)')
plt.ylabel("Young's Modulus (E^6 PSI)")
plt.title("Young's Modulus vs. Cost of Materials")
plt.grid(True)
plt.tight_layout()
# Display the chart
plt.show()
# Create the scatter plot using Matplotlib
plt.figure(figsize=(12, 8))
# Plot each point with a unique label
for material, x, y in zip(material_names, costs, young):
plt.scatter(x, y)
plt.text(x, y, material, fontsize=9, ha='left')
plt.xlabel('Cost ($/lb)')
plt.ylabel("Young's Modulus (E^6 PSI)")
plt.title("Young's Modulus vs. Cost of Materials")
plt.grid(True)
plt.tight_layout()
# Display the chart
plt.show()