Dudom
Former-commit-id: ade18052fd1fbc4c02557c8fad65d66ad0272f47
This commit is contained in:
parent
4b7797edaf
commit
2cab9c1307
|
@ -1473,6 +1473,54 @@ Mie decomposition of Green's function for single nanoparticle
|
|||
Translation of spherical waves: getting insane
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Cruzan's formulation, Xu's normalisation
|
||||
\begin_inset CommandInset citation
|
||||
LatexCommand cite
|
||||
after "(59)"
|
||||
key "xu_efficient_1998"
|
||||
|
||||
\end_inset
|
||||
|
||||
:
|
||||
\begin_inset Formula
|
||||
\[
|
||||
B_{m,n,\mu,\nu}=\underbrace{\left(-1\right)^{-m}\frac{\left(2\nu+1\right)\left(n+m\right)!\left(\nu-\mu\right)!}{2n\left(n+1\right)\left(n-m\right)!\left(\nu+\mu\right)!}\sum_{q=1}^{Q_{max}^{-m,n,\mu,\nu}}i^{p+1}\sqrt{\left(\left(p+1\right)^{2}-\left(n-\nu\right)^{2}\right)\left(\left(n+\nu+1\right)^{2}-\left(p+1\right)^{2}\right)}b_{-m,n,\mu,\nu}^{p,p+1}}_{\mbox{(without the \ensuremath{\sum})}\equiv B_{m,n,\mu,\nu}^{q}}z_{p+1}P_{p+1}e^{i\left(\mu-m\right)\phi},
|
||||
\]
|
||||
|
||||
\end_inset
|
||||
|
||||
where
|
||||
\begin_inset CommandInset citation
|
||||
LatexCommand cite
|
||||
after "(28,5,60,61)"
|
||||
key "xu_efficient_1998"
|
||||
|
||||
\end_inset
|
||||
|
||||
|
||||
\begin_inset Formula $p\equiv n+\nu-2q$
|
||||
\end_inset
|
||||
|
||||
,
|
||||
\begin_inset Formula $Q_{max}^{-m,n,\mu,\nu}\equiv\min\left(n,\nu,\frac{n+\nu+1-\left|\mu-m\right|}{2}\right)$
|
||||
\end_inset
|
||||
|
||||
,
|
||||
\begin_inset Formula
|
||||
\[
|
||||
b_{-m,n,\mu,\nu}^{p,p+1}\equiv\left(-1\right)^{\mu-m}\left(2p+3\right)\sqrt{\frac{\left(n-m\right)!\left(\nu+\mu\right)!\left(p+m-\mu+1\right)!}{\left(n+m\right)!\left(\nu-\mu\right)!\left(p-m+\mu+1\right)!}}\begin{pmatrix}n & \nu & p+1\\
|
||||
-m & \mu & m-\mu
|
||||
\end{pmatrix}\begin{pmatrix}n & \nu & p\\
|
||||
0 & 0 & 0
|
||||
\end{pmatrix}.
|
||||
\]
|
||||
|
||||
\end_inset
|
||||
|
||||
|
||||
\end_layout
|
||||
|
||||
\begin_layout Chapter
|
||||
Multiple scattering: nice linear algebra born from all the mess
|
||||
\end_layout
|
||||
|
@ -1484,7 +1532,7 @@ Quantisation of quasistatic modes of a sphere
|
|||
\begin_layout Standard
|
||||
\begin_inset CommandInset bibtex
|
||||
LatexCommand bibtex
|
||||
bibfiles "Electrodynamics,/home/mmn/repo/qpms/Electrodynamics"
|
||||
bibfiles "/l/necadam1/repo/qpms/Electrodynamics"
|
||||
options "plain"
|
||||
|
||||
\end_inset
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <gsl/gsl_sf_bessel.h>
|
||||
#include "assert_cython_workaround.h"
|
||||
#include <stdlib.h> //abort()
|
||||
#include <gsl/gsl_sf_coupling.h>
|
||||
|
||||
// if defined, the pointer B_multipliers[y] corresponds to the q = 1 element;
|
||||
// otherwise, it corresponds to the q = 0 element, which should be identically zero
|
||||
|
@ -228,6 +229,7 @@ complex double qpms_trans_single_A_Taylor(int m, int n, int mu, int nu, sph_t kd
|
|||
// [Xu_old], eq. (83)
|
||||
complex double qpms_trans_single_B_Xu(int m, int n, int mu, int nu, sph_t kdlj,
|
||||
bool r_ge_d, qpms_bessel_t J) {
|
||||
assert(0); // FIXME probably gives wrong values, do not use.
|
||||
if(r_ge_d) J = QPMS_BESSEL_REGULAR;
|
||||
double costheta = cos(kdlj.theta);
|
||||
|
||||
|
@ -287,6 +289,7 @@ complex double qpms_trans_single_B_Xu(int m, int n, int mu, int nu, sph_t kdlj,
|
|||
complex double qpms_trans_single_B(qpms_normalisation_t norm,
|
||||
int m, int n, int mu, int nu, sph_t kdlj,
|
||||
bool r_ge_d, qpms_bessel_t J) {
|
||||
assert(0); // FIXME probably gives wrong values, do not use.
|
||||
if(r_ge_d) J = QPMS_BESSEL_REGULAR;
|
||||
double costheta = cos(kdlj.theta);
|
||||
|
||||
|
@ -348,6 +351,7 @@ complex double qpms_trans_single_B(qpms_normalisation_t norm,
|
|||
|
||||
complex double qpms_trans_single_B_Taylor(int m, int n, int mu, int nu, sph_t kdlj,
|
||||
bool r_ge_d, qpms_bessel_t J) {
|
||||
assert(0); // FIXME probably gives wrong values, do not use.
|
||||
if(r_ge_d) J = QPMS_BESSEL_REGULAR;
|
||||
double costheta = cos(kdlj.theta);
|
||||
|
||||
|
@ -480,9 +484,29 @@ static void qpms_trans_calculator_multipliers_A_general(
|
|||
}
|
||||
|
||||
|
||||
/*static*/ void qpms_trans_calculator_multipliers_B_general(
|
||||
void qpms_trans_calculator_multipliers_B_general(
|
||||
qpms_normalisation_t norm,
|
||||
complex double *dest, int m, int n, int mu, int nu, int Qmax){
|
||||
// This is according to the Cruzan-type formula [Xu](59)
|
||||
assert(Qmax == gauntB_Q_max(-m,n,mu,nu));
|
||||
|
||||
|
||||
|
||||
int csphase = qpms_normalisation_t_csphase(norm); //TODO FIXME use this
|
||||
norm = qpms_normalisation_t_normonly(norm);
|
||||
double normlogfac= qpms_trans_normlogfac(norm,m,n,mu,nu);
|
||||
double normfac = qpms_trans_normfac(norm,m,n,mu,nu);
|
||||
// TODO use csphase to modify normfac here!!!!
|
||||
// normfac = xxx ? -normfac : normfac;
|
||||
normfac *= min1pow(m);//different from old taylor
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*static*/ void qpms_trans_calculator_multipliers_B_general_oldXu(
|
||||
qpms_normalisation_t norm,
|
||||
complex double *dest, int m, int n, int mu, int nu, int Qmax) {
|
||||
assert(0); // FIXME probably gives wrong values, do not use.
|
||||
assert(Qmax == gauntB_Q_max(-m,n,mu,nu));
|
||||
int q2max = gaunt_q_max(-m-1,n+1,mu+1,nu);
|
||||
// assert(Qmax == q2max);
|
||||
|
@ -607,6 +631,7 @@ static void qpms_trans_calculator_multipliers_A_Taylor(
|
|||
|
||||
static void qpms_trans_calculator_multipliers_B_Taylor(
|
||||
complex double *dest, int m, int n, int mu, int nu, int Qmax) {
|
||||
assert(0); // FIXME probably gives wrong values, do not use.
|
||||
assert(Qmax == gauntB_Q_max(-m,n,mu,nu));
|
||||
int q2max = gaunt_q_max(-m-1,n+1,mu+1,nu);
|
||||
//assert(Qmax == q2max);
|
||||
|
|
Loading…
Reference in New Issue