Spaces:
Sleeping
Sleeping
File size: 4,121 Bytes
23d0f76 ef88128 23d0f76 8f35c4e 23d0f76 8f35c4e 23d0f76 ef88128 23d0f76 8f35c4e 23d0f76 ef88128 8f35c4e ef88128 8f35c4e ef88128 8f35c4e ef88128 8f35c4e ef88128 23d0f76 ef88128 23d0f76 8f35c4e 23d0f76 8f35c4e 23d0f76 ef88128 23d0f76 ef88128 23d0f76 8f35c4e 23d0f76 8f35c4e 23d0f76 ef88128 23d0f76 ef88128 8f35c4e ef88128 8f35c4e ef88128 23d0f76 ef88128 8f35c4e ef88128 8f35c4e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
def visualize_results(simulator, length, width, thickness, stress, deformation):
"""
Generates 3D and 2D visualizations for simulation results.
Parameters:
simulator (str): Name of the simulator (e.g., 'Python-Based Solver').
length (float): Length of the object.
width (float): Width of the object.
thickness (float): Thickness of the object.
stress (float): Stress value.
deformation (float): Deformation value.
Returns:
str: Path to the 3D and 2D visualization images.
"""
# Generate 2D bar chart
fig, ax = plt.subplots(figsize=(6, 4))
ax.bar(["Stress", "Deformation"], [stress, deformation], color=["red", "blue"])
ax.set_title(f"Simulation Results ({simulator})")
ax.set_ylabel("Magnitude")
ax.grid(True, linestyle="--", alpha=0.6)
# Save 2D chart
output_2d_path = "results_2d.png"
plt.savefig(output_2d_path)
plt.close(fig)
# Generate 3D bar chart
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
x = np.array([1, 2])
y = np.array([0, 0])
z = np.array([0, 0])
dx = np.array([1, 1])
dy = np.array([1, 1])
dz = np.array([stress, deformation])
ax.bar3d(x, y, z, dx, dy, dz, color=["red", "blue"], alpha=0.6)
ax.set_xlabel('Parameters')
ax.set_ylabel('Category')
ax.set_zlabel('Magnitude')
ax.set_xticks([1, 2])
ax.set_xticklabels(['Stress', 'Deformation'])
ax.set_title(f"3D Simulation Results ({simulator})")
# Save 3D chart
output_3d_path = "results_3d.png"
plt.savefig(output_3d_path)
plt.close(fig)
return output_2d_path, output_3d_path
def visualize_end_product(simulation_type, length, width, thickness, deformation):
"""
Visualize the end product based on the parameters with 3D visualization.
Parameters:
simulation_type (str): 'plate' or 'beam'.
length (float): Length of the product (mm).
width (float): Width of the product (mm).
thickness (float): Thickness of the product (mm).
deformation (float): Deformation (mm).
Returns:
str: Path to the saved image of the 3D visualization.
"""
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
# Create a grid of coordinates for the surface
x = np.linspace(0, length, 10)
y = np.linspace(0, width, 10)
x, y = np.meshgrid(x, y)
z = np.zeros_like(x) # Base plane
# Add deformation to the surface
z_deformed = z + np.random.normal(0, deformation / 10, size=z.shape) # Adding deformation visually
if simulation_type == "plate":
ax.plot_surface(x, y, z_deformed, color='lightblue', alpha=0.8)
ax.text(length / 2, width / 2, np.max(z_deformed) + 2, f"Deformation: {deformation:.2f} mm", color="red", fontsize=10, ha="center")
elif simulation_type == "beam":
ax.plot_surface(x, y, z_deformed, color='lightgreen', alpha=0.8)
ax.text(length / 2, thickness / 2, np.max(z_deformed) + 2, f"Deflection: {deformation:.2f} mm", color="red", fontsize=10, ha="center")
else:
raise ValueError("Invalid simulation type.")
# Add dimensions
ax.set_xlabel("Length (mm)")
ax.set_ylabel("Width (mm)")
ax.set_zlabel("Deformation (mm)")
ax.set_title(f"3D Visualization of {simulation_type.capitalize()} End Product")
# Save the 3D visualization
output_3d_path = f"{simulation_type}_end_product_3d.png"
plt.savefig(output_3d_path)
plt.close(fig)
return output_3d_path
# Example usage:
simulate_results_2d_path, simulate_results_3d_path = visualize_results('Python-Based Solver', 200, 100, 20, 350, 0.02)
end_product_3d_path = visualize_end_product('plate', 200, 100, 20, 0.02)
print(f"2D Simulation Visualization saved at: {simulate_results_2d_path}")
print(f"3D Simulation Visualization saved at: {simulate_results_3d_path}")
print(f"3D End Product Visualization saved at: {end_product_3d_path}")
|