Installation and building#
Installing#
Install the distributed wheels with:
python -m pip install pyfe3d
or, from a clone of the repository, compiling the Cython modules:
python -m pip install .
The run-time dependencies are NumPy and SciPy; Cython and a C++ compiler
are needed to build from the source code, see requirements.txt and
pyproject.toml, which also holds the package metadata and the version. When no compiler is found, this page gives some
information on how to set up one on different operating systems:
https://cython2.readthedocs.io/en/latest/src/quickstart/install.html
Building in place#
For development, the extensions are compiled next to their sources with:
python -m pip install -r requirements.txt
python setup.py build_ext --inplace
which also writes pyfe3d/version.py with the version of
pyproject.toml. Each element and property is one
extension module, pyfe3d/*.pyx, compiled as C++ with the optimization
flags of setup.py, /O2 with MSVC and -O3 -fno-math-errno with
GCC and Clang, without flags that change the floating-point results.
pyfe3d.solver and pyfe3d.shellprop_utils are pure Python.
The property classes have Cython declaration files, beamprop.pxd and
shellprop.pxd, distributed with the package, such that other Cython
modules can cimport them.
Running the tests#
The tests are in tests/ and run with pytest, as in the continuous
integration of the repository:
python -m pip install -r requirements_ci.txt
python -m pytest tests
Several tests can also be run as scripts, plotting their results, e.g.
python test_quad4_static_point_load.py.
Building the documentation#
The documentation is built with Sphinx, with the packages of
requirements_doc.txt:
python -m pip install -r requirements_doc.txt
python -m sphinx -b html doc/source doc/build/html