aboutsummaryrefslogtreecommitdiff
path: root/science/py-PyFR
diff options
context:
space:
mode:
authorRene Ladan <rene@FreeBSD.org>2020-01-01 11:46:08 +0000
committerRene Ladan <rene@FreeBSD.org>2020-01-01 11:46:08 +0000
commit12f974ad28b37b69ae565644784623a4a49b1d32 (patch)
treee1de30302164fba037edd51962e8f336730aa5ed /science/py-PyFR
parentf2aea6bcb5e33f3312681450946471970022a977 (diff)
downloadports-12f974ad28b37b69ae565644784623a4a49b1d32.tar.gz
ports-12f974ad28b37b69ae565644784623a4a49b1d32.zip
Notes
Diffstat (limited to 'science/py-PyFR')
-rw-r--r--science/py-PyFR/Makefile46
-rw-r--r--science/py-PyFR/distinfo3
-rw-r--r--science/py-PyFR/files/patch-pyfr_backends_openmp_compiler.py11
-rw-r--r--science/py-PyFR/pkg-descr20
4 files changed, 80 insertions, 0 deletions
diff --git a/science/py-PyFR/Makefile b/science/py-PyFR/Makefile
new file mode 100644
index 000000000000..f82d0d349db1
--- /dev/null
+++ b/science/py-PyFR/Makefile
@@ -0,0 +1,46 @@
+# $FreeBSD$
+
+PORTNAME= PyFR
+DISTVERSION= 1.8.0
+PORTREVISION= 5
+CATEGORIES= science python
+MASTER_SITES= http://www.pyfr.org/download/
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= yuri@FreeBSD.org
+COMMENT= Framework for solving advection-diffusion type problems
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}appdirs>=1.4.0:devel/py-appdirs@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}gimmik>=2.0:math/py-gimmik@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}h5py>=2.6:science/py-h5py@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}mako>=1.0.0:textproc/py-mako@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}mpi4py>=2.0:net/py-mpi4py@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pytools>=2016.2.1:devel/py-pytools@${PY_FLAVOR} \
+ ${NUMPY}
+
+USES= python:3.3+ shebangfix zip
+SHEBANG_FILES= setup.py pyfr/__main__.py
+USE_PYTHON= distutils concurrent autoplist
+NO_ARCH= yes
+
+OPTIONS_MULTI= PARALLEL
+OPTIONS_MULTI_PARALLEL= OPENCL OPENMP # CUDA isn't supported on FreeBSD
+OPTIONS_DEFAULT= ${OPTIONS_MULTI_PARALLEL}
+PARALLEL_DESC= Parallelization backends to install
+
+OPENCL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pyopencl>0:devel/py-pyopencl@${PY_FLAVOR} \
+ clblas>0:math/clblas
+OPENMP_RUN_DEPENDS= openmp>0:devel/openmp \
+ libxsmm>0:math/libxsmm
+
+pre-build: # patch in pre-build to make the patch less error-prone (it has %%LOCALBASE%%)
+ @${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/pyfr/backends/openmp/compiler.py
+
+post-install: # workaround: https://groups.google.com/forum/#!topic/pyfrmailinglist/RNi_LcizGBo
+ @${RM} ${STAGEDIR}${PREFIX}/__main__.py
+ @${REINPLACE_CMD} 's|^${PREFIX}/__main__\.py||' ${_PYTHONPKGLIST}
+
+.include <bsd.port.mk>
diff --git a/science/py-PyFR/distinfo b/science/py-PyFR/distinfo
new file mode 100644
index 000000000000..98242d6a65e7
--- /dev/null
+++ b/science/py-PyFR/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1539760102
+SHA256 (PyFR-1.8.0.zip) = 6b2b71886cea1bade16b3c8cd5bc681b2a9a22b7388a6aa4e69c934be69f3c23
+SIZE (PyFR-1.8.0.zip) = 829366
diff --git a/science/py-PyFR/files/patch-pyfr_backends_openmp_compiler.py b/science/py-PyFR/files/patch-pyfr_backends_openmp_compiler.py
new file mode 100644
index 000000000000..f77a4b146f77
--- /dev/null
+++ b/science/py-PyFR/files/patch-pyfr_backends_openmp_compiler.py
@@ -0,0 +1,11 @@
+--- pyfr/backends/openmp/compiler.py.orig 2018-03-19 21:34:24 UTC
++++ pyfr/backends/openmp/compiler.py
+@@ -76,6 +76,8 @@ class SourceModule(object):
+ '-Ofast', # Optimise, incl. -ffast-math
+ '-march=native', # Use CPU-specific instructions
+ '-fopenmp', # Enable OpenMP support
++ '-I%%LOCALBASE%%/include', # Add the include directory
++ '-L%%LOCALBASE%%/lib', # Add the library directory
+ '-fPIC', # Generate position-independent code
+ '-o', libname, srcname, # Library and source file names
+ '-lm' # Link against libm
diff --git a/science/py-PyFR/pkg-descr b/science/py-PyFR/pkg-descr
new file mode 100644
index 000000000000..e851ff3eee74
--- /dev/null
+++ b/science/py-PyFR/pkg-descr
@@ -0,0 +1,20 @@
+PyFR is an open-source Python based framework for solving advection-diffusion
+type problems on streaming architectures using the Flux Reconstruction approach
+of Huynh. The framework is designed to solve a range of governing systems on
+mixed unstructured grids containing various element types. It is also designed
+to target a range of hardware platforms via use of an in-built domain specific
+language derived from the Mako templating engine. The current release has the
+following capabilities:
+* Governing Equations - Euler, Navier Stokes
+* Dimensionality - 2D, 3D
+* Element Types - Triangles, Quadrilaterals, Hexahedra, Prisms, Tetrahedra,
+ Pyramids
+* Platforms - CPU Clusters, Nvidia GPU Clusters, AMD GPU Clusters, Intel Xeon
+ Phi Clusters
+* Spatial Discretisation - High-Order Flux Reconstruction
+* Temporal Discretisation - Explicit and Implicit (via Dual Time-Stepping)
+* Precision - Single, Double
+* Mesh Files Imported - Gmsh (.msh), CGNS (.cgns)
+* Solution Files Exported - Unstructured VTK (.vtu, .pvtu)
+
+WWW: http://www.pyfr.org/