From f7883a713b1e6572b196725ec4057e98706923aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ne=C4=8Dada?= Date: Thu, 2 Jul 2020 22:36:53 +0300 Subject: [PATCH] Docs: Add overview of CLI utilities; optimisation TODO --- CLIUTILS.md | 43 ++++++++++++++++++++++++++++++++++ Doxyfile | 6 ++--- README.md | 20 ++++++++++++---- TODO.md | 13 ++++++++++ qpms/{přehled.md => přehled} | 11 --------- 5 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 CLIUTILS.md rename qpms/{přehled.md => přehled} (83%) diff --git a/CLIUTILS.md b/CLIUTILS.md new file mode 100644 index 0000000..d188955 --- /dev/null +++ b/CLIUTILS.md @@ -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. diff --git a/Doxyfile b/Doxyfile index 95f7527..615ee54 100644 --- a/Doxyfile +++ b/Doxyfile @@ -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 diff --git a/README.md b/README.md index 4c69dc0..e6c55d0 100644 --- a/README.md +++ b/README.md @@ -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 . 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 . +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 diff --git a/TODO.md b/TODO.md index 06631b3..a3dca51 100644 --- a/TODO.md +++ b/TODO.md @@ -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. diff --git a/qpms/přehled.md b/qpms/přehled similarity index 83% rename from qpms/přehled.md rename to qpms/přehled index 344ced9..ea0a715 100644 --- a/qpms/přehled.md +++ b/qpms/přehled @@ -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