Ignore:
Timestamp:
Jul 25, 2011 3:43:34 PM (13 years ago)
Author:
Jae Cho <jhjcho@…>
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:
bc7bc839
Parents:
38155f7
Message:

implementation of pearlneckclace model: need utest and doc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/sans/models/c_extensions/pearlnecklace.c

    r8c8cb05 r463eb76e  
    5353        // Note take only 20 terms in Si series: 10 terms may be enough though. 
    5454        double gamma; 
    55         gamma = Si(q* edge_separation, 6); 
     55        gamma = Si(q* edge_separation); 
    5656        gamma /= (q* edge_separation); 
    5757        double beta; 
    58         beta = Si(q * (edge_separation + radius), 6); 
    59         beta -= Si(q * radius, 6); 
     58        beta = Si(q * (edge_separation + radius)); 
     59        beta -= Si(q * radius); 
    6060        beta /= (q* edge_separation); 
    6161 
     
    6868 
    6969        // form factor for num_pearls 
    70         sss = 1.0 - pow(sin_x(q*A_s), (int)num_pearls ); 
    71         sss /= pow((1.0-sin_x(q*A_s)), 2); 
    72         sss *= sin_x(q*A_s); 
     70        sss = 1.0 - pow(sinc(q*A_s), num_pearls ); 
     71        sss /= pow((1.0-sinc(q*A_s)), 2); 
     72        sss *= -sinc(q*A_s); 
    7373        sss -= num_pearls/2.0; 
    74         sss += num_pearls/(1.0-sin_x(q*A_s)); 
     74        sss += num_pearls/(1.0-sinc(q*A_s)); 
    7575        sss *= 2.0 * pow((m_s*psi), 2); 
    7676 
    7777        // form factor for num_strings (like thin rods) 
    7878        double srr_1; 
    79         srr_1 = -pow(sin_x(q*edge_separation/2.0), 2); 
    80         //printf ("sss %g, %g, %g\n",sss, srr_1, gamma); 
     79        srr_1 = -pow(sinc(q*edge_separation/2.0), 2); 
     80 
    8181        srr_1 += 2.0 * gamma; 
    8282        srr_1 *= num_strings; 
    8383        double srr_2; 
    84         srr_2 = 2.0/(1.0-sin_x(q*A_s)); 
     84        srr_2 = 2.0/(1.0-sinc(q*A_s)); 
    8585        srr_2 *= num_strings; 
    8686        srr_2 *= pow(beta, 2); 
    8787        double srr_3; 
    88         srr_3 = 1.0 - pow(sin_x(q*A_s), (int)num_strings); 
    89         srr_3 /= pow((1.0-sin_x(q*A_s)), 2); 
     88        srr_3 = 1.0 - pow(sinc(q*A_s), num_strings); 
     89        srr_3 /= pow((1.0-sinc(q*A_s)), 2); 
    9090        srr_3 *= pow(beta, 2); 
    9191        srr_3 *= -2.0; 
     
    9696 
    9797        // form factor for correlations 
    98         srs = -1.0; 
    99         srs -= pow(sin_x(q*A_s), (int)num_strings); 
    100         srs /= pow((1.0-sin_x(q*A_s)), 2); 
    101         srs *= sin_x(q*A_s); 
    102         srs += (num_strings/(1.0-sin_x(q*A_s))); 
     98        srs = 1.0; 
     99        srs -= pow(sinc(q*A_s), num_strings); 
     100        srs /= pow((1.0-sinc(q*A_s)), 2); 
     101        srs *= -sinc(q*A_s); 
     102        srs += (num_strings/(1.0-sinc(q*A_s))); 
    103103        srs *= 4.0; 
    104104        srs *= (m_r * m_s * beta * psi); 
     
    111111        form_factor *= scale; 
    112112        form_factor += background; 
    113  
    114113    return (form_factor); 
    115114} 
Note: See TracChangeset for help on using the changeset viewer.