{"id":22190817,"url":"https://github.com/felipebogaertsm/machwave","last_synced_at":"2026-04-29T20:01:38.449Z","repository":{"id":37638515,"uuid":"296401220","full_name":"felipebogaertsm/machwave","owner":"felipebogaertsm","description":"Python package that helps engineers design rockets and rocket engines precisely and efficiently","archived":false,"fork":false,"pushed_at":"2026-04-25T13:01:07.000Z","size":39485,"stargazers_count":15,"open_issues_count":13,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-25T14:14:24.777Z","etag":null,"topics":["internal-ballistics","nozzle","simulation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/felipebogaertsm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-09-17T17:49:53.000Z","updated_at":"2026-04-25T12:10:46.000Z","dependencies_parsed_at":"2026-01-12T01:03:37.279Z","dependency_job_id":null,"html_url":"https://github.com/felipebogaertsm/machwave","commit_stats":{"total_commits":533,"total_committers":3,"mean_commits":"177.66666666666666","dds":0.04315196998123827,"last_synced_commit":"1deb1d327e363c0ea4bedce16e5e12fb28cc60d3"},"previous_names":["felipebogaertsm/rocket-solver"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/felipebogaertsm/machwave","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipebogaertsm%2Fmachwave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipebogaertsm%2Fmachwave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipebogaertsm%2Fmachwave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipebogaertsm%2Fmachwave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felipebogaertsm","download_url":"https://codeload.github.com/felipebogaertsm/machwave/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felipebogaertsm%2Fmachwave/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32441428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T18:12:22.909Z","status":"ssl_error","status_checked_at":"2026-04-29T18:11:33.322Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["internal-ballistics","nozzle","simulation"],"created_at":"2024-12-02T12:12:44.928Z","updated_at":"2026-04-29T20:01:33.433Z","avatar_url":"https://github.com/felipebogaertsm.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Machwave\n\nMachwave is a Python library for modelling solid rocket motors, liquid rocket engines, and whole vehicles, then running high-fidelity internal-ballistics and point-mass flight simulations—all with a clean, layered architecture.\n\n# Main features\n\n- Transient Solid Rocket Motor simulation\n  - Transient mass-balance chamber pressure calculations\n  - Wide variety of grain geometries and configurations\n  - Calculated correction factors\n- Transient Liquid Rocket Engine simulation (beta)\n  - Transient mass-balance chamber pressure calculations\n  - Supports multiple types of pressure feed systems\n  - High-fidelity propellant models with RocketCEA\n- Point-mass trajectory simulation\n- Monte Carlo simulations\n  - All previous simulations can be executed through the Monte Carlo method\n  - Any parameter can be randomized\n  - Simulation analysis tooling built-in\n\n# Modules\n\n| Topic | Path | Purpose |\n| -------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------- |\n| **Core math \u0026 physics**    | `machwave.core`        | Pure, side-effect-free formulas \u0026 algorithms (`flow`, `math`, `structural`, `conversions`, `des`). |\n| **Domain models**          | `machwave.models`      | Data-rich objects that describe reality—materials, propellants, motors, grain geometry, rockets, atmosphere, recovery. |\n| **Simulation states**        | `machwave.states`  | Immutable records of simulation state (internal-ballistics steps, flight 1-DoF states, etc.). |\n| **Simulation engines**     | `machwave.simulations` | Time-loop drivers that orchestrate models \u0026 produce state streams; includes factory helpers. |\n| **Monte-Carlo strategies** | `machwave.montecarlo`  | Runs Monte Carlos simulations. |\n| **File I/O**               | `machwave.io`          | Gateways for external formats (e.g., `eng.py` to export RASP *.eng* thrust files). |\n| **User-facing services**   | `machwave.services`    | Presentation \u0026 convenience: plotting helpers under `services.plots`. |\n| **Utility helpers**        | `machwave.common`      | Small, generic helpers (array ops, decorators, misc generics) used by any layer. |\n\nAn **import permission matrix** describes which modules can import from one another inside the application. Rules of thumb:\n\n- Arrows always point outward; a layer may only import the ones marked ✓ in its row.\n- No layer ever imports inward (up the column).\n- services is the outer facade - everything can be used there; common is the innermost helper layer - nothing else is imported by it.\n\n| *From / To*     | common | core | models | states | simulations | montecarlo |  io | services |\n| --------------- | :----: | :--: | :----: | :--------: | :---------: | :--------: | :-: | :------: |\n| **common**      |    ✗   |   ✗  |    ✗   |      ✗     |      ✗      |      ✗     |  ✗  |     ✗    |\n| **core**        |    ✓   |   ✗  |    ✗   |      ✗     |      ✗      |      ✗     |  ✗  |     ✗    |\n| **models**      |    ✓   |   ✓  |    ✗   |      ✗     |      ✗      |      ✗     |  ✗  |     ✗    |\n| **states**  |    ✓   |   ✓  |    ✓   |      ✗     |      ✗      |      ✗     |  ✗  |     ✗    |\n| **simulations** |    ✓   |   ✓  |    ✓   |      ✓     |      ✗      |      ✗     |  ✓  |     ✗    |\n| **montecarlo**  |    ✓   |   ✓  |    ✓   |      ✓     |      ✓      |      ✗     |  ✓  |     ✗    |\n| **io**          |    ✓   |   ✓  | (rare) |   (rare)   |      ✗      |      ✗     |  ✗  |     ✗    |\n| **services**    |    ✓   |   ✓  |    ✓   |      ✓     |      ✓      |      ✓     |  ✓  |     ✗    |\n\n# Main components\n\n## Models\n\nModels contain data-rich Python classes that mirror physical hardware or environments. Each model encapsulates state and invariants only (no time marching, no plotting).\n\n## Simulations\n\nMachwave currently supports internal ballistics simulations for solid motors and liquid engines and point-mass trajectory simulations.\n\nA simulation class is the engine that drives the time loop.\nIt receives:\n- the models to be simulated (rocket, motor/engine, etc.);\n- a SimulationParams instance tailored to that simulation type.\n\nDuring execution the solver instantiates one or more SimulationState objects that hold the evolving state arrays - chamber pressure, thrust, altitude, and so on, providing a clean, immutable record of the run.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipebogaertsm%2Fmachwave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelipebogaertsm%2Fmachwave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipebogaertsm%2Fmachwave/lists"}