mirror of
https://gitlab.com/MisterBiggs/aero-astro-calc.git
synced 2025-07-26 16:11:33 +00:00
packaged up
This commit is contained in:
88
aero_astro_calc/PlaneStress.py
Normal file
88
aero_astro_calc/PlaneStress.py
Normal file
@@ -0,0 +1,88 @@
|
||||
from math import sqrt
|
||||
|
||||
from bokeh.models import Arrow
|
||||
from bokeh.plotting import figure, output_file, show
|
||||
|
||||
from aero_astro_calc.dependencies.LatexLabel import LatexLabel
|
||||
|
||||
|
||||
class PlaneStress:
|
||||
def __init__(self, sigma_x, sigma_y, tau_xy):
|
||||
self.sigma_x = sigma_x
|
||||
self.sigma_y = sigma_y
|
||||
self.tau_xy = tau_xy
|
||||
|
||||
self.tau_max = sqrt(((self.sigma_x - self.sigma_y) / 2) ** 2 + self.tau_xy ** 2)
|
||||
self.sigma_1 = ((self.sigma_x + self.sigma_y) / 2) + self.tau_max
|
||||
self.sigma_2 = ((self.sigma_x + self.sigma_y) / 2) - self.tau_max
|
||||
|
||||
def plane(self):
|
||||
# Settings to make the plot look correct.
|
||||
plot = figure(x_range=(-5, 5), y_range=(-5, 5))
|
||||
plot.axis.major_label_text_font_size = "0pt"
|
||||
plot.axis.major_tick_line_color = None
|
||||
plot.axis[0].ticker.num_minor_ticks = 0
|
||||
plot.axis[1].ticker.num_minor_ticks = 0
|
||||
plot.grid.visible = False
|
||||
plot.axis.visible = False
|
||||
|
||||
# Draw the rectangle
|
||||
plot.rect(0, 0, 4, 4, fill_alpha=0, line_color="black", line_width=3)
|
||||
|
||||
# sigma_x
|
||||
plot.add_layout(Arrow(x_start=2, y_start=0, x_end=4.5, y_end=0))
|
||||
plot.add_layout(Arrow(x_start=-2, y_start=0, x_end=-4.5, y_end=0))
|
||||
plot.add_layout(
|
||||
LatexLabel(
|
||||
x=3.0, y=0.7, text=f"\\sigma_{{x}} = {self.sigma_x}", render_mode="css"
|
||||
)
|
||||
)
|
||||
|
||||
# sigma_y
|
||||
plot.add_layout(Arrow(x_start=0, y_start=2, x_end=0, y_end=4.5))
|
||||
plot.add_layout(Arrow(x_start=0, y_start=-2, x_end=0, y_end=-4.5))
|
||||
plot.add_layout(
|
||||
LatexLabel(
|
||||
x=0.25, y=4, text=f"\\sigma_{{y}} = {self.sigma_y}", render_mode="css"
|
||||
)
|
||||
)
|
||||
|
||||
# tau_xy
|
||||
plot.add_layout(Arrow(x_start=2.5, y_start=-2, x_end=2.5, y_end=2.2))
|
||||
plot.add_layout(Arrow(y_start=2.5, x_start=-2, y_end=2.5, x_end=2.2))
|
||||
plot.add_layout(Arrow(x_start=-2.5, y_start=2, x_end=-2.5, y_end=-2.2))
|
||||
plot.add_layout(Arrow(y_start=-2.5, x_start=2, y_end=-2.5, x_end=-2.2))
|
||||
plot.add_layout(
|
||||
LatexLabel(
|
||||
x=2.5, y=2.6, text=f"\\tau_{{xy}} = {self.tau_xy}", render_mode="css"
|
||||
)
|
||||
)
|
||||
|
||||
# Other calculations
|
||||
plot.add_layout(
|
||||
LatexLabel(
|
||||
x=-1.8,
|
||||
y=1.8,
|
||||
text=f"\sigma_1 = {round(self.sigma_1,4)}",
|
||||
render_mode="css",
|
||||
)
|
||||
)
|
||||
plot.add_layout(
|
||||
LatexLabel(
|
||||
x=-1.8,
|
||||
y=1.4,
|
||||
text=f"\sigma_2 = {round(self.sigma_2,4)}",
|
||||
render_mode="css",
|
||||
)
|
||||
)
|
||||
plot.add_layout(
|
||||
LatexLabel(
|
||||
x=-1.8,
|
||||
y=1,
|
||||
text=f"\\tau_{{max}} = {round(self.tau_max,4)}",
|
||||
render_mode="css",
|
||||
)
|
||||
)
|
||||
|
||||
show(plot)
|
||||
|
Reference in New Issue
Block a user