Difference between revisions of "Ashar Prayoga"
(→INTRODUCTION) |
|||
Line 35: | Line 35: | ||
'''7. Regulations''' | '''7. Regulations''' | ||
: Ensure that the design complies with applicable regulations and standards in the hydrogen storage industry. | : Ensure that the design complies with applicable regulations and standards in the hydrogen storage industry. | ||
+ | |||
+ | == '''DESIGN CALCULATION''' == | ||
+ | |||
+ | <syntaxhighlight lang="xml"> | ||
+ | |||
+ | from scipy.optimize import minimize | ||
+ | |||
+ | def objective_function(x): | ||
+ | thickness, radius, height = x[0], x[1], x[2] | ||
+ | |||
+ | # Calculate the weight of the tank (assuming density of ASTM A36 sheet metal) | ||
+ | density_astm_a36 = 7850 # kg/m^3 (density of ASTM A36 sheet metal) | ||
+ | volume = 3.14159 * radius * radius * height / 1000 # Convert to liters | ||
+ | weight = density_astm_a36 * volume | ||
+ | |||
+ | # Calculate the cost of the tank (based on material price per kg) | ||
+ | material_price = 500000 / weight # Rp/kg (maximum allowed cost divided by weight) | ||
+ | cost = weight * material_price | ||
+ | |||
+ | # Define the objective function as a combination of weight and cost | ||
+ | # You can adjust the coefficients based on your preference for weight vs. cost | ||
+ | objective_value = weight + 0.001 * cost | ||
+ | |||
+ | return objective_value | ||
+ | |||
+ | def constraint(x): | ||
+ | thickness, radius, height = x[0], x[1], x[2] | ||
+ | |||
+ | # Volume constraint: tank volume should be 1 liter | ||
+ | volume = 3.14159 * radius * radius * height / 1000 # Convert to liters | ||
+ | |||
+ | # Pressure constraint: tank should handle 8 bar pressure with a safety factor of 2 | ||
+ | allowable_stress = 250e6 # Pa (allowable stress for ASTM A36 sheet metal) | ||
+ | inside_radius = radius - thickness # Inner radius of the tank | ||
+ | pressure = 8e5 # Pa (8 bar pressure) | ||
+ | stress = pressure * inside_radius / thickness # Stress in the tank wall | ||
+ | safety_factor = 2.0 # Safety factor | ||
+ | stress_allowable = allowable_stress / safety_factor | ||
+ | |||
+ | return [ | ||
+ | volume - 1, # Volume constraint (1 liter) | ||
+ | stress - stress_allowable, # Pressure constraint | ||
+ | thickness - 5, # Minimum thickness constraint (5 mm) | ||
+ | 10 - thickness # Maximum thickness constraint (10 mm) | ||
+ | ] | ||
+ | |||
+ | # Initial guess for thickness, radius, and height (in mm) | ||
+ | x0 = [10.0, 50.0, 100.0] | ||
+ | |||
+ | # Define bounds for thickness, radius, and height (in mm) | ||
+ | bounds = [ | ||
+ | (5, 10), # Bounds for thickness (assumed range from 5 to 10 mm) | ||
+ | (1, 50), # Bounds for radius (assumed range from 1 to 50 mm) | ||
+ | (100, 1000) # Bounds for height (assumed range from 100 to 1000 mm) | ||
+ | ] | ||
+ | |||
+ | # Define the optimization problem | ||
+ | problem = { | ||
+ | 'type': 'SLSQP', | ||
+ | 'fun': objective_function, | ||
+ | 'x0': x0, | ||
+ | 'bounds': bounds, | ||
+ | 'constraints': [{'type': 'ineq', 'fun': lambda x: constraint(x)}] | ||
+ | } | ||
+ | |||
+ | # Solve the optimization problem | ||
+ | result = minimize(problem['fun'], x0=problem['x0'], bounds=problem['bounds'], constraints=problem['constraints'], method=problem['type']) | ||
+ | |||
+ | # Extract the optimal solution | ||
+ | optimal_thickness, optimal_radius, optimal_height = result.x | ||
+ | |||
+ | # Calculate the weight of the tank (assuming density of ASTM A36 sheet metal) | ||
+ | density_astm_a36 = 7850 # kg/m^3 (density of ASTM A36 sheet metal) | ||
+ | volume = 3.14159 * optimal_radius * optimal_radius * optimal_height / 1000 # Convert to liters | ||
+ | weight = density_astm_a36 * volume | ||
+ | |||
+ | # Calculate the cost of the tank (based on material price per kg) | ||
+ | material_price = 500000 / weight # Rp/kg (maximum allowed cost divided by weight) | ||
+ | cost = weight * material_price | ||
+ | |||
+ | # Print the optimal solution with units | ||
+ | print(f"Optimal Thickness: {optimal_thickness:.2f} mm") | ||
+ | print(f"Optimal Radius: {optimal_radius:.2f} mm") | ||
+ | print(f"Optimal Height: {optimal_height:.2f} mm") | ||
+ | print(f"Cost: {cost:.2f} Rp") |
Revision as of 03:25, 5 June 2023
INTRODUCTION
Assalamualaikum wr. wb. Perkenalkan nama saya Ashar Prayoga, saya adalah mahasiswa program studi Teknik Mesin angkatan 2021 dengan NPM 2106727954. Di laman ini saya akan membagikan tentang hasil pembelajaran saya untuk kelas Metode Numerik-01, harapannya semoga apa yang saya tulis disini dapat bermanfaat di kemudian hari.
DESIGN AND OPTIMIZATION OF PRESSURIZED HYDROGEN STORAGE
When designing the optimization of pressurized hydrogen storage with a volume of 1 liter, pressure of 8 bar, and a production cost not exceeding Rp500,000.00, there are several considerations to take into account. Here are some important factors to consider:
1. Container Material and Construction
- Choose materials that are safe and resistant to high pressure and corrosion, such as aluminum, stainless steel, or carbon fiber-reinforced composites.
- Ensure that the container construction can safely withstand the desired hydrogen pressure.
2. Safety
- Certification and compliance with applicable safety standards such as ISO 15869 or SAE J2579.
- Consider adequate safety features, such as pressure relief valves, pressure sensors, and fire suppression systems.
3. Space Efficiency
- Design the container to maximize the use of space within the 1-liter volume.
- Utilize optimal packaging techniques to maximize the amount of hydrogen that can be stored within the available space.
4. Storage Efficiency
- Consider the most efficient method of hydrogen storage, such as physical storage as compressed gas or storage in the form of a fuel cell if hydrogen fuel cells are being :considered.
5. Production Cost
- Take into account the cost of materials, production, and testing associated with the storage design.
- Optimize the design to achieve a production cost that does not exceed the budgetary constraints.
6. Reliability
- Ensure that the container design can maintain a stable pressure over the desired period without leaks or potential damage.
7. Regulations
- Ensure that the design complies with applicable regulations and standards in the hydrogen storage industry.
DESIGN CALCULATION
<syntaxhighlight lang="xml">
from scipy.optimize import minimize
def objective_function(x):
thickness, radius, height = x[0], x[1], x[2]
# Calculate the weight of the tank (assuming density of ASTM A36 sheet metal) density_astm_a36 = 7850 # kg/m^3 (density of ASTM A36 sheet metal) volume = 3.14159 * radius * radius * height / 1000 # Convert to liters weight = density_astm_a36 * volume
# Calculate the cost of the tank (based on material price per kg) material_price = 500000 / weight # Rp/kg (maximum allowed cost divided by weight) cost = weight * material_price
# Define the objective function as a combination of weight and cost # You can adjust the coefficients based on your preference for weight vs. cost objective_value = weight + 0.001 * cost
return objective_value
def constraint(x):
thickness, radius, height = x[0], x[1], x[2]
# Volume constraint: tank volume should be 1 liter volume = 3.14159 * radius * radius * height / 1000 # Convert to liters
# Pressure constraint: tank should handle 8 bar pressure with a safety factor of 2 allowable_stress = 250e6 # Pa (allowable stress for ASTM A36 sheet metal) inside_radius = radius - thickness # Inner radius of the tank pressure = 8e5 # Pa (8 bar pressure) stress = pressure * inside_radius / thickness # Stress in the tank wall safety_factor = 2.0 # Safety factor stress_allowable = allowable_stress / safety_factor
return [ volume - 1, # Volume constraint (1 liter) stress - stress_allowable, # Pressure constraint thickness - 5, # Minimum thickness constraint (5 mm) 10 - thickness # Maximum thickness constraint (10 mm) ]
- Initial guess for thickness, radius, and height (in mm)
x0 = [10.0, 50.0, 100.0]
- Define bounds for thickness, radius, and height (in mm)
bounds = [
(5, 10), # Bounds for thickness (assumed range from 5 to 10 mm) (1, 50), # Bounds for radius (assumed range from 1 to 50 mm) (100, 1000) # Bounds for height (assumed range from 100 to 1000 mm)
]
- Define the optimization problem
problem = {
'type': 'SLSQP', 'fun': objective_function, 'x0': x0, 'bounds': bounds, 'constraints': [{'type': 'ineq', 'fun': lambda x: constraint(x)}]
}
- Solve the optimization problem
result = minimize(problem['fun'], x0=problem['x0'], bounds=problem['bounds'], constraints=problem['constraints'], method=problem['type'])
- Extract the optimal solution
optimal_thickness, optimal_radius, optimal_height = result.x
- Calculate the weight of the tank (assuming density of ASTM A36 sheet metal)
density_astm_a36 = 7850 # kg/m^3 (density of ASTM A36 sheet metal) volume = 3.14159 * optimal_radius * optimal_radius * optimal_height / 1000 # Convert to liters weight = density_astm_a36 * volume
- Calculate the cost of the tank (based on material price per kg)
material_price = 500000 / weight # Rp/kg (maximum allowed cost divided by weight) cost = weight * material_price
- Print the optimal solution with units
print(f"Optimal Thickness: {optimal_thickness:.2f} mm") print(f"Optimal Radius: {optimal_radius:.2f} mm") print(f"Optimal Height: {optimal_height:.2f} mm") print(f"Cost: {cost:.2f} Rp")