From 58ea6ece3c69c7609c230a442245598ae74ab646 Mon Sep 17 00:00:00 2001 From: Ardavan Oskooi Date: Wed, 11 Aug 2021 10:18:28 -0700 Subject: [PATCH] Prepare for 1.20 release (#1723) * Prepare for 1.20 release * remove nightly built Conda package from the installation page * update description for subpixel smoothing of MaterialGrid * bump 1.20.0 date, update links * whoops * version bump Co-authored-by: Steven G. Johnson --- NEWS.md | 197 +++--------------- README.md | 2 +- configure.ac | 4 +- doc/docs/Acknowledgements.md | 4 +- doc/docs/FAQ.md | 8 +- doc/docs/Installation.md | 13 +- doc/docs/Introduction.md | 2 +- doc/docs/Parallel_Meep.md | 2 +- doc/docs/Python_Tutorials/Basics.md | 2 +- doc/docs/Python_User_Interface.md | 285 ++------------------------- doc/docs/Python_User_Interface.md.in | 12 -- doc/docs/Scheme_Tutorials/Basics.md | 2 +- doc/docs/index.md | 2 +- python/geom.py | 3 +- python/simulation.py | 67 +++---- 15 files changed, 82 insertions(+), 523 deletions(-) diff --git a/NEWS.md b/NEWS.md index b3618edfe..acbab967d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,21 @@ # Meep Release Notes +## Meep 1.20.0 + +8/11/2021 + +* Support for decimation of the DFT time-series updates ([#1684], [#1720], [#1722]). + +* Support for optional single-precision floating point for the DFT fields arrays ([#1675]). + +* Support for cache-oblivious loop tiling of the step-curl field updates ([#1655]). + +* Performance improvements in chunk-to-chunk communication ([#1656], [#1721]). + +* Code coverage for Python API via GitHub Actions ([#1651]). + +* Various bugfixes ([#1692], [#1704]), minor improvements, and additional documentation. + ## Meep 1.19.0 7/6/2021 @@ -424,7 +440,7 @@ * Bug fixes in LDOS computation. - * Work around gcc bug [#54498], which caused a spurious PML test + * Work around gcc bug #54498, which caused a spurious PML test failure with gcc 4.7 and 4.7.1; thanks to Brahmanand Jogai and Thorsten Alteholz for the bug reports. @@ -551,7 +567,7 @@ Meep 1.0.1 * Fix failure in flux test under gcc 4.3.1 in some cases; thanks to Alex Prengel for the bug report. - * Fix compilation problem with gcc 4.4, correcting Debian bug [#505002]. + * Fix compilation problem with gcc 4.4, correcting Debian bug #505002. ## Meep 1.0 @@ -779,171 +795,6 @@ Meep 1.0.1 * Initial public release. -[#1464]: https://github.com/NanoComp/meep/issues/1464 -[#1487]: https://github.com/NanoComp/meep/issues/1487 -[#1499]: https://github.com/NanoComp/meep/issues/1499 -[#1512]: https://github.com/NanoComp/meep/issues/1512 -[#1515]: https://github.com/NanoComp/meep/issues/1515 -[#1519]: https://github.com/NanoComp/meep/issues/1519 -[#1521]: https://github.com/NanoComp/meep/issues/1521 -[#1522]: https://github.com/NanoComp/meep/issues/1522 -[#1527]: https://github.com/NanoComp/meep/issues/1527 -[#1528]: https://github.com/NanoComp/meep/issues/1528 -[#13]: https://github.com/NanoComp/meep/issues/13 -[#14]: https://github.com/NanoComp/meep/issues/14 -[#20]: https://github.com/NanoComp/meep/issues/20 -[#21]: https://github.com/NanoComp/meep/issues/21 -[#40]: https://github.com/NanoComp/meep/issues/40 -[#55]: https://github.com/NanoComp/meep/issues/55 -[#56]: https://github.com/NanoComp/meep/issues/56 -[#96]: https://github.com/NanoComp/meep/issues/96 -[#105]: https://github.com/NanoComp/meep/issues/105 -[#150]: https://github.com/NanoComp/meep/issues/150 -[#184]: https://github.com/NanoComp/meep/issues/184 -[#189]: https://github.com/NanoComp/meep/issues/189 -[#191]: https://github.com/NanoComp/meep/issues/191 -[#192]: https://github.com/NanoComp/meep/issues/192 -[#193]: https://github.com/NanoComp/meep/issues/193 -[#203]: https://github.com/NanoComp/meep/issues/203 -[#248]: https://github.com/NanoComp/meep/issues/248 -[#259]: https://github.com/NanoComp/meep/issues/259 -[#261]: https://github.com/NanoComp/meep/issues/261 -[#266]: https://github.com/NanoComp/meep/issues/266 -[#305]: https://github.com/NanoComp/meep/issues/305 -[#341]: https://github.com/NanoComp/meep/issues/341 -[#345]: https://github.com/NanoComp/meep/issues/345 -[#357]: https://github.com/NanoComp/meep/issues/357 -[#376]: https://github.com/NanoComp/meep/issues/376 -[#388]: https://github.com/NanoComp/meep/issues/388 -[#392]: https://github.com/NanoComp/meep/issues/392 -[#396]: https://github.com/NanoComp/meep/issues/396 -[#416]: https://github.com/NanoComp/meep/issues/416 -[#417]: https://github.com/NanoComp/meep/issues/417 -[#419]: https://github.com/NanoComp/meep/issues/419 -[#422]: https://github.com/NanoComp/meep/issues/422 -[#427]: https://github.com/NanoComp/meep/issues/427 -[#454]: https://github.com/NanoComp/meep/issues/454 -[#456]: https://github.com/NanoComp/meep/issues/456 -[#477]: https://github.com/NanoComp/meep/issues/477 -[#479]: https://github.com/NanoComp/meep/issues/479 -[#483]: https://github.com/NanoComp/meep/issues/483 -[#500]: https://github.com/NanoComp/meep/issues/500 -[#518]: https://github.com/NanoComp/meep/issues/518 -[#531]: https://github.com/NanoComp/meep/issues/531 -[#558]: https://github.com/NanoComp/meep/issues/558 -[#559]: https://github.com/NanoComp/meep/issues/559 -[#570]: https://github.com/NanoComp/meep/issues/570 -[#577]: https://github.com/NanoComp/meep/issues/577 -[#578]: https://github.com/NanoComp/meep/issues/578 -[#581]: https://github.com/NanoComp/meep/issues/581 -[#593]: https://github.com/NanoComp/meep/issues/593 -[#596]: https://github.com/NanoComp/meep/issues/596 -[#599]: https://github.com/NanoComp/meep/issues/599 -[#602]: https://github.com/NanoComp/meep/issues/602 -[#603]: https://github.com/NanoComp/meep/issues/603 -[#626]: https://github.com/NanoComp/meep/issues/626 -[#630]: https://github.com/NanoComp/meep/issues/630 -[#631]: https://github.com/NanoComp/meep/issues/631 -[#644]: https://github.com/NanoComp/meep/issues/644 -[#652]: https://github.com/NanoComp/meep/issues/652 -[#655]: https://github.com/NanoComp/meep/issues/655 -[#666]: https://github.com/NanoComp/meep/issues/666 -[#671]: https://github.com/NanoComp/meep/issues/671 -[#675]: https://github.com/NanoComp/meep/issues/675 -[#681]: https://github.com/NanoComp/meep/issues/681 -[#689]: https://github.com/NanoComp/meep/issues/689 -[#699]: https://github.com/NanoComp/meep/issues/699 -[#705]: https://github.com/NanoComp/meep/issues/705 -[#728]: https://github.com/NanoComp/meep/issues/728 -[#744]: https://github.com/NanoComp/meep/issues/744 -[#747]: https://github.com/NanoComp/meep/issues/747 -[#752]: https://github.com/NanoComp/meep/issues/752 -[#769]: https://github.com/NanoComp/meep/issues/769 -[#771]: https://github.com/NanoComp/meep/issues/771 -[#779]: https://github.com/NanoComp/meep/issues/779 -[#785]: https://github.com/NanoComp/meep/issues/785 -[#787]: https://github.com/NanoComp/meep/issues/787 -[#789]: https://github.com/NanoComp/meep/issues/789 -[#791]: https://github.com/NanoComp/meep/issues/791 -[#795]: https://github.com/NanoComp/meep/issues/795 -[#807]: https://github.com/NanoComp/meep/issues/807 -[#817]: https://github.com/NanoComp/meep/issues/817 -[#860]: https://github.com/NanoComp/meep/issues/860 -[#862]: https://github.com/NanoComp/meep/issues/862 -[#863]: https://github.com/NanoComp/meep/issues/863 -[#868]: https://github.com/NanoComp/meep/issues/868 -[#869]: https://github.com/NanoComp/meep/issues/869 -[#872]: https://github.com/NanoComp/meep/issues/872 -[#876]: https://github.com/NanoComp/meep/issues/876 -[#891]: https://github.com/NanoComp/meep/issues/891 -[#894]: https://github.com/NanoComp/meep/issues/894 -[#919]: https://github.com/NanoComp/meep/issues/919 -[#922]: https://github.com/NanoComp/meep/issues/922 -[#927]: https://github.com/NanoComp/meep/issues/927 -[#940]: https://github.com/NanoComp/meep/issues/940 -[#945]: https://github.com/NanoComp/meep/issues/945 -[#952]: https://github.com/NanoComp/meep/issues/952 -[#953]: https://github.com/NanoComp/meep/issues/953 -[#960]: https://github.com/NanoComp/meep/issues/960 -[#994]: https://github.com/NanoComp/meep/issues/994 -[#1002]: https://github.com/NanoComp/meep/issues/1002 -[#1041]: https://github.com/NanoComp/meep/issues/1041 -[#1042]: https://github.com/NanoComp/meep/issues/1042 -[#1047]: https://github.com/NanoComp/meep/issues/1047 -[#1062]: https://github.com/NanoComp/meep/issues/1062 -[#1078]: https://github.com/NanoComp/meep/issues/1078 -[#1090]: https://github.com/NanoComp/meep/issues/1090 -[#1095]: https://github.com/NanoComp/meep/issues/1095 -[#1112]: https://github.com/NanoComp/meep/issues/1112 -[#1121]: https://github.com/NanoComp/meep/issues/1121 -[#1122]: https://github.com/NanoComp/meep/issues/1122 -[#1126]: https://github.com/NanoComp/meep/issues/1126 -[#1129]: https://github.com/NanoComp/meep/issues/1129 -[#1132]: https://github.com/NanoComp/meep/issues/1132 -[#1154]: https://github.com/NanoComp/meep/issues/1154 -[#1156]: https://github.com/NanoComp/meep/issues/1156 -[#1158]: https://github.com/NanoComp/meep/issues/1158 -[#1159]: https://github.com/NanoComp/meep/issues/1159 -[#1167]: https://github.com/NanoComp/meep/issues/1167 -[#1171]: https://github.com/NanoComp/meep/issues/1171 -[#1192]: https://github.com/NanoComp/meep/issues/1192 -[#1205]: https://github.com/NanoComp/meep/issues/1205 -[#1218]: https://github.com/NanoComp/meep/issues/1218 -[#1233]: https://github.com/NanoComp/meep/issues/1233 -[#1240]: https://github.com/NanoComp/meep/issues/1240 -[#1242]: https://github.com/NanoComp/meep/issues/1242 -[#1244]: https://github.com/NanoComp/meep/issues/1244 -[#1257]: https://github.com/NanoComp/meep/issues/1257 -[#1285]: https://github.com/NanoComp/meep/issues/1285 -[#1286]: https://github.com/NanoComp/meep/issues/1286 -[#1288]: https://github.com/NanoComp/meep/issues/1288 -[#1302]: https://github.com/NanoComp/meep/issues/1302 -[#1303]: https://github.com/NanoComp/meep/issues/1303 -[#1310]: https://github.com/NanoComp/meep/issues/1310 -[#1316]: https://github.com/NanoComp/meep/issues/1316 -[#1333]: https://github.com/NanoComp/meep/issues/1333 -[#1349]: https://github.com/NanoComp/meep/issues/1349 -[#1374]: https://github.com/NanoComp/meep/issues/1374 -[#1388]: https://github.com/NanoComp/meep/issues/1388 -[#1403]: https://github.com/NanoComp/meep/issues/1403 -[#1417]: https://github.com/NanoComp/meep/issues/1417 -[#1427]: https://github.com/NanoComp/meep/issues/1427 -[#1437]: https://github.com/NanoComp/meep/issues/1437 -[#1447]: https://github.com/NanoComp/meep/issues/1447 -[#1456]: https://github.com/NanoComp/meep/issues/1456 -[#1458]: https://github.com/NanoComp/meep/issues/1458 -[#1464]: https://github.com/NanoComp/meep/issues/1464 -[#1487]: https://github.com/NanoComp/meep/issues/1487 -[#1499]: https://github.com/NanoComp/meep/issues/1499 -[#1512]: https://github.com/NanoComp/meep/issues/1512 -[#1515]: https://github.com/NanoComp/meep/issues/1515 -[#1519]: https://github.com/NanoComp/meep/issues/1519 -[#1521]: https://github.com/NanoComp/meep/issues/1521 -[#1522]: https://github.com/NanoComp/meep/issues/1522 -[#1527]: https://github.com/NanoComp/meep/issues/1527 -[#1528]: https://github.com/NanoComp/meep/issues/1528 -[#54498]: https://github.com/NanoComp/meep/issues/54498 -[#505002]: https://github.com/NanoComp/meep/issues/505002 [#13]: https://github.com/NanoComp/meep/issues/13 [#14]: https://github.com/NanoComp/meep/issues/14 [#20]: https://github.com/NanoComp/meep/issues/20 @@ -1117,6 +968,14 @@ Meep 1.0.1 [#1623]: https://github.com/NanoComp/meep/issues/1623 [#1634]: https://github.com/NanoComp/meep/issues/1634 [#1635]: https://github.com/NanoComp/meep/issues/1635 +[#1651]: https://github.com/NanoComp/meep/issues/1651 [#1652]: https://github.com/NanoComp/meep/issues/1652 -[#54498]: https://github.com/NanoComp/meep/issues/54498 -[#505002]: https://github.com/NanoComp/meep/issues/505002 +[#1655]: https://github.com/NanoComp/meep/issues/1655 +[#1656]: https://github.com/NanoComp/meep/issues/1656 +[#1675]: https://github.com/NanoComp/meep/issues/1675 +[#1684]: https://github.com/NanoComp/meep/issues/1684 +[#1692]: https://github.com/NanoComp/meep/issues/1692 +[#1704]: https://github.com/NanoComp/meep/issues/1704 +[#1720]: https://github.com/NanoComp/meep/issues/1720 +[#1721]: https://github.com/NanoComp/meep/issues/1721 +[#1722]: https://github.com/NanoComp/meep/issues/1722 diff --git a/README.md b/README.md index 9f0c5c7f8..f46ea595d 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ - Simulation in **1d, 2d, 3d**, and **cylindrical** coordinates. - Distributed memory [parallelism](https://meep.readthedocs.io/en/latest/Parallel_Meep) on any system supporting [MPI](https://en.wikipedia.org/wiki/MPI). - Portable to any Unix-like operating system such as [Linux](https://en.wikipedia.org/wiki/Linux), [macOS](https://en.wikipedia.org/wiki/macOS), and [FreeBSD](https://en.wikipedia.org/wiki/FreeBSD). -- **Precompiled binary packages** of official releases and nightly builds of the master branch via [Conda](https://meep.readthedocs.io/en/latest/Installation/#conda-packages). +- **Precompiled binary packages** of official releases via [Conda](https://meep.readthedocs.io/en/latest/Installation/#conda-packages). - Variety of arbitrary [material](https://meep.readthedocs.io/en/latest/Materials) types: **anisotropic** electric permittivity ε and magnetic permeability μ, along with **dispersive** ε(ω) and μ(ω) including loss/gain, **nonlinear** (Kerr & Pockels) dielectric and magnetic materials, electric/magnetic **conductivities** σ, **saturable** gain/absorption, and **gyrotropic** media (magneto-optical effects). - [Materials library](https://meep.readthedocs.io/en/latest/Materials/#materials-library) containing predefined broadband, complex refractive indices. - [Perfectly matched layer](https://meep.readthedocs.io/en/latest/Perfectly_Matched_Layer) (**PML**) absorbing boundaries as well as **Bloch-periodic** and perfect-conductor boundary conditions. diff --git a/configure.ac b/configure.ac index 9c8040e4c..e92988803 100644 --- a/configure.ac +++ b/configure.ac @@ -1,13 +1,13 @@ # Process this file with autoconf to produce a configure script. -AC_INIT([meep],[m4_esyscmd(./version.sh 1.20.0-beta)]) +AC_INIT([meep],[m4_esyscmd(./version.sh 1.20.0)]) AC_CONFIG_SRCDIR(src/step.cpp) # Shared-library version number; indicates api compatibility, and is # not the same as the "public" version number. (Don't worry about this # except for public releases.) Note that any change to a C++ class # definition (in the .hpp file) generally breaks binary compatibility. -SHARED_VERSION_INFO="24:0:0" # CURRENT:REVISION:AGE +SHARED_VERSION_INFO="25:0:0" # CURRENT:REVISION:AGE AM_INIT_AUTOMAKE([foreign color-tests parallel-tests silent-rules 1.11]) AM_SILENT_RULES(yes) diff --git a/doc/docs/Acknowledgements.md b/doc/docs/Acknowledgements.md index 94b5171d3..b784b73a3 100644 --- a/doc/docs/Acknowledgements.md +++ b/doc/docs/Acknowledgements.md @@ -5,7 +5,7 @@ Authors ------- -Meep originated as part of graduate research at [MIT](https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology) with initial contributions by [Steven G. Johnson](http://math.mit.edu/~stevenj/), [Ardavan Oskooi](http://ab-initio.mit.edu/~oskooi/), [David Roundy](http://physics.oregonstate.edu/~roundyd/), [Mihai Ibanescu](https://www.linkedin.com/in/mihai-ibanescu-2b147825/), and [Peter Bermel](http://web.ics.purdue.edu/~pbermel/). Currently, the Meep project is maintained by [Simpetus](http://www.simpetus.com) and the developer community on [GitHub](https://github.com/NanoComp/meep). [Christopher Hogan](https://github.com/ChristopherHogan) and [M.T. Homer Reid](http://homerreid.dyndns.org/) lead the development of the [Python interface](Python_User_Interface.md), [mode-decomposition feature](Python_Tutorials/Mode_Decomposition.md), and [GDSII import routines](Python_Tutorials/GDSII_Import.md). M.T. Homer Reid and [Alec Hammond](https://github.com/smartalecH/) developed the [adjoint solver](Python_Tutorials/Adjoint_Solver.md). [Alex Cerjan](http://www.alexcerjan.com/) assisted with adding support for saturable absorption via [multilevel atomic gain media](Materials.md#saturable-gain-and-absorption). Alec Hammond developed the [visualization module](Python_User_Interface.md#data-visualization). [Yidong Chong](http://www1.spms.ntu.edu.sg/~ydchong/bio.html) and Alex Cerjan added support for [gyrotropic media](Materials.md#gyrotropic-media). +Meep originated as part of graduate research at [MIT](https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology) in the mid 2000s with initial contributions by [Steven G. Johnson](http://math.mit.edu/~stevenj/), [Ardavan Oskooi](http://ab-initio.mit.edu/~oskooi/), [David Roundy](http://physics.oregonstate.edu/~roundyd/), [Mihai Ibanescu](https://www.linkedin.com/in/mihai-ibanescu-2b147825/), and [Peter Bermel](http://web.ics.purdue.edu/~pbermel/). The project has been under continuous development for nearly 20 years. Currently, the Meep project is maintained by an active developer community on [GitHub](https://github.com/NanoComp/meep). [Christopher Hogan](https://github.com/ChristopherHogan) and [M.T. Homer Reid](http://homerreid.dyndns.org/) lead the development of the [Python interface](Python_User_Interface.md), [mode-decomposition feature](Python_Tutorials/Mode_Decomposition.md), and [GDSII import routines](Python_Tutorials/GDSII_Import.md). M.T. Homer Reid and [Alec Hammond](https://github.com/smartalecH/) developed the [adjoint solver](Python_Tutorials/Adjoint_Solver.md). [Alex Cerjan](http://www.alexcerjan.com/) assisted with adding support for saturable absorption via [multilevel atomic gain media](Materials.md#saturable-gain-and-absorption). Alec Hammond developed the [visualization module](Python_User_Interface.md#data-visualization). [Yidong Chong](http://www1.spms.ntu.edu.sg/~ydchong/bio.html) and Alex Cerjan added support for [gyrotropic media](Materials.md#gyrotropic-media). [Andreas Hoenselaar](https://github.com/ahoenselaar) contributed to several performance enhancements. Referencing ----------- @@ -27,4 +27,4 @@ General references on the FDTD method include, for example: Financial Support ----------------- -Meep's continued development has been supported by Small Business Innovation Research (SBIR) Phase 1 and 2 awards from the National Science Foundation (NSF) under award numbers [1647206](https://www.nsf.gov/awardsearch/showAward?AWD_ID=1647206) and [1758596](https://www.nsf.gov/awardsearch/showAward?AWD_ID=1758596). Initial development was supported in part by the Materials Research Science and Engineering Center program of the NSF under award numbers DMR-9400334 and DMR-0819762, by the Army Research Office through the Institute for Soldier Nanotechnologies under DAAD-19-02-D0002, and DARPA under N00014-05-1-0700 administered by the Office of Naval Research. +Meep's development has been supported by Small Business Innovation Research (SBIR) Phase 1 and 2 awards from the National Science Foundation (NSF) under award numbers [1647206](https://www.nsf.gov/awardsearch/showAward?AWD_ID=1647206) and [1758596](https://www.nsf.gov/awardsearch/showAward?AWD_ID=1758596). Initial development was supported in part by the Materials Research Science and Engineering Center program of the NSF under award numbers DMR-9400334 and DMR-0819762, by the Army Research Office through the Institute for Soldier Nanotechnologies under DAAD-19-02-D0002, and DARPA under N00014-05-1-0700 administered by the Office of Naval Research. diff --git a/doc/docs/FAQ.md b/doc/docs/FAQ.md index b5403ddb5..1b6aa356e 100644 --- a/doc/docs/FAQ.md +++ b/doc/docs/FAQ.md @@ -15,7 +15,7 @@ Meep is a [free and open-source](https://en.wikipedia.org/wiki/Free_and_open-sou ### Who are the developers of Meep? -Meep was originally developed as part of graduate research at MIT. The project has been under continuous development for nearly 20 years. It is currently maintained by [Simpetus](http://www.simpetus.com) and the developer community on [GitHub](https://github.com/NanoComp/meep). +Meep was originally developed as part of graduate research at MIT. The project has been under continuous development for nearly 20 years. It is currently maintained by an active developer community on [GitHub](https://github.com/NanoComp/meep). ### Where can I ask questions regarding Meep? @@ -31,7 +31,7 @@ Yes. The technical details of Meep's inner workings are described in the peer-re ### Where can I find a list of projects which have used Meep? -For a list of more than 2500 published works which have used Meep, see the [Google Scholar citation page](https://scholar.google.com/scholar?hl=en&q=meep+software) as well as that for the [Meep manuscript](https://scholar.google.com/scholar?cites=17712807607104508775) and the [subpixel smoothing reference](https://scholar.google.com/scholar?cites=410731148689673259). For examples based on technology applications, see the [Simpetus projects page](http://www.simpetus.com/projects.html). +For a list of more than 2500 published works which have used Meep, see the [Google Scholar citation page](https://scholar.google.com/scholar?hl=en&q=meep+software) as well as that for the [Meep manuscript](https://scholar.google.com/scholar?cites=17712807607104508775) and the [subpixel smoothing reference](https://scholar.google.com/scholar?cites=410731148689673259). For examples based on technology applications, see this [projects page](http://www.simpetus.com/projects.html). ### Can I access Meep in the public cloud? @@ -42,7 +42,7 @@ Installation ### Where can I install Meep? -Meep runs on any Unix-like operating system, such as Linux, macOS, and FreeBSD, from notebooks to desktops to supercomputers. [Conda packages](Installation.md#conda-packages) of the latest released version are available for Linux and macOS. There are also Conda packages of [nightly development builds](Installation.md#nightly-builds) which can be used to experiment with new features. Installing Meep from the source code requires some understanding of Unix, especially to install the various dependencies. Installation shell scripts are available for [Ubuntu 16.04 and 18.04](Build_From_Source.md#building-from-source) and [macOS Sierra](https://www.mail-archive.com/meep-discuss@ab-initio.mit.edu/msg05811.html). +Meep runs on any Unix-like operating system, such as Linux, macOS, and FreeBSD, from notebooks to desktops to supercomputers. [Conda packages](Installation.md#conda-packages) of the latest released version are available for Linux and macOS. Installing Meep from the source code requires some understanding of Unix, especially to install the various dependencies. Installation shell scripts are available for [Ubuntu 16.04 and 18.04](Build_From_Source.md#building-from-source) and [macOS Sierra](https://www.mail-archive.com/meep-discuss@ab-initio.mit.edu/msg05811.html). ### Can I install Meep on Windows machines? @@ -50,7 +50,7 @@ Yes. For Windows 10, you can install the [Ubuntu terminal](https://www.microsoft ### Are there precompiled binary packages for Ubuntu? -Yes. Ubuntu and Debian packages can be obtained via the package manager [APT](https://en.wikipedia.org/wiki/APT_(Debian)) as described in [Download](Download.md#precompiled-packages-for-ubuntu). However, the Meep packages for Ubuntu 16.04 ([serial](https://packages.ubuntu.com/xenial/meep) and [parallel](https://packages.ubuntu.com/xenial/meep-openmpi)) and 18.04 ([serial](https://packages.ubuntu.com/bionic/meep) and [parallel](https://packages.ubuntu.com/bionic/meep-openmpi)) are for [version 1.3](https://github.com/NanoComp/meep/releases/tag/1.3) (September 2017) which is out of date. The Meep package for Ubuntu is in the process of being updated and will likely appear in Ubuntu 19.10 as derived from the [unstable Debian package](https://packages.debian.org/unstable/meep). In the meantime, since the [Scheme interface](Scheme_User_Interface.md) is no longer being supported and has been replaced by the [Python interface](Python_User_Interface.md), you can use the [Conda packages](Installation.md#conda-packages) which contain the official releases as well as nightly builds of the master branch of the source repository. +Yes. Ubuntu and Debian packages can be obtained via the package manager [APT](https://en.wikipedia.org/wiki/APT_(Debian)) as described in [Download](Download.md#precompiled-packages-for-ubuntu). However, the Meep packages for Ubuntu 16.04 ([serial](https://packages.ubuntu.com/xenial/meep) and [parallel](https://packages.ubuntu.com/xenial/meep-openmpi)) and 18.04 ([serial](https://packages.ubuntu.com/bionic/meep) and [parallel](https://packages.ubuntu.com/bionic/meep-openmpi)) are for [version 1.3](https://github.com/NanoComp/meep/releases/tag/1.3) (September 2017) which is out of date. The Meep package for Ubuntu is in the process of being updated and will likely appear in Ubuntu 19.10 as derived from the [unstable Debian package](https://packages.debian.org/unstable/meep). In the meantime, since the [Scheme interface](Scheme_User_Interface.md) is no longer being supported and has been replaced by the [Python interface](Python_User_Interface.md), you can use the [Conda packages](Installation.md#conda-packages). ### Guile is installed, but configure complains that it can't find `guile` diff --git a/doc/docs/Installation.md b/doc/docs/Installation.md index 2cae0e504..a745415b9 100644 --- a/doc/docs/Installation.md +++ b/doc/docs/Installation.md @@ -99,17 +99,6 @@ conda create -n pmp1.9 -c conda-forge pymeep=1.9.0=mpi_mpich_* Note that parallel (MPI) versions are only available with `pymeep >= 1.8.0`. -### Nightly Builds - -To experiment with new features before they are distributed in an official release, you can try the [nightly-development builds](https://github.com/Simpetus/pymeep-nightly-recipe). They are hosted on the `simpetus` channel. Currently, the nightly builds are only available for Python 2.7 and 3.6. - -```bash -# Serial pymeep -conda create -n mp_test -c simpetus -c conda-forge pymeep -# Parallel pymeep -conda create -n pmp_test -c simpetus -c conda-forge pymeep=*=mpi_mpich* -``` - ### Version Number You can determine the version number as well as the most recent commit of the Meep module via: @@ -123,7 +112,7 @@ This will show something like `1.11.0-1-g415bc8eb` where the first three digits ### Non-Networked Systems -To install the PyMeep Conda package on a [non-networked system](https://docs.anaconda.com/anaconda/user-guide/tasks/install-packages/#installing-packages-on-a-non-networked-air-gapped-computer), using the bz2 tarball of the [official release](https://anaconda.org/conda-forge/pymeep/files) or [nightly build](https://anaconda.org/simpetus/pymeep/files) will *not* work without the dependencies. A possible workaround is [Conda-Pack](https://github.com/conda/conda-pack). +To install the PyMeep Conda package on a [non-networked system](https://docs.anaconda.com/anaconda/user-guide/tasks/install-packages/#installing-packages-on-a-non-networked-air-gapped-computer), using the bz2 tarball of the [official release](https://anaconda.org/conda-forge/pymeep/files) will *not* work without the dependencies. A possible workaround is [Conda-Pack](https://github.com/conda/conda-pack). Installation on Linux ------------------------- diff --git a/doc/docs/Introduction.md b/doc/docs/Introduction.md index 8e6ea3077..d4466289c 100644 --- a/doc/docs/Introduction.md +++ b/doc/docs/Introduction.md @@ -6,7 +6,7 @@ Meep implements the [finite-difference time-domain](https://en.wikipedia.org/wik This section introduces the equations and the electromagnetic units employed by Meep, the FDTD method, and Meep's approach to FDTD. Also, FDTD is only one of several useful methods in computational electromagnetics, each of which has their own special uses — a few of the other methods are mentioned, and some hints are provided as to which applications FDTD is well suited for and when you should potentially consider a different method. -This introduction does not describe the [Python Interface](Python_User_Interface.md) with which you set up simulations. Instead, the focus here is on the physics and numerical methods. For tutorial examples which demonstrate core functionality, see [Tutorial/Basics](Python_Tutorials/Basics.md) and the [Simpetus projects page](http://www.simpetus.com/projects.html). +This introduction does not describe the [Python Interface](Python_User_Interface.md) with which you set up simulations. Instead, the focus here is on the physics and numerical methods. For tutorial examples which demonstrate core functionality, see [Tutorial/Basics](Python_Tutorials/Basics.md) and this [projects page](http://www.simpetus.com/projects.html). [TOC] diff --git a/doc/docs/Parallel_Meep.md b/doc/docs/Parallel_Meep.md index 377b4df86..0228e4b38 100644 --- a/doc/docs/Parallel_Meep.md +++ b/doc/docs/Parallel_Meep.md @@ -138,7 +138,7 @@ For large multicore jobs with I/O, it may be necessary to have `(meep-all-wait)` Runtime Scaling on MPI Clusters ------------------------------- -The following are benchmarking results of the total runtime vs. number of processors for a 3d [OLED](http://www.simpetus.com/projects.html#meep_oled) simulation involving [Lorentzian susceptibility](Python_User_Interface.md#lorentziansusceptibility), [Absorber](Python_User_Interface.md#absorber), 1d [PML](Python_User_Interface.md#pml), and [DFT flux monitors](Python_User_Interface.md#flux-spectra) for [MPICH](https://www.mpich.org/) clusters of [n1-standard-16](https://cloud.google.com/compute/docs/machine-types#n1_machine_type) instances (8 single-threaded cores) on the [Google Cloud Platform](https://cloud.google.com/) (GCP). One slot on each node is reserved for kernel tasks leaving 7 slots per node. The software stack includes Ubuntu 16.04, the Meep [nightly build Conda package](Installation.md#nightly-builds), [elasticluster](https://elasticluster.readthedocs.io/en/latest/) for the cluster management, and [grid engine](https://en.wikipedia.org/wiki/Oracle_Grid_Engine) for the job scheduler. In order to reduce [cache contention](https://en.wikipedia.org/wiki/Resource_contention), process affinity is used via the `mpirun` option `-bind-to core`. Meep's simulation domain is split into equal-sized [chunks](Chunks_and_Symmetry.md#chunks-and-symmetry) (`split_chunks_evenly=True`). There are 13 clusters ranging in size from 2 to 14 nodes (14 to 98 processors). For reference, there are some [useful guidelines for benchmarking MPI jobs](https://www.open-mpi.org/faq/?category=tuning#running-perf-numbers). +The following are benchmarking results of the total runtime vs. number of processors for a 3d [OLED](http://www.simpetus.com/projects.html#meep_oled) simulation involving [Lorentzian susceptibility](Python_User_Interface.md#lorentziansusceptibility), [Absorber](Python_User_Interface.md#absorber), 1d [PML](Python_User_Interface.md#pml), and [DFT flux monitors](Python_User_Interface.md#flux-spectra) for [MPICH](https://www.mpich.org/) clusters of [n1-standard-16](https://cloud.google.com/compute/docs/machine-types#n1_machine_type) instances (8 single-threaded cores) on the [Google Cloud Platform](https://cloud.google.com/) (GCP). One slot on each node is reserved for kernel tasks leaving 7 slots per node. The software stack includes Ubuntu 16.04, the Meep 1.15 [Conda package](Installation.md#conda-packages), [elasticluster](https://elasticluster.readthedocs.io/en/latest/) for the cluster management, and [grid engine](https://en.wikipedia.org/wiki/Oracle_Grid_Engine) for the job scheduler. In order to reduce [cache contention](https://en.wikipedia.org/wiki/Resource_contention), process affinity is used via the `mpirun` option `-bind-to core`. Meep's simulation domain is split into equal-sized [chunks](Chunks_and_Symmetry.md#chunks-and-symmetry) (`split_chunks_evenly=True`). There are 13 clusters ranging in size from 2 to 14 nodes (14 to 98 processors). For reference, there are some [useful guidelines for benchmarking MPI jobs](https://www.open-mpi.org/faq/?category=tuning#running-perf-numbers). As shown in the first figure below, the runtime reaches a minimum at 77 processors. The second figure shows the scaling of the ratio of the mean time spent on communication (MPI/synchronization) to the computation (time stepping and DFTs). (Timing metrics were obtained using [`Simulation.mean_time_spent_on`](Python_User_Interface.md#simulation-time).) This ratio is a measure of the parallelization efficiency. The crossover point when the parallelization efficiency becomes larger than one — the regime in which the simulation is constrained by the network bandwidth rather than the CPU clock speed — corresponds well to the minimum runtime of the first figure. diff --git a/doc/docs/Python_Tutorials/Basics.md b/doc/docs/Python_Tutorials/Basics.md index a1f13b689..cedab140f 100644 --- a/doc/docs/Python_Tutorials/Basics.md +++ b/doc/docs/Python_Tutorials/Basics.md @@ -2,7 +2,7 @@ # Python Tutorial --- -We will review several examples using the Python interface that demonstrate the process of computing fields, transmittance/reflectance spectra, and resonant modes. The examples are mainly 1d or 2d simulations, simply because they are quicker than 3d and they illustrate most of the essential features. For more advanced functionality involving 3d simulations with a focus on technology applications, see the [Simpetus projects page](http://www.simpetus.com/projects.html). +We will review several examples using the Python interface that demonstrate the process of computing fields, transmittance/reflectance spectra, and resonant modes. The examples are mainly 1d or 2d simulations, simply because they are quicker than 3d and they illustrate most of the essential features. For more advanced functionality involving 3d simulations with a focus on technology applications, see this [projects page](http://www.simpetus.com/projects.html). [TOC] diff --git a/doc/docs/Python_User_Interface.md b/doc/docs/Python_User_Interface.md index 72346478c..c539ea90b 100644 --- a/doc/docs/Python_User_Interface.md +++ b/doc/docs/Python_User_Interface.md @@ -293,11 +293,10 @@ Python. `Vector3` is a `meep` class. modify the output volume instead of setting `output_volume` directly. + **`output_single_precision` [`boolean`]** — Meep performs its computations in - [double precision](https://en.wikipedia.org/wiki/double_precision), and by - default its output HDF5 files are in the same format. However, by setting this - variable to `True` (default is `False`) you can instead output in [single - precision](https://en.wikipedia.org/wiki/single_precision) which saves a factor - of two in space. + [double-precision floating point](Build_From_Source.md#floating-point-precision-of-the-fields-and-materials-arrays), + and by default its output HDF5 files are in the same format. However, by setting + this variable to `True` (default is `False`) you can instead output in single + precision which saves a factor of two in space. + **`progress_interval` [`number`]** — Time interval (seconds) after which Meep prints a progress message. Default is 4 seconds. @@ -514,10 +513,7 @@ def time_spent_on(self, time_sink):
Return a list of times spent by each process for a type of work `time_sink` which -can be one of ten integer values `0`-`9`: (`0`) connecting chunks, (`1`) time stepping, -(`2`) copying boundaries, (`3`) MPI all-to-all communication/synchronization, -(`4`) MPI one-to-one communication, (`5`) field output, (`6`) Fourier transforming, -(`7`) MPB mode solver, (`8`) near-to-far field transformation, and (`9`) other. +is the same as for `mean_time_spent_on`.
@@ -534,29 +530,14 @@ def mean_time_spent_on(self, time_sink):
Return the mean time spent by all processes for a type of work `time_sink` which -can be one of the following integer constants: -* meep.Stepping ("time stepping") -* meep.Connecting ("connecting chunks") -* meep.Boundaries ("copying boundaries") -* meep.MpiAllTime ("all-all communication") -* meep.MpiOneTime ("1-1 communication") -* meep.FieldOutput ("outputting fields") -* meep.FourierTransforming ("Fourier transforming") -* meep.MPBTime ("MPB mode solver") -* meep.GetFarfieldsTime ("far-field transform") -* meep.FieldUpdateB ("updating B field") -* meep.FieldUpdateH ("updating H field") -* meep.FieldUpdateD ("updating D field") -* meep.FieldUpdateE ("updating E field") -* meep.BoundarySteppingB ("boundary stepping B") -* meep.BoundarySteppingWH ("boundary stepping WH") -* meep.BoundarySteppingPH ("boundary stepping PH") -* meep.BoundarySteppingH ("boundary stepping H") -* meep.BoundarySteppingD ("boundary stepping D") -* meep.BoundarySteppingWE ("boundary stepping WE") -* meep.BoundarySteppingPE ("boundary stepping PE") -* meep.BoundarySteppingE ("boundary stepping E") -* meep.Other ("everything else") +can be one of the following integer constants: `0`: "time stepping", `1`: "connecting chunks", +`2`: "copying boundaries", `3`: "all-all communication", `4`: "1-1 communication", +`5`: "outputting fields", `6`: "Fourier transforming", `7`: "MPB mode solver", +`8`: "near-to-far-field transform", `9`: "updating B field", `10`: "updating H field", +`11`: "updating D field", `12`: "updating E field", `13`: "boundary stepping B", +`14`: "boundary stepping WH", `15`: "boundary stepping PH", `16`: "boundary stepping H", +`17`: "boundary stepping D", `18`: "boundary stepping WE", `19`: "boundary stepping PE", +`20`: "boundary stepping E", `21`: "everything else".
@@ -1380,7 +1361,7 @@ Technically, MPB computes `ωₙ(k)` and then inverts it with Newton's method to ```python def add_mode_monitor(self, *args, **kwargs): -def add_mode_monitor(fcen, df, nfreq, freq, ModeRegions...): +def add_mode_monitor(fcen, df, nfreq, freq, ModeRegions, decimation_factor=1): ```
@@ -6707,244 +6688,6 @@ the volume as a tuple of `Vector3`.
---- - - -### DftObj - -```python -class DftObj(object): -``` - -
- -Wrapper around dft objects that allows delayed initialization of the structure. - -When splitting the structure into chunks for parallel simulations, we want to know all -of the details of the simulation in order to ensure that each processor gets a similar -amount of work. The problem with DFTs is that the 'add_flux' style methods immediately -initialize the structure and fields. So, if the user adds multiple DFT objects to the -simulation, the load balancing code only knows about the first one and can't split the -work up nicely. To circumvent this, we delay the execution of the 'add_flux' methods -as late as possible. When 'add_flux' (or add_near2far, etc.) is called, we: - -1. Create an instance of the appropriate subclass of DftObj (DftForce, DftFlux, etc.). - Set its args property to the list of arguments passed to add_flux, and set its func - property to the 'real' add_flux, which is prefixed by an underscore. - -2. Add this DftObj to the list Simulation.dft_objects. When we actually run the - simulation, we call Simulation._evaluate_dft_objects, which calls dft.func(*args) - for each dft in the list. - -If the user tries to access a property or call a function on the DftObj before -Simulation._evaluate_dft_objects is called, then we initialize the C++ object through -swigobj_attr and return the property they requested. - -
- - - - - -
- -```python -def __init__(self, func, args): -``` - -
- -Construct a `DftObj`. - -
- -
- ---- - - -### DftFlux - -```python -class DftFlux(DftObj): -``` - -
- - - -
- - - - - -
- -```python -def __init__(self, func, args): -``` - -
- -Construct a `DftFlux`. - -
- -
- ---- - - -### DftForce - -```python -class DftForce(DftObj): -``` - -
- - - -
- - - - - -
- -```python -def __init__(self, func, args): -``` - -
- -Construct a `DftForce`. - -
- -
- ---- - - -### DftNear2Far - -```python -class DftNear2Far(DftObj): -``` - -
- - - -
- - - - - -
- -```python -def __init__(self, func, args): -``` - -
- -Construct a `DftNear2Far`. - -
- -
- - - -
- -```python -def flux(self, direction, where, resolution): -``` - -
- -Given a `Volume` `where` (may be 0d, 1d, 2d, or 3d) and a `resolution` (in grid -points / distance unit), compute the far fields in `where` (which may lie -*outside* the cell) in a grid with the given resolution (which may differ from the -FDTD solution) and return its Poynting flux in `direction` as a list. The dataset -is a 1d array of `nfreq` dimensions. - -
- -
- ---- - - -### DftEnergy - -```python -class DftEnergy(DftObj): -``` - -
- - - -
- - - - - -
- -```python -def __init__(self, func, args): -``` - -
- -Construct a `DftEnergy`. - -
- -
- ---- - - -### DftFields - -```python -class DftFields(DftObj): -``` - -
- - - -
- - - - - -
- -```python -def __init__(self, func, args): -``` - -
- -Construct a `DftFields`. - -
- -
- --- diff --git a/doc/docs/Python_User_Interface.md.in b/doc/docs/Python_User_Interface.md.in index ac31a14d7..a1c7eec14 100644 --- a/doc/docs/Python_User_Interface.md.in +++ b/doc/docs/Python_User_Interface.md.in @@ -800,18 +800,6 @@ The following classes are available directly via the `meep` package. ** Related function:** @@ get_center_and_size @@ -@@ DftObj[methods-with-docstrings] @@ - -@@ DftFlux[methods-with-docstrings] @@ - -@@ DftForce[methods-with-docstrings] @@ - -@@ DftNear2Far[methods-with-docstrings] @@ - -@@ DftEnergy[methods-with-docstrings] @@ - -@@ DftFields[methods-with-docstrings] @@ - @@ Animate2D[methods-with-docstrings] @@ @@ Harminv[methods-with-docstrings] @@ diff --git a/doc/docs/Scheme_Tutorials/Basics.md b/doc/docs/Scheme_Tutorials/Basics.md index 6e6c2c06d..e45c00837 100644 --- a/doc/docs/Scheme_Tutorials/Basics.md +++ b/doc/docs/Scheme_Tutorials/Basics.md @@ -2,7 +2,7 @@ # Scheme Tutorial --- -We will review several examples using the Scheme interface that demonstrate the process of computing fields, transmittance/reflectance spectra, and resonant modes. The examples are mainly 1d or 2d simulations, simply because they are quicker than 3d and they illustrate most of the essential features. For more advanced functionality involving 3d simulations with a focus on technology applications, see the [Simpetus projects page](http://www.simpetus.com/projects_scheme.html). +We will review several examples using the Scheme interface that demonstrate the process of computing fields, transmittance/reflectance spectra, and resonant modes. The examples are mainly 1d or 2d simulations, simply because they are quicker than 3d and they illustrate most of the essential features. For more advanced functionality involving 3d simulations with a focus on technology applications, see this [projects page](http://www.simpetus.com/projects_scheme.html). In order to convert the [HDF5](https://en.wikipedia.org/wiki/HDF5) output files of Meep into images of the fields, this tutorial uses the [h5utils](https://github.com/NanoComp/h5utils/blob/master/README.md) package. You could also use any other package (i.e., [Octave](https://www.gnu.org/software/octave/) or [Matlab](http://www.mathworks.com/access/helpdesk/help/techdoc/ref/hdf5read.html)) that supports reading HDF5 files. diff --git a/doc/docs/index.md b/doc/docs/index.md index e6dd15b0f..9ed38af95 100644 --- a/doc/docs/index.md +++ b/doc/docs/index.md @@ -11,7 +11,7 @@ - Simulation in **1d, 2d, 3d**, and **cylindrical** coordinates. - Distributed memory [parallelism](Parallel_Meep) on any system supporting [MPI](https://en.wikipedia.org/wiki/MPI). - Portable to any Unix-like operating system such as [Linux](https://en.wikipedia.org/wiki/Linux), [macOS](https://en.wikipedia.org/wiki/macOS), and [FreeBSD](https://en.wikipedia.org/wiki/FreeBSD). -- **Precompiled binary packages** of official releases and nightly builds of the master branch via [Conda](Installation.md#conda-packages). +- **Precompiled binary packages** of official releases via [Conda](Installation.md#conda-packages). - Variety of arbitrary [material](Materials) types: **anisotropic** electric permittivity ε and magnetic permeability μ, along with **dispersive** ε(ω) and μ(ω) including loss/gain, **nonlinear** (Kerr & Pockels) dielectric and magnetic materials, electric/magnetic **conductivities** σ, **saturable** gain/absorption, and **gyrotropic** media (magneto-optical effects). - [Materials library](Materials#materials-library) containing predefined broadband, complex refractive indices. - [Perfectly matched layer](Perfectly_Matched_Layer/) (**PML**) absorbing boundaries as well as **Bloch-periodic** and perfect-conductor boundary conditions. diff --git a/python/geom.py b/python/geom.py index fae05aec7..861b62d93 100755 --- a/python/geom.py +++ b/python/geom.py @@ -547,8 +547,7 @@ def __init__(self,grid_size,medium1,medium2,weights=None,grid_type="U_DEFAULT",d +\\tanh(\\beta\\times(u-\\eta)))/(\\tanh(\\beta\\times\\eta)+\\tanh(\\beta\\times(1-\\eta)))$ involving the parameters `beta` ($\\beta$: bias or "smoothness" of the turn on) and `eta` ($\\eta$: offset for erosion/dilation). The level set provides a general approach for defining a *discontinuous* function from otherwise continuously varying (via the bilinear interpolation) grid values. - The subpixel smoothing is based on an adaptive quadrature scheme with properties `subpixel_maxeval` and `subpixel_tol` which - can be specified using the `Simulation` constructor. + Subpixel smoothing is fast and accurate because it exploits an analytic framework for level-set functions. It is possible to overlap any number of different `MaterialGrid`s. This can be useful for defining grids which are symmetric (e.g., mirror, rotation). One way to set this up is by overlapping a given `MaterialGrid` object with a symmetrized copy of diff --git a/python/simulation.py b/python/simulation.py index fcb32827f..62a8b54a4 100644 --- a/python/simulation.py +++ b/python/simulation.py @@ -550,22 +550,22 @@ class DftObj(object): When splitting the structure into chunks for parallel simulations, we want to know all of the details of the simulation in order to ensure that each processor gets a similar - amount of work. The problem with DFTs is that the 'add_flux' style methods immediately + amount of work. The problem with DFTs is that the `add_flux` style methods immediately initialize the structure and fields. So, if the user adds multiple DFT objects to the simulation, the load balancing code only knows about the first one and can't split the - work up nicely. To circumvent this, we delay the execution of the 'add_flux' methods - as late as possible. When 'add_flux' (or add_near2far, etc.) is called, we: + work up nicely. To circumvent this, we delay the execution of the `add_flux` methods + as late as possible. When `add_flux` (or `add_near2far`, etc.) is called, we: - 1. Create an instance of the appropriate subclass of DftObj (DftForce, DftFlux, etc.). - Set its args property to the list of arguments passed to add_flux, and set its func - property to the 'real' add_flux, which is prefixed by an underscore. + 1. Create an instance of the appropriate subclass of `DftObj` (`DftForce`, `DftFlux`, etc.). + Set its args property to the list of arguments passed to `add_flux`, and set its func + property to the 'real' `add_flux`, which is prefixed by an underscore. - 2. Add this DftObj to the list Simulation.dft_objects. When we actually run the - simulation, we call Simulation._evaluate_dft_objects, which calls dft.func(*args) + 2. Add this `DftObj` to the list Simulation.dft_objects. When we actually run the + simulation, we call `Simulation._evaluate_dft_objects`, which calls `dft.func(*args)` for each dft in the list. - If the user tries to access a property or call a function on the DftObj before - Simulation._evaluate_dft_objects is called, then we initialize the C++ object through + If the user tries to access a property or call a function on the `DftObj` before + `Simulation._evaluate_dft_objects` is called, then we initialize the C++ object through swigobj_attr and return the property they requested. """ def __init__(self, func, args): @@ -1137,11 +1137,10 @@ def __init__(self, modify the output volume instead of setting `output_volume` directly. + **`output_single_precision` [`boolean`]** — Meep performs its computations in - [double precision](https://en.wikipedia.org/wiki/double_precision), and by - default its output HDF5 files are in the same format. However, by setting this - variable to `True` (default is `False`) you can instead output in [single - precision](https://en.wikipedia.org/wiki/single_precision) which saves a factor - of two in space. + [double-precision floating point](Build_From_Source.md#floating-point-precision-of-the-fields-and-materials-arrays), + and by default its output HDF5 files are in the same format. However, by setting + this variable to `True` (default is `False`) you can instead output in single + precision which saves a factor of two in space. + **`progress_interval` [`number`]** — Time interval (seconds) after which Meep prints a progress message. Default is 4 seconds. @@ -2877,7 +2876,7 @@ def _add_flux(self, freq, fluxes, decimation_factor): def add_mode_monitor(self, *args, **kwargs): """ - `add_mode_monitor(fcen, df, nfreq, freq, ModeRegions...)` ##sig + `add_mode_monitor(fcen, df, nfreq, freq, ModeRegions, decimation_factor=1)` ##sig Similar to `add_flux`, but for use with `get_eigenmode_coefficients`. """ @@ -3739,39 +3738,21 @@ def print_times(self): def mean_time_spent_on(self, time_sink): """ Return the mean time spent by all processes for a type of work `time_sink` which - can be one of the following integer constants: - * meep.Stepping ("time stepping") - * meep.Connecting ("connecting chunks") - * meep.Boundaries ("copying boundaries") - * meep.MpiAllTime ("all-all communication") - * meep.MpiOneTime ("1-1 communication") - * meep.FieldOutput ("outputting fields") - * meep.FourierTransforming ("Fourier transforming") - * meep.MPBTime ("MPB mode solver") - * meep.GetFarfieldsTime ("far-field transform") - * meep.FieldUpdateB ("updating B field") - * meep.FieldUpdateH ("updating H field") - * meep.FieldUpdateD ("updating D field") - * meep.FieldUpdateE ("updating E field") - * meep.BoundarySteppingB ("boundary stepping B") - * meep.BoundarySteppingWH ("boundary stepping WH") - * meep.BoundarySteppingPH ("boundary stepping PH") - * meep.BoundarySteppingH ("boundary stepping H") - * meep.BoundarySteppingD ("boundary stepping D") - * meep.BoundarySteppingWE ("boundary stepping WE") - * meep.BoundarySteppingPE ("boundary stepping PE") - * meep.BoundarySteppingE ("boundary stepping E") - * meep.Other ("everything else") + can be one of the following integer constants: `0`: "time stepping", `1`: "connecting chunks", + `2`: "copying boundaries", `3`: "all-all communication", `4`: "1-1 communication", + `5`: "outputting fields", `6`: "Fourier transforming", `7`: "MPB mode solver", + `8`: "near-to-far-field transform", `9`: "updating B field", `10`: "updating H field", + `11`: "updating D field", `12`: "updating E field", `13`: "boundary stepping B", + `14`: "boundary stepping WH", `15`: "boundary stepping PH", `16`: "boundary stepping H", + `17`: "boundary stepping D", `18`: "boundary stepping WE", `19`: "boundary stepping PE", + `20`: "boundary stepping E", `21`: "everything else". """ return self.fields.mean_time_spent_on(time_sink) def time_spent_on(self, time_sink): """ Return a list of times spent by each process for a type of work `time_sink` which - can be one of ten integer values `0`-`9`: (`0`) connecting chunks, (`1`) time stepping, - (`2`) copying boundaries, (`3`) MPI all-to-all communication/synchronization, - (`4`) MPI one-to-one communication, (`5`) field output, (`6`) Fourier transforming, - (`7`) MPB mode solver, (`8`) near-to-far field transformation, and (`9`) other. + is the same as for `mean_time_spent_on`. """ return self.fields.time_spent_on(time_sink)