[group] Form Factors [name] pearl-necklace-chain [number parameters] 12, [description]

Scattering factor of pearl necklace chains (with the same SLD) on Eq.12 taken from paper:

Particle scattering factor of pearl necklace chains

Ralf Schweins and Klaus Huber

Macromolecular Symposia, 2004, 211, p. 25

DOI: 10.1002/masy.200450702

[x] q [y] f [parameter names] I0,M,N,b,v0,mr,ms,Mw,A,R,l,bgd, [initial values] 1[1e-4...1e7],10[1..1000],11,2.591,586.2,116,7146,1,500,100,300,0[0...100] [adjustibility] 1,0,0,0,0,0,0,0,1,1,0,0 [parameter description] [1/cm] I0=I(q=0),[1] number of rods,[1] N=M+1: number of sphears,[A] length of rod-like segment,[A^3] monomer volume,[1] mr=l/b,[1] ms=4piR^3/3/v0,[1] Mw=Mmr+Nms: total mass of chain,[A] distanse between two neighboring pearls,[A] radious of pearls,[A] l=A-2R: rod length,[f] background, [h-headers] #include "IncludedFunctions/Integrals-newest.h" [included functions] double LAMBDA(double x, void *ParaM) { //+++ if (A<=1.0e-4) A=1.0e-4; if (R<=1.0e-4) R=1.0e-4; //+++ double q=XXX[currentPoint]; //+++ double l=A-2*R; double ql=q*l; if (ql<1e-5) ql=1e-5; return 1/ql/x; } [code] if (b<=1.0e-4) b=1.0e-4; if (A<=1.0e-4) A=1.0e-4; if (R<=1.0e-4) R=1.0e-4; if (v0<=1.0e-12) v0=1.0e-12; // --- constrains --- l=A-2*R; N=M+1; mr=l/b; ms=4*M_PI*R*R*R/3/v0; Mw=M*mr+N*ms; // --- qR --- double qR=q*R; if (qR<1.0e-6) qR=1.0e-6; // --- qA --- double qA=q*A; if (qA<1.0e-6) qA=1.0e-6; // --- ql --- double ql=q*l; if (ql<1.0e-6) ql=1.0e-6; // --- theta --- double theta=3*(sin(qR)-qR*cos(qR))/qR/qR/qR; // to ccheck!!! // --- LAMBDA integral --- double LAMBDAint=0; double err=0; integral_QAWO_sine (LAMBDA, ParaM, 0, ql,1.0,0.0,0.001,1000, &LAMBDAint, &err, 40); // --- BETA integral --- double BETAint=0; err=0; integral_QAWO_sine (LAMBDA, ParaM, qR, qA-qR,1.0,0.0,0.001,1000, &BETAint, &err, 40); // --- Sss --- double Sss; Sss = N/(1-sin(qA)/qA); Sss -= N/2; Sss -= sin(qA)/qA * (1-pow( sin(qA)/qA, N) )/ (1-sin(qA)/qA)/ (1-sin(qA)/qA); Sss *= 2*ms*ms*theta*theta; // --- Srr --- double Srr; Srr=M*(2*LAMBDAint-sin(ql/2)*sin(ql/2)/ql/ql*2*2); Srr+=2*M*BETAint*BETAint/(1-sin(qA)/qA); Srr-=BETAint*BETAint*(1-pow(sin(qA)/qA,M))/(1-sin(qA)/qA)/(1-sin(qA)/qA); Srr*=mr*mr; // --- Srs --- double Srs=0; // Srs=(N-1)/(1-sin(qA)/qA); Srs-=(1-pow(sin(qA)/qA,N-1))/(1-sin(qA)/qA)/(1-sin(qA)/qA)*sin(qA)/qA; // Srs *= mr*BETAint*ms*theta*4; // --- result --- f= (Sss+Srr+Srs)/(M*mr+N*ms)/(M*mr+N*ms); f*=I0; f+=bgd; // ------------ [fortran] 0, [end]