diff --git a/notes/cylinderT.lyx b/notes/cylinderT.lyx index 0378527..5e4b7f9 100644 --- a/notes/cylinderT.lyx +++ b/notes/cylinderT.lyx @@ -111,8 +111,8 @@ literal "false" : \begin_inset Formula \begin{align*} -R_{nn'} & =ik^{2}\iint_{S_{s}}\left(\frac{\eta}{\eta_{1}}\wfkcreg_{n}\left(k\vect r\right)\times\wfkcreg_{\overline{n'}}\left(k\vect r\right)+\wfkcreg_{\overline{n'}}\left(k\vect r\right)\times\wfkcreg_{n}\left(k\vect r\right)\right)\cdot\uvec{\nu}\,\ud S,\\ -Q_{nn'} & =ik^{2}\iint_{S_{s}}\left(\frac{\eta}{\eta_{1}}\wfkcout_{n}\left(k\vect r\right)\times\wfkcreg_{\overline{n'}}\left(k\vect r\right)+\wfkcout_{\overline{n'}}\left(k\vect r\right)\times\wfkcreg_{n}\left(k\vect r\right)\right)\cdot\uvec{\nu}\,\ud S, +R_{nn'} & =ik^{2}\iint_{S_{s}}\left(\frac{\eta}{\eta_{1}}\wfkcreg_{n}\left(k\vect r\right)\times\wfkcreg_{\overline{n'}}\left(k_{1}\vect r\right)+\wfkcreg_{\overline{n}}\left(k\vect r\right)\times\wfkcreg_{n'}\left(k_{1}\vect r\right)\right)\cdot\uvec{\nu}\,\ud S,\\ +Q_{nn'} & =ik^{2}\iint_{S_{s}}\left(\frac{\eta}{\eta_{1}}\wfkcout_{n}\left(k\vect r\right)\times\wfkcreg_{\overline{n'}}\left(k_{1}\vect r\right)+\wfkcout_{\overline{n}}\left(k\vect r\right)\times\wfkcreg_{n'}\left(k_{1}\vect r\right)\right)\cdot\uvec{\nu}\,\ud S, \end{align*} \end_inset @@ -121,11 +121,15 @@ where \begin_inset Formula $S_{s}$ \end_inset - is the scatterer surface and + is the scatterer surface, \begin_inset Formula $\uvec{\nu}$ \end_inset - is the outwards pointing unit normal to it; then + is the outwards pointing unit normal to it, and the subscript +\begin_inset Formula $_{1}$ +\end_inset + + refers to the particle inside; then \begin_inset Formula \[ T_{nn'}=-\sum_{n''}R_{nn''}Q_{n''n}^{-1}. diff --git a/qpms/tmatrices.c b/qpms/tmatrices.c index e99ed98..8b0be37 100644 --- a/qpms/tmatrices.c +++ b/qpms/tmatrices.c @@ -609,7 +609,24 @@ qpms_arc_function_retval_t qpms_arc_cylinder(double theta, const void *param) { return res; } + +struct tmatrix_axialsym_integral_param_t { + const qpms_vswf_set_spec_t *bspec; + qpms_l_t l1, l2; + qpms_m_t m1; // m2 = -m1 + qpms_vswf_type_t t1; // t2 = 2 - t1 + qpms_arc_function_t f; + complex double k_in, k, z_in, z; + bool realpart; // Otherwise imaginary part + bool Q; // Otherwise R +}; + #if 0 +static double tmatrix_axialsym_integrand(double theta, void *param) { + struct tmatrix_axialsym_integral_param_t *p = param; + +} + qpms_errno_t qpms_tmatrix_axialsym_fill( qpms_tmatrix_t *t, complex double omega, qpms_epsmu_generator_t outside, qpms_epsmu_generator_t inside,qpms_arc_function_t shape)