|
| 1 | +################### |
| 2 | +The PyAnsys Project |
| 3 | +################### |
1 | 4 |
|
| 5 | +The PyAnsys project is an effort by Ansys to provide Python libraries |
| 6 | +that exploit the features of the Python language to produce APIs |
| 7 | +and interfaces that are clear, concise and maintainable. |
2 | 8 |
|
| 9 | +PyAnsys libraries are more than just reusable "scripts"; they are a set |
| 10 | +of useful functions, classes, and plugins that eliminate the need to |
| 11 | +write scripts and code from scratch. These libraries are intended to |
| 12 | +play a vital role in: |
| 13 | + |
| 14 | +- Application automation |
| 15 | +- Machine learning |
| 16 | +- Post processing |
| 17 | +- Data visualization |
| 18 | +- Orchestrating workflows |
| 19 | +- Data manipulation and export |
| 20 | + |
| 21 | + |
| 22 | +Python - Strategy |
| 23 | +================= |
| 24 | + |
| 25 | +PyAnsys libraries are intended to extend and interface with existing |
| 26 | +products of Ansys services **outside** of the application itself, and |
| 27 | +in some cases permitting remote execution. As such, this requires |
| 28 | +that you have a working installation of Python, and ideally a Python |
| 29 | +distribution like the `Anaconda Distribution |
| 30 | +<https://www.anaconda.com/products/individual>`_. For existing users |
| 31 | +of Ansys who are not used to working with Python outside of the |
| 32 | +product, this may seem to be an unnecessary step, but what this |
| 33 | +approach provides is: |
| 34 | + |
| 35 | +* The ability to connect with the vast ecosystem of `CPython |
| 36 | + <http://www.python.org/>`_ Packages including: |
| 37 | + |
| 38 | + * `NumPy <https://numpy.org/>`_ |
| 39 | + * `SciPy <https://www.scipy.org/>`_ |
| 40 | + * `Matplotlib <https://matplotlib.org/>`_ |
| 41 | + * `VTK <https://vtk.org/>`_ |
| 42 | + * `PyTorch <https://pytorch.org/>`_ |
| 43 | + * `Qt for Python <https://wiki.qt.io/Qt_for_Python>`_ |
| 44 | + * `Flask <https://flask.palletsprojects.com/>`_ |
| 45 | + * 10,000s of others |
| 46 | + |
| 47 | + Depending on your python environment, you can use a package manager |
| 48 | + like `pip <https://pip.pypa.io/en/stable/>`_ or `conda |
| 49 | + <https://conda.io/>`_ to easily install the most up-to-date version |
| 50 | + of the library you need. |
| 51 | + |
| 52 | +* Customization of your entire Python environment on the OS of your |
| 53 | + choosing. For the applications that support it, you can even |
| 54 | + remotely connect with and manage the application via `gRPC |
| 55 | + <https://grpc.io/>`_. For those that don't, you can still customize |
| 56 | + the version of Python and its packages. |
| 57 | + |
| 58 | +* Create applications or pipelines that utilize Ansys products and |
| 59 | + expose features as a web-page, standalone application, or script to |
| 60 | + allow anyone to instantly Ansys's products on the desktop or web |
| 61 | + using a customized workflow. |
| 62 | + |
| 63 | + |
| 64 | +PyAnsys Project Structure |
| 65 | +========================= |
| 66 | +The PyAnsys project hosted on GitHub at `PyAnsys |
| 67 | +<https://github.com/pyansys>`_ contains several repositories that provide: |
| 68 | + |
| 69 | +* Interfaces to Ansys products or services: |
| 70 | + |
| 71 | + * `PyMAPDL <https://github.com/pyansys/pymapdl>`_ |
| 72 | + * `PyAEDT <https://github.com/pyansys/PyAEDT>`_ |
| 73 | + * `DPF-Core <https://github.com/pyansys/DPF-Core>`_ |
| 74 | + * `DPF-Post <https://github.com/pyansys/DPF-Post>`_ |
| 75 | + * `Legacy PyMAPDL Reader <https://github.com/pyansys/pymapdl-reader>`_ |
| 76 | + |
| 77 | +* Documentation and Examples |
| 78 | + |
| 79 | + * `about <https://github.com/pyansys/about>`_ |
| 80 | + * `pyansys-sphinx-theme <https://github.com/pyansys/pyansys-sphinx-theme>`_ |
| 81 | + * `pyansys_landing <https://github.com/pyansys/pyansys_landing>`_ |
| 82 | + * `pyansys-helloworld <https://github.com/pyansys/pyansys-helloworld>`_ |
| 83 | + * `example-data <https://github.com/pyansys/example-data>`_ |
| 84 | + |
| 85 | +* Tools |
| 86 | + |
| 87 | + * `pyansys-protos-generator <https://github.com/pyansys/pyansys-protos-generator>`_ |
| 88 | + * `example-coverage <https://github.com/pyansys/example-coverage>`_ |
| 89 | + * `system-reporting-tool <https://github.com/pyansys/system-reporting-tool>`_ |
| 90 | + |
| 91 | + |
| 92 | +PyAnsys Library Overview |
| 93 | +======================== |
| 94 | +A PyAnsys library eliminates the need to share snippets of code that |
| 95 | +perform actions, but rather allows the user to create workflows |
| 96 | +consisting of their own Python modules and third-party libraries. |
| 97 | +This is done to extend Ansys's products in a way that matches how |
| 98 | +libraries are created in the Python community while still maintaining |
| 99 | +the separation between Products, APIs, and PyAnsys client libraries. |
| 100 | + |
| 101 | +The general pattern for a PyAnsys project avoids the anti-pattern of |
| 102 | +providing single-use scripts by ensuring: |
| 103 | + |
| 104 | +* Clear, open-source APIs consistent with community standards hosted |
| 105 | + on GitHub. |
| 106 | +* Reusable packages that can be updated and patched outside of the |
| 107 | + Ansys release schedule, while still being directly dependent on |
| 108 | + Ansys's products. |
| 109 | +* Unit testing, release packaging, and documentation. |
| 110 | + |
| 111 | +To do this, each PyAnsys library that extends a product follows the |
| 112 | +general pattern in the following figure: |
| 113 | + |
| 114 | +.. image:: https://github.com/pyansys/about/raw/main/doc/source/images/diagram.png |
| 115 | + :width: 400 |
| 116 | + :alt: Overview Diagram |
3 | 117 |
|
4 | 118 |
|
5 | 119 | PyAnsys Package Basic Structure
|
|
0 commit comments