README.md

# Getting Started

Setup a virtual environment and install the requirements. For platforms without
pre-built wheels (such as OpenBSD), this step may take several minutes.

        $ python3 -m venv venv
        $ . venv/bin/activate
        $ pip install -r requirements.txt

Make sure you have your data ulimit value set to something high:

        $ ulimit -d 130036380

Now start the simulation:

        $ ./simulate_blasts.py  --blast-cube-center 0,0,0 \
                                --blast-cube-extents-meters 20 \
                                --blast-cube-segments 9 \
                                --blast-min-dist-meters 2.5 \
                                --initial-peak-pressure-kpa 50000 \
                                --ray-resolution-arcmin 5 \
                                --ray-max-bounces 5 \
                                --ray-max-length-meters 35 \
                                --sensor-diameter-meters 0.111 \
                                --helmet-geometry assets/MICH.obj \
                                --vest-geometry assets/SAPI.obj \
                                --max-workers 15

# Analysis

The `analysis.R` file contains various snippets that are used to support data
analysis. The top two lines should be uncommented and ran if the R workspace
does not already have those packages installed. Comments throughout the code
indicate the use of each region of the code. To summarize in broad strokes, an
ANOVA is performed followed by paired t-tests with a Holm adjustment.

To quickly get the relevant data:

        $ R -q -s --no-save < analysis.R

# Visualization

The `visualize.R` file contains visualization snippets for looking at the data.

# Project Notes

The geometry is oriented such that the helmet is facing the negative Y
direction. The environment is oriented Z-up, X-left, Y-rearward

        pkg_add     spatialindex

Set `_jupyter` memory limit to much larger

# License

Copyright (C) 2025 SWGY, Inc

This project — including source code, the geometry assets in `assets/`, the
simulation outputs in `data/`, and the `Exploration.ipynb` notebook — is
licensed under the GNU Affero General Public License, version 3 or (at your
option) any later version. See the [`LICENSE`](./LICENSE) file for the full
text, or <https://www.gnu.org/licenses/agpl-3.0.html>.

`SPDX-License-Identifier: AGPL-3.0-or-later`