granular-based simulation and related systems
Project description
pasir
granular-based simulation and related systems
install
pip install pasir
examples
from pasir.butiran.color2 import Color2
from pasir.butiran.math.vect3 import Vect3
from pasir.butiran.grain import Grain
from pasir.butiran.force.gravitational import Gravitational
# define grain with initial position and velocity
grain = Grain(id="0002", m = 1)
grain.r = Vect3(0, 0, 0)
grain.v = Vect3(30, 40, 0)
# define gravitational field and force
g = Vect3(0, -10, 0)
gravitational = Gravitational(field=g)
import numpy as np
# define iteration
tbeg = 0
tend = 8
N = 100
dt = (tend - tbeg) / N
# define lists
data_t = []
data_x = []
data_y = []
data_vx = []
data_vy = []
# perform iteration
#print("#t x y vx vy")
print("Calculate position and velocity.")
for i in range(N + 1):
t = i
m = grain.m
v = grain.v
r = grain.r
data_t.append(t)
data_x.append(r.x)
data_y.append(r.y)
data_vx.append(v.x)
data_vy.append(v.y)
fg = gravitational.force(grain)
a = fg / m
v += a * dt
r += v * dt
grain.v = v
grain.r = r
#print(t, ' ', end='')
#print(r.x, ' ', r.y, ' ', end='')
#print(v.x, ' ', v.y)
print("Plot data.")
from matplotlib.pyplot import figure
import matplotlib.pyplot as plt
figure(figsize=(5,3.5), dpi=80)
plt.plot(data_x, data_y, c='r')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.xlim([0, 240])
plt.ylim([0, 80])
plt.xticks(np.arange(0, 240+0.01, 40))
plt.yticks(np.arange(0, 80+0.01, 20))
plt.text(60, 39, "$v_x = 30$, $v_y = 40$, $m = 1$", fontsize=12)
plt.text(98, 30, "$g = -10$", fontsize=12)
print("Save figure.")
plt.savefig('parabolic_gravitational_euler.png', bbox_inches='tight')
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pasir-0.0.2.tar.gz
(7.2 kB
view details)
Built Distribution
pasir-0.0.2-py3-none-any.whl
(11.0 kB
view details)
File details
Details for the file pasir-0.0.2.tar.gz
.
File metadata
- Download URL: pasir-0.0.2.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b6091e38793557b845583a9370e03ea2b760efb4370362dd0738529002528e9 |
|
MD5 | 92c99892112774c363a12284dbb21ed7 |
|
BLAKE2b-256 | 5755ad1b140014cc861feee0813dba0b75debf9ae95b9700473a1c4df3688eb1 |
File details
Details for the file pasir-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: pasir-0.0.2-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60dffbf1cc7ac2c2526ef66087a6ed4f9a3087cc3ab4d2ce7d21624ec7c16af2 |
|
MD5 | 06e6f9de8c2e018dfd724996ffbcc8e5 |
|
BLAKE2b-256 | a1b27fee3a9d8130740396c41ace3eb737a1fc3d312da9e54c1850dd2dc7fcae |