{"id":20520258,"url":"https://github.com/plasmacontrol/faroes","last_synced_at":"2025-09-25T11:30:52.543Z","repository":{"id":86313547,"uuid":"524185175","full_name":"PlasmaControl/FAROES","owner":"PlasmaControl","description":"Fusion analysis, research, and optimization for energy systems","archived":false,"fork":false,"pushed_at":"2022-11-13T16:20:02.000Z","size":886,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-15T22:18:59.135Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PlasmaControl.png","metadata":{"files":{"readme":"README.rst","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}},"created_at":"2022-08-12T18:18:11.000Z","updated_at":"2024-06-28T09:40:14.000Z","dependencies_parsed_at":"2023-03-13T09:47:26.869Z","dependency_job_id":null,"html_url":"https://github.com/PlasmaControl/FAROES","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlasmaControl%2FFAROES","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlasmaControl%2FFAROES/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlasmaControl%2FFAROES/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlasmaControl%2FFAROES/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PlasmaControl","download_url":"https://codeload.github.com/PlasmaControl/FAROES/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234184085,"owners_count":18792801,"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","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":[],"created_at":"2024-11-15T22:18:53.019Z","updated_at":"2025-09-25T11:30:52.176Z","avatar_url":"https://github.com/PlasmaControl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"******\nFAROES\n******\n\nFAROES is \"Fusion Analysis, Research, and Optimization for Energy Systems\". It is a Python package for optimizing fusion power plants, and especially for optimizing properties like their capital cost or levelized cost of energy. It is built in a modular fashion to allow user-developers to modify or add equations or analyses of their own design.\nIt uses the OpenMDAO framework (openmdao.org) to provide interfaces to third-party nonlinear solvers and optimizers, especially gradient-based optimizers. The framework has advanced logging features to record solution data and metadata.\nThis framework also allows users to easily specify the design variables, constraints, and optimization targets, or to define their own.\n\n|forthebadge made-with-python|\n\n|pytest| |unittest| |license|\n\n.. |forthebadge made-with-python| image:: http://ForTheBadge.com/images/badges/made-with-python.svg\n   :target: https://www.python.org/\n\n.. |pytest| image:: https://github.com/cfe316/FAROES/workflows/pytests/badge.svg\n   :target: https://github.com/cfe316/FAROES/workflows/pytests/badge\n   :alt: Pytest build status\n\n.. |unittest| image:: https://github.com/cfe316/FAROES/workflows/unittest-installs/badge.svg\n   :target: https://github.com/cfe316/FAROES/workflows/unittest-installs/badge\n   :alt: Unittest build status\n\n.. |license| image:: https://img.shields.io/badge/License-MIT-blue.svg\n   :target: https://opensource.org/licenses/MIT\n   :alt: MIT licensed\n\nRequirements\n------------\n* ``numpy\u003e=1.21.0``\n* ``scipy``\n* ``openmdao == 3.15.0``. Can be installed with ``pip install \"openmdao==3.15.0\"``.\n* ``ruamel \u003e= 0.16``, a yaml parser.\n* ``plasmapy`` (https://www.plasmapy.org/).\n\nAll these can be installed automatically using the ``setup.py`` file.\n\n\nInstallation\n------------\nDownload the repo, ``cd`` to the folder and run ``pip install -e .``. This will download and install requirements and install FAROES in 'editable' mode.\n\n\nRecommended Packages\n---------------------\nThe two below can be installed on linux using the script available here: https://github.com/OpenMDAO/build_pyoptsparse/\n\n* ``pyoptsparse`` (https://github.com/mdolab/pyoptsparse) in order to access the ``pyOptSparseDriver`` which allows use of more powerful optimizers like ``IPOPT``.\n* ``IPOPT``. This is optimizer seems to perform a bit better than the implemntations of ``COBYLA`` or ``SLSQP`` which are included with ``scipy``.\n\nNote that an environment variable must be set in every terminal instance using ``IPOPT``. We recommend adding a line to ``~/.bashrc`` to do this automatically for every terminal instance: ``export LD_LIBRARY_PATH=$HOME/ipopt/lib:$LD_LIBRARY_PATH``\n\n\nDocumentation Packages\n--------------------\n* ``docutils\u003c0.17,\u003e=0.15``\n* ``nbclient\u003c0.6,\u003e=0.2``\n* ``sphinx \u003e= 4.4.0``\n* ``jupyter-sphinx==0.3.2``\n* ``Jinja2\u003c3.1``\n* ``sphinxcontrib-bibtex \u003e= 2.3``\n* ``jsonschema \u003c 4``\n* ``sphinx_rtd_theme``\n\nThe above packages are used to build the documentation for FAROES, and can be downloaded automatically by downloading the repos, ``cd`` to the folder, and running ``pip install -e .[docs]``, which will install FAROES in 'editable' mode alongside with the packages needed to build the documentation.\n\nFunding\n-------\nThis work was supported by the U.S. Department of Energy under contract number DE-AC02-09CH11466.\n\nThe developer grants to the Government, and others acting on its behalf,\na nonexclusive, paid-up, irrevocable, world-wide license in such copyrighted data to reproduce,\nprepare derivative works, distribute copies to the public, and perform publicly and display publicly,\nby or on behalf of the Government.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplasmacontrol%2Ffaroes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplasmacontrol%2Ffaroes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplasmacontrol%2Ffaroes/lists"}