From 817e59b00be18d6f4271ef5ba4846c10dafcaa28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-No=C3=ABl=20Grad?= Date: Wed, 13 Nov 2019 15:11:10 +0100 Subject: [PATCH] Replace hardcoded literature references by BibTeX The citations were obtained from icp.bib. --- doc/doxygen/bibliography.bib | 323 ++++++++++++++++++ src/core/actor/DipolarBarnesHut_cuda.cu | 4 +- src/core/dpd.hpp | 3 +- .../electrostatics_magnetostatics/icc.hpp | 5 +- .../mdlc_correction.cpp | 10 +- .../mdlc_correction.hpp | 2 +- .../mmm-common.hpp | 6 +- .../electrostatics_magnetostatics/mmm2d.cpp | 5 +- .../p3m-common.hpp | 26 +- .../p3m-dipolar.cpp | 9 +- .../p3m-dipolar.hpp | 10 +- .../electrostatics_magnetostatics/p3m.cpp | 12 +- .../electrostatics_magnetostatics/p3m.hpp | 24 +- .../reaction_field.hpp | 3 +- src/core/grid_based_algorithms/lb.cpp | 12 +- src/core/grid_based_algorithms/lb.hpp | 4 +- .../lb_interpolation.cpp | 2 +- .../lb_particle_coupling.cpp | 13 +- src/core/grid_based_algorithms/lbgpu.cpp | 13 +- src/core/grid_based_algorithms/lbgpu_cuda.cu | 38 +-- .../immersed_boundary/ImmersedBoundaries.cpp | 12 +- src/core/immersed_boundary/ibm_tribend.cpp | 3 +- src/core/immersed_boundary/ibm_triel.cpp | 2 +- src/core/metadynamics.cpp | 5 +- src/core/observables/BondDihedrals.hpp | 6 +- src/core/rattle.hpp | 4 +- src/core/reaction_ensemble.hpp | 2 +- src/core/rotation.cpp | 15 +- .../virtual_sites/lb_inertialess_tracers.cpp | 4 +- 29 files changed, 417 insertions(+), 160 deletions(-) diff --git a/doc/doxygen/bibliography.bib b/doc/doxygen/bibliography.bib index e69de29bb2d..e4b805285fe 100644 --- a/doc/doxygen/bibliography.bib +++ b/doc/doxygen/bibliography.bib @@ -0,0 +1,323 @@ +@Article{usta05a, + title = {{Lattice-Boltzmann simulations of the dynamics of polymer solutions in periodic and confined geometries}}, + author = {Usta, O. B. and Ladd, A. J. C. and Butler, J. E.}, + journal = {Journal of Chemical Physics}, + year = {2005}, + pages = {094902}, + volume = {122}, + doi = {10.1063/1.1854151}, +} +@Article{ladd94a, + title = {{Numerical simulations of particulate suspensions via a discretized Boltzmann equation. Part 1. Theoretical foundation}}, + author = {Ladd, A. J. C.}, + journal = {Journal of Fluid Mechanics}, + year = {1994}, + pages = {285--309}, + volume = {271}, + doi = {10.1017/S0022112094001771}, +} +@article{sonnenschein85a, +author = {Sonnenschein, Roland}, +title = {{An improved algorithm for molecular dynamics simulation of rigid molecules}}, +journal = {Journal of Computational Physics}, +volume = {59}, +number = {2}, +pages = {347-350}, +year = {1985}, +doi = {10.1016/0021-9991(85)90151-2}, +} +@article{neumann85b, +author = {Neumann, Martin}, +title = {{The dielectric constant of water. Computer simulations with the {MCY} potential}}, +journal = {The Journal of Chemical Physics}, +volume = {82}, +number = {12}, +pages = {5663-5672}, +year = {1985}, +doi = {10.1063/1.448553}, +} +@Article{wang01a, + author = {Wang, Zuowei and Holm, Christian}, + title = {{Estimate of the cutoff errors in the Ewald summation for dipolar systems}}, + journal = {The Journal of Chemical Physics}, + year = {2001}, + volume = {115}, + pages = {6351--6359}, + doi = {10.1063/1.1398588}, +} +@Article{brodka04a, + author = {Br\'{o}dka, A.}, + title = {{Ewald summation method with electrostatic layer correction for interactions of point dipoles in slab geometry}}, + journal = {Chemical Physics Letters}, + year = {2004}, + volume = {400}, + number = {1-3}, + pages = {62--67}, + doi = {10.1016/j.cplett.2004.10.086}, +} +@Article{dhumieres09a, + title = {{Viscosity independent numerical errors for lattice Boltzmann models: from recurrence equations to ``magic'' collision numbers}}, + author = {d'Humi\`{e}res, Dominique and Ginzburg, Irina}, + journal = {Computers \& Mathematics with Applications}, + year = {2009}, + number = {5}, + pages = {823--840}, + volume = {58}, + doi = {10.1016/j.camwa.2009.02.008} +} +@Article{dunweg07a, + author = {D\"{u}nweg, Burkhard and Schiller, Ulf D. and Ladd, Anthony J. C.}, + title = {{Statistical mechanics of the fluctuating lattice Boltzmann equation}}, + journal = {Physical Review E}, + year = {2007}, + volume = {76}, + number = {3}, + pages = {036704}, + doi = {10.1103/PhysRevE.76.036704}, +} +@Article{soddemann03a, + title = {{Dissipative particle dynamics: A useful thermostat for equilibrium and nonequilibrium molecular dynamics simulations}}, + author = {Soddemann, T. and D\"{u}nweg, B. and Kremer, K.}, + journal = {Physical Review E}, + year = {2003}, + number = {4}, + pages = {46702}, + volume = {68}, + doi = {10.1103/PhysRevE.68.046702}, +} +@Article{ahlrichs99a, + title = {{Simulation of a single polymer chain in solution by combining lattice Boltzmann and molecular dynamics}}, + author = {Ahlrichs, P. and D\"{u}nweg, B.}, + journal = {Journal of Chemical Physics}, + year = {1999}, + number = {17}, + pages = {8225--8239}, + volume = {111}, + doi = {10.1063/1.480156}, +} +@InCollection{duenweg09a, + title = {{Lattice Boltzmann simulations of soft matter systems}}, + author = {D\"{u}nweg, B. and Ladd, A. J. C.}, + booktitle = {{Advanced Computer Simulation Approaches for Soft Matter Sciences III}}, + publisher = {Springer-Verlag Berlin}, + year = {2009}, + address = {Berlin, Germany}, + pages = {89--166}, + series = {Advances in Polymer Science}, + type = {Review}, + volume = {221}, + doi = {10.1007/12_2008_4}, + issn = {0065-3195}, +} +@Article{arnold13c, + title = {{Efficient algorithms for electrostatic interactions including dielectric contrasts}}, + author = {Arnold, Axel and Breitsprecher, Konrad and Fahrenberger, Florian and Kesselheim, Stefan and Lenz, Olaf and Holm, Christian}, + journal = {Entropy}, + year = {2013}, + number = {11}, + pages = {4569--4588}, + volume = {15}, + doi = {10.3390/e15114569}, + issn = {1099-4300}, +} +@Article{essmann95a, + title = {{A smooth Particle Mesh Ewald method}}, + author = {Essmann, U. and Perera, L. and Berkowitz, M. L. and Darden, T. and Lee, H. and Pedersen, L.}, + journal = {Journal of Chemical Physics}, + year = {1995}, + pages = {8577}, + volume = {103}, + doi = {10.1063/1.470117}, +} +@Article{tyagi10a, + author = {Tyagi, Sandeep and S\"{u}zen, Mehmet and Sega, Marcello and Barbosa, Marcia C. and Kantorovich, Sofia S. and Holm, Christian}, + title = {{An iterative, fast, linear-scaling method for computing induced charges on arbitrary dielectric boundaries}}, + journal = {The Journal of Chemical Physics}, + year = {2010}, + volume = {132}, + pages = {154112}, + doi = {10.1063/1.3376011}, +} +@Article{arnold02a, + author = {Arnold, Axel and Holm, Christian}, + title = {{{MMM2D}: A fast and accurate summation method for electrostatic interactions in {2D} slab geometries}}, + journal = {Computer Physics Communications}, + year = {2002}, + volume = {148}, + number = {3}, + pages = {327--348}, + doi = {10.1016/s0010-4655(02)00586-6}, +} +@article{marsili10a, +author = {Marsili, Simone and Signorini, Giorgio Federico and Chelli, Riccardo and Marchi, Massimo and Procacci, Piero}, +title = {{{ORAC}: A molecular dynamics simulation program to explore free energy surfaces in biomolecular systems at the atomistic level}}, +journal = {Journal of Computational Chemistry}, +volume = {31}, +number = {5}, +pages = {1106-1116}, +doi = {10.1002/jcc.21388}, +year = {2010}, +} +@Article{andersen83a, + title = {{Rattle: A "velocity" version of the shake algorithm for molecular dynamics calculations}}, + author = {Andersen, Hans C.}, + journal = {Journal of Computational Physics}, + year = {1983}, + pages = {24--34}, + volume = {52}, + doi = {10.1016/0021-9991(83)90014-1}, +} +@Article{guo02a, + title = {{Discrete lattice effects on the forcing term in the lattice Boltzmann method}}, + author = {Guo, Zhaoli and Zheng, Chuguang and Shi, Baochang}, + journal = {Physical Review E}, + year = {2002}, + number = {4}, + pages = {046308}, + volume = {65}, + doi = {10.1103/PhysRevE.65.046308}, +} +@incollection{burtscher11a, +author = {Burtscher, Martin and Pingali, Keshav}, +chapter = {6}, +title = {{An efficient CUDA implementation of the tree-based Barnes Hut n-body algorithm}}, +editor = {Hwu, Wen-mei W.}, +booktitle = {{GPU Computing Gems Emerald Edition}}, +publisher = {Morgan Kaufmann}, +address = {Boston}, +pages = {75-92}, +year = {2011}, +series = {Applications of GPU Computing Series}, +isbn = {978-0-12-384988-5}, +doi = {10.1016/B978-0-12-384988-5.00006-1}, +} +@Article{reed92a, + title = {{Monte Carlo study of titration of linear polyelectrolytes}}, + author = {Reed, C. E. and Reed, W. F.}, + journal = {Journal of Chemical Physics}, + year = {1992}, + pages = {1609}, + volume = {96}, + doi = {10.1063/1.462145}, +} +@Article{ladd01a, + title = {{Lattice-Boltzmann simulations of particle-fluid suspensions}}, + author = {Ladd, A. J. C. and Verberg, R.}, + journal = {Journal of Statistical Physics}, + year = {2001}, + number = {5/6}, + pages = {1191--1251}, + volume = {104}, + doi = {10.1023/A:1010414013942}, +} +@article{dupin08a, +author = {Dupin, M. M. and Halliday, I. and Care, C. M. and Munn, L. L.}, +title = {{Lattice Boltzmann modelling of blood cell dynamics}}, +journal = {International Journal of Computational Fluid Dynamics}, +volume = {22}, +number = {7}, +pages = {481-492}, +year = {2008}, +doi = {10.1080/10618560802238242}, +} +@inproceedings{zhang01b, +author={Zhang, Cha and Chen, Tsuhan}, +booktitle={{Proceedings 2001 International Conference on Image Processing (Cat. No.01CH37205)}}, +title={{Efficient feature extraction for {2D/3D} objects in mesh representation}}, +year={2001}, +volume={3}, +pages={935-938}, +doi={10.1109/ICIP.2001.958278}, +} +@book{kruger12a, +author={Kr\"{u}ger, Timm}, +title={{Computer simulation study of collective phenomena in dense suspensions of red blood cells under shear}}, +year={2012}, +publisher={Vieweg+Teubner Verlag}, +address={Wiesbaden}, +isbn={978-3-8348-2376-2}, +doi={10.1007/978-3-8348-2376-2}, +} +@article{gompper96a, +author={Gompper, G. and Kroll, D. M.}, +journal={Journal de Physique I France}, +number={10}, +pages={1305-1320}, +title={{Random surface discretizations and the renormalization of the bending rigidity}}, +volume={6}, +year={1996}, +doi={10.1051/jp1:1996246}, +} +@article{moss96a, +author={Moss, G. P.}, +journal={Pure and Applied Chemistry}, +number={12}, +pages={2193-2222}, +title={{Basic terminology of stereochemistry}}, +volume={68}, +year={1996}, +doi={10.1351/pac199668122193}, +} +@Article{cerda08d, + author = {Cerd\`{a}, Juan J. and Ballenegger, Vincent and Lenz, Olaf and Holm, Christian}, + title = {{{P3M} algorithm for dipolar interactions}}, + journal = {Journal of Chemical Physics}, + year = {2008}, + volume = {129}, + pages = {234104}, + doi = {10.1063/1.3000389}, +} +@PhdThesis{deserno00b, + author = {Deserno, Markus}, + title = {Counterion condensation for rigid linear polyelectrolytes}, + year = {2000}, + month = FEB, + url = {http://archimed.uni-mainz.de/pub/2000/0018}, + school = {Universit\"{a}t Mainz}, +} +@Article{ewald21a, + title = {{Die Berechnung optischer und elektrostatischer Gitterpotentiale}}, + author = {Ewald, P. P.}, + journal = {Annales de Physique}, + year = {1921}, + number = {3}, + pages = {253--287}, + volume = {369}, + doi = {10.1002/andp.19213690304}, +} +@Book{hockney88a, + title = {{Computer simulation using particles}}, + author = {Hockney, R. W. and Eastwood, J. W.}, + publisher = {CRC Press}, + year = {1988}, + isbn = {9780852743928}, + url = {https://www.crcpress.com/Computer-Simulation-Using-Particles/Hockney-Eastwood/p/book/9780852743928}, +} +@Article{deserno98a, + author = {Deserno, Markus and Holm, Christian}, + title = {{How to mesh up Ewald sums. I. A theoretical and numerical comparison of various particle mesh routines}}, + journal = {Journal of Chemical Physics}, + year = {1998}, + volume = {109}, + pages = {7678}, + doi = {10.1063/1.477414}, +} +@Article{deserno98b, + author = {Deserno, Markus and Holm, Christian}, + title = {{How to mesh up Ewald sums. II. An accurate error estimate for the Particle-Particle-Particle-Mesh algorithm}}, + journal = {Journal of Chemical Physics}, + year = {1998}, + volume = {109}, + pages = {7694}, + doi = {10.1063/1.477415}, +} +@InProceedings{deserno00e, + author = {Deserno, Markus and Holm, Christian and Limbach, Hans J\"{o}rg}, + title = {{How to mesh up Ewald sums}}, + booktitle = {{Molecular Dynamics on Parallel Computers}}, + year = {2000}, + editor = {Esser, R. and Grassberger, P. and Grotendorst, J. and Lewerenz, M.}, + pages = {319}, + doi = {10.1142/9789812793768_0023}, + address = {Singapore}, +} diff --git a/src/core/actor/DipolarBarnesHut_cuda.cu b/src/core/actor/DipolarBarnesHut_cuda.cu index f86060631dd..a7859f2d732 100644 --- a/src/core/actor/DipolarBarnesHut_cuda.cu +++ b/src/core/actor/DipolarBarnesHut_cuda.cu @@ -18,9 +18,7 @@ * along with this program. If not, see . */ /** @file - * The method concept is revealed within: M. Burtscher, K. Pingali, in: GPU - * Gems’11: GPU Computing Gems Emerald Edition, 2011. An Efficient CUDA - * Implementation of the Tree-Based Barnes Hut n-Body Algorithm + * The method concept is revealed within @cite burtscher11a */ #include "cuda_wrapper.hpp" diff --git a/src/core/dpd.hpp b/src/core/dpd.hpp index 9e079b12958..e129588f77c 100644 --- a/src/core/dpd.hpp +++ b/src/core/dpd.hpp @@ -21,8 +21,7 @@ #ifndef CORE_DPD_HPP #define CORE_DPD_HPP /** \file - * Routines to use dpd as thermostat or pair force - * T. Soddemann, B. Duenweg and K. Kremer, Phys. Rev. E 68, 046702 (2003) + * Routines to use dpd as thermostat or pair force @cite soddemann03a * * Implementation in @ref dpd.cpp. */ diff --git a/src/core/electrostatics_magnetostatics/icc.hpp b/src/core/electrostatics_magnetostatics/icc.hpp index 398a3834f3b..199bed86c78 100644 --- a/src/core/electrostatics_magnetostatics/icc.hpp +++ b/src/core/electrostatics_magnetostatics/icc.hpp @@ -28,10 +28,7 @@ * density of the surface segments have to be determined * self-consistently using an iterative scheme. It can at presently - * despite its name - be used with P3M, ELCP3M, MMM2D and MMM1D. For - * details see: S. Tyagi, M. Suzen, M. Sega, M. Barbosa, S. S. Kantorovich, - * C. Holm: An iterative, fast, linear-scaling method for computing induced - * charges on arbitrary dielectric boundaries, J. Chem. Phys. 2010, 132, - * p. 154112, doi:10.1063/1.3376011 + * details see: @cite tyagi10a * * To set up ICCP3M, first the dielectric boundary has to be modelled * by espresso particles 0..n where n has to be passed as a parameter diff --git a/src/core/electrostatics_magnetostatics/mdlc_correction.cpp b/src/core/electrostatics_magnetostatics/mdlc_correction.cpp index 136e764092d..4977284c31c 100644 --- a/src/core/electrostatics_magnetostatics/mdlc_correction.cpp +++ b/src/core/electrostatics_magnetostatics/mdlc_correction.cpp @@ -92,8 +92,7 @@ double slab_dip_count_mu(double *mt, double *mx, double *my, } /** Compute the dipolar DLC corrections for forces and torques. - * Algorithm implemented accordingly to the paper of A. Brodka, Chem. Phys. - * Lett. 400, 62-67, (2004). + * Algorithm implemented accordingly to @cite brodka04a. */ double get_DLC_dipolar(int kcut, std::vector &fs, std::vector &ts, @@ -252,8 +251,7 @@ double get_DLC_dipolar(int kcut, std::vector &fs, } /** Compute the dipolar DLC corrections - * Algorithm implemented accordingly to the paper of A. Brodka, Chem. Phys. - * Lett. 400, 62-67, (2004). + * Algorithm implemented accordingly to @cite brodka04a. */ double get_DLC_energy_dipolar(int kcut, const ParticleRange &particles) { @@ -359,7 +357,7 @@ void add_mdlc_force_corrections(const ParticleRange &particles) { // summation instead of slab-wise summation. // Slab-wise summation is the one required to apply DLC correction. // This correction is often called SDC = Shape Dependent Correction. - // See Brodka, Chem. Phys. Lett. 400, 62, (2004). + // See @cite brodka04a. mz = slab_dip_count_mu(&mtot, &mx, &my, particles); @@ -419,7 +417,7 @@ double add_mdlc_energy_corrections(const ParticleRange &particles) { // summation instead of slab-wise summation. // Slab-wise summation is the one required to apply DLC correction. // This correction is often called SDC = Shape Dependent Correction. - // See Brodka, Chem. Phys. Lett. 400, 62, (2004). + // See @cite brodka04a. mz = slab_dip_count_mu(&mtot, &mx, &my, particles); diff --git a/src/core/electrostatics_magnetostatics/mdlc_correction.hpp b/src/core/electrostatics_magnetostatics/mdlc_correction.hpp index 228b06bbcac..cddb02dedc1 100644 --- a/src/core/electrostatics_magnetostatics/mdlc_correction.hpp +++ b/src/core/electrostatics_magnetostatics/mdlc_correction.hpp @@ -27,7 +27,7 @@ * when applied to a slab geometry and dipolar * particles. DLC & co * - * Article: A. Brodka, Chemical Physics Letters 400, 62-67 (2004). + * Article: @cite brodka04a * * We also include a tuning function that returns the * cut-off necessary to attend a certain accuracy. diff --git a/src/core/electrostatics_magnetostatics/mmm-common.hpp b/src/core/electrostatics_magnetostatics/mmm-common.hpp index f5ebd0b89b8..e670d0b9d5b 100644 --- a/src/core/electrostatics_magnetostatics/mmm-common.hpp +++ b/src/core/electrostatics_magnetostatics/mmm-common.hpp @@ -23,10 +23,8 @@ * interaction, MMM1D, MMM2D and ELC. This file contains the code for the * polygamma expansions used for the near formulas of MMM1D and MMM2D. * - * The expansion of the polygamma functions is fairly easy and follows directly - * from Abramowitz and Stegun. For details, see Axel Arnold and Christian Holm, - * "MMM2D: A fast and accurate summation method for electrostatic interactions - * in 2D slab geometries", Comp. Phys. Comm., 148/3(2002),327-348. + * The expansion of the polygamma functions is fairly easy and follows + * directly from Abramowitz and Stegun. For details, see @cite arnold02a. */ #ifndef MMM_COMMON_H diff --git a/src/core/electrostatics_magnetostatics/mmm2d.cpp b/src/core/electrostatics_magnetostatics/mmm2d.cpp index 8793fccbc78..c8db2bf88a2 100644 --- a/src/core/electrostatics_magnetostatics/mmm2d.cpp +++ b/src/core/electrostatics_magnetostatics/mmm2d.cpp @@ -527,9 +527,8 @@ static void setup_z_force() { const double pref = coulomb.prefactor * C_2PI * ux * uy; constexpr int e_size = 1, size = 2; - /** there is NO contribution from images here, unlike claimed in Tyagi et al. - * Please refer to the Entropy - * article of Arnold, Kesselheim, Breitsprecher et al, 2013, for details. */ + /** there is NO contribution from images here, unlike claimed in @cite tyagi10a + * Please refer to @cite arnold13c for details. */ if (this_node == 0) { clear_vec(blwentry(lclcblk, 0, e_size), e_size); diff --git a/src/core/electrostatics_magnetostatics/p3m-common.hpp b/src/core/electrostatics_magnetostatics/p3m-common.hpp index 33742bd6ee5..1cddddbf7fa 100644 --- a/src/core/electrostatics_magnetostatics/p3m-common.hpp +++ b/src/core/electrostatics_magnetostatics/p3m-common.hpp @@ -25,29 +25,11 @@ * * We use here a P3M (Particle-Particle Particle-Mesh) method based * on the Ewald summation. Details of the used method can be found in - * Hockney/Eastwood and Deserno/Holm. The file p3m contains only the - * Particle-Mesh part. + * @cite hockney88a and @cite deserno98a @cite deserno98b. The file p3m + * contains only the Particle-Mesh part. * - * Further reading: - * - P. P. Ewald, - * *Die Berechnung optischer und elektrostatischer Gitterpotentiale*, - * Ann. Phys. (64) 253-287, 1921 - * - R. W. Hockney and J. W. Eastwood, - * *Computer simulation using particles*, - * IOP, London, 1988 - * - M. Deserno and C. Holm, - * *How to mesh up Ewald sums I + II*, - * J. Chem. Phys. (109) 7678, 1998; (109) 7694, 1998 - * - M. Deserno, C. Holm and H. J. Limbach, - * *How to mesh up Ewald sums*, - * in Molecular Dynamics on Parallel Computers, - * Ed. R. Esser et al., World Scientific, Singapore, 2000 - * - M. Deserno, - * *Counterion condensation for rigid linear polyelectrolytes*, - * PhD Thesis, Universität Mainz, 2000 - * - J. J. Cerda, - * *P3M for dipolar interactions*, - * J. Chem. Phys (129) 234104, 2008 + * Further reading: @cite ewald21a, @cite hockney88a, @cite deserno98a, + * @cite deserno98b, @cite deserno00e, @cite deserno00b, @cite cerda08d * */ #include "config.hpp" diff --git a/src/core/electrostatics_magnetostatics/p3m-dipolar.cpp b/src/core/electrostatics_magnetostatics/p3m-dipolar.cpp index db17905b4e3..0bf306a8ff3 100644 --- a/src/core/electrostatics_magnetostatics/p3m-dipolar.cpp +++ b/src/core/electrostatics_magnetostatics/p3m-dipolar.cpp @@ -133,8 +133,8 @@ static bool dp3m_sanity_checks_boxl(); static void dp3m_calc_local_ca_mesh(); /** Interpolate the P-th order charge assignment function from - * Hockney/Eastwood 5-189 (or 8-61). The following charge fractions - * are also tabulated in Deserno/Holm. + * @cite hockney88a 5-189 (or 8-61). The following charge fractions + * are also tabulated in @cite deserno98a @cite deserno98b. */ static void dp3m_interpolate_dipole_assignment_function(); @@ -199,7 +199,7 @@ static void dp3m_tune_aliasing_sums(int nx, int ny, int nz, int mesh, double *alias1, double *alias2); /** Compute the value of alpha through a bisection method. - * Based on eq. (33) of JCP115,6351,(2001). + * Based on eq. (33) @cite wang01a. */ double dp3m_rtbisection(double box_size, double prefac, double r_cut_iL, int n_c_part, double sum_q2, double x1, double x2, @@ -2020,8 +2020,7 @@ void dp3m_tune_aliasing_sums(int nx, int ny, int nz, int mesh, double mesh_i, } /** Calculate the value of the errors for the REAL part of the force in terms - * of the splitting parameter alpha of Ewald. Based on eq. (33) in - * the paper of Zuowei-HolmJCP, 115,6351,(2001). + * of the splitting parameter alpha of Ewald. Based on eq. (33) @cite wang01a. * * Please note that in this more refined approach we don't use * eq. (37), but eq. (33) which maintains all the powers in alpha. diff --git a/src/core/electrostatics_magnetostatics/p3m-dipolar.hpp b/src/core/electrostatics_magnetostatics/p3m-dipolar.hpp index 360ee91739a..6b184df79cd 100644 --- a/src/core/electrostatics_magnetostatics/p3m-dipolar.hpp +++ b/src/core/electrostatics_magnetostatics/p3m-dipolar.hpp @@ -25,13 +25,11 @@ * * We use here a P3M (Particle-Particle Particle-Mesh) method based * on the dipolar Ewald summation. Details of the used method can be found in - * Hockney/Eastwood and Deserno/Holm. The file p3m contains only the - * Particle-Mesh part. + * @cite hockney88a and @cite deserno98a @cite deserno98b. The file p3m + * contains only the Particle-Mesh part. * * Further reading: - * - J. J. Cerda, - * *P3M for dipolar interactions*, - * J. Chem. Phys (129) 234104, 2008 + * - @cite cerda08d * * Implementation in p3m-dipolar.cpp. */ @@ -163,7 +161,7 @@ void dp3m_deactivate(); * These parameters are stored in the @ref dp3m object. * * The function utilizes the analytic expression of the error estimate - * for the dipolar P3M method in the paper of J. J. Cerda et al., JCP 2008 in + * for the dipolar P3M method in the paper of @cite cerda08d in * order to obtain the rms error in the force for a system of N randomly * distributed particles in a cubic box. * For the real space error the estimate of Kolafa/Perram is used. diff --git a/src/core/electrostatics_magnetostatics/p3m.cpp b/src/core/electrostatics_magnetostatics/p3m.cpp index b0b3c1b9311..f8a52170341 100644 --- a/src/core/electrostatics_magnetostatics/p3m.cpp +++ b/src/core/electrostatics_magnetostatics/p3m.cpp @@ -149,8 +149,8 @@ static bool p3m_sanity_checks_boxl(); static void p3m_calc_local_ca_mesh(); /** Interpolate the P-th order charge assignment function from - * Hockney/Eastwood 5-189 (or 8-61). The following charge fractions - * are also tabulated in Deserno/Holm. + * @cite hockney88a 5-189 (or 8-61). The following charge fractions + * are also tabulated in @cite deserno98a @cite deserno98b. */ static void p3m_interpolate_charge_assignment_function(); @@ -169,9 +169,9 @@ static void p3m_calc_differential_operator(); * Each node calculates only the values for its domain in k-space * (see fft.plan[3].mesh and fft.plan[3].start). * - * See also: Hockney/Eastwood 8-22 (p275). Note the somewhat + * See also: @cite hockney88a 8-22 (p275). Note the somewhat * different convention for the prefactors, which is described in - * Deserno/Holm. + * @cite deserno98a @cite deserno98b. */ static void p3m_calc_influence_function_force(); @@ -2238,9 +2238,7 @@ void p3m_scaleby_box_l() { /** @details Calculate the long range electrostatics part of the stress * tensor. This is part \f$\Pi_{\textrm{dir}, \alpha, \beta}\f$ eq. (2.6) - * in the paper by Essmann et al "A smooth particle mesh Ewald method", - * The Journal of Chemical Physics 103, 8577 (1995); doi: 10.1063/1.470117. - * The part \f$\Pi_{\textrm{corr}, \alpha, \beta}\f$ + * in @cite essmann95a. The part \f$\Pi_{\textrm{corr}, \alpha, \beta}\f$ * eq. (2.8) is not present here since M is the empty set in our simulations. */ void p3m_calc_kspace_stress(double *stress) { diff --git a/src/core/electrostatics_magnetostatics/p3m.hpp b/src/core/electrostatics_magnetostatics/p3m.hpp index 1c3bfe6ee21..9a211a0c99e 100644 --- a/src/core/electrostatics_magnetostatics/p3m.hpp +++ b/src/core/electrostatics_magnetostatics/p3m.hpp @@ -25,28 +25,10 @@ * * We use a P3M (Particle-Particle Particle-Mesh) method based on the * Ewald summation. Details of the used method can be found in - * Hockney/Eastwood and Deserno/Holm. + * @cite hockney88a and @cite deserno98a @cite deserno98b. * - * Further reading: - * - P. P. Ewald, - * *Die Berechnung optischer und elektrostatischer Gitterpotentiale*, - * Ann. Phys. (64) 253-287, 1921 - * - R. W. Hockney and J. W. Eastwood, - * *Computer simulation using particles*, - * IOP, London, 1988 - * - M. Deserno and C. Holm, - * *How to mesh up Ewald sums I + II*, - * J. Chem. Phys. (109) 7678, 1998; (109) 7694, 1998 - * - M. Deserno, C. Holm and H. J. Limbach, - * *How to mesh up Ewald sums*, - * in Molecular Dynamics on Parallel Computers, - * Ed. R. Esser et al., World Scientific, Singapore, 2000 - * - M. Deserno, - * *Counterion condensation for rigid linear polyelectrolytes*, - * PhD Thesis, Universität Mainz, 2000 - * - J. J. Cerda, - * *P3M for dipolar interactions*, - * J. Chem. Phys (129) 234104, 2008 + * Further reading: @cite ewald21a, @cite hockney88a, @cite deserno98a, + * @cite deserno98b, @cite deserno00e, @cite deserno00b, @cite cerda08d. * * Implementation in p3m.cpp. */ diff --git a/src/core/electrostatics_magnetostatics/reaction_field.hpp b/src/core/electrostatics_magnetostatics/reaction_field.hpp index 71942ce39b8..983b7a25999 100644 --- a/src/core/electrostatics_magnetostatics/reaction_field.hpp +++ b/src/core/electrostatics_magnetostatics/reaction_field.hpp @@ -22,8 +22,7 @@ #define REACTION_FIELD_H /** \file * Routines to calculate the Reaction Field energy or/and force - * for a particle pair. - * M. Neumann, J. Chem. Phys 82, 5663 (1985) + * for a particle pair @cite neumann85b. * * Implementation in \ref reaction_field.cpp */ diff --git a/src/core/grid_based_algorithms/lb.cpp b/src/core/grid_based_algorithms/lb.cpp index 89d15bbcb6c..35b304b8877 100644 --- a/src/core/grid_based_algorithms/lb.cpp +++ b/src/core/grid_based_algorithms/lb.cpp @@ -63,7 +63,7 @@ using Utils::get_linear_index; #include namespace { -/** Basis of the mode space as described in [Duenweg, Schiller, Ladd] */ +/** Basis of the mode space as described in @cite dunweg07a */ extern constexpr const std::array, 19> e_ki = { {{{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}, {{0, 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0}}, @@ -276,12 +276,12 @@ void lb_reinit_fluid(std::vector &lb_fields, void lb_reinit_parameters(LB_Parameters &lb_parameters) { if (lb_parameters.viscosity > 0.0) { - /* Eq. (80) Duenweg, Schiller, Ladd, PRE 76(3):036704 (2007). */ + /* Eq. (80) @cite dunweg07a. */ lb_parameters.gamma_shear = 1. - 2. / (6. * lb_parameters.viscosity + 1.); } if (lb_parameters.bulk_viscosity > 0.0) { - /* Eq. (81) Duenweg, Schiller, Ladd, PRE 76(3):036704 (2007). */ + /* Eq. (81) @cite dunweg07a. */ lb_parameters.gamma_bulk = 1. - 2. / (9. * lb_parameters.bulk_viscosity + 1.); } @@ -300,7 +300,7 @@ void lb_reinit_parameters(LB_Parameters &lb_parameters) { // gamma_even = 0.0; if (lb_parameters.kT > 0.0) { - /* Eq. (51) Duenweg, Schiller, Ladd, PRE 76(3):036704 (2007). + /* Eq. (51) @cite dunweg07a. * Note that the modes are not normalized as in the paper here! */ double mu = lb_parameters.kT / D3Q19::c_sound_sq * lb_parameters.tau * lb_parameters.tau / @@ -1312,8 +1312,8 @@ Utils::Vector6d lb_calc_stress(std::array const &modes, // Transform the stress tensor components according to the modes that // correspond to those used by U. Schiller. In terms of populations this - // expression then corresponds exactly to those in Eqs. 116 - 121 in the - // Duenweg and Ladd paper, when these are written out in populations. + // expression then corresponds exactly to those in Eqs. 116 - 121 in + // @cite dunweg07a, when these are written out in populations. // But to ensure this, the expression in Schiller's modes has to be different! Utils::Vector6d stress; diff --git a/src/core/grid_based_algorithms/lb.hpp b/src/core/grid_based_algorithms/lb.hpp index 27fcbe6c384..929b5996689 100644 --- a/src/core/grid_based_algorithms/lb.hpp +++ b/src/core/grid_based_algorithms/lb.hpp @@ -253,9 +253,7 @@ void lb_prepare_communication(HaloCommunicator &halo_comm, /** Bounce back boundary conditions. * The populations that have propagated into a boundary node * are bounced back to the node they came from. This results - * in no slip boundary conditions. - * - * [cf. Ladd and Verberg, J. Stat. Phys. 104(5/6):1191-1251, 2001] + * in no slip boundary conditions, cf. @cite ladd01a. */ void lb_bounce_back(LB_Fluid &lbfluid, const LB_Parameters &lb_parameters, const std::vector &lb_fields); diff --git a/src/core/grid_based_algorithms/lb_interpolation.cpp b/src/core/grid_based_algorithms/lb_interpolation.cpp index 7b59a8200b0..0eb61efe863 100644 --- a/src/core/grid_based_algorithms/lb_interpolation.cpp +++ b/src/core/grid_based_algorithms/lb_interpolation.cpp @@ -89,7 +89,7 @@ lb_lbinterpolation_get_interpolated_velocity(const Utils::Vector3d &pos) { /* calculate fluid velocity at particle's position this is done by linear interpolation - (Eq. (11) Ahlrichs and Duenweg, JCP 111(17):8225 (1999)) */ + (Eq. (11) @cite ahlrichs99a) */ lattice_interpolation(lblattice, pos, [&interpolated_u](Lattice::index_t index, double w) { interpolated_u += w * node_u(index); diff --git a/src/core/grid_based_algorithms/lb_particle_coupling.cpp b/src/core/grid_based_algorithms/lb_particle_coupling.cpp index 0990bd3ff86..b1fdd532004 100644 --- a/src/core/grid_based_algorithms/lb_particle_coupling.cpp +++ b/src/core/grid_based_algorithms/lb_particle_coupling.cpp @@ -120,7 +120,7 @@ namespace { */ void add_md_force(Utils::Vector3d const &pos, Utils::Vector3d const &force) { /* transform momentum transfer to lattice units - (Eq. (12) Ahlrichs and Duenweg, JCP 111(17):8225 (1999)) */ + (Eq. (12) @cite ahlrichs99a) */ auto const delta_j = -(time_step / lb_lbfluid_get_lattice_speed()) * force; lb_lbinterpolation_add_force_density(pos, delta_j); } @@ -128,7 +128,7 @@ void add_md_force(Utils::Vector3d const &pos, Utils::Vector3d const &force) { /** Coupling of a single particle to viscous fluid with Stokesian friction. * - * Section II.C. Ahlrichs and Duenweg, JCP 111(17):8225 (1999) + * Section II.C. @cite ahlrichs99a * * @param[in] p The coupled particle. * @param[in] f_random Additional force to be included. @@ -138,8 +138,7 @@ void add_md_force(Utils::Vector3d const &pos, Utils::Vector3d const &force) { Utils::Vector3d lb_viscous_coupling(Particle const &p, Utils::Vector3d const &f_random) { /* calculate fluid velocity at particle's position - this is done by linear interpolation - (Eq. (11) Ahlrichs and Duenweg, JCP 111(17):8225 (1999)) */ + this is done by linear interpolation (Eq. (11) @cite ahlrichs99a) */ auto const interpolated_u = lb_lbinterpolation_get_interpolated_velocity(p.r.p) * lb_lbfluid_get_lattice_speed(); @@ -155,9 +154,7 @@ Utils::Vector3d lb_viscous_coupling(Particle const &p, v_drift += p.p.mu_E; #endif - /* calculate viscous force - * (Eq. (9) Ahlrichs and Duenweg, JCP 111(17):8225 (1999)) - * */ + /* calculate viscous force (Eq. (9) @cite ahlrichs99a) */ auto const force = -lb_lbcoupling_get_gamma() * (p.m.v - v_drift) + f_random; add_md_force(p.r.p, force); @@ -284,7 +281,7 @@ void lb_lbcoupling_calc_particle_lattice_ia( c = ctr_type{{0, 0}}; } - /* Eq. (16) Ahlrichs and Duenweg, JCP 111(17):8225 (1999). + /* Eq. (16) @cite ahlrichs99a. * The factor 12 comes from the fact that we use random numbers * from -0.5 to 0.5 (equally distributed) which have variance 1/12. * time_step comes from the discretization. diff --git a/src/core/grid_based_algorithms/lbgpu.cpp b/src/core/grid_based_algorithms/lbgpu.cpp index 32d03be1c05..43dc46b0c1c 100644 --- a/src/core/grid_based_algorithms/lbgpu.cpp +++ b/src/core/grid_based_algorithms/lbgpu.cpp @@ -140,27 +140,28 @@ void lb_reinit_fluid_gpu() { } } -/** (Re-)initialize the fluid. */ +/** (Re-)initialize the fluid. + * See @cite dunweg07a and @cite dhumieres09a. + */ void lb_reinit_parameters_gpu() { lbpar_gpu.time_step = (float)time_step; lbpar_gpu.mu = 0.0; if (lbpar_gpu.viscosity > 0.0 && lbpar_gpu.agrid > 0.0 && lbpar_gpu.tau > 0.0) { - /* Eq. (80) Duenweg, Schiller, Ladd, PRE 76(3):036704 (2007). */ + /* Eq. (80) @cite dunweg07a. */ lbpar_gpu.gamma_shear = 1. - 2. / (6. * lbpar_gpu.viscosity + 1.); } if (lbpar_gpu.bulk_viscosity > 0.0) { - /* Eq. (81) Duenweg, Schiller, Ladd, PRE 76(3):036704 (2007). */ + /* Eq. (81) @cite dunweg07a. */ lbpar_gpu.gamma_bulk = 1. - 2. / (9. * lbpar_gpu.bulk_viscosity + 1.); } // By default, gamma_even and gamma_odd are chosen such that the MRT becomes // a TRT with ghost mode relaxation factors that minimize unphysical wall // slip at bounce-back boundaries. For the relation between the gammas - // achieving this, consult - // D. d’Humières, I. Ginzburg, Comp. & Math. w. App. 58(5):823–840 (2009) + // achieving this, consult @cite dhumieres09a. // Note that the relaxation operator in Espresso is defined as // m* = m_eq + gamma * (m - m_eq) // as opposed to this reference, where @@ -175,7 +176,7 @@ void lb_reinit_parameters_gpu() { if (lbpar_gpu.kT > 0.0) { /* fluctuating hydrodynamics ? */ - /* Eq. (51) Duenweg, Schiller, Ladd, PRE 76(3):036704 (2007).*/ + /* Eq. (51) @cite dunweg07a.*/ /* Note that the modes are not normalized as in the paper here! */ lbpar_gpu.mu = lbpar_gpu.kT * lbpar_gpu.tau * lbpar_gpu.tau / D3Q19::c_sound_sq / diff --git a/src/core/grid_based_algorithms/lbgpu_cuda.cu b/src/core/grid_based_algorithms/lbgpu_cuda.cu index 35aa63fd61f..3905ef87b49 100644 --- a/src/core/grid_based_algorithms/lbgpu_cuda.cu +++ b/src/core/grid_based_algorithms/lbgpu_cuda.cu @@ -284,7 +284,7 @@ __device__ void calc_m_from_n(LB_nodes_gpu n_a, unsigned int index, Utils::Array &mode) { /** * The following convention is used: - * The \f$\hat{c}_i\f$ from B. Duenweg's paper are given by: + * The \f$\hat{c}_i\f$ from @cite duenweg09a are given by: * * \f{align*}{ * c_{ 0} &= ( 0, 0, 0) \\ @@ -789,9 +789,8 @@ __device__ void calc_n_from_modes_push(LB_nodes_gpu n_b, * * The populations that have propagated into a boundary node * are bounced back to the node they came from. This results - * in no slip boundary conditions. + * in no slip boundary conditions, cf. @cite ladd01a. * - * [cf. Ladd and Verberg, J. Stat. Phys. 104(5/6):1191-1251, 2001] * @param[in] index Node index / thread index * @param[in] n_curr Local node receiving the current node field * @param[in] boundaries Constant velocity at the boundary, set by the user @@ -1151,8 +1150,8 @@ calc_values_in_LB_units(LB_nodes_gpu n_a, Utils::Array &mode, // Transform the stress tensor components according to the modes that // correspond to those used by U. Schiller. In terms of populations this - // expression then corresponds exactly to those in Eqs. 116 - 121 in the - // Duenweg and Ladd paper, when these are written out in populations. + // expression then corresponds exactly to those in Eqs. 116 - 121 in + // @cite dunweg07a, when these are written out in populations. // But to ensure this, the expression in Schiller's modes has to be // different! @@ -1344,7 +1343,7 @@ __global__ void temperature(LB_nodes_gpu n_a, float *cpu_jsquared, } /** Interpolation kernel. - * see Duenweg and Ladd http://arxiv.org/abs/0803.2826 + * See @cite duenweg09a * @param u Distance to grid point in units of agrid * @retval Value for the interpolation function. */ @@ -1354,7 +1353,7 @@ three_point_polynomial_smallerequal_than_half(float u) { } /** Interpolation kernel. - * see Duenweg and Ladd http://arxiv.org/abs/0803.2826 + * See @cite duenweg09a * @param u Distance to grid point in units of agrid * @retval Value for the interpolation function. */ @@ -1456,7 +1455,7 @@ velocity_interpolation(LB_nodes_gpu n_a, float *particle_position, } /** Velocity interpolation. - * (Eq. (12) Ahlrichs and Duenweg, JCP 111(17):8225 (1999)) + * (Eq. (12) @cite ahlrichs99a) * @param[in] n_a Local node residing in array a * @param[in] particle_position Particle position * @param[out] node_index Node index around (8) particle @@ -1469,7 +1468,7 @@ velocity_interpolation(LB_nodes_gpu n_a, float *particle_position, Utils::Array &delta) { Utils::Array left_node_index; Utils::Array temp_delta; - // Eq. (10) and (11) in ahlrichs + duenweg page 8227 + // Eq. (10) and (11) in @cite ahlrichs99a page 8227 #pragma unroll for (int i = 0; i < 3; ++i) { auto const scaledpos = particle_position[i] / para->agrid - 0.5f; @@ -1521,7 +1520,7 @@ velocity_interpolation(LB_nodes_gpu n_a, float *particle_position, } /** Calculate viscous force. - * (Eq. (12) Ahlrichs and Duenweg, JCP 111(17):8225 (1999)) + * (Eq. (12) @cite ahlrichs99a) * @param[in] n_a Local node residing in array a * @param[out] delta Weighting of particle position * @param[out] delta_j Weighting of particle momentum @@ -1605,7 +1604,7 @@ __device__ void calc_viscous_force( #endif /* take care to rescale velocities with time_step and transform to MD units - * (Eq. (9) Ahlrichs and Duenweg, JCP 111(17):8225 (1999)) */ + * (Eq. (9) @cite ahlrichs99a) */ /* Viscous force */ float3 viscforce_density{0.0f, 0.0f, 0.0f}; @@ -1623,11 +1622,11 @@ __device__ void calc_viscous_force( #endif if (para->kT > 0.0) { - /* add stochastic force of zero mean (eq. (15) Ahlrichs, Duenweg) */ + /* add stochastic force of zero mean (eq. (15) @cite ahlrichs99a) */ float4 random_floats = random_wrapper_philox( particle_data[part_index].identity, LBQ * 32, philox_counter); /* lb_coupl_pref is stored in MD units (force) - * Eq. (16) Ahlrichs and Duenweg, JCP 111(17):8225 (1999). + * Eq. (16) @cite ahlrichs99a. * The factor 12 comes from the fact that we use random numbers * from -0.5 to 0.5 (equally distributed) which have variance 1/12. * time_step comes from the discretization. @@ -1639,8 +1638,7 @@ __device__ void calc_viscous_force( viscforce_density.z += lb_coupl_pref * (random_floats.y - 0.5f); } /* delta_j for transform momentum transfer to lattice units which is done - in calc_node_force (Eq. (12) Ahlrichs and Duenweg, JCP 111(17):8225 - (1999)) */ + in calc_node_force (Eq. (12) @cite ahlrichs99a) */ // only add to particle_force for particle centre <=> (1-flag_cs) = 1 particle_force[3 * part_index + 0] += (1 - flag_cs) * viscforce_density.x; @@ -1671,7 +1669,7 @@ __device__ void calc_viscous_force( /** Calculate the node force caused by the particles, with atomicAdd due to * avoiding race conditions. - * (Eq. (14) Ahlrichs and Duenweg, JCP 111(17):8225 (1999)) + * (Eq. (14) @cite ahlrichs99a) * @param[in] delta Weighting of particle position * @param[in] delta_j Weighting of particle momentum * @param[in] node_index Node index around (8) particle @@ -1701,8 +1699,8 @@ calc_node_force(Utils::Array const &delta, /** Kernel to calculate local populations from hydrodynamic fields. * The mapping is given in terms of the equilibrium distribution. * - * Eq. (2.15) Ladd, J. Fluid Mech. 271, 295-309 (1994) - * Eq. (4) in Berk Usta, Ladd and Butler, JCP 122, 094902 (2005) + * Eq. (2.15) @cite ladd94a + * Eq. (4) in @cite usta05a * * @param[out] n_a %Lattice site * @param[out] gpu_check Additional check if GPU kernel are executed @@ -1852,8 +1850,8 @@ __global__ void set_force_density(int single_nodeindex, float *force_density, * from given flow field velocities. The mapping is given in terms of * the equilibrium distribution. * - * Eq. (2.15) Ladd, J. Fluid Mech. 271, 295-309 (1994) - * Eq. (4) in Berk Usta, Ladd and Butler, JCP 122, 094902 (2005) + * Eq. (2.15) @cite ladd94a + * Eq. (4) in @cite usta05a * * @param[out] n_a Current nodes array (double buffering!) * @param[in] single_nodeindex Single node index diff --git a/src/core/immersed_boundary/ImmersedBoundaries.cpp b/src/core/immersed_boundary/ImmersedBoundaries.cpp index 6c0abae2fc5..edbd941bfc0 100644 --- a/src/core/immersed_boundary/ImmersedBoundaries.cpp +++ b/src/core/immersed_boundary/ImmersedBoundaries.cpp @@ -117,6 +117,7 @@ int ImmersedBoundaries::volume_conservation_set_params(const int bond_type, } /** Calculate partial volumes on all compute nodes and call MPI to sum up. + * See @cite zhang01b, @cite dupin08a, @cite kruger12a. */ void ImmersedBoundaries::calc_volumes() { @@ -192,15 +193,14 @@ void ImmersedBoundaries::calc_volumes() { auto const x3 = x1 + get_mi_vector(p3->r.p, x1, box_geo); // Volume of this tetrahedron - // See Cha Zhang et.al. 2001, doi:10.1109/ICIP.2001.958278 - // http://research.microsoft.com/en-us/um/people/chazhang/publications/icip01_ChaZhang.pdf + // See @cite zhang01b // The volume can be negative, but it is not necessarily the "signed // volume" in the above paper (the sign of the real "signed volume" // must be calculated using the normal vector; the result of the // calculation here is simply a term in the sum required to // calculate the volume of a particle). Again, see the paper. This // should be equivalent to the formulation using vector identities - // in Krüger thesis + // in @cite kruger12a const double v321 = x3[0] * x2[1] * x1[2]; const double v231 = x2[0] * x3[1] * x1[2]; @@ -291,7 +291,7 @@ void ImmersedBoundaries::calc_volume_force() { auto const a13 = get_mi_vector(p3.r.p, x1, box_geo); // Now we have the true and good coordinates - // Compute force according to eq. C.46 Krüger thesis + // Compute force according to eq. (C.46) in @cite kruger12a // It is the same as deriving Achim's equation w.r.t x /* const double fact = kappaV * 1/6. * (IBMVolumesCurrent[softID] - volRef) / IBMVolumesCurrent[softID]; @@ -313,8 +313,8 @@ void ImmersedBoundaries::calc_volume_force() { vector_product(x2, x1, n); for (int k=0; k < 3; k++) p3.f.f[k] += fact*n[k];*/ - // This is Dupin 2008. I guess the result will be very similar as - // the code above + // This is eq. (9) in @cite dupin08a. I guess the result will be + // very similar as the code above auto const n = vector_product(a12, a13); const double ln = n.norm(); const double A = 0.5 * ln; diff --git a/src/core/immersed_boundary/ibm_tribend.cpp b/src/core/immersed_boundary/ibm_tribend.cpp index 7e9f2d2f20f..4f5632d2009 100644 --- a/src/core/immersed_boundary/ibm_tribend.cpp +++ b/src/core/immersed_boundary/ibm_tribend.cpp @@ -87,6 +87,7 @@ IBM_Tribend_CalcForce(Particle const &p1, Particle const &p2, return std::make_tuple(force1, force2, force3, force4); } +/** @details See @cite gompper96a and @cite kruger12a. */ int IBM_Tribend_SetParams(const int bond_type, const int ind1, const int ind2, const int ind3, const int ind4, const double kb, const bool flat) { @@ -144,7 +145,7 @@ int IBM_Tribend_SetParams(const int bond_type, const int ind1, const int ind2, // NOTE: This is the bare bending modulus used by the program. // If triangle pairs appear only once, the total bending force should get a // factor 2. For the numerical model, a factor sqrt(3) should be added, see - // Gompper&Kroll J. Phys. 1996 and Krüger thesis. This is an approximation, + // @cite gompper96a and @cite kruger12a. This is an approximation, // it holds strictly only for a sphere bonded_ia_params[bond_type].p.ibm_tribend.kb = kb; } diff --git a/src/core/immersed_boundary/ibm_triel.cpp b/src/core/immersed_boundary/ibm_triel.cpp index 4725fba1827..95fb1254ca9 100644 --- a/src/core/immersed_boundary/ibm_triel.cpp +++ b/src/core/immersed_boundary/ibm_triel.cpp @@ -104,7 +104,7 @@ IBM_Triel_CalcForce(Particle const &p1, Particle const &p2, Particle const &p3, const double b2 = iaparams.p.ibm_triel.b2; const double A0 = iaparams.p.ibm_triel.area0; - // Displacement gradient tensor D: Eq. (C.9) Krüger thesis + // Displacement gradient tensor D: Eq. (C.9) in @cite kruger12a const double Dxx = lp / lp0; const double Dxy = ((l / l0 * cosPhi) - (lp / lp0 * cosPhi0)) / sinPhi0; const double Dyx = 0.0; diff --git a/src/core/metadynamics.cpp b/src/core/metadynamics.cpp index 5723d8e8c0d..b07972ab8d8 100644 --- a/src/core/metadynamics.cpp +++ b/src/core/metadynamics.cpp @@ -99,7 +99,7 @@ void meta_init() { /** Metadynamics main function: * - Calculate reaction coordinate - * - Update profile and biased force + * - Update profile and biased force @cite marsili10a * - apply external force */ void meta_perform(const ParticleRange &particles) { @@ -143,8 +143,7 @@ void meta_perform(const ParticleRange &particles) { } /* Now update free energy profile - * Here, we're following the functional form of - * Marsili et al., J Comp Chem, 31 (2009). + * Here, we're following the functional form of @cite marsili10a. * Instead of Gaussians, we use so-called Lucy's functions */ for (int i = 0; i < meta_xi_num_bins; ++i) { diff --git a/src/core/observables/BondDihedrals.hpp b/src/core/observables/BondDihedrals.hpp index b49b83733f2..3fb1cee0e12 100644 --- a/src/core/observables/BondDihedrals.hpp +++ b/src/core/observables/BondDihedrals.hpp @@ -32,10 +32,8 @@ namespace Observables { * along the chain, in radians. * * The sign of the dihedral angles follow the IUPAC nomenclature for the - * Newman projection, specifically section "Torsion Angle" pages 2220-2221 in - * G. P. Moss, *Basic Terminology of Stereochemistry* (IUPAC Recommendations - * 1996), *Pure and Applied Chemistry* **1996**, *68*(12): 2193-2222, - * doi:[10.1351/pac199668122193](https://doi.org/10.1351%2Fpac199668122193) + * Newman projection, specifically section "Torsion Angle" pages 2220-2221 + * in @cite moss96a. * */ class BondDihedrals : public PidObservable { diff --git a/src/core/rattle.hpp b/src/core/rattle.hpp index 22aeb7dc5e5..f36afa2c60c 100644 --- a/src/core/rattle.hpp +++ b/src/core/rattle.hpp @@ -22,9 +22,7 @@ #define RATTLE_H /** \file - * RATTLE Algorithm (Rattle: A "Velocity" Version of the - * Shake Algorithm for Molecular Dynamics Calculations, H.C Andersen, J Comp - * Phys, 52, 24-34, 1983) + * RATTLE Algorithm (@cite andersen83a) * * For more information see \ref rattle.cpp. */ diff --git a/src/core/reaction_ensemble.hpp b/src/core/reaction_ensemble.hpp index b3fc94c9a85..ff7cdbd0c7c 100644 --- a/src/core/reaction_ensemble.hpp +++ b/src/core/reaction_ensemble.hpp @@ -358,7 +358,7 @@ class WangLandauReactionEnsemble : public ReactionAlgorithm { }; /** - * Constant-pH Ensemble, for derivation see Reed and Reed 1992. + * Constant-pH Ensemble, for derivation see @cite reed92a. * For the constant pH reactions you need to provide the deprotonation and * afterwards the corresponding protonation reaction (in this order). If you * want to deal with multiple reactions do it multiple times. Note that there is diff --git a/src/core/rotation.cpp b/src/core/rotation.cpp index 73fad9d5158..46ea60a879c 100644 --- a/src/core/rotation.cpp +++ b/src/core/rotation.cpp @@ -43,7 +43,8 @@ #include /** Calculate the derivatives of the quaternion and angular acceleration - * for a given particle + * for a given particle. + * See @cite sonnenschein85a * @param[in] p %Particle * @param[out] Qd First derivative of the particle quaternion * @param[out] Qdd Second derivative of the particle quaternion @@ -54,8 +55,7 @@ static void define_Qdd(Particle const &p, double Qd[4], double Qdd[4], double S[3], double Wd[3]) { /* calculate the first derivative of the quaternion */ - /* Taken from "An improved algorithm for molecular dynamics simulation of - * rigid molecules", Sonnenschein, Roland (1985), Eq. 4.*/ + /* Eq. (4) @cite sonnenschein85a */ Qd[0] = 0.5 * (-p.r.quat[1] * p.m.omega[0] - p.r.quat[2] * p.m.omega[1] - p.r.quat[3] * p.m.omega[2]); @@ -69,8 +69,7 @@ static void define_Qdd(Particle const &p, double Qd[4], double Qdd[4], p.r.quat[0] * p.m.omega[2]); /* Calculate the angular acceleration. */ - /* Taken from "An improved algorithm for molecular dynamics simulation of - * rigid molecules", Sonnenschein, Roland (1985), Eq. 5.*/ + /* Eq. (5) @cite sonnenschein85a */ if (p.p.rotation & ROTATION_X) Wd[0] = (p.f.torque[0] + p.m.omega[1] * p.m.omega[2] * (p.p.rinertia[1] - p.p.rinertia[2])) / @@ -93,8 +92,7 @@ static void define_Qdd(Particle const &p, double Qd[4], double Qdd[4], auto const S1 = Qd[0] * Qd[0] + Qd[1] * Qd[1] + Qd[2] * Qd[2] + Qd[3] * Qd[3]; /* Calculate the second derivative of the quaternion. */ - /* Taken from "An improved algorithm for molecular dynamics simulation of - * rigid molecules", Sonnenschein, Roland (1985), Eq. 8.*/ + /* Eq. (8) @cite sonnenschein85a */ Qdd[0] = 0.5 * (-p.r.quat[1] * Wd[0] - p.r.quat[2] * Wd[1] - p.r.quat[3] * Wd[2]) - p.r.quat[0] * S1; @@ -133,8 +131,7 @@ void propagate_omega_quat_particle(Particle &p) { define_Qdd(p, Qd.data(), Qdd.data(), S.data(), Wd.data()); - /* Taken from "On the numerical integration of motion for rigid polyatomics: - * The modified quaternion approach", Omeylan, Igor (1998), Eq. 12.*/ + /* Eq. (12) @cite sonnenschein85a. */ auto const lambda = 1 - S[0] * time_step_squared_half - sqrt(1 - time_step_squared * diff --git a/src/core/virtual_sites/lb_inertialess_tracers.cpp b/src/core/virtual_sites/lb_inertialess_tracers.cpp index bfa7173dd60..ee818f40d14 100644 --- a/src/core/virtual_sites/lb_inertialess_tracers.cpp +++ b/src/core/virtual_sites/lb_inertialess_tracers.cpp @@ -178,9 +178,9 @@ void CoupleIBMParticleToFluid(Particle *p) { /** Calculate the LB fluid velocity at a particle position. * Very similar to the velocity interpolation done in standard Espresso, - * except that we add the f/2 contribution, cf. Guo et al. PRE 2002. + * except that we add the f/2 contribution, cf. @cite guo02a. * The fluid velocity is obtained by linear interpolation, - * cf. Eq. (11) in Ahlrichs and Duenweg, JCP 111(17):8225 (1999). + * cf. Eq. (11) in @cite ahlrichs99a. */ void GetIBMInterpolatedVelocity(const Utils::Vector3d &pos, double *v, double *forceAdded) {