Changeset 890ac7f1 in sasview for sansmodels/src/sans/models/c_extensions/pearlnecklace.c
- Timestamp:
- Nov 30, 2011 2:43:17 PM (13 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 2138c061
- Parents:
- e161fac
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/c_extensions/pearlnecklace.c
r9cc3da6 r890ac7f1 37 37 //total volume 38 38 double tot_vol; 39 tot_vol = num_strings * string_vol; 39 //each masses 40 double m_r= contrast_string * string_vol; 41 double m_s= contrast_pearl * pearl_vol; 42 double psi; 43 double gamma; 44 double beta; 45 //form factors 46 double sss; //pearls 47 double srr; //strings 48 double srs; //cross 49 double A_s; 50 double srr_1; 51 double srr_2; 52 double srr_3; 53 double form_factor; 54 55 tot_vol = num_strings * string_vol; 40 56 tot_vol += num_pearls * pearl_vol; 41 57 42 //each masses43 double m_r= contrast_string * string_vol;44 double m_s= contrast_pearl * pearl_vol;45 46 58 //sine functions of a pearl 47 double psi;48 59 psi = sin(q*radius); 49 60 psi -= q * radius * cos(q * radius); … … 52 63 53 64 // Note take only 20 terms in Si series: 10 terms may be enough though. 54 double gamma;55 65 gamma = Si(q* edge_separation); 56 66 gamma /= (q* edge_separation); 57 double beta;58 67 beta = Si(q * (edge_separation + radius)); 59 68 beta -= Si(q * radius); 60 69 beta /= (q* edge_separation); 61 70 62 //form factors63 double sss; //pearls64 double srr; //strings65 double srs; //cross66 71 // center to center distance between the neighboring pearls 67 doubleA_s = edge_separation + 2.0 * radius;72 A_s = edge_separation + 2.0 * radius; 68 73 69 74 // form factor for num_pearls … … 76 81 77 82 // form factor for num_strings (like thin rods) 78 double srr_1;79 83 srr_1 = -pow(sinc(q*edge_separation/2.0), 2); 80 84 81 85 srr_1 += 2.0 * gamma; 82 86 srr_1 *= num_strings; 83 double srr_2;84 87 srr_2 = 2.0/(1.0-sinc(q*A_s)); 85 88 srr_2 *= num_strings; 86 89 srr_2 *= pow(beta, 2); 87 double srr_3;88 90 srr_3 = 1.0 - pow(sinc(q*A_s), num_strings); 89 91 srr_3 /= pow((1.0-sinc(q*A_s)), 2); … … 104 106 srs *= (m_r * m_s * beta * psi); 105 107 106 double form_factor;107 108 form_factor = sss + srr + srs; 108 109 form_factor /= (tot_vol * 1.0e-8); // norm by volume and A^-1 to cm^-1
Note: See TracChangeset
for help on using the changeset viewer.