Skip to main content

Electromagnetic simulation tools

Project description

meanas

meanas is a python package for electromagnetic simulations

** UNSTABLE / WORK IN PROGRESS **

Formerly known as fdfd_tools.

This package is intended for building simulation inputs, analyzing simulation outputs, and running short simulations on unspecialized hardware. It is designed to provide tooling and a baseline for other, high-performance purpose- and hardware-specific solvers.

Contents

  • Finite difference frequency domain (FDFD)
    • Library of sparse matrices for representing the electromagnetic wave equation in 3D, as well as auxiliary matrices for conversion between fields
    • Waveguide mode operators
    • Waveguide mode eigensolver
    • Stretched-coordinate PML boundaries (SCPML)
    • Functional versions of most operators
    • Anisotropic media (limited to diagonal elements eps_xx, eps_yy, eps_zz, mu_xx, ...)
    • Arbitrary distributions of perfect electric and magnetic conductors (PEC / PMC)
  • Finite difference time domain (FDTD)
    • Basic Maxwell time-steps
    • Poynting vector and energy calculation
    • Convolutional PMLs

This package does not provide a fast matrix solver, though by default meanas.fdfd.solvers.generic(...) will call scipy.sparse.linalg.qmr(...) to perform a solve. For 2D FDFD problems this should be fine; likewise, the waveguide mode solver uses scipy's eigenvalue solver, with reasonable results.

For solving large (or 3D) FDFD problems, I recommend a GPU-based iterative solver, such as opencl_fdfd or those included in MAGMA. Your solver will need the ability to solve complex symmetric (non-Hermitian) linear systems, ideally with double precision.

Installation

Requirements:

  • python >=3.11
  • numpy
  • scipy

Install from PyPI with pip:

pip3 install 'meanas[dev]'

Development install

Install python3 and git:

# This is for Debian/Ubuntu/other-apt-based systems; you may need an alternative command
sudo apt install python3 build-essential python3-dev git

In-place development install:

# Download using git
git clone https://mpxd.net/code/jan/meanas.git

# If you'd like to create a virtualenv, do so:
python3 -m venv my_venv

# If you are using a virtualenv, activate it
source my_venv/bin/activate

# Install in-place (-e, editable) from ./meanas, including development dependencies ([dev])
pip3 install --user -e './meanas[dev]'

# Run tests
cd meanas
python3 -m pytest -rsxX | tee test_results.txt

See also:

Use

See examples/ for some simple examples; you may need additional packages such as gridlock to run the examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meanas-0.10.tar.gz (91.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meanas-0.10-py3-none-any.whl (112.4 kB view details)

Uploaded Python 3

File details

Details for the file meanas-0.10.tar.gz.

File metadata

  • Download URL: meanas-0.10.tar.gz
  • Upload date:
  • Size: 91.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for meanas-0.10.tar.gz
Algorithm Hash digest
SHA256 5719a79068746e475d8b151dea53c64e149a134558fad2ed471ac508090301e1
MD5 8181f20b7ff0c9438c16f8ef6602b96a
BLAKE2b-256 7b3a030fffa5a60921dcd750b5e1965a87043821731ee5151a3b2a6d35bf5c26

See more details on using hashes here.

File details

Details for the file meanas-0.10-py3-none-any.whl.

File metadata

  • Download URL: meanas-0.10-py3-none-any.whl
  • Upload date:
  • Size: 112.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for meanas-0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 d4e49f8e4aa46f34c0cb197bd752d26c950120eebaede5e44f7a44202c6010b5
MD5 22f21f81c124695be935f44ddbf4c39b
BLAKE2b-256 23b350e01af160ddee6a43895ff3943f336f5bb3698528fd92c3ca1ef81f4e00

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page