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.
# 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
# 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,
# *.qsf, *.as and *.js.
FILE_PATTERNS =
FILE_PATTERNS =
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# 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.
# 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
# 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.
Command line utilities
----------------------
* [Overview of the Python command line utilities][cliutils]
Acknowledgments
================
@ -128,7 +135,7 @@ Bug reports
===========
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`.
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
[`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
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
====================
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).
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!
@ -164,9 +171,12 @@ in Telegram!
[OpenBLAS]: https://www.openblas.net/
[GSL]: https://www.gnu.org/software/gsl/
[cmake]: https://cmake.org
[tRITON-README]: README.Triton.md
[TRITON-README]: README.Triton.md
[tutorial-finite]: finite_systems.md
[tutorial-infinite]: lattices.md
[doxygen]: http://doxygen.nl/
[QD]: https://www.aalto.fi/en/department-of-applied-physics/quantum-dynamics-qd
[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".
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
lattices2d.py
scripts_common.py
timetrack.py
tmatrices.py
types.py
svwf.c
@ -69,15 +67,6 @@ G0L_analytical
G0T_analytical
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