1
0
mirror of https://gitlab.com/MisterBiggs/aero-astro-calc.git synced 2025-06-15 14:46:49 +00:00

Merge branch 'mohrs-circle' into 'master'

Mohrs circle

See merge request MisterBiggs/aero-astro-calc!4
This commit is contained in:
Anson Biggs 2020-01-21 01:05:12 +00:00
commit e201b231ef
6 changed files with 114 additions and 26 deletions

View File

@ -2,7 +2,6 @@ stages:
- deploy
- test
black:
stage: test
image: python:3.8
@ -14,19 +13,12 @@ black:
script:
- black --check .
# https://github.com/python-gitlab/python-gitlab/blob/master/.gitlab-ci.yml used for reference
deploy:
stage: deploy
pypi:
image: python:3.8
before_script:
- python -V # Print out python version for debugging
- pip install -U setuptools wheel twine
stage: deploy
script:
- python setup.py bdist_wheel
- twine upload --skip-existing -u __token__ -p $PYPI_TOKEN dist dist/*
only:
- tags
- apt-get update -qy
- apt-get install -y ruby-dev
- gem install dpl
- python setup.py sdist
- dpl --provider=pypi --user=$TWINE_USERNAME --password=$TWINE_PASSWORD --skip_existing=true

View File

@ -2,17 +2,44 @@
A small python library with functions to assist engineers.
## Usage
## Getting Started
### Code:
- Install using pip:
```
pip install aero-astro-calc
```
- Import into your Python project
```python
from aero_astro_calc import PlaneStress
```
## Usage
Make plane stress object:
```python
stress = PlaneStress(80, -40, 25)
```
View the stress on a 2D plane:
```python
stress.plane()
```
### Output:
![Plane Stress example](images/PlaneStress.png)
![Plane Stress example](PlaneStress.png)
View Mohr's circle of the stresses:
```python
stress.mohr()
```
![Mohr's Circle Example](images/MohrsCircle.png)
## Contact
Anson Biggs - [anson@ansonbiggs.com](mailto:anson@ansonbiggs.com) - [@Anson_3D](https://twitter.com/Anson_3D)

View File

@ -1,9 +1,7 @@
from math import sqrt
from aero_astro_calc.dependencies.LatexLabel import LatexLabel
from bokeh.models import Arrow
from bokeh.plotting import figure, show
from aero_astro_calc.dependencies.LatexLabel import LatexLabel
from numpy import cos, linspace, pi, sin, sqrt
class PlaneStress:
@ -63,7 +61,7 @@ class PlaneStress:
LatexLabel(
x=-1.8,
y=1.8,
text=f"\sigma_1 = {round(self.sigma_1,4)}",
text=f"\\sigma_1 = {round(self.sigma_1,4)}",
render_mode="css",
)
)
@ -71,7 +69,7 @@ class PlaneStress:
LatexLabel(
x=-1.8,
y=1.4,
text=f"\sigma_2 = {round(self.sigma_2,4)}",
text=f"\\sigma_2 = {round(self.sigma_2,4)}",
render_mode="css",
)
)
@ -85,3 +83,74 @@ class PlaneStress:
)
show(plot)
def mohr(self):
padding = 1.3
midpoint = (self.sigma_1 + self.sigma_2) / 2
plot = figure(
x_range=[
(midpoint - self.tau_max) * padding,
(midpoint + self.tau_max) * padding,
],
y_range=[-self.tau_max * padding, self.tau_max * padding],
)
# Bokeh circle is stupid so it has to be done the hard way.
theta = linspace(0, 2 * pi, 200)
sig1 = self.tau_max * cos(theta) + midpoint
sig2 = self.tau_max * sin(theta)
plot.line(x=sig1, y=sig2)
# x axis
plot.line(
x=[
(midpoint - self.tau_max) * padding,
(midpoint + self.tau_max) * padding,
],
y=[0, 0],
line_color="black",
)
# y axis
plot.line(
x=[0, 0],
y=[self.tau_max * padding, self.tau_max * -padding],
line_color="black",
)
# Labels
# sigma_1
plot.circle(x=midpoint + self.tau_max, y=0, size=self.tau_max * 0.2)
plot.add_layout(
LatexLabel(
x=midpoint + self.tau_max,
y=self.tau_max * -0.1,
text=f"\\sigma_1 = {round(self.sigma_1)}",
render_mode="css",
)
)
# sigma_2
plot.circle(x=midpoint - self.tau_max, y=0, size=self.tau_max * 0.2)
plot.add_layout(
LatexLabel(
x=midpoint - self.tau_max,
y=self.tau_max * -0.1,
text=f"\\sigma_2 = {round(self.sigma_2)}",
render_mode="css",
)
)
# tau_max
plot.circle(x=midpoint, y=self.tau_max, size=sqrt(self.tau_max))
plot.add_layout(
LatexLabel(
x=midpoint,
y=self.tau_max * 0.9,
text=f"\\tau_{{max}} = {round(self.tau_max)}",
render_mode="css",
)
)
show(plot)

BIN
images/MohrsCircle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
setuptools.setup(
name="aero_astro_calc",
version="2020.1.0",
version="2020.2.0",
author="Anson Biggs",
author_email="anson@ansonbiggs.com",
description="A small python library with functions to assist engineers.",