source: sasmodels/sasmodels/models/lamellar_stack_caille.c @ 56b0435

core_shell_microgelscostrafo411magnetic_modelticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since 56b0435 was 56b0435, checked in by Paul Kienzle <pkienzle@…>, 7 years ago

round to nearest Nlayers rather than truncate

  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*      LamellarCaille kernel - allows for name changes of passed parameters ...
2
3*/
4
5static double
6Iq(double qval,
7   double del,
8   double fp_Nlayers,
9   double dd,
10   double Cp,
11   double sld,
12   double solvent_sld)
13{
14  int Nlayers = (int)(fp_Nlayers+0.5);    //cast to an integer for the loop
15  double contr;   //local variables of coefficient wave
16  double inten,Pq,Sq,alpha,temp,t2;
17  //double dQ, dQDefault, t1, t3;
18  // from wikipedia 0.577215664901532860606512090082402431042159335
19  const double Euler = 0.577215664901533;   // Euler's constant, increased sig figs for new models Feb 2015
20  //dQDefault = 0.0;    //[=] 1/A, q-resolution, default value
21  //dQ = dQDefault; // REMOVED UNUSED dQ calculations for new models Feb 2015
22
23  contr = sld - solvent_sld;
24
25  Pq = 2.0*contr*contr/qval/qval*(1.0-cos(qval*del));
26
27  Sq = 0.0;
28  // the vital "=" in ii<=  added March 2015
29  for (int ii=1; ii<=Nlayers-1; ii++) {
30
31    //fii = (double)ii;   //do I really need to do this? - unused variable, removed 18Feb2015
32
33    temp = 0.0;
34    alpha = Cp/4.0/M_PI/M_PI*(log(M_PI*ii) + Euler);
35    //t1 = 2.0*dQ*dQ*dd*dd*alpha;
36    t2 = 2.0*qval*qval*dd*dd*alpha;
37    //t3 = dQ*dQ*dd*dd*ii*ii;
38
39    temp = 1.0 - (double)ii / (double)Nlayers;
40    //temp *= cos(dd*qval*ii/(1.0+t1));
41    temp *= cos(dd*qval*ii);
42    //temp *= exp(-1.0*(t2 + t3)/(2.0*(1.0+t1)) );
43    temp *= exp(-t2/2.0 );
44    //temp /= sqrt(1.0+t1);
45
46    Sq += temp;
47  }
48
49  Sq *= 2.0;
50  Sq += 1.0;
51
52  inten = 2.0*M_PI*Pq*Sq/(dd*qval*qval);
53
54  inten *= 1.0e-04;   // 1/A to 1/cm
55
56  return(inten);
57}
58
Note: See TracBrowser for help on using the repository browser.