A python full-field electrodynamical solver, based on the Green dyadic method (volume integral technique in frequency domain).
Project description
***********************************
Overview / Installation
***********************************
pyGDM2 is available on `pypi <https://pypi.python.org/pypi/pygdm2/>`_ and `gitlab <https://gitlab.com/wiechapeter/pyGDM2>`_.
Detailed documentation with many examples is avaiable at the `pyGDM2 documentation website <https://wiechapeter.gitlab.io/pyGDM2-doc/>`_. See also the `documentation paper on arXiv (1802.04071) <https://arxiv.org/abs/1802.04071>`_
Requirements
================================
Python
------------------
- **python** (2.7 or 3.5+, `python <https://www.python.org/>`_)
- **numpy** (`numpy <http://www.numpy.org/>`_)
- **python headers** (under ubuntu, install the package *python-dev* or *python-devel*)
Fortran
------------------
- *fortran* compiler (tested with **gfortran**. `gcc <https://gcc.gnu.org/fortran/>`_)
- **openmp** (`openmp <http://www.openmp.org/>`_)
- **f2py** (comes with **numpy**. `link <http://www.numpy.org/>`_)
Optional Python packages
-------------------------------------
- **scipy** >= v0.17.0, lower versions supported with restrictions (*Strongly recommended*. Used for standard solver LU decomposition and several tools. `scipy <https://www.scipy.org/>`_)
- **matplotlib** (*Strongly recommended*. For all 2D visualization tools. `matplotlib <https://matplotlib.org/>`_)
- **mpi4py** (for MPI parallelized calculation of spectra. `mpi4py <http://mpi4py.readthedocs.io/en/stable/>`_)
- **mayavi** (for all 3D visualization. `mayavi <http://docs.enthought.com/mayavi/mayavi/mlab.html>`_)
- **PIL** (image processing. `PIL <https://pypi.python.org/pypi/PIL>`_)
- **pathos** (for multi-threaded generalized propagator operations. `pathos <https://pypi.org/project/pathos/>`_)
- **pytables** (v3.x recommended. For hdf5 saving/loading of simulations. `pytables <https://www.pytables.org/>`_)
- **PaGMO / PyGMO** (version 2.4+. *Required* for the **EO** submodule. `pagmo <https://esa.github.io/pagmo2/>`_)
(all available via `pip <https://pypi.python.org/pypi/pip>`_)
Installation under linux
=============================================
Via pip
-------------------------------
Install from pypi repository via
.. code-block:: bash
$ pip install pygdm2
Via setup script
-------------------------------
The easiest possibility to compile (and install) pyGDM is via the
setup-script, which uses the extended *distutils* from *numpy*.
To install pyGDM, run in the source directory:
.. code-block:: bash
$ python setup.py install
To install to a user-defined location, use the *prefix* option:
.. code-block:: bash
$ python setup.py install --prefix=/some/specific/location
To only compile without installation, use
.. code-block:: bash
$ python setup.py build
Manual compilation
-------------------------------------------------------------
1. clone git:
.. code-block:: bash
$ git clone https://gitlab.com/wiechapeter/pyGDM2.git
2. compile fortran parts:
.. code-block:: bash
$ cd fortranBase
$ make
3. *optional, for system-wide usage* add to **path** and **pythonpath**,
e.g. add following lines to file "/home/USER/.profile", where
"path_of_pyGDM_folder" is the pyGDM installation directory:
.. code-block:: bash
PATH="path_of_pyGDM_folder:$PATH"
export PATH
PYTHONPATH="path_of_pyGDM_folder:$PYTHONPATH"
export PYTHONPATH
Installation under Mac OS X
=============================================
Using the Anaconda distribution
-------------------------------------------------------------
The default compiler on OSX uses a clang which does not support OpenMP. Hence compilation might fail. We therefore suggest using `Anaconda <https://www.anaconda.com/download/#macos>`_ and install gcc from the conda repository in a virtualenv (Here the example of python2. python3 was not tested on OSX so far):
.. code-block:: bash
$ conda create -n python2 python=2.7 anaconda
"anaconda" at the end will copy the whole anaconda distribution to the virtial env. You can omit this option and create a "blank" virtual environment to install only selected packages.
Next activate the virtualenv and install the required software:
.. code-block:: bash
$ source activate python2
$ xcode-select --install
$ conda install pip
$ conda install gcc
$ pip install pygdm2
Also make sure you have the latest versions of numpy and scipy:
.. code-block:: bash
$ pip install numpy scipy --upgrade
Without Anaconda
-------------------------------------------------------------
Alternatively, you can download the latest version and compile it manually without OpenMP support, which should work with the default OSX compiler:
.. code-block:: bash
$ python setup.py install --no-openmp
Installation under windows
=============================================
For windows, we also recommend `Anaconda <https://www.anaconda.com/download/#windows>`_ in which pyGDM can be installed easily via pip. See also the MacOS X instructions, but you can skip all steps for installing the gcc compilers, since the windows version of pyGDM comes as pre-compiled binary package.
Via pip
-------------------------------
There is a binary for 64bit windows on the pypi repository (tested on Win7 and Win10). Install via
.. code-block:: bash
$ pip install pygdm2
Compile using the Anaconda distribution (tested with anaconda3)
------------------------------------------------------------------------------------------
1. get the repo (e.g. download from gitlab)
2. install gcc compiler
.. code-block:: bash
$ conda update conda
$ conda install m2w64-toolchain libpython
3. compile fortran parts:
.. code-block:: bash
$ python setupy.py build
4. install:
.. code-block:: bash
$ python setupy.py install
Authors
=========================
Python code
------------------------
- P\. R. Wiecha
Fortran code
-------------------------
- C\. Girard
- A\. Arbouet
- R\. Marty
- P\. R. Wiecha
Overview / Installation
***********************************
pyGDM2 is available on `pypi <https://pypi.python.org/pypi/pygdm2/>`_ and `gitlab <https://gitlab.com/wiechapeter/pyGDM2>`_.
Detailed documentation with many examples is avaiable at the `pyGDM2 documentation website <https://wiechapeter.gitlab.io/pyGDM2-doc/>`_. See also the `documentation paper on arXiv (1802.04071) <https://arxiv.org/abs/1802.04071>`_
Requirements
================================
Python
------------------
- **python** (2.7 or 3.5+, `python <https://www.python.org/>`_)
- **numpy** (`numpy <http://www.numpy.org/>`_)
- **python headers** (under ubuntu, install the package *python-dev* or *python-devel*)
Fortran
------------------
- *fortran* compiler (tested with **gfortran**. `gcc <https://gcc.gnu.org/fortran/>`_)
- **openmp** (`openmp <http://www.openmp.org/>`_)
- **f2py** (comes with **numpy**. `link <http://www.numpy.org/>`_)
Optional Python packages
-------------------------------------
- **scipy** >= v0.17.0, lower versions supported with restrictions (*Strongly recommended*. Used for standard solver LU decomposition and several tools. `scipy <https://www.scipy.org/>`_)
- **matplotlib** (*Strongly recommended*. For all 2D visualization tools. `matplotlib <https://matplotlib.org/>`_)
- **mpi4py** (for MPI parallelized calculation of spectra. `mpi4py <http://mpi4py.readthedocs.io/en/stable/>`_)
- **mayavi** (for all 3D visualization. `mayavi <http://docs.enthought.com/mayavi/mayavi/mlab.html>`_)
- **PIL** (image processing. `PIL <https://pypi.python.org/pypi/PIL>`_)
- **pathos** (for multi-threaded generalized propagator operations. `pathos <https://pypi.org/project/pathos/>`_)
- **pytables** (v3.x recommended. For hdf5 saving/loading of simulations. `pytables <https://www.pytables.org/>`_)
- **PaGMO / PyGMO** (version 2.4+. *Required* for the **EO** submodule. `pagmo <https://esa.github.io/pagmo2/>`_)
(all available via `pip <https://pypi.python.org/pypi/pip>`_)
Installation under linux
=============================================
Via pip
-------------------------------
Install from pypi repository via
.. code-block:: bash
$ pip install pygdm2
Via setup script
-------------------------------
The easiest possibility to compile (and install) pyGDM is via the
setup-script, which uses the extended *distutils* from *numpy*.
To install pyGDM, run in the source directory:
.. code-block:: bash
$ python setup.py install
To install to a user-defined location, use the *prefix* option:
.. code-block:: bash
$ python setup.py install --prefix=/some/specific/location
To only compile without installation, use
.. code-block:: bash
$ python setup.py build
Manual compilation
-------------------------------------------------------------
1. clone git:
.. code-block:: bash
$ git clone https://gitlab.com/wiechapeter/pyGDM2.git
2. compile fortran parts:
.. code-block:: bash
$ cd fortranBase
$ make
3. *optional, for system-wide usage* add to **path** and **pythonpath**,
e.g. add following lines to file "/home/USER/.profile", where
"path_of_pyGDM_folder" is the pyGDM installation directory:
.. code-block:: bash
PATH="path_of_pyGDM_folder:$PATH"
export PATH
PYTHONPATH="path_of_pyGDM_folder:$PYTHONPATH"
export PYTHONPATH
Installation under Mac OS X
=============================================
Using the Anaconda distribution
-------------------------------------------------------------
The default compiler on OSX uses a clang which does not support OpenMP. Hence compilation might fail. We therefore suggest using `Anaconda <https://www.anaconda.com/download/#macos>`_ and install gcc from the conda repository in a virtualenv (Here the example of python2. python3 was not tested on OSX so far):
.. code-block:: bash
$ conda create -n python2 python=2.7 anaconda
"anaconda" at the end will copy the whole anaconda distribution to the virtial env. You can omit this option and create a "blank" virtual environment to install only selected packages.
Next activate the virtualenv and install the required software:
.. code-block:: bash
$ source activate python2
$ xcode-select --install
$ conda install pip
$ conda install gcc
$ pip install pygdm2
Also make sure you have the latest versions of numpy and scipy:
.. code-block:: bash
$ pip install numpy scipy --upgrade
Without Anaconda
-------------------------------------------------------------
Alternatively, you can download the latest version and compile it manually without OpenMP support, which should work with the default OSX compiler:
.. code-block:: bash
$ python setup.py install --no-openmp
Installation under windows
=============================================
For windows, we also recommend `Anaconda <https://www.anaconda.com/download/#windows>`_ in which pyGDM can be installed easily via pip. See also the MacOS X instructions, but you can skip all steps for installing the gcc compilers, since the windows version of pyGDM comes as pre-compiled binary package.
Via pip
-------------------------------
There is a binary for 64bit windows on the pypi repository (tested on Win7 and Win10). Install via
.. code-block:: bash
$ pip install pygdm2
Compile using the Anaconda distribution (tested with anaconda3)
------------------------------------------------------------------------------------------
1. get the repo (e.g. download from gitlab)
2. install gcc compiler
.. code-block:: bash
$ conda update conda
$ conda install m2w64-toolchain libpython
3. compile fortran parts:
.. code-block:: bash
$ python setupy.py build
4. install:
.. code-block:: bash
$ python setupy.py install
Authors
=========================
Python code
------------------------
- P\. R. Wiecha
Fortran code
-------------------------
- C\. Girard
- A\. Arbouet
- R\. Marty
- P\. R. Wiecha
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyGDM2-1.0.6.tar.gz
(437.6 kB
view details)
Built Distributions
pyGDM2-1.0.6-py3.5-linux-x86_64.egg
(451.5 kB
view details)
pyGDM2-1.0.6-py2.7-linux-x86_64.egg
(444.4 kB
view details)
File details
Details for the file pyGDM2-1.0.6.tar.gz
.
File metadata
- Download URL: pyGDM2-1.0.6.tar.gz
- Upload date:
- Size: 437.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/2.7.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
0cf7450d7e4a3f594a4ec97f9b288f1387236ce52499953921442226439f2b87
|
|
MD5 |
fa1ad75b810e097fddd35aa44210d4cc
|
|
BLAKE2b-256 |
3a0521628940613d9b3bc01b2e4bd4d5f1d1b50390c866bd205751ddb32b2fcc
|
File details
Details for the file pyGDM2-1.0.6-py3.5-linux-x86_64.egg
.
File metadata
- Download URL: pyGDM2-1.0.6-py3.5-linux-x86_64.egg
- Upload date:
- Size: 451.5 kB
- Tags: Egg
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/2.7.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
756b2e8d2825fdcdd100f835de1f0808db0b4f593425fa90c8ef9774300df49d
|
|
MD5 |
04feb3a34f9a8968c2d59b9b82c7456c
|
|
BLAKE2b-256 |
7b83888d594d5189768cfdf2037ee9e6bf24a8f24b6f7e6e33ac4ef97f8bfb71
|
File details
Details for the file pyGDM2-1.0.6-py2.7-linux-x86_64.egg
.
File metadata
- Download URL: pyGDM2-1.0.6-py2.7-linux-x86_64.egg
- Upload date:
- Size: 444.4 kB
- Tags: Egg
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/2.7.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
faf298f7d9a9adb24fe3083683dbc26f7fd87a82e322cecdfdd0ff30a0164421
|
|
MD5 |
6e70f12bdab9ffc995c171ad7a47d258
|
|
BLAKE2b-256 |
1dfe9c4c386a0d35dc9bcc50d231d42e0700a8354c2b264945fcedd30d1b6ffa
|
File details
Details for the file pyGDM2-1.0.6-cp37-cp37m-win_amd64.whl
.
File metadata
- Download URL: pyGDM2-1.0.6-cp37-cp37m-win_amd64.whl
- Upload date:
- Size: 356.9 kB
- Tags: CPython 3.7m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
0ea8900bd2a6ec7f6d78ce7bad6fe554d30f81817773323b8e1f440f85aee2aa
|
|
MD5 |
fabc4ab89f59766b6846e2692a93a959
|
|
BLAKE2b-256 |
519d5e5b50a0b97f5e7d7d6701f205f69b10a264ce6fd190dbc6d9d1a2b26849
|
File details
Details for the file pyGDM2-1.0.6-cp36-cp36m-win_amd64.whl
.
File metadata
- Download URL: pyGDM2-1.0.6-cp36-cp36m-win_amd64.whl
- Upload date:
- Size: 368.3 kB
- Tags: CPython 3.6m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
06545549a31809edbb4475eac97167a728ea125fec214c141e1e530f321b15c8
|
|
MD5 |
fbbc9b0402455a65ab81de21d3b76bed
|
|
BLAKE2b-256 |
27938d23436b9006e2acee47dad2ba8d46b7bb9b7621545760c38d7bb892c407
|
File details
Details for the file pyGDM2-1.0.6-cp35-cp35m-win_amd64.whl
.
File metadata
- Download URL: pyGDM2-1.0.6-cp35-cp35m-win_amd64.whl
- Upload date:
- Size: 356.3 kB
- Tags: CPython 3.5m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.5.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
bacb46f62f52900f10e8207f13a4c33abc71d169305782cea8407ffc1ace0b80
|
|
MD5 |
06c5d80843dc18f34e9a8ad6e3fcf154
|
|
BLAKE2b-256 |
56776d8d161487896bb284e7a534969a77ceb79d8e6db674da4eae38b54ea875
|
File details
Details for the file pyGDM2-1.0.6-cp27-cp27m-win_amd64.whl
.
File metadata
- Download URL: pyGDM2-1.0.6-cp27-cp27m-win_amd64.whl
- Upload date:
- Size: 365.4 kB
- Tags: CPython 2.7m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
2ea7d880b757a20d3bb39d4b6566b1978e3834959b6f05a350570f64cf7622e7
|
|
MD5 |
1e2dc0b64d88b48e99990122df644885
|
|
BLAKE2b-256 |
6361868355b1951b8e2f935dff50be4f4e84263d72c195c3dd16a1df5aaa27bc
|