diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 06fc4c3..0efa102 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,59 @@ -# Contributing +# Contributing to FieldCraft -Thanks for helping. Read [AGENTS.md](AGENTS.md) first: it holds the rules every change follows, -whether a person or an agent writes it. +FieldCraft is one open-source modeler for structures, heat and fluids, written in pure Rust: open a +parametric SolidCraft part, mesh it (tet or all-hex), define the analysis, solve it with our own +implicit, explicit, thermal or lattice Boltzmann solvers, and look at verified results โ€” from the +desktop app, the command line, or an AI agent over MCP. + +Help is welcome, whether that's a one-line fix, a verification benchmark, a file format or owning a +whole solver. This page covers how to build it, the few rules that aren't negotiable, where help is +needed most, and how to claim work. The rules every change follows, by a person or an agent, are in +[AGENTS.md](AGENTS.md). + +## Get it running (about 10 minutes on a fast machine) + +You need stable Rust 1.95 or newer. + +```sh +git clone https://github.com/jyviko/fieldcraft && cd fieldcraft +cargo run --release -p fieldcraft -- --sample cantilever # the desktop app on a sample model +cargo run -p fieldcraft-cli -- commands # every command and its parameters +cargo test -p fieldcraft-solver # the tests of one crate +cargo xtask oracle --quick # the verification cases (docs/oracle.md) +``` + +`develop` is the trunk and `main` holds released code. The layers and crates are in +[docs/architecture.md](docs/architecture.md); every user-visible capability is a command in +`crates/engine/src/cmd/` ([docs/features.md](docs/features.md) lists them). + +## Where help is wanted most + +See the [`help wanted`](https://github.com/jyviko/fieldcraft/labels/help%20wanted) and +[`good first issue`](https://github.com/jyviko/fieldcraft/labels/good%20first%20issue) labels, and +the `area:` labels for your field. In order of how much they would help users: + +1. **Reproducible meshes** ([#115](https://github.com/jyviko/fieldcraft/issues/115)). The same part + must give the same tet mesh on every platform and every run, as the solvers already do. +2. **All-hex meshing of thin and curved parts** ([#85](https://github.com/jyviko/fieldcraft/issues/85)). + The octree mesher over-refines thin walls; concave transition templates and an up-front depth + are next. Hex meshing is the centre of gravity of the project. +3. **Getting results in and out**: ParaView export ([#90](https://github.com/jyviko/fieldcraft/issues/90)), + Gmsh import ([#91](https://github.com/jyviko/fieldcraft/issues/91)), Abaqus deck reading + ([#98](https://github.com/jyviko/fieldcraft/issues/98)), CSV and STL + ([#92](https://github.com/jyviko/fieldcraft/issues/92), [#93](https://github.com/jyviko/fieldcraft/issues/93)). +4. **Verification benchmarks** ([#97](https://github.com/jyviko/fieldcraft/issues/97), + [#106](https://github.com/jyviko/fieldcraft/issues/106)). An engineer with a published benchmark + can add it as an oracle case without touching solver code. +5. **Nonlinear elements and materials**: incompatible modes at finite strain + ([#82](https://github.com/jyviko/fieldcraft/issues/82)), kinematic hardening + ([#81](https://github.com/jyviko/fieldcraft/issues/81)), and the material library + ([#99](https://github.com/jyviko/fieldcraft/issues/99)). +6. **The app**: typed command forms ([#112](https://github.com/jyviko/fieldcraft/issues/112)), XY and + path plots ([#94](https://github.com/jyviko/fieldcraft/issues/94), [#95](https://github.com/jyviko/fieldcraft/issues/95)). + +Bigger areas on the [roadmap](ROADMAP.md) โ€” contact, dynamics, composites, coupled fields, wave +propagation, turbulence โ€” are open to anyone who wants to own one: start a thread in +[Discussions](https://github.com/jyviko/fieldcraft/discussions). ## Before you start: claim an issue diff --git a/README.md b/README.md index 071e429..0a146f0 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,21 @@ solves, and shows the von Mises stress and the deformed shape (tip deflection 0. theory with shear 0.177 mm). [MP4](docs/media/ibeam-analysis.mp4) ยท regenerated by [tools/demo-video](tools/demo-video/README.md). +## Download + +[![Download for macOS](https://img.shields.io/badge/macOS-Download-000000?style=for-the-badge&logo=apple&logoColor=white)](https://github.com/jyviko/fieldcraft/releases/latest) +[![Download for Windows](https://img.shields.io/badge/Windows-Download-0078D6?style=for-the-badge)](https://github.com/jyviko/fieldcraft/releases/latest) +[![Download for Linux](https://img.shields.io/badge/Linux-Download-FCC624?style=for-the-badge&logo=linux&logoColor=black)](https://github.com/jyviko/fieldcraft/releases/latest) + +- **macOS:** open the `.dmg` and drag FieldCraft into Applications (Apple silicon and Intel). +- **Windows:** unzip and run `fieldcraft.exe`. +- **Linux:** the `.AppImage` (allow it to run as a program), or the `.tar.gz`. +- **Command line:** `fieldcraft-cli` ships in every package; AI agents connect to it over MCP + ([docs/mcp.md](docs/mcp.md)). + +Every release lists its checksums in `SHA256SUMS.txt`. Building from source is in +[CONTRIBUTING.md](CONTRIBUTING.md#get-it-running-about-10-minutes-on-a-fast-machine). + ## Hex meshing a part that does not sweep A filleted L-bracket with a hole through each leg cannot be swept in one piece. Split into 30