Re-state
is a Clojure(Script) library in development for computing numerically accurate and reproducible mechanical responses of systems. The core algorithm code is completely shared providing more extensive testing and easier implementation of new problems. Currently, there is support for solving non-linear particle and rigid body dynamic systems.
See a demo of this library in action here.
Clojure is a Lisp dialect and functional programming language with a rich set of persistent data structures. Immutable data structures allow for easier to reason about systems, as well as concurrency.
In addition, Clojure can be run in a Java runtime or in a JavaScript runtime. This means code can be shared across a high performance runtime and in a standard browser for serverless demos.
Run the following at a terminal in the root directory to get started.
make dev
The user interface components are available under src/app
. The dynamic specific solving code is available under src/dynamic
. Some math helper functions are available under src/math
.
- React via Reagent for the user interface
- Vega-Lite via Oz for plot visualizations
- math.js via clojure.core.matrix for linear algebra
- ClojureScript for compiling to JavaScript
- File issues/bugs here
- Have some Equations of Motions you'd like to see in action? I'd be happy to add them to the list of examples! Add an issue to get started