{"id":32656688,"url":"https://github.com/openmdao/mphys","last_synced_at":"2025-10-31T11:05:57.389Z","repository":{"id":37089725,"uuid":"157917849","full_name":"OpenMDAO/mphys","owner":"OpenMDAO","description":"Multiphysics with OpenMDAO","archived":false,"fork":false,"pushed_at":"2025-09-05T19:55:56.000Z","size":6094,"stargazers_count":112,"open_issues_count":10,"forks_count":38,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-09-28T15:39:26.263Z","etag":null,"topics":["mdao","openmdao"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenMDAO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2018-11-16T20:26:27.000Z","updated_at":"2025-09-28T05:07:58.000Z","dependencies_parsed_at":"2023-02-19T12:00:54.095Z","dependency_job_id":"7ec3a83c-c83b-4898-a4fd-d2317d5d581e","html_url":"https://github.com/OpenMDAO/mphys","commit_stats":{"total_commits":766,"total_committers":19,"mean_commits":40.31578947368421,"dds":"0.48825065274151436","last_synced_commit":"c6ccda0f2d8506c77dc34b38758206cdf6024dab"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/OpenMDAO/mphys","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMDAO%2Fmphys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMDAO%2Fmphys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMDAO%2Fmphys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMDAO%2Fmphys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenMDAO","download_url":"https://codeload.github.com/OpenMDAO/mphys/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMDAO%2Fmphys/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281976636,"owners_count":26592973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-31T02:00:07.401Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["mdao","openmdao"],"created_at":"2025-10-31T11:05:55.297Z","updated_at":"2025-10-31T11:05:57.380Z","avatar_url":"https://github.com/OpenMDAO.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"docs/logo/mphys_logo_no_background.png\" alt= “MPhys” width=\"250\"\u003e\n\n[![Unit Tests and Docs](https://github.com/OpenMDAO/mphys/actions/workflows/unit_tests_and_docs.yml/badge.svg)](https://github.com/OpenMDAO/mphys/actions/workflows/unit_tests_and_docs.yml)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat\u0026labelColor=ef8336)](https://pycqa.github.io/isort/)\n\nMPhys is a package that standardizes high-fidelity multiphysics problems in OpenMDAO.\nMPhys eases the problem set up, provides straightforward extension to new disciplines, and has a library of OpenMDAO groups for multidisciplinary problems addressed by its standard.\n\nWhile MPhys does provide these conventions, it is not absolutely necessary to follow these guidelines in order to solve these types of problems with OpenMDAO given its very general coupling capability.\nHowever, by following the MPhys conventions, the usage of OpenMDAO for multiphysics analysis will be modular across developer groups.\nThis eases technology transfer and collaboration in this area of research.\nThe standardization strives for modularity of multiphysics problems with large parallel physics codes.\n\n## Install\nTo install the latest release version of mphys:\n```bash\npip install mphys\n```\n\nFor developers, clone the mphys repository then in the root directory do:\n```bash\npip install -e .\n```\n\n## Documentation\nOnline documentation is available at [https://openmdao.github.io/mphys/](https://openmdao.github.io/mphys/).\n\n### Building the Docs\nThe documentation includes N2 diagrams from the unit tests. Before building the docs, go into `tests/unit_tests` and run `python -m unittest`.\nThen go into the `docs` directory and run `make html`.\n\n# Citing MPhys\nIf you use MPhys in your research, please cite the [MPhys journal paper](https://link.springer.com/article/10.1007/s00158-024-03900-0).\nA bibtex entry is provided [here](https://openmdao.github.io/mphys/references/citing_mphys.html).\nA public version of the article is also available on [ResearchGate](https://www.researchgate.net/publication/387832759_MPhys_a_modular_multiphysics_library_for_coupled_simulation_and_adjoint_derivative_computation).\n\n# Solvers compatible with MPhys\nOpen-source codes with builders and components compatible with mphys:\n\n| Code                                                       | Recommended Version* | Analysis Type                  | Notes                                                                   |\n|------------------------------------------------------------|----------------------|--------------------------------|-------------------------------------------------------------------------|\n| [ADflow](https://github.com/mdolab/adflow)                 | 2.12.0               | Aerodynamics                   | Structured multi-block and overset CFD.                                 |\n| [DAfoam](https://github.com/mdolab/dafoam)                 | 3.2.0                | Aerodynamics                   | Discrete Adjoint with OpenFOAM.                                         |\n| [OpenAeroStruct](https://github.com/mdolab/openaerostruct) | 2.9.1                | Aerodynamics                   | Vortex lattice aerodynamics written using OpenMDAO.                     |\n| [FunToFEM](https://github.com/smdogroup/funtofem)          | 0.3.8                | Load and Displacement Transfer | Point cloud based transfer scheme. Part of the FUNtoFEM package.        |\n| [pyCycle](https://github.com/OpenMDAO/pyCycle)             | 4.3.0                | Propulsion                     | Thermodynamic cycle modeling library for engines.                       |\n| [pyGeo](https://github.com/mdolab/pygeo)                   | 1.15.0               | Geometric Parameterization     | Wrapper for ESP, OpenVSP, and a free-form deformation parameterization. |\n| [TACS](https://github.com/smdogroup/tacs)                  | 3.8.0                | Structures                     | Parallel Finite Element Analysis. |\n\n\\* Recommended version to run mphys examples. Older versions may still be supported.\n\n# Examples\nAs noted their README.md files, some of the examples use codes that are not widely available;\nhowever, they are still included in order to provide more illustrations of how mphys can be used.\n\n# For developers\n\n## Telecons\n\nMPhys development is discussed in biweekly telecons that occur Mondays at 11AM Eastern Time.\nIf you would like to participate, contact Kevin Jacobson (kevin.e.jacobson@nasa.gov).\n\n## Signed Commits\nThe MPhys `main` branch requires verified commits. See the instructions on how to sign commits [here](https://openmdao.org/newdocs/versions/latest/other_useful_docs/developer_docs/signing_commits.html).\n\n## Tests\nThe test are written to use the testflo framework because it allows us to run tests with multiple cores.\nTo run the tests you will need to install testflo.\n\n### Integration Tests\nThe integration tests check the interaction of mphys with several solvers.\nThese python packages are required to run them:\n```\nadflow\ntacs\nfuntofem\ntestflo\nparamerized\nopenaerostruct\n```\nand these input files. They can be obtained by running `get-input-files.sh`\n```\nwingbox.bdf\nwing_vol_L1.cgns\nwing_vol_L2.cgns\nwing_vol_L3.cgns\nffd.xyz\n```\n\nto run the tests execute in the root directory\n```bash\ntestflo -v tests\n```\n\n## Code Formatting\nAll pull requests automatically check for code formatting compliance using `flake8`, `black`, and `isort`.\nBefore submitting a PR check code changes adheres to this formating.\nTo run `flake8`, `black`, and `isort` locally, use the folowing commands:\n```commandline\n$ pip install flake8 black isort\n$ wget https://raw.githubusercontent.com/mdolab/.github/main/.flake8 -O .flake8_mdolab  # download flake8 configuration for mdolab\n$ python -m flake8 . --append-config .flake8_mdolab --count --show-source --statistics\n$ python -m black . --check --diff\n$ python -m isort . --check-only --diff\n```\n\n# Software Assurance Plan\n\nMPhys has been deemed as Class-E software, according to the [7120.5D Specification](https://www.nasa.gov/pdf/423715main_NPR_7120-5_HB_FINAL-02-25-10.pdf).\nTo maintain software quality and assure functionality, MPhys includes a unit and integration test suite.\nBefore any pull requests are merged, all of those tests must pass.\nThe tests are run as part of a continuous integration system, automatically upon pull request submission.\n\nWe require all commits to be signed to ensure that we know the \"identity\" (at least that the commit is actually coming from the account it claims to be).\nUnsigned commits will not be accepted.\n\nThe Bandit static analysis tool is run on the codebase to check for any \"simple\" security issues.\nThis checks for basic vulnerabilities like having API keys, user names, or passwords in the repository.\nBandit is run manually on the repository before any major releases are made.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmdao%2Fmphys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenmdao%2Fmphys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmdao%2Fmphys/lists"}