Docs: Add overview of CLI utilities; optimisation TODO

This commit is contained in:
Marek Nečada 2020-07-02 22:36:53 +03:00
parent 93118cfc07
commit f7883a713b
5 changed files with 74 additions and 19 deletions

43
CLIUTILS.md Normal file
View File

@ -0,0 +1,43 @@
Overview of QPMS command line utilities
=======================================
The utilities are located in the `misc` directory. Run the
utility with `-h` argument to get more info.
Rectangular and square 2D lattices
----------------------------------
These scripts deal with simple 2D rectangular lattices,
finite or infinite, one scatterer per unit cell.
\f$ D_{2h} \f$ or \f$ D_{4h} \f$ symmetric adapted bases
are used where applicable.
### Finite lattices
* `finiterectlat-modes.py`: Search for resonances using Beyn's algorithm.
* `finiterectlat-scatter.py`: Plane wave scattering.
* `finiterectlat-constant-driving.py`: Rectangular array response to
a driving where a subset of particles are excited by basis VSWFs with the
same phase.
### Infinite lattices
* `rectlat_simple_modes.py`: Search for lattice modes using Beyn's algorithm.
* `infiniterectlat-k0realfreqsvd.py`:
Evaluate the lattice mode problem singular values at the Γ point for a real frequency interval.
Useful as a starting point in lattice mode search before using Beyn's algorithm.
* `infiniterectlat-scatter.py`: Plane wave scattering.
General 2D lattices
-------------------
### Infinite lattices
These can contain several scatterers per unit cell. Symmetry adapted bases currently not implemented.
* `lat2d_modes.py`: Search for lattice modes using Beyn's algorithm.
* `lat2d_realfreqsvd.py`:
Evaluate the lattice mode problem singular values at the Γ point for a real frequency interval.
Useful as a starting point in lattice mode search before using Beyn's algorithm.

View File

@ -753,7 +753,7 @@ WARN_LOGFILE =
# spaces. # spaces.
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = qpms notes finite_systems.md README.md README.Triton.md finite_systems.md lattices.md TODO.md INPUT = qpms notes misc finite_systems.md CLIUTILS.md README.md README.Triton.md finite_systems.md lattices.md TODO.md
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@ -773,7 +773,7 @@ INPUT_ENCODING = UTF-8
# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, # *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
# *.qsf, *.as and *.js. # *.qsf, *.as and *.js.
FILE_PATTERNS = FILE_PATTERNS =
# The RECURSIVE tag can be used to specify whether or not subdirectories should # The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well. # be searched for input files as well.
@ -1462,7 +1462,7 @@ MATHJAX_FORMAT = HTML-CSS
# The default value is: http://cdn.mathjax.org/mathjax/latest. # The default value is: http://cdn.mathjax.org/mathjax/latest.
# This tag requires that the tag USE_MATHJAX is set to YES. # This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax MATHJAX_RELPATH = https://uslugi.necada.org/js/mathjax
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example # extension names that should be enabled during MathJax rendering. For example

View File

@ -112,6 +112,13 @@ Tutorials
See also the examples directory in the source repository. See also the examples directory in the source repository.
Command line utilities
----------------------
* [Overview of the Python command line utilities][cliutils]
Acknowledgments Acknowledgments
================ ================
@ -128,7 +135,7 @@ Bug reports
=========== ===========
If you believe that some parts of QPMS behave incorrectly, please mail If you believe that some parts of QPMS behave incorrectly, please mail
a bug report to <marek@necada.org>. To ensure that your message is not a bug report to [marek@necada.org][authormail]. To ensure that your message is not
considered spam, please start the subject line with `QPMS`. considered spam, please start the subject line with `QPMS`.
If you were able to fix a bug yourself, please include the patch as well, If you were able to fix a bug yourself, please include the patch as well,
@ -143,7 +150,7 @@ documentation, code quality, or new features.
You can send patches prepared using the You can send patches prepared using the
[`git format-patch`](https://git-scm.com/docs/git-format-patch) tool [`git format-patch`](https://git-scm.com/docs/git-format-patch) tool
to <marek@necada.org>. to [marek@necada.org][authormail].
If you plan to contribute with major changes to the codebase, it is If you plan to contribute with major changes to the codebase, it is
recommended to discuss that first (see the contact information below). recommended to discuss that first (see the contact information below).
@ -152,10 +159,10 @@ recommended to discuss that first (see the contact information below).
Contact & discussion Contact & discussion
==================== ====================
You can contact the main author e.g. via [e-mail](marek@necada.org) You can contact the main author e.g. via [e-mail][authormail]
or [Telegram](https://t.me/necadam). or [Telegram](https://t.me/necadam).
You are also warmly welcome to the [QPMS user chat](https://t.me/QPMScattering) You are also warmly welcome to the [QPMS user chat][telegramchat]
in Telegram! in Telegram!
@ -164,9 +171,12 @@ in Telegram!
[OpenBLAS]: https://www.openblas.net/ [OpenBLAS]: https://www.openblas.net/
[GSL]: https://www.gnu.org/software/gsl/ [GSL]: https://www.gnu.org/software/gsl/
[cmake]: https://cmake.org [cmake]: https://cmake.org
[tRITON-README]: README.Triton.md [TRITON-README]: README.Triton.md
[tutorial-finite]: finite_systems.md [tutorial-finite]: finite_systems.md
[tutorial-infinite]: lattices.md [tutorial-infinite]: lattices.md
[doxygen]: http://doxygen.nl/ [doxygen]: http://doxygen.nl/
[QD]: https://www.aalto.fi/en/department-of-applied-physics/quantum-dynamics-qd [QD]: https://www.aalto.fi/en/department-of-applied-physics/quantum-dynamics-qd
[lepaper]: https://arxiv.org/abs/2006.12968 [lepaper]: https://arxiv.org/abs/2006.12968
[telegramchat]: https://t.me/QPMScattering
[authormail]: mailto:marek@necada.org
[cliutils]: CLIUTILS.md

13
TODO.md
View File

@ -40,3 +40,16 @@ Nice but less important features
- Static, thread-safe caches of constant coefficients + API without the current "calculators". - Static, thread-safe caches of constant coefficients + API without the current "calculators".
Optimisations
-------------
- Leaving out the irrelevant elements if a "rectangular" block of the translations matrix is needed.
- Ewald sums with "non-parallel" shifts (are about 20 times slower than the purely parallel ones).
- Reusing intermediate results (profiling needed)
* Bessel, Legendre functions (see also branch `finite_lattice_speedup`)
* Lattice points (sorting and scaling)
* Γ/Δ functions (for periodic lattices)
- More parallelisation.
- Possibly pre-calculation of the (precise) coefficients in Bessel and Legendre functions (using gmp)
- Asymptotic approximations of the Bessel functions for far fields.

View File

@ -4,8 +4,6 @@ qpms_p.py (až na změny souřadnic???)
## Nové věci ## Nové věci
lattices2d.py lattices2d.py
scripts_common.py
timetrack.py
tmatrices.py tmatrices.py
types.py types.py
svwf.c svwf.c
@ -69,15 +67,6 @@ G0L_analytical
G0T_analytical G0T_analytical
G0_sum_1_slow G0_sum_1_slow
# scripts_common.py
## funkce
make_action_sharedlist
add_argparse_k_output_options
add_argparse_unitcell_definitions
add_argparse_infinite_lattice_options
add_argparse_output_options
add_argparse_common_options
arg_preprocess_particles
# timetrack.py # timetrack.py