-
Notifications
You must be signed in to change notification settings - Fork 76
Multi-res grid refinement + Neon backend support #159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
42df87b
1337a2b
090837e
5fc8020
e1257c9
57e0b11
c126568
58b7f7b
07fc7ae
e0f7146
556d32e
7cbc16f
05a86e3
b91acd4
cc85c97
1c6aca3
a2aad43
a165017
558b044
7dac522
c0fde85
92c97b8
e6d6222
694ed06
6baad57
8cfc636
95ae794
e827f09
acfc54d
e40ac5d
4614620
57369f5
3af781a
2d3a502
b0a517b
6664392
7ed39c5
1f11b7c
0fdf77a
bf59ebc
9e9580f
cc3ffea
7c3fd37
30d4fc1
b287082
ae5f5ba
dd729ce
26aff01
84a8fa4
9099f29
119197e
56e51d8
948c531
93e25b7
8654fb3
48139ce
343e7df
57c99cd
a58206c
e3acd8c
991fab1
62801fd
153e16a
409c801
91b8d0a
c423c1d
0677315
6a99803
8eede50
0086ecc
f8d239c
1e17d71
3377806
e8709f2
1049f2c
13fd0d9
fbcc546
3d6e205
b10d481
07a0be6
219cfd1
21a1014
eca7208
878a1f3
9a9a929
4283637
ed98ee4
d87fe63
7d671d3
0a39df0
ce28be1
b5cb130
d637ec1
3f8acb0
9bedb75
7d1a7c1
930253f
e91247c
21c669d
ad9bdcc
17ccb53
a4f7b72
ff12d92
18d44b8
9b84558
55c0cab
74b3247
d344a0c
8c2a251
d9506af
4cfad42
54750d7
554835d
0825568
1606408
266d0b7
70c5ba5
853aeff
215d993
95ff10c
5f09506
b27094e
391194b
59ef4aa
706f604
ea4a28c
b067e6b
e8f41aa
e78db3b
838629d
cc219b7
a824df1
8ac2517
5bd71c7
c70de27
1f63bbd
e37cff2
f061573
075343f
6390957
a670db3
3c7ed77
9f92c63
aad4afb
725f133
d8442b1
bc2826e
142c06c
698e15c
a3f3372
a0111a0
123ec48
38d65d4
bcc0788
9ee4988
1c040c1
2f2c1b9
ee7835f
a6cb111
ec94ff5
2c39a67
45f0e96
bfed064
a0fa2cb
af49421
e6490b1
29a7d8e
9b12cd6
05f395e
390e060
dd8f25e
3b3aa0c
7282f2b
c038459
889cd23
daec1e3
28cd20a
a540615
fc094dc
8556361
15583ad
a2980be
1dc0df3
7c41c5f
11e8129
5959006
14509b7
2b35abf
7b857ea
e09c54d
ecd4103
c4224ac
9f6d9e8
4926d75
ffa0c49
9d83c1b
31009b3
4fa0f0c
0e61c58
d107a4b
11647c2
d81fd21
e56e62a
e715fc9
7c15a90
0c51fa4
d4447b3
8d06f5f
dfee92b
1dd19eb
12aaa09
48df9db
e37c8d6
bbf3a38
831c51e
dfacaa2
368e2f3
0e1f48f
a1ac799
2138151
3f1116f
03eda45
7ef1336
1dd43bd
3fcf151
69a1621
77c4f3e
2738780
23390e2
34979c2
68e68f8
fea13f0
fe4c1d2
2f66dc6
3e55bbd
e668765
afecb8c
df3d5d6
fee369a
22ecca8
d9cb382
fe19b65
231ed73
71e3cf8
cc2606f
ba92286
e3bf1cc
0f01e8c
3413ac3
14d0597
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,7 +6,7 @@ | |
|
|
||
| # XLB: A Differentiable Massively Parallel Lattice Boltzmann Library in Python for Physics-Based Machine Learning | ||
|
|
||
| XLB is a fully differentiable 2D/3D Lattice Boltzmann Method (LBM) library that leverages hardware acceleration. It supports [JAX](https://github.com/google/jax) and [NVIDIA Warp](https://github.com/NVIDIA/warp) backends, and is specifically designed to solve fluid dynamics problems in a computationally efficient and differentiable manner. Its unique combination of features positions it as an exceptionally suitable tool for applications in physics-based machine learning. With the new Warp backend, XLB now offers state-of-the-art performance for even faster simulations. | ||
| XLB is a fully differentiable 2D/3D Lattice Boltzmann Method (LBM) library that leverages hardware acceleration. It supports [JAX](https://github.com/google/jax), [NVIDIA Warp](https://github.com/NVIDIA/warp), and [Neon](https://github.com/Autodesk/Neon) backends, and is specifically designed to solve fluid dynamics problems in a computationally efficient and differentiable manner. Its unique combination of features positions it as an exceptionally suitable tool for applications in physics-based machine learning. With the Warp backend, XLB offers state-of-the-art single-GPU performance, and with the new Neon backend it extends to multi-GPU (single-resolution). More importantly, the Neon backend provides grid refinement capabilities for multi-resolution simulations. | ||
|
|
||
| ## Getting Started | ||
| To get started with XLB, you can install it using pip. There are different installation options depending on your hardware and needs: | ||
|
|
@@ -16,6 +16,12 @@ To get started with XLB, you can install it using pip. There are different insta | |
| pip install xlb | ||
| ``` | ||
|
|
||
| ### Installation with Warp support (single-GPU) | ||
| For the NVIDIA Warp backend (single-GPU, state-of-the-art performance): | ||
| ```bash | ||
| pip install "xlb[warp]" | ||
| ``` | ||
|
|
||
| ### Installation with CUDA support (for NVIDIA GPUs) | ||
| This installation is for the JAX backend with CUDA support: | ||
| ```bash | ||
|
|
@@ -28,9 +34,24 @@ This installation is for the JAX backend with TPU support: | |
| pip install "xlb[tpu]" | ||
| ``` | ||
|
|
||
| ### Installation with Neon support | ||
| Neon backend enables multi-GPU dense and single-GPU multi-resolution representations. | ||
| Install XLB with Neon support using: | ||
|
|
||
| ```bash | ||
| git clone https://github.com/Autodesk/XLB.git | ||
| cd XLB | ||
| pip install -r requirements.txt | ||
| pip install '.[neon]' | ||
| ``` | ||
|
|
||
| **Requirements:** The Neon wheel supports **Python 3.11** to **Python 3.14** on **Linux x86_64** and **Linux ARM**. | ||
|
|
||
| **Note:** Neon uses a custom fork of warp. | ||
|
|
||
| ### Notes: | ||
| - For Mac users: Use the basic CPU installation command as JAX's GPU support is not available on MacOS | ||
| - The NVIDIA Warp backend is included in all installation options and supports CUDA automatically when available | ||
| - Use `xlb[warp]` for the Warp backend (single-GPU) or `xlb[neon]` for the Neon backend (multi-GPU / multi-resolution). Do not install both in the same environment. | ||
| - The installation options for CUDA and TPU only affect the JAX backend | ||
|
|
||
| To install the latest development version from source: | ||
|
|
@@ -63,11 +84,36 @@ If you use XLB in your research, please cite the following paper: | |
| } | ||
| ``` | ||
|
|
||
| If you use the grid refinement capabilities in your work, please also cite: | ||
|
|
||
| ``` | ||
| @inproceedings{mahmoud2024optimized, | ||
| title={Optimized {GPU} implementation of grid refinement in lattice {Boltzmann} method}, | ||
| author={Mahmoud, Ahmed H and Salehipour, Hesam and Meneghin, Massimiliano}, | ||
| booktitle={2024 IEEE International Parallel and Distributed Processing Symposium (IPDPS)}, | ||
| pages={398--407}, | ||
| year={2024}, | ||
| organization={IEEE} | ||
| } | ||
|
|
||
| @inproceedings{meneghin2022neon, | ||
| title={Neon: A Multi-{GPU} Programming Model for Grid-based Computations}, | ||
| author={Meneghin, Massimiliano and Mahmoud, Ahmed H. and Jayaraman, Pradeep Kumar and Morris, Nigel J. W.}, | ||
| booktitle={Proceedings of the 36th IEEE International Parallel and Distributed Processing Symposium}, | ||
| pages={817--827}, | ||
| year={2022}, | ||
| month={june}, | ||
| doi={10.1109/IPDPS53621.2022.00084}, | ||
| url={https://escholarship.org/uc/item/9fz7k633} | ||
| } | ||
| ``` | ||
|
|
||
| ## Key Features | ||
| - **Multiple Backend Support:** XLB now includes support for multiple backends including JAX and NVIDIA Warp, providing *state-of-the-art* performance for lattice Boltzmann simulations. Currently, only single GPU is supported for the Warp backend. | ||
| - **Multiple Backend Support:** XLB includes support for JAX, NVIDIA Warp, and Neon backends, providing *state-of-the-art* performance for lattice Boltzmann simulations. The Warp backend targets single-GPU runs, while the Neon backend enables multi-GPU single-resolution and single-GPU multi-resolution simulations. | ||
| - **Multi-Resolution Grid Refinement:** Mesh refinement with nested cuboid grids and multiple kernel-fusion strategies for optimal performance on the Neon backend. | ||
| - **Integration with JAX Ecosystem:** The library can be easily integrated with JAX's robust ecosystem of machine learning libraries such as [Flax](https://github.com/google/flax), [Haiku](https://github.com/deepmind/dm-haiku), [Optax](https://github.com/deepmind/optax), and many more. | ||
| - **Differentiable LBM Kernels:** XLB provides differentiable LBM kernels that can be used in differentiable physics and deep learning applications. | ||
| - **Scalability:** XLB is capable of scaling on distributed multi-GPU systems using the JAX backend, enabling the execution of large-scale simulations on hundreds of GPUs with billions of cells. | ||
| - **Scalability:** XLB is capable of scaling on distributed multi-GPU systems using the JAX backend or the Neon backend, enabling the execution of large-scale simulations on hundreds of GPUs with billions of cells. | ||
| - **Support for Various LBM Boundary Conditions and Kernels:** XLB supports several LBM boundary conditions and collision kernels. | ||
| - **User-Friendly Interface:** Written entirely in Python, XLB emphasizes a highly accessible interface that allows users to extend the library with ease and quickly set up and run new simulations. | ||
| - **Leverages JAX Array and Shardmap:** The library incorporates the new JAX array unified array type and JAX shardmap, providing users with a numpy-like interface. This allows users to focus solely on the semantics, leaving performance optimizations to the compiler. | ||
|
|
@@ -103,7 +149,7 @@ If you use XLB in your research, please cite the following paper: | |
| <img src="https://raw.githubusercontent.com/autodesk/xlb/main/assets/building.png" alt="" width="700"> | ||
| </p> | ||
| <p align="center"> | ||
| Airflow in to, out of, and within a building (~400 million cells) | ||
| Airflow into, out of, and within a building (~400 million cells) | ||
| </p> | ||
|
|
||
| <p align="center"> | ||
|
|
@@ -128,6 +174,7 @@ The stages of a fluid density field from an initial state to the emergence of th | |
|
|
||
| - BGK collision model (Standard LBM collision model) | ||
| - KBC collision model (unconditionally stable for flows with high Reynolds number) | ||
| - Smagorinsky LES sub-grid model for turbulence modelling | ||
|
|
||
| ### Machine Learning | ||
|
|
||
|
|
@@ -143,21 +190,25 @@ The stages of a fluid density field from an initial state to the emergence of th | |
|
|
||
| ### Compute Capabilities | ||
| - Single GPU support for the Warp backend with state-of-the-art performance | ||
| - Multi-GPU support using the Neon backend with single-resolution grids | ||
| - Grid refinement support on single-GPU using the Neon backend | ||
| - Distributed Multi-GPU support using the JAX backend | ||
| - Mixed-Precision support (store vs compute) | ||
| - Multiple kernel-fusion performance strategies for multi-resolution simulations | ||
| - Out-of-core support (coming soon) | ||
|
|
||
| ### Output | ||
|
|
||
| - Binary and ASCII VTK output (based on PyVista library) | ||
| - HDF5/XDMF output for multi-resolution data (with gzip compression) | ||
| - In-situ rendering using [PhantomGaze](https://github.com/loliverhennigh/PhantomGaze) library | ||
| - [Orbax](https://github.com/google/orbax)-based distributed asynchronous checkpointing | ||
| - Image Output | ||
| - Image Output (including multi-resolution slice images) | ||
| - 3D mesh voxelizer using trimesh | ||
|
|
||
| ### Boundary conditions | ||
|
|
||
| - **Equilibrium BC:** In this boundary condition, the fluid populations are assumed to be in at equilibrium. Can be used to set prescribed velocity or pressure. | ||
| - **Equilibrium BC:** In this boundary condition, the fluid populations are assumed to be at equilibrium. Can be used to set prescribed velocity or pressure. | ||
|
|
||
| - **Full-Way Bounceback BC:** In this boundary condition, the velocity of the fluid populations is reflected back to the fluid side of the boundary, resulting in zero fluid velocity at the boundary. | ||
|
|
||
|
|
@@ -171,17 +222,22 @@ The stages of a fluid density field from an initial state to the emergence of th | |
|
|
||
| - **Interpolated Bounceback BC:** Interpolated bounce-back boundary condition for representing curved boundaries. | ||
|
|
||
| - **Hybrid BC:** Combines regularized and bounce-back methods with optional wall-distance interpolation for improved accuracy on curved geometries. | ||
|
|
||
| - **Grad's Approximation BC:** Boundary condition based on Grad's approximation of the non-equilibrium distribution. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This BC is deleted. So maybe update the readme |
||
|
|
||
| ## Roadmap | ||
|
|
||
| ### Work in Progress (WIP) | ||
| *Note: Some of the work-in-progress features can be found in the branches of the XLB repository. For contributions to these features, please reach out.* | ||
| ### Recently Completed | ||
|
|
||
| - 🌐 **Grid Refinement:** Implementing adaptive mesh refinement techniques for enhanced simulation accuracy. | ||
| - ✅ **Grid Refinement:** Multi-resolution LBM with nested cuboid grids and multiple kernel-fusion strategies via the Neon backend. | ||
|
|
||
| - 💾 **Out-of-Core Computations:** Enabling simulations that exceed available GPU memory, suitable for CPU+GPU coherent memory models such as NVIDIA's Grace Superchips (coming soon). | ||
| - ✅ **Multi-GPU Acceleration using [Neon](https://github.com/Autodesk/Neon) + Warp:** Multi-GPU support through Neon's data structures with Warp-based kernels for single-resolution settings. | ||
|
|
||
| ### Work in Progress (WIP) | ||
| *Note: Some of the work-in-progress features can be found in the branches of the XLB repository. For contributions to these features, please reach out.* | ||
|
|
||
| - ⚡ **Multi-GPU Acceleration using [Neon](https://github.com/Autodesk/Neon) + Warp:** Using Neon's data structure for improved scaling. | ||
| - 💾 **Out-of-Core Computations:** Enabling simulations that exceed available GPU memory, suitable for CPU+GPU coherent memory models such as NVIDIA's Grace Superchips (coming soon). | ||
|
|
||
| - 🗜️ **GPU Accelerated Lossless Compression and Decompression**: Implementing high-performance lossless compression and decompression techniques for larger-scale simulations and improved performance. | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| { | ||
| "_comment": "Ahmed Car Model, slant - angle = 25 degree. Profiles on symmetry plane (y=0) covering entire field. Origin of coordinate system: x=0: end of the car, y=0: symmetry plane, z=0: ground plane S.Becker/H. Lienhart/C Stoots, Institute of Fluid Mechanics, University Erlangen-Nuremberg, Erlangen, Germany, Coordinates in meters need to convert to voxels, Velocity data in m/s", | ||
| "data": { | ||
| "-1.162" : { "x-velocity" : [26.995,29.825,29.182,28.488,27.703,26.988,26.456,26.163,26.190,26.523,27.083,28.033,29.131,30.429,31.747,33.036,34.268,35.354,36.312,37.083,37.770,38.484,39.033,39.447,39.839,40.086,40.268,40.380,40.451], "height" : [0.028,0.048,0.068,0.088,0.108,0.128,0.148,0.168,0.188,0.208,0.228,0.248,0.268,0.288,0.308,0.328,0.348,0.368,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.7388]}, | ||
| "-1.062" : { "x-velocity" : [30.307,28.962,25.812,21.232,15.848,10.812,7.459,6.080,5.845,6.196,7.428,10.456,15.718,22.129,28.090,32.707,35.888,37.891,39.071,39.840,40.261,40.604,40.767,40.820,40.870,40.890,40.907,40.871,40.853], "height" : [0.028,0.048,0.068,0.088,0.108,0.128,0.148,0.168,0.188,0.208,0.228,0.248,0.268,0.288,0.308,0.328,0.348,0.368,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "-0.962" : { "x-velocity" : [52.216,51.303,50.196,48.833,47.728,46.790,45.514,44.222,43.379,42.829,42.322,42.056,41.876,41.706,41.584], "height" : [0.363,0.368,0.378,0.388,0.398,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "-0.862" : { "x-velocity" : [46.589,46.538,46.228,46.033,45.810,45.554,45.056,44.369,43.789,43.275,42.789,42.344,42.148,41.913,41.720], "height" : [0.363,0.368,0.378,0.388,0.398,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "-0.562" : { "x-velocity" : [43.237,43.262,43.248,43.225,43.183,43.145,43.083,43.030,42.904,42.776,42.685,42.434,42.358,42.197,42.042], "height" : [0.363,0.368,0.378,0.388,0.398,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "-0.362" : { "x-velocity" : [44.493,44.491,44.443,44.379,44.297,44.215,44.067,43.867,43.577,43.306,43.061,42.689,42.527,42.293,42.105], "height" : [0.363,0.368,0.378,0.388,0.398,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "-0.212" : { "x-velocity" : [49.202,48.429,47.805,46.697,45.883,44.913,44.195,43.650,43.130,42.677,42.432,42.154,41.961], "height" : [0.368,0.378,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "-0.162" : { "x-velocity" : [50.511,49.784,48.894,48.103,47.468,46.322,45.563,44.581,43.933,43.383,42.905,42.505,42.293,42.042,41.863], "height" : [0.348,0.358,0.368,0.378,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "-0.112" : { "x-velocity" : [27.615,35.449,41.526,46.068,46.277,46.038,45.774,45.505,45.237,44.701,44.326,43.765,43.284,42.890,42.529,42.247,42.082,41.880,41.732], "height" : [0.318,0.323,0.328,0.338,0.348,0.358,0.368,0.378,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "-0.062" : { "x-velocity" : [22.891,27.789,32.292,36.568,39.533,41.426,42.371,42.971,43.030,43.081,43.074,43.065,43.039,42.996,42.908,42.665,42.456,42.294,42.105,41.929,41.827,41.660,41.546], "height" : [0.298,0.303,0.308,0.313,0.318,0.323,0.328,0.338,0.348,0.358,0.368,0.378,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "-0.012" : { "x-velocity" : [23.304,26.317,29.429,32.341,34.923,37.106,38.673,39.841,40.447,40.780,40.973,41.085,41.193,41.282,41.359,41.442,41.522,41.699,41.737,41.749,41.724,41.714,41.642,41.574,41.518,41.431,41.366], "height" : [0.278,0.283,0.288,0.293,0.298,0.303,0.308,0.313,0.318,0.323,0.328,0.338,0.348,0.358,0.368,0.378,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "0.038" : { "x-velocity" : [42.752,37.392,15.320,-4.501,-8.079,-8.892,-8.420,-7.027,-5.143,-2.903,-0.936,0.927,2.200,3.099,3.622,4.026,4.280,4.520,5.620,8.938,13.913,17.872,21.148,24.814,29.075,33.188,36.424,38.490,39.388,39.675,39.794,39.911,40.007,40.219,40.425,40.643,40.757,40.896,40.994,41.058,41.124,41.127,41.143,41.106,41.080], "height" : [0.028,0.038,0.048,0.058,0.068,0.078,0.088,0.098,0.108,0.118,0.128,0.138,0.148,0.158,0.168,0.178,0.188,0.198,0.208,0.218,0.228,0.238,0.248,0.258,0.268,0.278,0.288,0.298,0.308,0.318,0.328,0.338,0.348,0.368,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "0.088" : { "x-velocity" : [41.859,35.830,22.660,7.745,-5.808,-12.650,-14.748,-13.756,-10.659,-6.484,-2.121,1.303,3.672,5.441,7.066,9.157,11.613,14.620,17.662,20.639,23.565,26.437,29.484,32.441,35.024,36.938,37.938,38.377,38.595,38.728,38.856,38.976,39.133,39.438,39.749,39.975,40.129,40.344,40.499,40.649,40.783,40.853,40.927,40.945,40.960], "height" : [0.028,0.038,0.048,0.058,0.068,0.078,0.088,0.098,0.108,0.118,0.128,0.138,0.148,0.158,0.168,0.178,0.188,0.198,0.208,0.218,0.228,0.238,0.248,0.258,0.268,0.278,0.288,0.298,0.308,0.318,0.328,0.338,0.348,0.368,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "0.138" : { "x-velocity" : [36.223,32.501,24.752,14.281,2.799,-6.218,-10.908,-11.892,-9.708,-5.258,-0.140,4.331,7.882,10.995,13.961,16.699,19.477,22.063,24.651,27.081,29.524,31.950,34.043,35.594,36.506,37.053,37.386,37.614,37.832,38.032,38.214,38.397,38.575,38.940,39.298,39.533,39.749,40.028,40.206,40.404,40.580,40.691,40.803,40.858,40.921], "height" : [0.028,0.038,0.048,0.058,0.068,0.078,0.088,0.098,0.108,0.118,0.128,0.138,0.148,0.158,0.168,0.178,0.188,0.198,0.208,0.218,0.228,0.238,0.248,0.258,0.268,0.278,0.288,0.298,0.308,0.318,0.328,0.338,0.348,0.368,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "0.188" : { "x-velocity" : [29.417,27.755,23.967,18.261,11.662,5.405,0.676,-0.652,0.937,4.261,7.958,11.427,14.366,17.138,19.735,22.151,24.577,26.883,29.165,31.111,32.781,34.072,34.893,35.524,35.974,36.329,36.604,36.872,37.138,37.402,37.673,37.900,38.112,38.518,38.829,39.088,39.326,39.639,39.871,40.096,40.275,40.423,40.523,40.603,40.687], "height" : [0.028,0.038,0.048,0.058,0.068,0.078,0.088,0.098,0.108,0.118,0.128,0.138,0.148,0.158,0.168,0.178,0.188,0.198,0.208,0.218,0.228,0.238,0.248,0.258,0.268,0.278,0.288,0.298,0.308,0.318,0.328,0.338,0.348,0.368,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "0.238" : { "x-velocity" : [24.405,24.168,22.782,20.196,16.970,13.937,12.137,11.757,12.851,14.649,16.780,18.995,21.070,23.335,25.280,27.468,29.262,30.832,32.133,33.102,33.856,34.473,34.922,35.340,35.698,36.039,36.336,36.629,36.906,37.193,37.454,37.691,37.929,38.329,38.611,38.875,39.126,39.414,39.677,39.917,40.097,40.259,40.380,40.478,40.568], "height" : [0.028,0.038,0.048,0.058,0.068,0.078,0.088,0.098,0.108,0.118,0.128,0.138,0.148,0.158,0.168,0.178,0.188,0.198,0.208,0.218,0.228,0.238,0.248,0.258,0.268,0.278,0.288,0.298,0.308,0.318,0.328,0.338,0.348,0.368,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]}, | ||
| "0.288" : { "x-velocity" : [21.489,22.225,22.127,21.456,20.404,19.743,19.541,19.909,21.002,22.381,24.018,25.670,27.421,28.998,30.371,31.523,32.406,33.111,33.670,34.155,34.532,34.893,35.240,35.567,35.875,36.158,36.437,36.708,36.974,37.230,37.473,37.709,37.932,38.266,38.515,38.773,39.008,39.270,39.562,39.782,39.962,40.148,40.266,40.369,40.475], "height" : [0.028,0.038,0.048,0.058,0.068,0.078,0.088,0.098,0.108,0.118,0.128,0.138,0.148,0.158,0.168,0.178,0.188,0.198,0.208,0.218,0.228,0.238,0.248,0.258,0.268,0.278,0.288,0.298,0.308,0.318,0.328,0.338,0.348,0.368,0.388,0.408,0.428,0.458,0.488,0.518,0.558,0.598,0.638,0.688,0.738]} | ||
| } | ||
| } | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pls fix the trailing whitespace
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done. |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should clarify that Neon is only supported on 3.12