1#!/usr/local/bin/python3.8 2# -*- coding: utf-8 -*- 3 4import re 5from setuptools import setup 6 7 8# PyFR version 9vfile = open('pyfr/_version.py').read() 10vsrch = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", vfile, re.M) 11 12if vsrch: 13 version = vsrch.group(1) 14else: 15 print('Unable to find a version string in pyfr/_version.py') 16 17# Modules 18modules = [ 19 'pyfr.backends', 20 'pyfr.backends.base', 21 'pyfr.backends.cuda', 22 'pyfr.backends.cuda.kernels', 23 'pyfr.backends.hip', 24 'pyfr.backends.hip.kernels', 25 'pyfr.backends.opencl', 26 'pyfr.backends.opencl.kernels', 27 'pyfr.backends.openmp', 28 'pyfr.backends.openmp.kernels', 29 'pyfr.integrators', 30 'pyfr.integrators.dual', 31 'pyfr.integrators.dual.phys', 32 'pyfr.integrators.dual.pseudo', 33 'pyfr.integrators.dual.pseudo.kernels', 34 'pyfr.integrators.std', 35 'pyfr.integrators.std.kernels', 36 'pyfr.plugins', 37 'pyfr.quadrules', 38 'pyfr.readers', 39 'pyfr.partitioners', 40 'pyfr.solvers', 41 'pyfr.solvers.aceuler', 42 'pyfr.solvers.aceuler.kernels', 43 'pyfr.solvers.aceuler.kernels.bcs', 44 'pyfr.solvers.aceuler.kernels.rsolvers', 45 'pyfr.solvers.acnavstokes', 46 'pyfr.solvers.acnavstokes.kernels', 47 'pyfr.solvers.acnavstokes.kernels.bcs', 48 'pyfr.solvers.base', 49 'pyfr.solvers.baseadvec', 50 'pyfr.solvers.baseadvec.kernels', 51 'pyfr.solvers.baseadvecdiff', 52 'pyfr.solvers.baseadvecdiff.kernels', 53 'pyfr.solvers.euler', 54 'pyfr.solvers.euler.kernels', 55 'pyfr.solvers.euler.kernels.bcs', 56 'pyfr.solvers.euler.kernels.rsolvers', 57 'pyfr.solvers.navstokes', 58 'pyfr.solvers.navstokes.kernels', 59 'pyfr.solvers.navstokes.kernels.bcs', 60 'pyfr.writers' 61] 62 63# Tests 64tests = [ 65 'pyfr.tests' 66] 67 68# Data 69package_data = { 70 'pyfr.backends.cuda.kernels': ['*.mako'], 71 'pyfr.backends.hip.kernels': ['*.mako'], 72 'pyfr.backends.opencl.kernels': ['*.mako'], 73 'pyfr.backends.openmp.kernels': ['*.mako'], 74 'pyfr.integrators.dual.pseudo.kernels': ['*.mako'], 75 'pyfr.integrators.std.kernels': ['*.mako'], 76 'pyfr.integrators': ['schemes/*.txt'], 77 'pyfr.quadrules': [ 78 'hex/*.txt', 79 'line/*.txt', 80 'pri/*.txt', 81 'pyr/*.txt', 82 'quad/*.txt', 83 'tet/*.txt', 84 'tri/*.txt' 85 ], 86 'pyfr.solvers.aceuler.kernels': ['*.mako'], 87 'pyfr.solvers.aceuler.kernels.bcs': ['*.mako'], 88 'pyfr.solvers.aceuler.kernels.rsolvers': ['*.mako'], 89 'pyfr.solvers.acnavstokes.kernels': ['*.mako'], 90 'pyfr.solvers.acnavstokes.kernels.bcs': ['*.mako'], 91 'pyfr.solvers.baseadvec.kernels': ['*.mako'], 92 'pyfr.solvers.baseadvecdiff.kernels': ['*.mako'], 93 'pyfr.solvers.euler.kernels': ['*.mako'], 94 'pyfr.solvers.euler.kernels.bcs': ['*.mako'], 95 'pyfr.solvers.euler.kernels.rsolvers': ['*.mako'], 96 'pyfr.solvers.navstokes.kernels': ['*.mako'], 97 'pyfr.solvers.navstokes.kernels.bcs': ['*.mako'], 98 'pyfr.tests': ['*.npz'] 99} 100 101# Additional data 102data_files = [ 103 ('', ['pyfr/__main__.py']) 104] 105 106# Hard dependencies 107install_requires = [ 108 'appdirs >= 1.4.0', 109 'gimmik >= 2.0', 110 'h5py >= 2.10', 111 'mako >= 1.0.0', 112 'mpi4py >= 3.0', 113 'numpy >= 1.20', 114 'pytools >= 2016.2.1' 115] 116 117# Soft dependencies 118extras_require = { 119 'opencl': ['pyopencl >= 2015.2.4'] 120} 121 122# Scripts 123console_scripts = [ 124 'pyfr = pyfr.__main__:main' 125] 126 127# Info 128classifiers = [ 129 'License :: OSI Approved :: BSD License', 130 'Programming Language :: Python', 131 'Programming Language :: Python :: 3.9', 132 'Programming Language :: Python :: 3.10', 133 'Topic :: Scientific/Engineering' 134] 135 136long_description = '''PyFR is an open-source Python based framework for 137solving advection-diffusion type problems on streaming architectures 138using the Flux Reconstruction approach of Huynh. The framework is 139designed to solve a range of governing systems on mixed unstructured 140grids containing various element types. It is also designed to target a 141range of hardware platforms via use of an in-built domain specific 142language derived from the Mako templating engine.''' 143 144setup(name='pyfr', 145 version=version, 146 description='Flux Reconstruction in Python', 147 long_description=long_description, 148 author='Imperial College London', 149 author_email='info@pyfr.org', 150 url='http://www.pyfr.org/', 151 license='BSD', 152 keywords='Math', 153 packages=['pyfr'] + modules + tests, 154 package_data=package_data, 155 data_files=data_files, 156 entry_points={'console_scripts': console_scripts}, 157 python_requires='>=3.8', 158 install_requires=install_requires, 159 extras_require=extras_require, 160 classifiers=classifiers 161) 162