PyParticles3 0.4.0rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyparticles/__init__.py +26 -0
- pyparticles/__main__.py +7 -0
- pyparticles/animation/__init__.py +21 -0
- pyparticles/animation/animated_cli.py +53 -0
- pyparticles/animation/animated_ogl.py +691 -0
- pyparticles/animation/animated_ogl_compat.py +243 -0
- pyparticles/animation/animated_scatter.py +94 -0
- pyparticles/animation/animation.py +251 -0
- pyparticles/animation/test_animation.py +310 -0
- pyparticles/demo/__init__.py +33 -0
- pyparticles/demo/bubble.py +106 -0
- pyparticles/demo/electromagnetic_demo.py +128 -0
- pyparticles/demo/electrostatic_demo.py +126 -0
- pyparticles/demo/fountain.py +478 -0
- pyparticles/demo/gas_lennard_jones.py +87 -0
- pyparticles/demo/gravity_clusters.py +73 -0
- pyparticles/demo/solar_system.py +222 -0
- pyparticles/demo/springs.py +141 -0
- pyparticles/demo/springs_constr.py +135 -0
- pyparticles/demo/test.py +34 -0
- pyparticles/forces/__init__.py +21 -0
- pyparticles/forces/const_force.py +140 -0
- pyparticles/forces/damping.py +174 -0
- pyparticles/forces/drag.py +167 -0
- pyparticles/forces/electromagnetic.py +105 -0
- pyparticles/forces/electromagnetic_field.py +95 -0
- pyparticles/forces/electrostatic.py +72 -0
- pyparticles/forces/force.py +75 -0
- pyparticles/forces/force_constrained.py +32 -0
- pyparticles/forces/fused_const_drag.py +445 -0
- pyparticles/forces/gravity.py +345 -0
- pyparticles/forces/lennard_jones.py +74 -0
- pyparticles/forces/linear_spring.py +86 -0
- pyparticles/forces/linear_spring_constrained.py +72 -0
- pyparticles/forces/multiple_force.py +134 -0
- pyparticles/forces/pseudo_bubble.py +226 -0
- pyparticles/forces/van_der_waals_force.py +60 -0
- pyparticles/forces/vector_field_force.py +52 -0
- pyparticles/geometry/__init__.py +21 -0
- pyparticles/geometry/dist.py +24 -0
- pyparticles/geometry/intersection.py +62 -0
- pyparticles/geometry/transformations.py +387 -0
- pyparticles/main/__init__.py +21 -0
- pyparticles/main/main.py +466 -0
- pyparticles/measures/__init__.py +21 -0
- pyparticles/measures/elastic_potential_energy.py +67 -0
- pyparticles/measures/gravitational_potential_energy.py +69 -0
- pyparticles/measures/kinetic_energy.py +68 -0
- pyparticles/measures/mass.py +59 -0
- pyparticles/measures/measure.py +156 -0
- pyparticles/measures/momentum.py +144 -0
- pyparticles/measures/total_energy.py +68 -0
- pyparticles/ode/__init__.py +21 -0
- pyparticles/ode/euler_solver.py +214 -0
- pyparticles/ode/euler_solver_constrained.py +49 -0
- pyparticles/ode/leapfrog_solver.py +37 -0
- pyparticles/ode/leapfrog_solver_constrained.py +53 -0
- pyparticles/ode/midpoint_solver.py +43 -0
- pyparticles/ode/midpoint_solver_constrained.py +60 -0
- pyparticles/ode/ode_solver.py +134 -0
- pyparticles/ode/ode_solver_constrained.py +43 -0
- pyparticles/ode/runge_kutta_solver.py +79 -0
- pyparticles/ode/runge_kutta_solver_constrained.py +98 -0
- pyparticles/ode/sim_time.py +56 -0
- pyparticles/ode/stormer_verlet_solver.py +50 -0
- pyparticles/ode/stormer_verlet_solver_constrained.py +73 -0
- pyparticles/ogl/__init__.py +21 -0
- pyparticles/ogl/axis_ogl.py +210 -0
- pyparticles/ogl/draw_particles_ogl.py +313 -0
- pyparticles/ogl/draw_particles_ogl_compat.py +509 -0
- pyparticles/ogl/draw_vector_field.py +221 -0
- pyparticles/ogl/opencl_gl_vbo.py +485 -0
- pyparticles/ogl/trackball.py +131 -0
- pyparticles/ogl/translate_scene.py +87 -0
- pyparticles/pset/__init__.py +21 -0
- pyparticles/pset/boundary.py +69 -0
- pyparticles/pset/cluster.py +28 -0
- pyparticles/pset/constrained_force_interactions.py +63 -0
- pyparticles/pset/constrained_x.py +158 -0
- pyparticles/pset/constraint.py +42 -0
- pyparticles/pset/default_boundary.py +43 -0
- pyparticles/pset/file_cluster.py +131 -0
- pyparticles/pset/logger.py +152 -0
- pyparticles/pset/octree.py +451 -0
- pyparticles/pset/opencl_context.py +335 -0
- pyparticles/pset/particles_set.py +499 -0
- pyparticles/pset/periodic_boundary.py +36 -0
- pyparticles/pset/rand_cluster.py +188 -0
- pyparticles/pset/rebound_boundary.py +68 -0
- pyparticles/utils/__init__.py +21 -0
- pyparticles/utils/parse_args.py +72 -0
- pyparticles/utils/problem_config.py +608 -0
- pyparticles/utils/pypart_global.py +87 -0
- pyparticles/utils/time_formatter.py +50 -0
- pyparticles3-0.4.0rc1.dist-info/METADATA +196 -0
- pyparticles3-0.4.0rc1.dist-info/RECORD +100 -0
- pyparticles3-0.4.0rc1.dist-info/WHEEL +5 -0
- pyparticles3-0.4.0rc1.dist-info/entry_points.txt +3 -0
- pyparticles3-0.4.0rc1.dist-info/licenses/LICENSE-gpl-3.0.txt +674 -0
- pyparticles3-0.4.0rc1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# PyParticles : Particles simulation in python
|
|
2
|
+
# Copyright (C) 2012 Simone Riva
|
|
3
|
+
#
|
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
# (at your option) any later version.
|
|
8
|
+
#
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU General Public License
|
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
import time
|
|
19
|
+
|
|
20
|
+
class MyTimeFormatter( object ):
|
|
21
|
+
|
|
22
|
+
def __init__(self):
|
|
23
|
+
pass
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def to_str( self , t ):
|
|
27
|
+
|
|
28
|
+
tf = [ "%4dy " , "%3dd " , "%02dh " , "%02dm " , "%02ds " , "%07.3fms " ]
|
|
29
|
+
|
|
30
|
+
days_y = 365.256363004
|
|
31
|
+
sec_y = days_y * 3600 * 24
|
|
32
|
+
|
|
33
|
+
years = int( t / sec_y )
|
|
34
|
+
days = int( t / (3600*24) - years*days_y )
|
|
35
|
+
hr = int( t / 3600 - days*24 - days_y*years*24 )
|
|
36
|
+
minu = int( t / 60 - hr*60 - days*(24*60) - days_y*years*24*60 )
|
|
37
|
+
sec = int( t - minu*60 - hr*3600 - days*(24*3600) - days_y*years*24*60*60 )
|
|
38
|
+
msec = float( 1000 * ( t - int( t ) ) )
|
|
39
|
+
|
|
40
|
+
res = ""
|
|
41
|
+
|
|
42
|
+
i = 0
|
|
43
|
+
f = False
|
|
44
|
+
for tt in list( [ years , days , hr , minu , sec , msec ] ):
|
|
45
|
+
if tt > 0 or f :
|
|
46
|
+
res = res + tf[i] % tt
|
|
47
|
+
f = True
|
|
48
|
+
i+=1
|
|
49
|
+
|
|
50
|
+
return res
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PyParticles3
|
|
3
|
+
Version: 0.4.0rc1
|
|
4
|
+
Summary: Modern educational particle simulation toolbox with OpenCL/OpenGL acceleration
|
|
5
|
+
Author: Simone Riva
|
|
6
|
+
Maintainer: jamaj69
|
|
7
|
+
License-Expression: GPL-3.0-or-later
|
|
8
|
+
Project-URL: Homepage, https://github.com/jamaj69/pyparticles
|
|
9
|
+
Project-URL: Source, https://github.com/jamaj69/pyparticles
|
|
10
|
+
Project-URL: Documentation, https://github.com/jamaj69/pyparticles#readme
|
|
11
|
+
Project-URL: Issues, https://github.com/jamaj69/pyparticles/issues
|
|
12
|
+
Project-URL: Original Project, https://github.com/simon-r/PyParticles
|
|
13
|
+
Keywords: particles,simulation,physics,opencl,opengl,gpu,scientific-computing,education
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Education
|
|
16
|
+
Classifier: Intended Audience :: Science/Research
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE-gpl-3.0.txt
|
|
27
|
+
Requires-Dist: numpy>=2.0
|
|
28
|
+
Requires-Dist: scipy>=1.14
|
|
29
|
+
Requires-Dist: PyOpenGL>=3.1.7
|
|
30
|
+
Requires-Dist: matplotlib>=3.8
|
|
31
|
+
Provides-Extra: opencl
|
|
32
|
+
Requires-Dist: pyopencl>=2026.1; extra == "opencl"
|
|
33
|
+
Provides-Extra: dev
|
|
34
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
35
|
+
Requires-Dist: twine>=5; extra == "dev"
|
|
36
|
+
Provides-Extra: docs
|
|
37
|
+
Requires-Dist: mkdocs>=1.6; extra == "docs"
|
|
38
|
+
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
|
|
39
|
+
Requires-Dist: pymdown-extensions>=10; extra == "docs"
|
|
40
|
+
Dynamic: license-file
|
|
41
|
+
|
|
42
|
+
# PyParticles3
|
|
43
|
+
|
|
44
|
+
**PyParticles3** is an independent modernization and continuation of Simone Riva's original **PyParticles** project.
|
|
45
|
+
|
|
46
|
+
The goal is to preserve the original project's unusually clear, educational architecture while updating it for modern Python, NumPy, SciPy, PyOpenGL and PyOpenCL environments. PyParticles3 is also a practical study project for GPU particle simulation, OpenCL acceleration and OpenCL/OpenGL interoperability.
|
|
47
|
+
|
|
48
|
+
> PyParticles3 is not presented as an official release endorsed by Simone Riva. Original copyright notices and the GPL-3.0-or-later license are preserved.
|
|
49
|
+
|
|
50
|
+
## Highlights
|
|
51
|
+
|
|
52
|
+
- simple `ParticlesSet -> Force -> Solver -> Animation/Renderer` architecture;
|
|
53
|
+
- Euler, Leapfrog, Runge-Kutta, Midpoint and Stormer-Verlet style integrators;
|
|
54
|
+
- gravity, springs, constant force, drag, damping, Lennard-Jones, electrostatic and electromagnetic models;
|
|
55
|
+
- constrained particles and constrained force interactions;
|
|
56
|
+
- OpenGL interactive visualization;
|
|
57
|
+
- optional PyOpenCL acceleration;
|
|
58
|
+
- persistent OpenCL buffers to avoid unnecessary PCIe transfers;
|
|
59
|
+
- fused OpenCL integration paths;
|
|
60
|
+
- OpenCL/OpenGL shared VBO rendering;
|
|
61
|
+
- double-buffered CL/GL synchronization with GL fences;
|
|
62
|
+
- asynchronous OpenGL GPU timer queries;
|
|
63
|
+
- an optimized `fountain` example used as a GPU performance case study.
|
|
64
|
+
|
|
65
|
+
## Installation
|
|
66
|
+
|
|
67
|
+
The first PyPI release is planned as `PyParticles3 0.4.0rc1`.
|
|
68
|
+
|
|
69
|
+
Once published:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
python -m pip install PyParticles3
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
For OpenCL support:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
python -m pip install 'PyParticles3[opencl]'
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
The OpenCL runtime/ICD and an OpenGL/FreeGLUT implementation are system-level dependencies and are not installed by pip.
|
|
82
|
+
|
|
83
|
+
## Current import namespace
|
|
84
|
+
|
|
85
|
+
The initial PyParticles3 packaging release intentionally keeps the historical Python import namespace:
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
import pyparticles
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
This avoids mixing a package-wide namespace migration with the packaging release. A future release may introduce a dedicated `pyparticles3` namespace after a controlled compatibility migration.
|
|
92
|
+
|
|
93
|
+
## Command line
|
|
94
|
+
|
|
95
|
+
The modern package exposes:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
pyparticles3 --help
|
|
99
|
+
pyparticles3 --version
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The historical command is also kept as a compatibility entry point:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
pyparticles_app --help
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Examples:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
pyparticles3 --demo springs
|
|
112
|
+
pyparticles3 --demo solar_system
|
|
113
|
+
pyparticles3 --demo bubble
|
|
114
|
+
pyparticles3 --demo gas_lj
|
|
115
|
+
pyparticles3 --demo elmag_field
|
|
116
|
+
pyparticles3 --demo galaxy
|
|
117
|
+
pyparticles3 --demo fountain
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Architecture
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
ParticlesSet
|
|
124
|
+
|
|
|
125
|
+
+--> Force / MultipleForce
|
|
126
|
+
| |
|
|
127
|
+
| v
|
|
128
|
+
+----> ODE Solver
|
|
129
|
+
|
|
|
130
|
+
v
|
|
131
|
+
Animation
|
|
132
|
+
|
|
|
133
|
+
v
|
|
134
|
+
Renderer
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The accelerated paths preserve these conceptual roles rather than replacing the whole program with an opaque GPU pipeline.
|
|
138
|
+
|
|
139
|
+
## OpenCL/OpenGL fountain path
|
|
140
|
+
|
|
141
|
+
The modern `fountain` demo can keep simulation state resident on the GPU and render from shared OpenGL buffers. The optimized fused path writes both the canonical OpenCL position buffer and the shared render VBO from the integration kernel, eliminating a separate device-to-device position copy.
|
|
142
|
+
|
|
143
|
+
Profiling can be enabled with:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
PYPARTICLES_PROFILE_CLGL=1 \
|
|
147
|
+
PYPARTICLES_PROFILE_FRAMES=1000 \
|
|
148
|
+
PYPARTICLES_PROFILE_WARMUP=200 \
|
|
149
|
+
pyparticles3 --demo fountain
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
The experimental fused render mirror is currently selected with:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
PYPARTICLES_CLGL_FUSED_MIRROR=1 \
|
|
156
|
+
pyparticles3 --demo fountain
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Development
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
git clone https://github.com/jamaj69/pyparticles.git
|
|
163
|
+
cd pyparticles
|
|
164
|
+
git switch package/pyparticles3
|
|
165
|
+
|
|
166
|
+
python -m venv .venv
|
|
167
|
+
source .venv/bin/activate
|
|
168
|
+
python -m pip install -U pip
|
|
169
|
+
python -m pip install -e '.[dev]'
|
|
170
|
+
|
|
171
|
+
python -m compileall -q pyparticles tests
|
|
172
|
+
python -W default -m unittest discover -v -s tests
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Build the PyPI artifacts with:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
python -m build
|
|
179
|
+
python -m twine check dist/*
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Project links
|
|
183
|
+
|
|
184
|
+
- Source: https://github.com/jamaj69/pyparticles
|
|
185
|
+
- Issues: https://github.com/jamaj69/pyparticles/issues
|
|
186
|
+
- Original project: https://github.com/simon-r/PyParticles
|
|
187
|
+
|
|
188
|
+
When releases are published through PyPI Trusted Publishing from this GitHub repository, PyPI can verify the GitHub project links carried in the distribution metadata.
|
|
189
|
+
|
|
190
|
+
## Origin and attribution
|
|
191
|
+
|
|
192
|
+
PyParticles was created by **Simone Riva** in 2012. PyParticles3 is an independent modernization built from that GPL-licensed codebase. The modernization focuses on Python 3 compatibility, modern scientific Python libraries, testing, GPU acceleration, CL/GL interoperability and documentation while preserving the original educational structure.
|
|
193
|
+
|
|
194
|
+
## License
|
|
195
|
+
|
|
196
|
+
GPL-3.0-or-later. See `LICENSE-gpl-3.0.txt`.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
pyparticles/__init__.py,sha256=Mqc8FcYcmqLoqBuFBHNM_hBXQVfeaTpzOaJdmcGRf2s,907
|
|
2
|
+
pyparticles/__main__.py,sha256=DimbxF9a6U_jTcTVs3a4Vq0JtN3v1yizDD3fQCieG3c,161
|
|
3
|
+
pyparticles/animation/__init__.py,sha256=YWGJrPjamB49wRPTqdjfo6-T1lUvlLfshIqUGsPNh4Q,857
|
|
4
|
+
pyparticles/animation/animated_cli.py,sha256=kUlNFN7X2UpmPUOdTZtOlscglcKWDUzVVBH7jyLcBYo,1635
|
|
5
|
+
pyparticles/animation/animated_ogl.py,sha256=nZwq9peYMHakqM0ZAXJbdRCBjR3YQaNYs7pYhPvr96w,20897
|
|
6
|
+
pyparticles/animation/animated_ogl_compat.py,sha256=KQNhmiYYCULXryse3gotOOBOJAx-D4l-vfJ-bv5hMfw,8482
|
|
7
|
+
pyparticles/animation/animated_scatter.py,sha256=xLCOUit0zzT99CZf6pzc6iTe9kRG615-ecYS0Duikow,2961
|
|
8
|
+
pyparticles/animation/animation.py,sha256=axKzZ-9xDDntIY9FG4SBHSXJHIPA0I6HAJqHcO7JbNs,7025
|
|
9
|
+
pyparticles/animation/test_animation.py,sha256=TRbb7wA91Z_VBNFxN-vX5_ovkW8UrcNUxVmBG5_DeFE,9773
|
|
10
|
+
pyparticles/demo/__init__.py,sha256=6X6qEyq3c85ivWMm7vJYWHAGCzI3QSm3tGCd70rujq8,1367
|
|
11
|
+
pyparticles/demo/bubble.py,sha256=J-nzKma90z_ytEPQ0x0Dh9gc9vM8jt4koFSx_GFgccw,2983
|
|
12
|
+
pyparticles/demo/electromagnetic_demo.py,sha256=PmjE1VOXqBNSO6pLIFsu8kWEennCvDPVtWprkumopjE,3932
|
|
13
|
+
pyparticles/demo/electrostatic_demo.py,sha256=fsUBVuVxa84Unh64ptaTomycnz-kbcV0AO_k074cToo,3591
|
|
14
|
+
pyparticles/demo/fountain.py,sha256=PkFya7SRERu7BqM4OC9CLuayV_hUx0xxklFGQ3DBpfY,19268
|
|
15
|
+
pyparticles/demo/gas_lennard_jones.py,sha256=ptFopN54bGSfrrSmcD9OcvdpE58fn3Mu5WQSGimL294,2531
|
|
16
|
+
pyparticles/demo/gravity_clusters.py,sha256=qOApDKIwLsmiotbFGOdsSK_UrIIC7HMUruIhgOb_dgM,2080
|
|
17
|
+
pyparticles/demo/solar_system.py,sha256=H-uxt40m8u_J1qK9aKvIwdcBT1T-CI0IZrXJQLHpSTw,7086
|
|
18
|
+
pyparticles/demo/springs.py,sha256=VthvlgVlX_LAH_Ix-1t5WbCtJfJeoI2q6IupzDTP2dI,3840
|
|
19
|
+
pyparticles/demo/springs_constr.py,sha256=VKl8FCKQHEHqMjiN7RJfGUNjflVwziwz6fHC5PnOxaI,4004
|
|
20
|
+
pyparticles/demo/test.py,sha256=eJgVFAfrik4YDp0LXgxiY52eCp0qSN93G7uwV0BP2io,1097
|
|
21
|
+
pyparticles/forces/__init__.py,sha256=SfGt0zuyycRf9l-_fov-zBtjfdynjlwFTmnT1KgAzQk,858
|
|
22
|
+
pyparticles/forces/const_force.py,sha256=jXw3iszRhG6fo6OJrUCcSO0eEaZ-HOiVV_HJK6N88kU,3948
|
|
23
|
+
pyparticles/forces/damping.py,sha256=jIwWqvlNTYJN-mvXqjE7FFsRicl2GYNV57Fk4rEyrGs,5007
|
|
24
|
+
pyparticles/forces/drag.py,sha256=clZ3X9tHn1z2n8O_BDdoTbV5uyLomR3jt0Y9iFhh7Hg,4730
|
|
25
|
+
pyparticles/forces/electromagnetic.py,sha256=gV3_t7TwWqaoqH_j8nFr2rnUm4VS77VT5f-e8MGyTU0,3308
|
|
26
|
+
pyparticles/forces/electromagnetic_field.py,sha256=2h0Nkoi96AYPXm6ijQquOKjL9ZQE5xXtI04QpnAgC6Y,2651
|
|
27
|
+
pyparticles/forces/electrostatic.py,sha256=nt6DIH1pFr7cx7QJyuQkPAIoOdyTkhI51l5AbU8uVN8,2298
|
|
28
|
+
pyparticles/forces/force.py,sha256=9KiF8mXs_fcNhI3GdNHZLmWWripJEZ4FwHLsGnSTBm0,2710
|
|
29
|
+
pyparticles/forces/force_constrained.py,sha256=pRm1O4LUgiYOuMiNpdKOAF0SYmOh-6LCQEqS6IrSBfs,1185
|
|
30
|
+
pyparticles/forces/fused_const_drag.py,sha256=mtG6YHJP8BCZiCJaMRr-RoJbCGdP_p9isY5ABXY--E0,14692
|
|
31
|
+
pyparticles/forces/gravity.py,sha256=oJBljaDvcHpjag_bm4fHsPTCfxw3raKekUgA4ttsXCc,10487
|
|
32
|
+
pyparticles/forces/lennard_jones.py,sha256=54n1ii1R12qgdpFqThdOPDAecNkbuJWcj4y07FINk7M,2210
|
|
33
|
+
pyparticles/forces/linear_spring.py,sha256=L6VAu251z_BV0-AKX-P-rGpZ33E-kJ_Jv5kKRIHgxYU,2392
|
|
34
|
+
pyparticles/forces/linear_spring_constrained.py,sha256=TDvHHypK3WjDucNfNaidtCLLwYi0GGJLhz35AscrPaw,2172
|
|
35
|
+
pyparticles/forces/multiple_force.py,sha256=KvROEsLMq6BMlH5A9qRG5Z5YPCZnUe19sx7414eB6gw,4500
|
|
36
|
+
pyparticles/forces/pseudo_bubble.py,sha256=NblMuNammFJ9lVOgC11FZrYBLlgtkHlxu0fAt_BF2xo,6400
|
|
37
|
+
pyparticles/forces/van_der_waals_force.py,sha256=8GqaCT10BRq6z3ISsrx7DiCets8Lu1Q4zTm-m45IcdE,1705
|
|
38
|
+
pyparticles/forces/vector_field_force.py,sha256=S-Qps149mRaT_cPtljDg1uuynaHz6dbEMvBBZIsZgfI,1607
|
|
39
|
+
pyparticles/geometry/__init__.py,sha256=SfGt0zuyycRf9l-_fov-zBtjfdynjlwFTmnT1KgAzQk,858
|
|
40
|
+
pyparticles/geometry/dist.py,sha256=q842yPnjeBQkDNgHhNZYjCZKc_NzS2eHM4grSPFcfR0,876
|
|
41
|
+
pyparticles/geometry/intersection.py,sha256=un1gI4SnPF9IeBI0Kh9iO8QgWYOTP-08Wf93Qy_kglk,1932
|
|
42
|
+
pyparticles/geometry/transformations.py,sha256=esfLTNC3I1AfZOrz5KF-2mvOIRy91z2MxiGUGcco2Kc,11728
|
|
43
|
+
pyparticles/main/__init__.py,sha256=SfGt0zuyycRf9l-_fov-zBtjfdynjlwFTmnT1KgAzQk,858
|
|
44
|
+
pyparticles/main/main.py,sha256=kGnRj9e_RbstQKBF51nyM3LWifnzLOFnE4lJ0V9hN54,11817
|
|
45
|
+
pyparticles/measures/__init__.py,sha256=SfGt0zuyycRf9l-_fov-zBtjfdynjlwFTmnT1KgAzQk,858
|
|
46
|
+
pyparticles/measures/elastic_potential_energy.py,sha256=msISBKcyfdbuGOkcnClUX97fwChQoVRTBa8L4CdUSnw,2023
|
|
47
|
+
pyparticles/measures/gravitational_potential_energy.py,sha256=MXxoOhrkpC5_NZhC6BKPn7ZUKHPKB2Lp5gQVjVTLt9I,2100
|
|
48
|
+
pyparticles/measures/kinetic_energy.py,sha256=SE9rwyOoTef9Hn2YgqHe7yeGzT5Npyg1pt4iNMZFyts,1983
|
|
49
|
+
pyparticles/measures/mass.py,sha256=sqW2WtIGw5sSRWj3ZgwGr0Fb5GJm1wwH0g4LMB7O58c,1672
|
|
50
|
+
pyparticles/measures/measure.py,sha256=QFJ_PuaRK4vmVMdO_1o9C0IErh7BTnyLgg7UNei_DnQ,5202
|
|
51
|
+
pyparticles/measures/momentum.py,sha256=jQTGa1wWiQ5rH_3luXD9jhYGqvVTj4CKx6auGf2o2Uc,4267
|
|
52
|
+
pyparticles/measures/total_energy.py,sha256=XKv2_gSwgWpcAEWxek1RXV6bibpKMz0yxPDZLG2i3CY,2045
|
|
53
|
+
pyparticles/ode/__init__.py,sha256=SfGt0zuyycRf9l-_fov-zBtjfdynjlwFTmnT1KgAzQk,858
|
|
54
|
+
pyparticles/ode/euler_solver.py,sha256=CK2sxgiTRRlYxF_59L3dKclYJFFYx_ujM-JHKPbhqYA,7208
|
|
55
|
+
pyparticles/ode/euler_solver_constrained.py,sha256=tD8mffDHMEAXCQdPKQUEH0lCKwPlRkbVeC-zW2PEw9A,2034
|
|
56
|
+
pyparticles/ode/leapfrog_solver.py,sha256=B11_90B0fiwk74yaICMIgEXzMKaieCPHY_ejDEhFQBc,1350
|
|
57
|
+
pyparticles/ode/leapfrog_solver_constrained.py,sha256=C2pg4yoK-Rm71RbSRiLIj3HpbpkxHEBLxh6dBMojmtQ,2312
|
|
58
|
+
pyparticles/ode/midpoint_solver.py,sha256=3DTjWVWrf887x_friEKFd67w0vv1FCfEiOU5U2yzy5c,1544
|
|
59
|
+
pyparticles/ode/midpoint_solver_constrained.py,sha256=ry5P4pJdGmI2jM3-0wRAcAccgU6ZijCfzcLWxdlXEn0,2521
|
|
60
|
+
pyparticles/ode/ode_solver.py,sha256=7xchJu3-iykDUs2ARaBQd9sCAr37aan8sMbPqYc91t8,4085
|
|
61
|
+
pyparticles/ode/ode_solver_constrained.py,sha256=E-iV40jp1SPOfYYIgdjL1N60XujOlGDrsqXEoVxTZw4,1550
|
|
62
|
+
pyparticles/ode/runge_kutta_solver.py,sha256=MzjA_igEg2BeRVfgap44yOC4qPjxoWNKuXFPOoawLdk,2842
|
|
63
|
+
pyparticles/ode/runge_kutta_solver_constrained.py,sha256=Ikd8bBnCkyFtgEOe4TQoX3CCIUnMEY1mnmYtRB7sELg,4171
|
|
64
|
+
pyparticles/ode/sim_time.py,sha256=7ed5q-keQHOylD01SzwONG7HcboUbhqYIJXFtfP6grI,1710
|
|
65
|
+
pyparticles/ode/stormer_verlet_solver.py,sha256=RLLR7K93xNN6m7aeN46VNoIlrrwq4jcjWExQ7IVrkJk,1960
|
|
66
|
+
pyparticles/ode/stormer_verlet_solver_constrained.py,sha256=99Kgt4Q8iszgFyKF4uM7lAk1pNslpoIS_gGPC6gb1hI,3051
|
|
67
|
+
pyparticles/ogl/__init__.py,sha256=SfGt0zuyycRf9l-_fov-zBtjfdynjlwFTmnT1KgAzQk,858
|
|
68
|
+
pyparticles/ogl/axis_ogl.py,sha256=uzE1ipA8_W7dyNvFrfkSkioXlcEA33nSkF8gDsC3n_k,6440
|
|
69
|
+
pyparticles/ogl/draw_particles_ogl.py,sha256=DmSh9PQyUPtDcFUxDgDnHtfhTHbDrm1DYT7fbc6Mhp8,9974
|
|
70
|
+
pyparticles/ogl/draw_particles_ogl_compat.py,sha256=IQb8h9g_ggoNgPk-0bZ48WxMU1v6eVu-nzHLHs1DC3Y,17486
|
|
71
|
+
pyparticles/ogl/draw_vector_field.py,sha256=nS00OXtc1UWzGishL6NaAtn-XAokpf79tdA4nrSobw8,6765
|
|
72
|
+
pyparticles/ogl/opencl_gl_vbo.py,sha256=9Ad7-OXpHjmKTYOjn7AcpHNO88QyWdJ4Sn7xzn9A3XE,17276
|
|
73
|
+
pyparticles/ogl/trackball.py,sha256=N50FiUXBmzoJq-pHP1Ld7g7kCb6kpb8UOHKL5epzNNI,4249
|
|
74
|
+
pyparticles/ogl/translate_scene.py,sha256=MMhNAJD9I9pCunN8-6HsYU8DzniiG6xglhSnPW2zO_4,2440
|
|
75
|
+
pyparticles/pset/__init__.py,sha256=SfGt0zuyycRf9l-_fov-zBtjfdynjlwFTmnT1KgAzQk,858
|
|
76
|
+
pyparticles/pset/boundary.py,sha256=BRCnoVTG41AlO3a7qC90JGEejCumW0cXJDVmUg4Qajk,2134
|
|
77
|
+
pyparticles/pset/cluster.py,sha256=QtALI9BJPwVGHmWU9lPCvyAVjQoBvTxcbqHG9YvSKDM,914
|
|
78
|
+
pyparticles/pset/constrained_force_interactions.py,sha256=PGQMVfX5YNBsXWPVALSsX8F9sZ3hs3VHFhlg1Am2lqw,1961
|
|
79
|
+
pyparticles/pset/constrained_x.py,sha256=5J8hqnRw7If-vm4bbW0g1b5PxT4AyrMuy_DNIAnpSJE,5381
|
|
80
|
+
pyparticles/pset/constraint.py,sha256=dFDxswFsvd0RehC7jO8f_s_aGxp8fEJuvqbupyAXLKc,1128
|
|
81
|
+
pyparticles/pset/default_boundary.py,sha256=s77GDU0_2GyvyZaCgCKotmBED6gwMutclggvHPWYsBE,1441
|
|
82
|
+
pyparticles/pset/file_cluster.py,sha256=sGitftkajVWM5AW--cAYPOEd8NsIksvYWVuyqTO-8Pk,3421
|
|
83
|
+
pyparticles/pset/logger.py,sha256=HkPSKI0jEr-UwHLeyLXTE0EEXXztno5bZolk4Wr-5fg,4707
|
|
84
|
+
pyparticles/pset/octree.py,sha256=G1KMPQTjCmZyR1RJ0IZn_bKpw2cvdodxxqvKjJlLk7k,14985
|
|
85
|
+
pyparticles/pset/opencl_context.py,sha256=8nZhzTdKSo7iVXQYZzscZ2QBlB03qDK01FIio8xl3oE,11683
|
|
86
|
+
pyparticles/pset/particles_set.py,sha256=CMvPYHXkcmPGWrSLOWEz3qi68L7LK5fZte6cvz3wBd8,16543
|
|
87
|
+
pyparticles/pset/periodic_boundary.py,sha256=02QGzAFZPOfbSPQUCWliftAlcjr-GgmaXibWHfL-kfw,1273
|
|
88
|
+
pyparticles/pset/rand_cluster.py,sha256=a3PQ497wen10d5YPPCGlV86Uxyb15W-pWc_ER3D5d6o,5299
|
|
89
|
+
pyparticles/pset/rebound_boundary.py,sha256=VjVXPpsZ--z2rIWJ4fD7JeTwph8schrbTQjdQpVTDH4,2087
|
|
90
|
+
pyparticles/utils/__init__.py,sha256=YWGJrPjamB49wRPTqdjfo6-T1lUvlLfshIqUGsPNh4Q,857
|
|
91
|
+
pyparticles/utils/parse_args.py,sha256=Qaz7z6G5jFO5KaVkMKnN_WcVyDVMol2HoJTuVuRg8q4,2273
|
|
92
|
+
pyparticles/utils/problem_config.py,sha256=6FYatMR2gWq8KS9Amk3cDCOTMxyUXCK3zkLsXHG_muU,23753
|
|
93
|
+
pyparticles/utils/pypart_global.py,sha256=Up4Lm119QxRMK3XQKppgMmw6N_i_RXhJ7BF_Irb_HOE,3029
|
|
94
|
+
pyparticles/utils/time_formatter.py,sha256=OVOCP2eTfAIlz1XrV3yPelXApI6JmV_Qsr2i5X9HJ38,1660
|
|
95
|
+
pyparticles3-0.4.0rc1.dist-info/licenses/LICENSE-gpl-3.0.txt,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
|
96
|
+
pyparticles3-0.4.0rc1.dist-info/METADATA,sha256=iuvQNyZKWav703JzOrCFZEHy5jjovp_e3XZM5XiTBCY,6388
|
|
97
|
+
pyparticles3-0.4.0rc1.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
98
|
+
pyparticles3-0.4.0rc1.dist-info/entry_points.txt,sha256=OTWMifSShnvWdMBY6Sjg6kbHDSSBFCfurheDa8eV1sg,105
|
|
99
|
+
pyparticles3-0.4.0rc1.dist-info/top_level.txt,sha256=bsS4msJ7XYbilhsrlVsXGEdg1tHKp3tBlt6myUY3k2A,12
|
|
100
|
+
pyparticles3-0.4.0rc1.dist-info/RECORD,,
|