Installing bfscplate2d#
From the distributed packages#
Install from the distributed packages, with the dependencies NumPy, SciPy and composites, by simply doing:
python -m pip install bfscplate2d
From the source code#
The element is written in Cython, translated to C++ and compiled when the
package is built, such that installing from the source code requires a C++
compiler, e.g. Microsoft Visual C++ on Windows, GCC on Linux or Clang on
macOS. The package metadata, with the version, and the build requirements,
setuptools and Cython, are in pyproject.toml; pip installs the build
requirements in an isolated environment:
python -m pip install .
The requirements of the tests and of the build, including Cython and pytest,
are listed in requirements.txt:
python -m pip install -r requirements.txt
requirements.txt also lists structsolve, which solves the nonlinear
static analysis of the tests and of the examples and cross-checks some of
their linear buckling and natural frequency solutions, see
Analyses. It is a requirement of the tests and of the examples of
the documentation only: bfscplate2d does not import it, and it is not
installed with bfscplate2d, not being in the dependencies of
pyproject.toml. The tests require a version of structsolve newer than 0.8.0,
with the module structsolve.convergence and Crisfield’s convergence
criterion as default. The examples of Analyses require structsolve
0.9.3 or newer, whose residual is \(\boldsymbol{R} = \boldsymbol{F}_{int} -
\lambda \boldsymbol{F}_{ext}\), the convention of these pages.
To build in place, for running the tests from the source tree, which also
writes bfscplate2d/version.py with the version of pyproject.toml:
python setup.py build_ext --inplace
and the tests with:
python -m pytest tests
setup.py compiles with /O2 on Windows and with -O3
-fno-math-errno on Linux and macOS, without flags that change the
floating-point results, e.g. -ffast-math, or that tie the binaries to
the processor that built them, e.g. -march=native. On Linux it also
links with -static-libgcc -static-libstdc++.
A build for the coverage of the Cython code, with line tracing and without
optimization, is requested with CYTHON_TRACE_NOGIL in the environment or
with:
python setup.py build_ext --inplace --force --define CYTHON_TRACE
as in run_setup_coverage.bat. setup.py regenerates the C++ file when
it was generated in the other mode, with or without line tracing.
Building the documentation#
The documentation requires Sphinx, numpydoc, nbsphinx and the PyData Sphinx theme, and the package built in place, see above:
python -m pip install sphinx numpydoc nbsphinx pydata-sphinx-theme
cd doc
make html