/palace

3D finite element solver for computational electromagnetics

Primary LanguageC++Apache License 2.0Apache-2.0

Palace: 3D Finite Element Solver for Computational Electromagnetics

CI (Linux) CI (macOS)

Palace, for PArallel LArge-scale Computational Electromagnetics, is an open-source, parallel finite element code for full-wave 3D electromagnetic simulations in the frequency or time domain, using the MFEM finite element discretization library.

Key features

  • Eigenmode calculations with optional material or radiative loss including lumped impedance boundaries. Automatic postprocessing of energy-participation ratios (EPRs) for circuit quantization and interface or bulk participation ratios for predicting dielectric loss.
  • Frequency domain driven simulations with surface current excitation and lumped or numeric wave port boundaries. Wideband frequency response calculation using uniform frequency space sampling or an adaptive fast frequency sweep algorithm.
  • Explicit or fully-implicit time domain solver for transient electromagnetic analysis.
  • Lumped capacitance and inductance matrix extraction via electrostatic and magnetostatic problem formulations.
  • Support for a wide range of mesh file formats for structured and unstructured meshes, with built-in uniform or region-based parallel mesh refinement.
  • Arbitrary high-order finite element spaces and curvilinear mesh support thanks to the MFEM library.
  • Scalable algorithms for the solution of linear systems of equations, including geometric multigrid (GMG), parallel sparse direct solvers, and algebraic multigrid (AMG) preconditioners, for fast performance on platforms ranging from laptops to HPC systems.

Getting started

Palace can be installed using the Spack HPC package manager, with the command spack install palace. Run spack info palace to get more information about the available configuration options and dependencies.

Instructions for obtaining Palace and building from source can be found in the documentation. Git submodules are used to manage the builds of most dependencies, so the repository should be cloned using the --recurse-submodules flag, or alternatively git submodule update --init can be run in order to download the dependency source code for an existing clone.

System requirements:

  • CMake version 3.13 or later
  • C++17 compatible C++ compiler
  • C and (optionally) Fortran compilers for dependency builds
  • MPI distribution
  • BLAS, LAPACK libraries

Documentation

https://awslabs.github.io/palace/

The documentation for Palace provides full instructions for building the solver and running electromagnetic simulations.

To build a local version of the documentation, run julia make.jl from within the docs/ directory.

Examples

Some example applications including configuration files and meshes can be found in the examples/ directory. Complete tutorials for each example are available in the documentation.

Changelog

Check out the changelog.

Contributing

We welcome contributions to Palace including bug fixes, feature requests, etc. To get started, check out our contributing guidelines.

Contact

Palace is developed by the Design and Simulation group in the AWS Center for Quantum Computing (CQC). Please contact the development team at palace-maint@amazon.com with any questions or comments, or open an issue.

License

This project is licensed under the Apache-2.0 License.