Metadata-Version: 2.4
Name: opennodex
Version: 0.1.1
Summary: Structural FEA from .ndx decks: the nodex compiler, native engine and mesher, usable from Python and the command line.
Author-email: opennodex <hola@opennodex.cloud>
License-Expression: LicenseRef-Proprietary
Project-URL: Homepage, https://jpreyes.github.io/opennodex/
Project-URL: Downloads, https://github.com/jpreyes/opennodex/releases
Project-URL: Issues, https://github.com/jpreyes/opennodex/issues
Keywords: fem,fea,finite elements,structural engineering,ndx,nodex
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: nodejs-wheel-binaries>=22

# opennodex

Structural finite-element analysis from `.ndx` decks, from Python and the command line.

`pip install opennodex` brings everything a run needs: the `.ndx` compiler, the native **nodex** engine and
the native **nodex-mesher**, built for your platform, plus Node.js (as a dependency wheel). Nothing else to
install, no solver to configure.

```bash
pip install opennodex
opennodex selftest          # solves a beam and an auto-meshed slab
```

## Command line

```bash
opennodex check viga.ndx               # compile only: positioned diagnostics
opennodex run viga.ndx                 # compile + solve, one summary line per solve
opennodex run viga.ndx --json r.json   # …and the full result
opennodex info                         # compiler, engine contract version, mesher
```

## Python

```python
import opennodex

out = opennodex.run("viga.ndx")        # a path, or the deck's text
for solve, result in zip(out["solves"], out["results"]):
    print(solve["kind"], len(result["nodes"]))

opennodex.check("viga.ndx")            # {"ok", "diagnostics", ...} — never raises for a bad deck
```

A deck looks like this:

```
model units kN, m
material steel E=210e6 nu=0.3 rho=7.85
section s A=0.00538 Iy=8.36e-5 Iz=6.04e-6 J=2.01e-7
node A at (0,0,0)
node B at (6,0,0)
beam B1 from A to B steel s div 4
fix A
load 1 nodal B fz=-10
solve linear_static
```

Every number comes from a real engine run. The deck carries its own section properties, so it runs the same
on any machine.

## Platforms

Linux x86_64 (glibc as tagged on the wheel), Windows x64, macOS (Apple Silicon and Intel). The desktop app
(editor, 3D viewer and the optional agent) is a separate download:
[opennodex releases](https://github.com/jpreyes/opennodex/releases).

---

**Español.** `pip install opennodex` instala el compilador de `.ndx`, el motor nativo nodex y el mallador
nativo para tu plataforma, más Node.js. `opennodex selftest` comprueba la instalación; `opennodex run
deck.ndx` compila y resuelve. La aplicación de escritorio se descarga aparte.
