From 03401c64a97344f7c551bde8990e572943c70816 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (laptop)" <j.wuttke@fz-juelich.de> Date: Tue, 14 Aug 2012 09:33:17 +0200 Subject: [PATCH] Zorn's multiple-scattering correction for elastic scattering => functions zorn, zorn2 --- pub/src/func.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pub/src/func.cpp b/pub/src/func.cpp index c6b4801c..eac3d526 100644 --- a/pub/src/func.cpp +++ b/pub/src/func.cpp @@ -204,6 +204,17 @@ double func_kwws( double v, double t, double b ){ if( b<0.1 || b>2.0 ) return 0; return t/PI*kwwsf( (float)(v*t), (float)b ); } +double func_zorn( double v, double vavg, double s ) { + if( s<=0 || s>=1 ) return 0; + return (1-s)*(v+s*vavg*vavg/(1-s*vavg)); } + +double func_zorn_gauss( double q, double u2, double s ) { + if( s<=0 || s>=1 ) return 0; + double qmax = 4*PI/6.27; // Si111 + double v = exp(-u2*SQR(q)); + double vavg = (1-exp(-u2*SQR(qmax))) / (u2*SQR(qmax)); + return (1-s)*(v+s*vavg*vavg/(1-s*vavg)); } + //**************************************************************************// //* Coordinate concatenation *// //**************************************************************************// @@ -456,6 +467,10 @@ void NFunctions::initialize(void) { "(w,tau,b): Fourier cosine transform (t->w) of exp((t/tau)^b)" ).register_me(); CFunc( "kwws", func_kwws, 0, 0, "(w,tau,b): Fourier sine transform (t->w) of exp((t/tau)^b)" ).register_me(); + CFunc( "zorn", func_zorn, 0, 0, + "(I,<I>,s): Zorn's multiple-scattering corrected elastic intensity" ).register_me(); + CFunc( "zorn2", func_zorn_gauss, 0, 0, + "(q,<u^2>,s): Zorn's multiple-scattering corrected Gaussian elastic intensity for Si111" ).register_me(); CFunc( "rehavneg", func_re_havneg, 0, 0, "(x,y,z): real part of the Havriliak-Negami function" ).register_me(); -- GitLab